-
-
Notifications
You must be signed in to change notification settings - Fork 169
Closed
Labels
Description
I'm interested in using Meteor-Files together with ng2-files-upload which being an Angular 2 component is written in Typescript.
Here's my initial try if anyone is interested.
declare module 'meteor/ostrio:files' {
import {Mongo} from 'meteor/mongo';
import {ReactiveVar} from 'meteor/reactive-var';
export interface FilesCollectionOptions {
storagePath?: string;
collection?: Mongo.Collection<any>;
collectionName?: string;
continueUploadTTL?: string;
cacheControl?: string;
responseHeaders?: {[x: string]: string} | ((responseCode?, fileRef?, versionRef?, version?) => {[x: string]: string});
throttle?: string;
schema?: Object;
chunkSize?: number;
namingFunction?: Function;
permissions?: number;
parentDirPermissions?: number;
integrityCheck?: boolean;
strict?: boolean;
downloadCallback?: Function;
protected?: boolean | Function;
public?: boolean;
onBeforeUpload?: (fileData) => boolean | string;
onInitiateUpload?: (fileData) => void;
onBeforeRemove?: (cursor: Mongo.Cursor<any>) => boolean;
onAfterUpload?: (Object) => any;
onAfterRemove?: (Object) => any;
onbeforeunloadMessage?: string | (() => string);
allowClientCode?: boolean;
debug?: boolean;
interceptDownload?: (http, fileRef, version) => any;
}
export interface SearchOptions {
sort?: Mongo.SortSpecifier;
skip?: number;
limit?: number;
fields?: Mongo.FieldSpecifier;
reactive?: boolean;
transform?: Function;
}
export interface InsertOptions {
file: File | Object | string;
isBase64?: boolean;
meta?: {[x: string]: any};
transport?: 'ddp' | 'http'
onStart?: (error: Object, fileData: Object) => any;
onUploaded?: (error: Object, fileData: Object) => any;
onAbort?: (fileData: Object) => any;
onError?: (error: Object, fileData: Object) => any;
onProgress?: (progress: number, fileData: Object) => any;
onBeforeUpload?: (fileData: Object) => any;
chunkSize?: number | 'dynamic';
allowWebWorkers?: boolean;
}
export interface LoadOptions {
fileName: string;
meta?: Object;
type?: string;
size?: number;
}
export class FileUpload {
file: File;
onPause: ReactiveVar<boolean>;
progress: ReactiveVar<number>;
estimateTime: ReactiveVar<number>;
estimateSpeed: ReactiveVar<number>;
state: ReactiveVar<'active' | 'paused' | 'aborted' | 'completed'>;
pause();
continue();
toggle();
pipe();
}
export class FileCursor {
remove(callback: (err) => void);
link(): string;
get(property: string): any;
fetch(): Object[];
with(): FileCursor;
}
export class FilesCursor extends Mongo.Cursor<any> {
cursor: Mongo.Cursor<any>;
get(): Object[];
hasNext(): boolean;
next(): Object;
hasPrevious(): boolean;
previous(): Object;
fetch(): Object[]
first(): Object;
last(): Object;
count(): number;
remove(callback: (err) => void);
forEach(callback: (doc)=>void, context: Object);
each(): FileCursor[];
map(callback: (doc)=>Object, context: Object): Object[];
current(): Object | undefined;
observe(callbacks: Mongo.ObserveCallbacks): Meteor.LiveQueryHandle;
observeChanges(callbacks: Mongo.ObserveChangesCallbacks): Meteor.LiveQueryHandle;
}
export class FilesCollection {
collection: Mongo.Collection<any>;
schema: any;
constructor(config: FilesCollectionOptions)
find(selector?: Mongo.Selector, options?: SearchOptions): FilesCursor;
findOne(selector?: Mongo.Selector, options?: SearchOptions): FileCursor;
insert(settings: InsertOptions, autoStart: boolean): FileUpload;
remove(select: Mongo.Selector, callback: (error)=>any): FilesCollection;
link(fileRef: Object): string;
allow(options: Mongo.AllowDenyOptions): void;
deny(options: Mongo.AllowDenyOptions): void;
denyClient(): void;
on(event: string, callback: (fileRef) => void);
unlink(fileRef: Object, version: string): FilesCollection;
addFile(path: string, opts: LoadOptions, callback: (err: any, fileRef: Object) => any, proceedAfterUpload: boolean);
load(url: string, opts: LoadOptions, callback: (err: any, fileRef: Object) => any, proceedAfterUpload: boolean);
write(buffer: Buffer, opts: LoadOptions, callback: (err: any, fileRef: Object) => any, proceedAfterUpload: boolean);
}
}
Edit: allowWebWorkers
should be optional
Edit 2: I've made a few more changes. This will be my last update as while this package does have some good features it doesn't really fit into my app.