Skip to content

Latest commit

 

History

History
315 lines (160 loc) · 6.08 KB

File metadata and controls

315 lines (160 loc) · 6.08 KB

downflux


downflux / FileManager

Class: FileManager

Defined in: packages/storage/FileManager.ts:20

Storage service for JSON results, buffers, and files on disk.

Remarks

Storage is isolated because output handling needs path safety, filename normalization, resource type inference, stream sinks, JSON serialization, and post-processing for media containers. Keeping this here prevents providers and coordinators from duplicating filesystem rules.

Constructors

Constructor

new FileManager(ffmpegEngine, progressManager): FileManager

Defined in: packages/storage/FileManager.ts:25

Parameters

ffmpegEngine

FFmpegEngine

progressManager

ProgressManager

Returns

FileManager

Methods

createSink()

createSink(sinkInput): object

Defined in: packages/storage/FileManager.ts:36

Creates the output sink for a download.

Parameters

sinkInput

CreateSinkInput

Output mode, provider, identifier, and transcode options.

Returns

object

Writable stream and finalize callback for the selected output mode.

stream

stream: Writable

finalize

finalize: (resolved, headers, isFmp4?) => Promise<CreateSinkOutput>

Parameters
resolved

ResolvedFile

headers

Record<string, string>

isFmp4?

boolean

Returns

Promise<CreateSinkOutput>


finalizeStream()

finalizeStream(finalPath, tOptions?, isFmp4?, opts?): Promise<{ path: string; filename: string; extension: string; mimeType: any; }>

Defined in: packages/storage/FileManager.ts:148

Finalizes a file after streaming completes.

Parameters

finalPath

string

Path of the streamed file.

tOptions?

TranscodeOptions

Optional ffmpeg transcode options.

isFmp4?

boolean

Whether the stream came from an fMP4 HLS playlist.

opts?

Resolved extension and MIME type hints.

extension?

string

mimeType?

string

Returns

Promise<{ path: string; filename: string; extension: string; mimeType: any; }>

Final path, filename, extension, and MIME type.


toJSON()

toJSON<T, S>(result, directoryPath?): string

Defined in: packages/storage/FileManager.ts:176

Writes an execution result as JSON.

Type Parameters

T

T

S

S extends ExecutionShape

Parameters

result

ExecutionResult<T, S>

Execution result to serialize.

directoryPath?

string = ...

Destination directory.

Returns

string

Path to the written JSON file.


getFileInfo()

getFileInfo(url, prefix?): ResolvedFile

Defined in: packages/storage/FileManager.ts:200

Extracts filename and extension from URL.

Parameters

url

string

URL to extract filename and extension from

prefix?

string

Optional prefix to add to the filename

Returns

ResolvedFile

path undefined => fud_timestamp


sanitizeFilename()

sanitizeFilename(name): string

Defined in: packages/storage/FileManager.ts:226

Sanitize filename by replacing invalid characters with underscores mostly for Windows OS which has a lot of reserved characters for filenames such as < > : " / \ | ? *

Parameters

name

string

Returns

string


detectResourceType()

detectResourceType(url, request): object

Defined in: packages/storage/FileManager.ts:269

Infers MIME type and extension for a media URL.

Parameters

url

string

Media URL to inspect.

request

ExecutionArgs

Provider request used for fallback decisions.

Returns

object

Detected or provider-default resource type.

mimeType

mimeType: string

extension

extension: AllowedExtension


deriveResolvedFile()

deriveResolvedFile(initial, finalUrl, headers, isFmp4?, prefix?): ResolvedFile

Defined in: packages/storage/FileManager.ts:307

Reconciles the initial file guess with the final response URL and headers.

Parameters

initial

ResolvedFile

Filename inferred before requesting the stream.

finalUrl

string

Final URL returned by the stream request.

headers

Record<string, string>

Response headers.

isFmp4?

boolean

Whether the media is fMP4 HLS.

prefix?

string

Optional filename prefix.

Returns

ResolvedFile

Resolved filename and extension for the actual media.