subforge
Version:
High-performance subtitle toolkit for parsing, converting, and authoring across 20+ formats.
261 lines (233 loc) • 7.88 kB
text/typescript
/**
* 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'