UNPKG

subforge

Version:

High-performance subtitle toolkit for parsing, converting, and authoring across 20+ formats.

261 lines (233 loc) 7.88 kB
/** * Subforge - Universal subtitle format parser and converter * * A high-performance subtitle library supporting 20+ formats including ASS, SSA, SRT, VTT, * EBU-STL, SCC, DVB, TTML, PGS, VobSub, and more. Built for speed and correctness. * * @example * ```ts * import { parseSRT, toASS } from 'subforge' * import { unwrap } from 'subforge/core' * * const srt = `1 * 00:00:05,000 --> 00:00:10,000 * Hello, world!` * * const doc = unwrap(parseSRT(srt)) * const ass = toASS(doc) * ``` * * @module subforge */ // Core exports export * from './core/index.ts' // ============================================================================= // Text Formats // ============================================================================= /** * Advanced SubStation Alpha (ASS) subtitle format * Text-based format with advanced styling, animations, and karaoke effects */ export { parseASS, toASS } from './formats/text/ass/index.ts' export { parseTime as parseASSTime, formatTime as formatASSTime, parseColor as parseASSColor, formatColor as formatASSColor, parseTags as parseASSTags, serializeTags as serializeASSTags, stripTags as stripASSTags, } from './formats/text/ass/index.ts' /** * SubStation Alpha (SSA) subtitle format * Predecessor to ASS with basic styling support */ export { parseSSA, toSSA } from './formats/text/ssa/index.ts' /** * SubRip (SRT) subtitle format * Simple text-based format with basic HTML-like tags */ export { parseSRT, toSRT } from './formats/text/srt/index.ts' export { parseTime as parseSRTTime, formatTime as formatSRTTime, parseTags as parseSRTTags, serializeTags as serializeSRTTags, stripTags as stripSRTTags, } from './formats/text/srt/index.ts' /** * WebVTT subtitle format * W3C standard for HTML5 video with cue settings and styling */ export { parseVTT, toVTT } from './formats/text/vtt/index.ts' export { parseTime as parseVTTTime, formatTime as formatVTTTime, parseTags as parseVTTTags, serializeTags as serializeVTTTags, stripTags as stripVTTTags, } from './formats/text/vtt/index.ts' /** * YouTube SBV subtitle format * Simple comma-separated timestamp format used by YouTube */ export { parseSBV, toSBV } from './formats/text/sbv/index.ts' export { parseTime as parseSBVTime, formatTime as formatSBVTime, } from './formats/text/sbv/index.ts' /** * LRC lyric format * Text-based format for synchronized lyrics with metadata tags */ export { parseLRC, toLRC } from './formats/text/lrc/index.ts' export type { LRCSerializeOptions } from './formats/text/lrc/index.ts' export { parseTime as parseLRCTime, formatTime as formatLRCTime, } from './formats/text/lrc/index.ts' /** * MicroDVD subtitle format * Frame-based format with text formatting tags in curly braces */ export { parseMicroDVD, toMicroDVD } from './formats/text/microdvd/index.ts' export type { MicroDVDParseOptions } from './formats/text/microdvd/index.ts' export type { MicroDVDSerializeOptions } from './formats/text/microdvd/index.ts' export { parseTags as parseMicroDVDTags, serializeTags as serializeMicroDVDTags, stripTags as stripMicroDVDTags, } from './formats/text/microdvd/index.ts' // ============================================================================= // XML Formats // ============================================================================= /** * Timed Text Markup Language (TTML) format * XML-based W3C standard for timed text with advanced styling */ export { parseTTML, toTTML } from './formats/xml/ttml/index.ts' export { parseTime as parseTTMLTime, formatTime as formatTTMLTime, parseDuration as parseTTMLDuration, } from './formats/xml/ttml/index.ts' /** * DFXP format (Distribution Format Exchange Profile) * TTML profile for content distribution */ export { parseDFXP, toDFXP } from './formats/xml/ttml/index.ts' /** * SMPTE-TT format (SMPTE Timed Text) * TTML profile for broadcast television */ export { parseSMPTETT, toSMPTETT } from './formats/xml/ttml/index.ts' /** * SAMI subtitle format * Microsoft's Synchronized Accessible Media Interchange format with HTML and CSS */ export { parseSAMI, toSAMI } from './formats/xml/sami/index.ts' export { parseCSS as parseSAMICSS, generateCSS as generateSAMICSS } from './formats/xml/sami/index.ts' /** * RealText subtitle format * XML-based format for RealPlayer streaming media */ export { parseRealText, toRealText } from './formats/xml/realtext/index.ts' export { parseTime as parseRealTextTime, formatTime as formatRealTextTime, } from './formats/xml/realtext/index.ts' /** * QuickTime Text subtitle format * Text-based format for Apple QuickTime Player with directive-based formatting */ export { parseQT, toQT } from './formats/xml/qt/index.ts' export type { QTSerializeOptions } from './formats/xml/qt/index.ts' // ============================================================================= // Binary Formats // ============================================================================= /** * EBU-STL subtitle format * Binary format for European broadcasting (teletext-based) */ export { parseEBUSTL, toEBUSTL } from './formats/binary/stl/index.ts' export type { EBUSTLSerializeOptions } from './formats/binary/stl/index.ts' /** * Spruce STL subtitle format * Text-based format for Spruce Technologies DVD authoring */ export { parseSpruceSTL, toSpruceSTL } from './formats/binary/stl/index.ts' export type { SpruceSTLSerializeOptions } from './formats/binary/stl/index.ts' /** * Presentation Graphic Stream (PGS) format * Binary bitmap-based format used in Blu-ray discs */ export { parsePGS, toPGS } from './formats/binary/pgs/index.ts' export { SegmentType, type SegmentHeader, type PaletteSegment, type PaletteEntry, type ObjectSegment, type CompositionSegment, type CompositionObject, type WindowSegment, } from './formats/binary/pgs/index.ts' /** * DVB subtitle format * Binary bitmap-based format for Digital Video Broadcasting */ export { parseDVB, toDVB } from './formats/binary/dvb/index.ts' /** * VobSub subtitle format * DVD bitmap subtitle format with separate .idx and .sub files */ export { parseVobSub, toVobSub } from './formats/binary/vobsub/index.ts' export { parseTime as parseVobSubTime, formatTime as formatVobSubTime, decodeRLE as decodeVobSubRLE, encodeRLE as encodeVobSubRLE, } from './formats/binary/vobsub/index.ts' export type { VobSubIndex, VobSubTrack, VobSubTimestamp, SubtitlePacket as VobSubPacket, VobSubParseOptions, } from './formats/binary/vobsub/index.ts' /** * PAC subtitle format * Binary format by Screen Electronics (Cavena) for broadcast systems */ export { parsePAC, toPAC } from './formats/binary/pac/index.ts' export type { PACSerializeOptions } from './formats/binary/pac/index.ts' // ============================================================================= // Broadcast Formats // ============================================================================= /** * Scenarist Closed Caption (SCC) format * CEA-608 closed caption format for broadcast television */ export { parseSCC, toSCC } from './formats/broadcast/scc/index.ts' export { decodeCEA608, encodeCEA608Text, getControlCode, } from './formats/broadcast/scc/index.ts' /** * Cheetah CAP subtitle format * Text-based format for Cheetah closed caption systems */ export { parseCAP, toCAP } from './formats/broadcast/cap/index.ts' export { parseTime as parseCAPTime, formatTime as formatCAPTime, videoStandardToFps, fpsToVideoStandard, } from './formats/broadcast/cap/index.ts' export type { CAPSerializerOptions, CAPTimecodeOptions } from './formats/broadcast/cap/index.ts' /** * Teletext subtitle format * Binary format for analog television teletext systems */ export { parseTeletext, toTeletext } from './formats/broadcast/teletext/index.ts'