declare enum CFBEntryType { unknown, storage, stream, lockbytes, property, root } declare enum CFBStorageType { fat, minifat } /* CFB Entry Object demanded by write functions */ interface CFBEntryMin { /* Raw Content (Buffer when available, Array of bytes otherwise) */ content:any; } /* CFB Entry Object returned by parse functions */ interface CFBEntry extends CFBEntryMin { /* Case-sensitive internal name */ name:string; /* CFB type (salient types: stream, storage) -- see CFBEntryType */ type:string; /* Creation Time */ ct:Date; /* Modification Time */ mt:Date; /* Raw creation time -- see [MS-DTYP] 2.3.3 FILETIME */ mtime:string; /* Raw modification time -- see [MS-DTYP] 2.3.3 FILETIME */ ctime:string; /* RBT color: 0 = red, 1 = black */ color:number; /* Class ID represented as hex string */ clsid:string; /* User-Defined State Bits */ state:number; /* Starting Sector */ start:number; /* Data Size */ size:number; /* Storage location -- see CFBStorageType */ storage:string; } /* cfb.FullPathDir as demanded by write functions */ interface CFBDirectoryMin { /* keys are unix-style paths */ [key:string]: CFBEntryMin; } /* cfb.FullPathDir Directory object */ interface CFBDirectory extends CFBDirectoryMin { /* cfb.FullPathDir keys are paths; cfb.Directory keys are file names */ [key:string]: CFBEntry; } /* cfb object demanded by write functions */ interface CFBContainerMin { /* Path -> CFB object mapping */ FullPathDir:CFBDirectoryMin; } /* cfb object returned by read and parse functions */ interface CFBContainer extends CFBContainerMin { /* search by path or file name */ find(string):CFBEntry; /* list of streams and storages */ FullPaths:string[]; /* Path -> CFB object mapping */ FullPathDir:CFBDirectory; /* Array of entries in the same order as FullPaths */ FileIndex:CFBEntry[]; /* Raw Content, in chunks (Buffer when available, Array of bytes otherwise) */ raw:any[]; } interface CFB { read(f:any, options:any):CFBContainer; parse(f:any):CFBContainer; utils: { ReadShift(size:any,t?:any):any; WarnField(hexstr:string,fld?:string); CheckField(hexstr:string,fld?:string); prep_blob(blob:any, pos?:number):any; bconcat(bufs:any[]):any; }; main; }