Add .gitignore to exclude all node packages and lock files

This commit is contained in:
Adolfo Reyna
2026-02-23 21:56:04 -05:00
parent faae96c9ed
commit dcc5c6c044
9747 changed files with 1555105 additions and 2 deletions
@@ -0,0 +1,32 @@
type MediaParserEventMap = {
pause: undefined;
resume: undefined;
abort: {
reason?: unknown;
};
seek: {
seek: number;
};
};
export type MediaParserEventTypes = keyof MediaParserEventMap;
export type CallbackListener<T extends MediaParserEventTypes> = (data: {
detail: MediaParserEventMap[T];
}) => void;
type MediaParserListeners = {
[EventType in MediaParserEventTypes]: CallbackListener<EventType>[];
};
export declare class MediaParserEmitter {
#private;
listeners: MediaParserListeners;
readyPromise: Promise<void>;
constructor();
markAsReady: () => void;
addEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
removeEventListener: <Q extends MediaParserEventTypes>(name: Q, callback: CallbackListener<Q>) => void;
private dispatchEvent;
dispatchPause: () => void;
dispatchResume: () => void;
dispatchAbort: (reason?: unknown) => void;
dispatchSeek: (seek: number) => void;
}
export {};
@@ -0,0 +1,66 @@
"use strict";
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 _MediaParserEmitter_markAsReady;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MediaParserEmitter = void 0;
const with_resolvers_1 = require("../with-resolvers");
class MediaParserEmitter {
constructor() {
this.listeners = {
pause: [],
resume: [],
abort: [],
seek: [],
};
_MediaParserEmitter_markAsReady.set(this, void 0);
this.markAsReady = () => {
__classPrivateFieldGet(this, _MediaParserEmitter_markAsReady, "f").call(this);
};
this.addEventListener = (name, callback) => {
this.listeners[name].push(callback);
};
this.removeEventListener = (name, callback) => {
this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
};
this.dispatchPause = () => {
this.readyPromise = this.readyPromise.then(() => {
this.dispatchEvent('pause', undefined);
});
};
this.dispatchResume = () => {
this.readyPromise = this.readyPromise.then(() => {
this.dispatchEvent('resume', undefined);
});
};
this.dispatchAbort = (reason) => {
this.readyPromise = this.readyPromise.then(() => {
this.dispatchEvent('abort', { reason });
});
};
this.dispatchSeek = (seek) => {
this.readyPromise = this.readyPromise.then(() => {
this.dispatchEvent('seek', { seek });
});
};
const { promise, resolve } = (0, with_resolvers_1.withResolvers)();
this.readyPromise = promise;
__classPrivateFieldSet(this, _MediaParserEmitter_markAsReady, resolve, "f");
}
dispatchEvent(dispatchName, context) {
this.listeners[dispatchName].forEach((callback) => {
callback({ detail: context });
});
}
}
exports.MediaParserEmitter = MediaParserEmitter;
_MediaParserEmitter_markAsReady = new WeakMap();
@@ -0,0 +1,29 @@
import type { SeekingHints } from '../seeking-hints';
import type { SeekResolution } from '../work-on-seek-request';
import { MediaParserEmitter } from './emitter';
import type { PauseSignal } from './pause-signal';
import type { PerformedSeeksSignal } from './performed-seeks-stats';
import type { SeekSignal } from './seek-signal';
export type MediaParserController = {
abort: (reason?: any) => void;
pause: PauseSignal['pause'];
resume: PauseSignal['resume'];
seek: SeekSignal['seek'];
simulateSeek: (seekInSeconds: number) => Promise<SeekResolution>;
addEventListener: MediaParserEmitter['addEventListener'];
removeEventListener: MediaParserEmitter['removeEventListener'];
getSeekingHints: () => Promise<SeekingHints | null>;
/**
* @deprecated Not public API
*/
_internals: {
signal: AbortSignal;
checkForAbortAndPause: () => Promise<void>;
seekSignal: SeekSignal;
markAsReadyToEmitEvents: () => void;
performedSeeksSignal: PerformedSeeksSignal;
attachSeekingHintResolution: (callback: () => Promise<SeekingHints | null>) => void;
attachSimulateSeekResolution: (callback: (seekInSeconds: number) => Promise<SeekResolution>) => void;
};
};
export declare const mediaParserController: () => MediaParserController;
@@ -0,0 +1,75 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.mediaParserController = void 0;
const errors_1 = require("../errors");
const emitter_1 = require("./emitter");
const pause_signal_1 = require("./pause-signal");
const performed_seeks_stats_1 = require("./performed-seeks-stats");
const seek_signal_1 = require("./seek-signal");
const mediaParserController = () => {
const abortController = new AbortController();
const emitter = new emitter_1.MediaParserEmitter();
const pauseSignal = (0, pause_signal_1.makePauseSignal)(emitter);
const seekSignal = (0, seek_signal_1.makeSeekSignal)(emitter);
const performedSeeksSignal = (0, performed_seeks_stats_1.performedSeeksStats)();
const checkForAbortAndPause = async () => {
if (abortController.signal.aborted) {
const err = new errors_1.MediaParserAbortError('Aborted');
if (abortController.signal.reason) {
err.cause = abortController.signal.reason;
}
throw err;
}
await pauseSignal.waitUntilResume();
};
let seekingHintResolution = null;
let simulateSeekResolution = null;
const getSeekingHints = () => {
if (!seekingHintResolution) {
throw new Error('The mediaParserController() was not yet used in a parseMedia() call');
}
return seekingHintResolution();
};
const simulateSeek = (seekInSeconds) => {
if (!simulateSeekResolution) {
throw new Error('The mediaParserController() was not yet used in a parseMedia() call');
}
return simulateSeekResolution(seekInSeconds);
};
const attachSeekingHintResolution = (callback) => {
if (seekingHintResolution) {
throw new Error('The mediaParserController() was used in multiple parseMedia() calls. Create a separate controller for each call.');
}
seekingHintResolution = callback;
};
const attachSimulateSeekResolution = (callback) => {
if (simulateSeekResolution) {
throw new Error('The mediaParserController() was used in multiple parseMedia() calls. Create a separate controller for each call.');
}
simulateSeekResolution = callback;
};
return {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
abort: (reason) => {
abortController.abort(reason);
emitter.dispatchAbort(reason);
},
seek: seekSignal.seek,
simulateSeek,
pause: pauseSignal.pause,
resume: pauseSignal.resume,
addEventListener: emitter.addEventListener,
removeEventListener: emitter.removeEventListener,
getSeekingHints,
_internals: {
signal: abortController.signal,
checkForAbortAndPause,
seekSignal,
markAsReadyToEmitEvents: emitter.markAsReady,
performedSeeksSignal,
attachSeekingHintResolution,
attachSimulateSeekResolution,
},
};
};
exports.mediaParserController = mediaParserController;
@@ -0,0 +1,11 @@
import type { MediaParserEmitter } from './emitter';
export type PauseSignal = {
pause: () => void;
resume: () => void;
waitUntilResume: () => Promise<void>;
};
export declare const makePauseSignal: (emitter: MediaParserEmitter) => {
pause: () => void;
resume: () => void;
waitUntilResume: () => Promise<void>;
};
@@ -0,0 +1,38 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makePauseSignal = void 0;
const makePauseSignal = (emitter) => {
const waiterFns = [];
let paused = false;
return {
pause: () => {
if (paused) {
return;
}
emitter.dispatchPause();
paused = true;
},
resume: () => {
if (!paused) {
return;
}
paused = false;
for (const waiterFn of waiterFns) {
waiterFn();
}
waiterFns.length = 0;
emitter.dispatchResume();
},
waitUntilResume: () => {
return new Promise((resolve) => {
if (!paused) {
resolve();
}
else {
waiterFns.push(resolve);
}
});
},
};
};
exports.makePauseSignal = makePauseSignal;
@@ -0,0 +1,11 @@
export type PerformedSeek = {
from: number;
to: number;
type: 'user-initiated' | 'internal';
};
export declare const performedSeeksStats: () => {
recordSeek: (seek: PerformedSeek) => void;
getPerformedSeeks: () => PerformedSeek[];
markLastSeekAsUserInitiated: () => void;
};
export type PerformedSeeksSignal = ReturnType<typeof performedSeeksStats>;
@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.performedSeeksStats = void 0;
const performedSeeksStats = () => {
const performedSeeks = [];
const markLastSeekAsUserInitiated = () => {
if (performedSeeks.length > 0) {
performedSeeks[performedSeeks.length - 1].type = 'user-initiated';
}
};
return {
recordSeek: (seek) => {
performedSeeks.push(seek);
},
getPerformedSeeks: () => {
return performedSeeks;
},
markLastSeekAsUserInitiated,
};
};
exports.performedSeeksStats = performedSeeksStats;
@@ -0,0 +1,9 @@
import type { MediaParserEmitter } from './emitter';
export type SeekSignal = {
seek: (timeInSeconds: number) => void;
getSeek: () => number | null;
clearSeekIfStillSame: (previousSeek: number) => {
hasChanged: boolean;
};
};
export declare const makeSeekSignal: (emitter: MediaParserEmitter) => SeekSignal;
@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeSeekSignal = void 0;
const makeSeekSignal = (emitter) => {
let seek = null;
return {
seek: (seekRequest) => {
seek = seekRequest;
emitter.dispatchSeek(seekRequest);
},
getSeek() {
return seek;
},
// In the meanwhile a new seek could have been queued
clearSeekIfStillSame(previousSeek) {
if (seek === previousSeek) {
seek = null;
return { hasChanged: false };
}
return { hasChanged: true };
},
};
};
exports.makeSeekSignal = makeSeekSignal;