ddex-parser
Version:
DDEX XML parser with native and WASM bindings
161 lines (158 loc) • 3.94 kB
TypeScript
/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
export interface JsRelease {
releaseId: string
title: string
defaultTitle: string
subtitle?: string
displayArtist: string
releaseType: string
genre?: string
subGenre?: string
trackCount: number
discCount?: number
releaseDate?: string
originalReleaseDate?: string
labelName?: string
tracks: Array<JsTrack>
}
export interface JsTrack {
trackId: string
title: string
artist: string
duration?: string
position?: number
discNumber?: number
isrc?: string
resourceReference?: string
}
export interface JsResource {
resourceId: string
resourceType: string
title: string
durationSeconds?: number
durationString?: string
fileFormat?: string
bitrate?: number
sampleRate?: number
fileSize?: string
}
export interface JsDeal {
dealId: string
releases: Array<string>
startDate?: string
endDate?: string
territories: Array<string>
usageRights: Array<string>
restrictions: Array<string>
commercialModel: string
}
export interface ParseOptions {
mode?: string
autoThreshold?: number
resolveReferences?: boolean
includeRaw?: boolean
maxMemory?: number
timeoutMs?: number
allowBlocking?: boolean
chunkSize?: number
fidelityLevel?: string
preserveComments?: boolean
preserveProcessingInstructions?: boolean
preserveExtensions?: boolean
preserveAttributeOrder?: boolean
preserveNamespacePrefixes?: boolean
canonicalization?: string
collectStatistics?: boolean
enableStreaming?: boolean
streamingThreshold?: number
validationLevel?: string
extensionValidation?: boolean
enableChecksums?: boolean
memoryLimit?: number
enableDetailedErrors?: boolean
}
export interface StreamOptions {
chunkSize?: number
maxMemory?: number
}
export interface ParsedMessage {
messageId: string
messageType: string
messageDate: string
senderName: string
senderId: string
recipientName: string
recipientId: string
version: string
profile?: string
releaseCount: number
trackCount: number
dealCount: number
resourceCount: number
totalDurationSeconds: number
releases: Array<JsRelease>
resources: any
deals: Array<JsDeal>
statistics?: ParseStatistics
fidelityInfo?: FidelityInfo
}
export interface ParseStatistics {
parseTimeMs: number
memoryUsedBytes: number
elementCount: number
attributeCount: number
commentCount: number
extensionCount: number
namespaceCount: number
fileSizeBytes: number
}
export interface FidelityInfo {
fidelityLevel: string
canonicalizationAlgorithm: string
commentsPreserved: boolean
extensionsPreserved: boolean
processingInstructionsPreserved: boolean
attributeOrderPreserved: boolean
namespacePrefixesPreserved: boolean
}
export interface SanityCheckResult {
isValid: boolean
version: string
errors: Array<string>
warnings: Array<string>
}
export interface DetailedError {
errorType: string
message: string
field?: string
value?: string
context?: string
suggestions: Array<string>
}
export interface StreamedRelease {
releaseReference: string
title: string
releaseType?: string
resourceCount: number
}
export interface ProgressInfo {
bytesProcessed: number
releasesParsed: number
elapsedMs: number
}
export declare class DdexParser {
constructor()
detectVersion(xml: string): string
parseSync(xml: string, options?: ParseOptions | undefined | null): ParsedMessage
parse(xml: string, options?: ParseOptions | undefined | null): Promise<ParsedMessage>
sanityCheck(xml: string): Promise<SanityCheckResult>
stream(xml: string, options?: StreamOptions | undefined | null): ReleaseStream
/** Get detailed error information for debugging - useful for error handling in JavaScript */
getDetailedError(xml: string): DetailedError
}
export declare class ReleaseStream {
next(): Promise<StreamedRelease | null>
progress(): Promise<ProgressInfo>
}