feedsbrain/pssh-tools

View on GitHub
src/lib/types.ts

Summary

Maintainability
A
0 mins
Test Coverage
type Omit<K, KEY extends keyof K> = Pick<K, Exclude<keyof K, KEY>>

export interface WidevineEncodeConfig {
  contentId: string
  dataOnly: boolean
  keyIds?: string[]
  provider?: string
  protectionScheme?: string
  trackType?: string
}

export type WidevineDataEncodeConfig = Omit<WidevineEncodeConfig, 'dataOnly'>

export interface KeyPair {
  kid: string
  key: string
}

export interface PlayReadyEncodeConfig {
  keyPairs?: KeyPair[]
  licenseUrl?: string
  keySeed?: string
  compatibilityMode: boolean
  dataOnly: boolean
  checksum?: boolean
}

export type PlayReadyDataEncodeConfig = Omit<PlayReadyEncodeConfig, 'dataOnly'>

export interface HeaderConfig {
  systemId: string
  keyIds?: string[]
  data: string
}

export interface PlayReadyData {
  recordSize: number
  recordType: number
  recordXml: string
}

export interface WidevineData {
  widevineKeyCount?: number
  keyId?: string[]
  provider?: string
  contentId?: string
}

export type PsshData = PlayReadyData | WidevineData

export interface DecodeResult {
  keyIds?: string[]
  dataObject?: PsshData
  systemId?: Buffer
  systemName?: string
  version?: number
  keyCount?: number
  printPssh?: Function
}