mirakurun
Version:
DVR Tuner Server for Japanese TV.
121 lines • 3.97 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepClone = exports.channelTypes = void 0;
exports.updateObject = updateObject;
exports.sleep = sleep;
exports.getTimeFromMJD = getTimeFromMJD;
exports.getTimeFromBCD24 = getTimeFromBCD24;
exports.replaceCommandTemplate = replaceCommandTemplate;
exports.parseCommandForSpawn = parseCommandForSpawn;
const rfdc_1 = __importDefault(require("rfdc"));
exports.channelTypes = ["GR", "BS", "CS", "SKY"];
exports.deepClone = (0, rfdc_1.default)();
function updateObject(target, input) {
let updated = false;
for (const k in input) {
if (Array.isArray(target[k]) && Array.isArray(input[k])) {
updated = updateArray(target[k], input[k]) || updated;
continue;
}
else if (target[k] === null && input[k] === null) {
continue;
}
else if (typeof target[k] === "object" && typeof input[k] === "object") {
updated = updateObject(target[k], input[k]) || updated;
continue;
}
else if (target[k] === input[k]) {
continue;
}
target[k] = input[k];
updated = true;
}
return updated;
}
function updateArray(target, input) {
const length = target.length;
if (length !== input.length) {
target.splice(0, length, ...input);
return true;
}
let updated = false;
for (let i = 0; i < length; i++) {
if (Array.isArray(target[i]) && Array.isArray(input[i])) {
updated = updateArray(target[i], input[i]) || updated;
continue;
}
else if (target[i] === null && input[i] === null) {
continue;
}
else if (typeof target[i] === "object" && typeof input[i] === "object") {
updated = updateObject(target[i], input[i]) || updated;
continue;
}
else if (target[i] === input[i]) {
continue;
}
target[i] = input[i];
updated = true;
}
return updated;
}
function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
function getTimeFromMJD(buffer) {
const mjd = (buffer[0] << 8) | buffer[1];
const h = (buffer[2] >> 4) * 10 + (buffer[2] & 0x0F);
const i = (buffer[3] >> 4) * 10 + (buffer[3] & 0x0F);
const s = (buffer[4] >> 4) * 10 + (buffer[4] & 0x0F);
return ((mjd - 40587) * 86400 + ((h - 9) * 60 * 60) + (i * 60) + s) * 1000;
}
function getTimeFromBCD24(buffer) {
let time = ((buffer[0] >> 4) * 10 + (buffer[0] & 0x0F)) * 3600;
time += ((buffer[1] >> 4) * 10 + (buffer[1] & 0x0F)) * 60;
time += (buffer[2] >> 4) * 10 + (buffer[2] & 0x0F);
return time * 1000;
}
function replaceCommandTemplate(template, vars) {
return template.replace(/<([a-z0-9\-_\.]+)>/gi, (match, key) => {
return vars[key] !== undefined ? String(vars[key]) : "";
});
}
function parseCommandForSpawn(cmdString) {
let inQuote = false;
let quoteChar = "";
let current = "";
const parts = [];
for (let i = 0; i < cmdString.length; i++) {
const char = cmdString[i];
if ((char === `"` || char === `'`) && (!inQuote || char === quoteChar)) {
inQuote = !inQuote;
quoteChar = inQuote ? char : "";
}
else if (char === " " && !inQuote) {
if (current) {
parts.push(current);
current = "";
}
}
else {
current += char;
}
}
if (current) {
parts.push(current);
}
if (parts.length === 0) {
throw new Error("Invalid command string");
}
const result = {
command: parts[0],
args: parts.slice(1)
};
return result;
}
//# sourceMappingURL=common.js.map