read-stream/types.ts

/**
 * 스트림 이벤트 타입
 *  - CHANGE: 변경사항이 있음
 *  - RESOLVE: 완료
 *  - REJECT: 오류
 * @export
 * @enum {string}
 */
export enum FileReadEventType {
  CHANGE = 'CHANGE',
  RESOLVE = 'RESOLVE',
  REJECT = 'REJECT',
  ABORT = 'ABORT',
}

/**
 * 스트림 이벤트
 * @export
 * @interface FileReadEvent
 */
export interface FileReadEvent {
  /**
   * 이벤트 타입명
   * @type {FileReadEventType}
   */
  type: FileReadEventType;
  /**
   * 스트림 상태
   * @type {FileReadState}
   */
  state: FileReadState;
  /**
   * 오류
   * @type {*}
   */
  error?: any;
}

/**
 * 스트림 상태 정보
 * @export
 * @interface FileReadState
 */
export interface FileReadState {
  /**
   * 파일명
   * @type {string}
   */
  fileName: string;
  /**
   * 파일의 (Mime)타입
   * @type {string}
   */
  fileType: string;
  /**
   * 파일의 용량
   * @type {number}
   */
  fileSize: number;
  /**
   * 파일의 마지막 수정시간
   * @type {number}
   */
  fileLastModified: number;
  /**
   * 읽어들인 용량
   * @type {number}
   */
  readed: number;
  /**
   * 읽어내야할 용량(파일 용량)
   * @type {number}
   */
  total: number;
  /**
   * 1회 읽기시 읽어들일 용량
   * @type {number}
   */
  chunkSize: number;
  /**
   * 읽기 완료 후 반환 타입
   * @type {FileReadResponseType}
   */
  responseType: FileReadResponseType;
  /**
   * responseType 이 BUFFER 인 경우 반환하는 ArrayBuffer[]
   * @type {ArrayBuffer[]}
   */
  buffers?: ArrayBuffer[];
  /**
   * responseType 이 BLOB 인 경우 반환하는 Blob
   * @type {Blob}
   */
  blob?: Blob;
}

/**
 * 스트림 옵션
 * @export
 * @interface FileReadConfig
 */
export interface FileReadConfig {
  /**
   * 1회에 읽어들일 용량
   * @type {number}
   */
  chunkSize?: number;
  /**
   * 읽기 완료 후 반환 타입
   * @type {FileReadResponseType}
   */
  responseType?: FileReadResponseType;
}

/**
 * 스트립 상태 정보 중 완료시 파일 타입.
 *  - BUFFER: ArrayBuffer[] 타입
 *  - BLOB: Blob 타입
 * @export
 * @enum {string}
 */
export enum FileReadResponseType {
  BUFFER = 'BUFFER',
  BLOB = 'BLOB',
}