diff --git a/jquery.ajaxfile/jquery.ajaxFile-tests.ts b/jquery.ajaxfile/jquery.ajaxFile-tests.ts new file mode 100644 index 000000000..4a98706a4 --- /dev/null +++ b/jquery.ajaxfile/jquery.ajaxFile-tests.ts @@ -0,0 +1,54 @@ +/// +/// +/// + +function testRawApi(){ + var inputElement:HTMLInputElement = null; + var resultPromise = AjaxFile.send({ + method: 'POST', + url: '/', + desiredResponseDataType: JQueryAjaxFile.DataType.Json, + files: [ + { name: 'joeFile', element: inputElement } + ], + data: { + name: 'joe' + }, + timeoutInSeconds: 30 + }) + .then(result => console.log('Result: ' + result.data), result => console.log('Error: ' + result.error)) + .done(result => console.log('Result: ' + result.data)) + .fail(result => console.log('Error: ' + result.error + " " + result.status.code + " " + result.status.text + " " + result.status.isSuccess)) + .always(result => console.log('end')) + .abord(); +} + +function testJQuery() { + var inputElement: HTMLInputElement = null; + var extension: JQueryAjaxFile.IAjaxFileJQueryExtension = $.fn.ajaxWithFile; + var option: JQueryAjaxFile.IJQueryOption = { + type: 'POST', + url: '/', + dataType: "json", + files: [ + { name: 'joeFile', element: inputElement } + ], + data: { + name: 'joe' + }, + success(result) { console.log('Result: ' + result); }, + error(jqXhr, textStatus, errorThrown) { console.log('Error: ' + errorThrown); }, + complete(jqXhr, textStatus) { console.log('end'); }, + global: true, + timeout: 60 + }; + extension.ajaxWithFile(option); +} + +function testKnockoutExtension(){ + var fileHandler:KnockoutBindingHandler = ko.bindingHandlers.file; +} + +testKnockoutExtension(); +testJQuery(); +testRawApi(); \ No newline at end of file diff --git a/jquery.ajaxfile/jquery.ajaxFile.d.ts b/jquery.ajaxfile/jquery.ajaxFile.d.ts new file mode 100644 index 000000000..459287a27 --- /dev/null +++ b/jquery.ajaxfile/jquery.ajaxFile.d.ts @@ -0,0 +1,119 @@ +// Type definitions for jquery.ajaxfile v0.1.0 +// Project: https://github.com/fpellet/jquery.ajaxFile +// Definitions by: Florent PELLET +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// + +declare namespace JQueryAjaxFile { + export enum DataType { + Json, + Xml, + Text + } + + interface IFileData { + name: string; + element: HTMLInputElement; + } + + interface IOption { + method?: string; + url?: string; + + data?: any; + files?: IFileData[]; + desiredResponseDataType?: DataType; + + timeoutInSeconds?: number; + } + + interface IResponseStatus { + code: number; + text: string; + isSuccess: boolean; + } + + interface IAjaxFileResult { + error?: any; + data?: any; + status?: IResponseStatus; + } + + interface IAjaxFileResultCallback { + (result: IAjaxFileResult): void; + } + + interface IAjaxFilePromise { + then(success: IAjaxFileResultCallback, error?: IAjaxFileResultCallback): IAjaxFilePromise; + done(success: IAjaxFileResultCallback): IAjaxFilePromise; + fail(error: IAjaxFileResultCallback): IAjaxFilePromise; + always(error: IAjaxFileResultCallback): IAjaxFilePromise; + + abord(): void; + } + + interface IAjaxFileStatic { + send(option: IOption): IAjaxFilePromise; + } + + interface IJQueryXHR { + readyState: any; + status: number; + statusText: string; + responseXML: Document; + responseText: string; + statusCode?: { [key: string]: any; }; + + abort(statusText?: string): void; + + setRequestHeader(header: string, value: string): void; + getAllResponseHeaders(): string; + getResponseHeader(header: string): string; + + beforeSend?(jqXHR: IJQueryXHR, settings: JQueryAjaxSettings): any; + dataFilter?(data: any, ty: any): any; + success?(data: any, textStatus: string, jqXHR: IJQueryXHR): any; + error?(jqXHR: IJQueryXHR, textStatus: string, errorThrown: string): any; + complete?(jqXHR: IJQueryXHR, textStatus: string): any; + } + + interface IJQueryOption { + type?: string; + url?: string; + + data?: any; + files?: IFileData[]; + dataType?: string; + + timeout?: number; + + global?: boolean; + + error?(jqXHR: IJQueryXHR, textStatus: string, errorThrown: string): any; + success?(data: any, textStatus: string, jqXHR: IJQueryXHR): any; + complete?(jqXHR: IJQueryXHR, textStatus: string): any; + } + + interface IAjaxFileJQueryExtension { + ajaxWithFile(jqueryOption: IJQueryOption): JQueryDeferred; + } +} + +declare var AjaxFile: JQueryAjaxFile.IAjaxFileStatic; + +declare module 'ajaxfile' { + export = AjaxFile; +} + +declare namespace AjaxFileKnockout { + interface IFileInputWrapper { + getElement(): HTMLInputElement; + fileSelected(): boolean; + } +} + +interface KnockoutBindingHandlers { + file: KnockoutBindingHandler; +}