diff --git a/README.md b/README.md index 377dcdd56d..80d11aa6ed 100755 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ List of Definitions * [CKEditor](https://github.com/ckeditor/ckeditor-dev) (by [Ondrej Sevcik](https://github.com/ondrejsevcik)) * [CodeMirror](http://codemirror.net) (by [François de Campredon](https://github.com/fdecampredon)) * [Commander](http://github.com/visionmedia/commander.js) (by [Marcelo Dezem](https://github.com/mdezem)) +* [Cordova](http://cordova.apache.org) (by [Microsoft Open Technologies, Inc.](http://msopentech.com/)) * [Couchbase / Couchnode](https://github.com/couchbase/couchnode) (by [Basarat Ali Syed](https://github.com/basarat)) * [Crossfilter](https://github.com/square/crossfilter) (by [Schmulik Raskin](https://github.com/schmuli)) * [crypto-js](https://code.google.com/p/crypto-js/) (by [Gia Bảo @ Sân Đình](https://github.com/giabao)). @see [cryptojs.d.ts repo](https://github.com/giabao/cryptojs.d.ts) diff --git a/cordova/cordova-tests.ts b/cordova/cordova-tests.ts new file mode 100644 index 0000000000..4cd95e694c --- /dev/null +++ b/cordova/cordova-tests.ts @@ -0,0 +1,229 @@ +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +/// + +// Apache Cordova core +//---------------------------------------------------------------------- + +console.log('cordova.version: ' + cordova.version + ', cordova.platformId: ' + cordova.platformId); + +cordova.exec(null, null, "NativeClassName", "MethodName"); + +cordova.define('mymodule', (require, exports, module) => { }); +var myModule = cordova.require('mymodule'); + +var argsCheck: ArgsCheck = cordova.require('cordova/argcheck'); +argsCheck.checkArgs('ssA', 'cordova.exec', [() => { }, () => { }, 'window', 'openDatabase']); + +// Battery status plugin +//---------------------------------------------------------------------- +window.addEventListener('batterystatus', + (ev: BatteryStatusEvent) => { console.log('Battery level is ' + ev.level); }); + +window.addEventListener('batterycritical', + ()=> { alert('Battery is critical low!'); }); + +// Camera plugin +//---------------------------------------------------------------------- + +navigator.camera.getPicture( + (data: string) => { alert('Got photo!'); }, + (message: string)=> { alert('Failed!: ' + message); }, + { + allowEdit: true, + cameraDirection: Camera.Direction.BACK, + destinationType: Camera.DestinationType.FILE_URI, + encodingType: Camera.EncodingType.JPEG, + sourceType: Camera.PictureSourceType.PHOTOLIBRARY, + quality: 80 + }); + +// Contacts plugin +//---------------------------------------------------------------------- + +var contact: Contact = navigator.contacts.create({ + nickname: 'John Smith', + displayName: 'John Smith', + phoneNumbers: [{ pref: true, type: "work", value: "+185642556856" }] +}); + +navigator.contacts.find(["phoneNumbers"], + (contacts: Contact[])=> { alert('Find ' + contacts.length + ' contacts'); }, + (error: ContactError) => { alert('Error: ' + error.message); }, + { + filter: "+1", + multiple: true + } +); + +// Device API +//---------------------------------------------------------------------- + +console.log(JSON.stringify(device)); + +// DeviceMotion plugin +//---------------------------------------------------------------------- + +navigator.accelerometer.getCurrentAcceleration( + (acc: Acceleration) => { console.log('X: ' + acc.x + 'Y: ' + acc.y + 'Z: ' + acc.z); }, + () => { alert('Error!'); }); + +var acchandle: WatchHandle = navigator.accelerometer.watchAcceleration( + (acc: Acceleration)=> { console.log('X: ' + acc.x + 'Y: ' + acc.y + 'Z: ' + acc.z); }, + () => { alert('Error!'); }, + { frequency: 10 }); + +navigator.accelerometer.clearWatch(acchandle); + +// DeviceOrientation plugin +//---------------------------------------------------------------------- + +navigator.compass.getCurrentHeading( + (heading: CompassHeading)=> { console.log('Got heading to ' + heading.magneticHeading); }, + (error: CompassError)=> { alert('Error! ' + error.code); }, + { frequency: 10 }); + +var accelhandle = navigator.compass.watchHeading( + (heading: CompassHeading) => { console.log('Got heading to ' + heading.magneticHeading); }, + (error: CompassError) => { alert('Error! ' + error.code); }, + { frequency: 10 }); + +navigator.compass.clearWatch(accelhandle); + +// Dialogs plugin +//---------------------------------------------------------------------- + +navigator.notification.alert('Alert!', () => { alert('You\'re alerted'); }, 'Alert', 'Ok'); +navigator.notification.confirm('Are you ok?', (choice: number) => { alert('Your choice is ' + choice); }); + +// FileSystem plugin +//---------------------------------------------------------------------- + +function fsaccessor(fs: FileSystem) { + console.log('FS root is: ' + fs.root.name); + var fsreader: DirectoryReader = fs.root.createReader(); + fsreader.readEntries( + (entries: Entry[]) => { console.log(fs.root.name + ' has ' + entries.length + ' child elements'); }, + (err: Error)=> { alert('Error: ' + err.message); }); +} + +window.requestFileSystem( + window.TEMPORARY, + 1024 * 1024 * 5, + fsaccessor, + (err: Error) => { alert('Error: ' + err.message); }); + +// FileTransfer plugin +//---------------------------------------------------------------------- + +var file = new FileTransfer(); +file.download('http://some.server.com/download.php', + 'cdvfile://localhost/persistent/path/to/downloads/', + (file: FileEntry)=> { console.log('File Downloaded to ' + file.fullPath); }, + (err: FileTransferError)=> { alert('Error ' + err.code); }, + { headers: null }, + true); + + +// InAppBrowser plugin +//---------------------------------------------------------------------- + +// signature of window.open() added by InAppBrowser plugin +// is similar to native window.open signature, so the compiler can's +// select proper overload, but we cast result to InAppBrowser manually. +var iab = window.open('google.com', '_self'); +iab.addEventListener('loadstart', (ev: InAppBrowserEvent) => { console.log('Start opening ' + ev.url); }); +iab.show(); + +// Globalization plugin +//---------------------------------------------------------------------- + +navigator.globalization.dateToString(new Date(), + (date) => { console.log(JSON.stringify(date)); }, + (error) => { alert(error.message); }, + { formatLength: "short", selector: "date" }); + +navigator.globalization.getDateNames( + (names) => { + names.value.forEach((name) => { console.log(name); }); + }, + (error) => { alert(error.message); }, + { item: "months", type: "wide" }); + +// Media and Media Capture +//---------------------------------------------------------------------- + +var media = new Media('', + () => { console.log('Media opened'); }, + (err: MediaError) => { alert('Error: ' + err.code); }); +media.play(); +media.setVolume(10); + +console.log('Supported audio modes are: ' + JSON.stringify(navigator.device.capture.supportedAudioModes)); + +navigator.device.capture.captureAudio( + (captures: MediaFile[])=> { console.log(captures.length + ' captured'); }, + (err: CaptureError)=> { alert('Error ' + err.message); }, + { + limit: 3, + duration: 10 + }); + +// Push Notifications +//---------------------------------------------------------------------- + +var pushNotification = window.plugins.pushNotification; +pushNotification.register( + (regId: string) => { console.log('Successfully registered'); }, + (err: any) => { alert('Error!'); }, + { + channelName: "your_channel_name", + ecb: "onNotification" + }); + +function onNotification(e: any) { + navigator.notification.alert(e.text2, () => { }, e.text1); +} + +window.plugins.pushNotification.unregister(() => { }, () => { }); + +// Network Plugin +//---------------------------------------------------------------------- + +console.log('Connection type is: ' + navigator.connectionSpeed); + +var connType = navigator.connection.type; +if (connType == Connection.WIFI) { + console.log('Congratulations, you\'re with fast Internet!'); +} + +document.addEventListener('offline', () => { alert('You\'re offline!'); }); + +// SplashScreen plugin +//---------------------------------------------------------------------- + +navigator.splashscreen.show(); +navigator.splashscreen.hide(); + + +// WebSQL plugin +//---------------------------------------------------------------------- + +var db = window.openDatabase('Test', '0.1', 'test', 1024 * 1024 * 5); +db.transaction( + (tx: SqlTransaction) => { + tx.executeSql('CREATE TABLE Sample IF NOT EXIST...'); + tx.executeSql('INSERT INTO Sample VALUES...'); + }, + (err: SqlError) => { + if (err.code = SqlError.SYNTAX_ERR) { + alert('Error ' + err.message); + } + }, + () => { console.log('Transaction completed successfully'); } +); + +// Vibration plugin +//---------------------------------------------------------------------- +navigator.notification.vibrate(100); \ No newline at end of file diff --git a/cordova/cordova.d.ts b/cordova/cordova.d.ts new file mode 100644 index 0000000000..95be388824 --- /dev/null +++ b/cordova/cordova.d.ts @@ -0,0 +1,60 @@ +// Type definitions for Apache Cordova. +// Project: http://cordova.apache.org +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +interface Cordova { + /** Invokes native functionality by specifying corresponding service name, action and optional parameters. + * @param success A success callback function. + * @param fail An error callback function. + * @param service The service name to call on the native side (corresponds to a native class). + * @param action The action name to call on the native side (generally corresponds to the native class method). + * @param args An array of arguments to pass into the native environment. + */ + exec(success: () => any, fail: () => any, service: string, action: string, args?: string[]): void; + /** Gets the operating system name. */ + platformId: string; + /** Gets Cordova framework version */ + version: string; + /** Defines custom logic as a Cordova module. Other modules can later access it using module name provided. */ + define(moduleName: string, factory: (require: any, exports: any, module: any) => any): void; + /** Access a Cordova module by name. */ + require(moduleName: string): any; +} + +// cordova/argscheck module +interface ArgsCheck { + checkArgs(argsSpec: string, functionName: string, args: any[], callee?: any): void; + getValue(value?: any, defaultValue?: any): any; + enableChecks: boolean; +} + +// cordova/urlutil module +interface UrlUtil { + makeAbsolute(url: string): string +} + +/** Apache Cordova instance */ +declare var cordova: Cordova; \ No newline at end of file diff --git a/cordova/plugins/BatteryStatus.d.ts b/cordova/plugins/BatteryStatus.d.ts new file mode 100644 index 0000000000..7343fab494 --- /dev/null +++ b/cordova/plugins/BatteryStatus.d.ts @@ -0,0 +1,125 @@ +// Type definitions for Apache Cordova BatteryStatus plugin. +// Project: https://github.com/apache/cordova-plugin-battery-status +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Window { + onbatterystatus: (type: BatteryStatusEvent) => void; + onbatterycritical: (type: BatteryStatusEvent) => void; + onbatterylow: (type: BatteryStatusEvent) => void; + /** + * Adds a listener for an event from the BatteryStatus plugin. + * @param type the event to listen for + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param listener the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + addEventListener(type: "batterystatus", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Adds a listener for an event from the BatteryStatus plugin. + * @param type the event to listen for + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param listener the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + addEventListener(type: "batterycritical", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Adds a listener for an event from the BatteryStatus plugin. + * @param type the event to listen for + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param listener the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + addEventListener(type: "batterylow", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Adds a listener for an event from the BatteryStatus plugin. + * @param type the event to listen for + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param listener the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + addEventListener(type: string, listener: (ev: Event) => any, useCapture?: boolean): void; + /** + * Removes a listener for an event from the BatteryStatus plugin. + * @param type The event to stop listening for. + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param callback the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + removeEventListener(type: "batterystatus", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Removes a listener for an event from the BatteryStatus plugin. + * @param type The event to stop listening for. + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param callback the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + removeEventListener(type: "batterycritical", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Removes a listener for an event from the BatteryStatus plugin. + * @param type The event to stop listening for. + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param callback the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + removeEventListener(type: "batterylow", listener: (ev: BatteryStatusEvent) => any, useCapture?: boolean): void; + /** + * Removes a listener for an event from the BatteryStatus plugin. + * @param type The event to stop listening for. + * batterystatus: event fires when the percentage of battery charge + * changes by at least 1 percent, or if the device is plugged in or unplugged. + * batterycritical: event fires when the percentage of battery charge has reached + * the critical battery threshold. The value is device-specific. + * batterylow: event fires when the percentage of battery charge has + * reached the low battery threshold, device-specific value. + * @param callback the function that executes when the event fires. The function is + * passed an BatteryStatusEvent object as a parameter. + */ + removeEventListener(type: string, listener: (ev: Event) => any, useCapture?: boolean): void; +} + +/** Object, that passed into battery event listener */ +interface BatteryStatusEvent extends Event { + /* The percentage of battery charge (0-100). */ + level: number; + /* A boolean that indicates whether the device is plugged in. */ + isPlugged: boolean; +} \ No newline at end of file diff --git a/cordova/plugins/Camera.d.ts b/cordova/plugins/Camera.d.ts new file mode 100644 index 0000000000..eb0c971475 --- /dev/null +++ b/cordova/plugins/Camera.d.ts @@ -0,0 +1,167 @@ +// Type definitions for Apache Cordova Camera plugin. +// Project: https://github.com/apache/cordova-plugin-camera +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** + * This plugin provides an API for taking pictures and for choosing images from the system's image library. + */ + camera: Camera; +} + +/** + * This plugin provides an API for taking pictures and for choosing images from the system's image library. + */ +interface Camera { + /** + * Removes intermediate photos taken by the camera from temporary storage. + * @param onSuccess Success callback, that called when cleanup succeeds. + * @param onError Error callback, that get an error message. + */ + cleanup( + onSuccess: () => void, + onError: (message: string) => void): void; + /** + * Takes a photo using the camera, or retrieves a photo from the device's image gallery. + * @param cameraSuccess Success callback, that get the image + * as a base64-encoded String, or as the URI for the image file. + * @param cameraError Error callback, that get an error message. + * @param cameraOptions Optional parameters to customize the camera settings. + */ + getPicture( + cameraSuccess: (data: string) => void, + cameraError: (message: string) => void, + cameraOptions?: CameraOptions): void; + // Next will work only on iOS + //getPicture( + // cameraSuccess: (data: string) => void, + // cameraError: (message: string) => void, + // cameraOptions?: CameraOptions): CameraPopoverHandle; +} + +interface CameraOptions { + /** Picture quality in range o-100 */ + quality?: number; + /** + * Choose the format of the return value. + * Defined in navigator.camera.DestinationType + * DATA_URL : 0, Return image as base64-encoded string + * FILE_URI : 1, Return image file URI + * NATIVE_URI : 2 Return image native URI + * (e.g., assets-library:// on iOS or content:// on Android) + */ + destinationType?: number; + /** + * Set the source of the picture. Defined in navigator.camera.PictureSourceType + * PHOTOLIBRARY : 0, + * CAMERA : 1, + * SAVEDPHOTOALBUM : 2 + */ + sourceType?: number; + /** Allow simple editing of image before selection. */ + allowEdit?: boolean; + /** + * Choose the returned image file's encoding. Defined in navigator.camera.EncodingType + * JPEG : 0 Return JPEG encoded image + * PNG : 1 Return PNG encoded image + */ + encodingType?: number; + /** + * Width in pixels to scale image. Must be used with targetHeight. + * Aspect ratio remains constant. + */ + targetWidth?: number; + /** + * Height in pixels to scale image. Must be used with targetWidth. + * Aspect ratio remains constant. + */ + targetHeight?: number; + /** + * Set the type of media to select from. Only works when PictureSourceType + * is PHOTOLIBRARY or SAVEDPHOTOALBUM. Defined in nagivator.camera.MediaType + * PICTURE: 0 allow selection of still pictures only. DEFAULT. + * Will return format specified via DestinationType + * VIDEO: 1 allow selection of video only, WILL ALWAYS RETURN FILE_URI + * ALLMEDIA : 2 allow selection from all media types + */ + mediaType?: number; + /** Rotate the image to correct for the orientation of the device during capture. */ + correctOrientation?: boolean; + /** Save the image to the photo album on the device after capture. */ + saveToPhotoAlbum?: boolean; + /** Choose the camera to use (front- or back-facing). Defined in navigator.camera.Direction */ + cameraDirection?: number; + /** iOS-only options that specify popover location in iPad. Defined in CameraPopoverOptions. */ + popoverOptions?: CameraPopoverOptions; +} + +/** + * A handle to the popover dialog created by navigator.camera.getPicture. Used on iOS only. + */ +interface CameraPopoverHandle { + /** + * Set the position of the popover. + * @param popoverOptions the CameraPopoverOptions that specify the new position. + */ + setPosition(popoverOptions: CameraPopoverOptions): void; +} + +/** + * iOS-only parameters that specify the anchor element location and arrow direction + * of the popover when selecting images from an iPad's library or album. + */ +interface CameraPopoverOptions { + x: number; + y: number; + width: number; + height: number; + /** + * Direction the arrow on the popover should point. Defined in Camera.PopoverArrowDirection + * Matches iOS UIPopoverArrowDirection constants. + * ARROW_UP : 1, + * ARROW_DOWN : 2, + * ARROW_LEFT : 4, + * ARROW_RIGHT : 8, + * ARROW_ANY : 15 + */ + arrowDir : number; +} + +declare var Camera: { + // Camera constants, defined in Camera plugin + DestinationType: { + DATA_URL: number; + FILE_URI: number; + NATIVE_URI: number + } + Direction: { + BACK: number; + FRONT: number; + } + EncodingType: { + JPEG: number; + PNG: number; + } + MediaType: { + PICTURE: number; + VIDEO: number; + ALLMEDIA: number; + } + PictureSourceType: { + PHOTOLIBRARY: number; + CAMERA: number; + SAVEDPHOTOALBUM: number; + } + // Used only on iOS + PopoverArrowDirection: { + ARROW_UP: number; + ARROW_DOWN: number; + ARROW_LEFT: number; + ARROW_RIGHT: number; + ARROW_ANY: number; + } +}; \ No newline at end of file diff --git a/cordova/plugins/Contacts.d.ts b/cordova/plugins/Contacts.d.ts new file mode 100644 index 0000000000..a6f7bc0868 --- /dev/null +++ b/cordova/plugins/Contacts.d.ts @@ -0,0 +1,262 @@ +// Type definitions for Apache Cordova Contacts plugin. +// Project: https://github.com/apache/cordova-plugin-contacts +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** Provides access to the device contacts database. */ + contacts: Contacts; +} + +interface Contacts { + /** + * The navigator.contacts.create method is synchronous, and returns a new Contact object. + * This method does not retain the Contact object in the device contacts database, + * for which you need to invoke the Contact.save method. + * @param properties Object with contact fields + */ + create(properties?: ContactProperties): Contact; + /** + * The navigator.contacts.find method executes asynchronously, querying the device contacts database + * and returning an array of Contact objects. The resulting objects are passed to the onSuccess + * callback function specified by the onSuccess parameter. + * @param fields The fields parameter specifies the fields to be used as a search qualifier, + * and only those results are passed to the onSuccess callback function. A zero-length fields parameter + * is invalid and results in ContactError.INVALID_ARGUMENT_ERROR. A contactFields value of "*" returns all contact fields. + * @param onSuccess Success callback function invoked with the array of Contact objects returned from the database + * @param onError Error callback function, invoked when an error occurs. + * @param options Search options to filter navigator.contacts. + */ + find(fields: string[], + onSuccess: (contacts: Contact[]) => void, + onError: (error: ContactError) => void, + options?: ContactFindOptions): void; +} + +interface ContactProperties { + /** A globally unique identifier. */ + id?: string; + /** The name of this Contact, suitable for display to end users. */ + displayName?: string; + /** An object containing all components of a persons name. */ + name?: ContactName; + /** A casual name by which to address the contact. */ + nickname?: string; + /** An array of all the contact's phone numbers. */ + phoneNumbers?: ContactField[]; + /** An array of all the contact's email addresses. */ + emails?: ContactField[]; + /** An array of all the contact's addresses. */ + addresses?: ContactAddress[]; + /** An array of all the contact's IM addresses. */ + ims?: ContactField[]; + /** An array of all the contact's organizations. */ + organizations?: ContactOrganization[]; + /** The birthday of the contact. */ + birthday?: Date; + /** A note about the contact. */ + note?: string; + /** An array of the contact's photos. */ + photos?: ContactField[]; + /** An array of all the user-defined categories associated with the contact. */ + categories?: ContactField[]; + /** An array of web pages associated with the contact. */ + urls?: ContactField[]; +} + +/** + * The Contact object represents a user's contact. Contacts can be created, stored, or removed + * from the device contacts database. Contacts can also be retrieved (individually or in bulk) + * from the database by invoking the navigator.contacts.find method. + */ +interface Contact extends ContactProperties { + /** + * Returns a new Contact object that is a deep copy of the calling object, with the id property set to null + */ + clone(): Contact; + /** + * Removes the contact from the device contacts database, otherwise executes an error callback with a ContactError object. + * @param onSuccess Success callback function invoked on success operation. + * @param onError Error callback function, invoked when an error occurs. + */ + remove( + onSuccess: () => void, + onError: (error: Error) => void): void; + /** + * Saves a new contact to the device contacts database, or updates an existing contact if a contact with the same id already exists. + * @param onSuccess Success callback function invoked on success operation with che Contact object. + * @param onError Error callback function, invoked when an error occurs. + */ + save( + onSuccess: (contact: Contact) => void, + onError: (error: Error) => void): void; +} + +declare var Contact: { + /** Constructor of Contact object */ + new(id?: string, + displayName?: string, + name?: ContactName, + nickname?: string, + phoneNumbers?: ContactField[], + emails?: ContactField[], + addresses?: ContactAddress[], + ims?: ContactField[], + organizations?: ContactOrganization[], + birthday?: Date, + note?: string, + photos?: ContactField[], + categories?: ContactField, + urls?: ContactField[]): Contact +}; + +/** The ContactError object is returned to the user through the contactError callback function when an error occurs. */ +interface ContactError { + /** Error code */ + code: number; + /** Error message */ + message: string; +} + +declare var ContactError: { + new(code: number): ContactError; + UNKNOWN_ERROR: number; + INVALID_ARGUMENT_ERROR: number; + TIMEOUT_ERROR: number; + PENDING_OPERATION_ERROR: number; + IO_ERROR: number; + NOT_SUPPORTED_ERROR: number; + PERMISSION_DENIED_ERROR: number +}; + +/** Contains different kinds of information about a Contact object's name. */ +interface ContactName { + /** The complete name of the contact. */ + formatted?: string; + /** The contact's family name. */ + familyName?: string; + /** The contact's given name. */ + givenName?: string; + /** The contact's middle name. */ + middleName?: string; + /** The contact's prefix (example Mr. or Dr.) */ + honorifixPrefix?: string; + /** The contact's suffix (example Esq.). */ + honorifixSuffix?: string; +} + +declare var ContactName: { + /** Constructor for ContactName object */ + new(formatted?: string, + familyName?: string, + givenName?: string, + middleName?: string, + honorifixPrefix?: string, + honorifixSuffix?: string): ContactName +}; + +/** + * The ContactField object is a reusable component that represents contact fields generically. + * Each ContactField object contains a value, type, and pref property. A Contact object stores + * several properties in ContactField[] arrays, such as phone numbers and email addresses. + * + * In most instances, there are no pre-determined values for a ContactField object's type attribute. + * For example, a phone number can specify type values of home, work, mobile, iPhone, + * or any other value that is supported by a particular device platform's contact database. + * However, for the Contact photos field, the type field indicates the format of the returned image: + * url when the value attribute contains a URL to the photo image, or base64 when the value + * contains a base64-encoded image string. + */ +interface ContactField { + /** Set to true if this ContactField contains the user's preferred value. */ + pref: boolean; + /** A string that indicates what type of field this is, home for example. */ + type: string; + /** The value of the field, such as a phone number or email address. */ + value: string; +} + +declare var ContactField: { + /** Constructor for ContactField object */ + new(type?: string, + pref?: boolean, + value?: string): ContactField +}; + +/** + * The ContactAddress object stores the properties of a single address of a contact. + * A Contact object may include more than one address in a ContactAddress[] array. + */ +interface ContactAddress { + /** Set to true if this ContactAddress contains the user's preferred value. */ + pref?: boolean; + /** A string indicating what type of field this is, home for example. */ + type?: string; + /** The full address formatted for display. */ + formatted?: string; + /** The full street address. */ + streetAddress?: string; + /** The city or locality. */ + locality?: string; + /** The state or region. */ + region?: string; + /** The zip code or postal code. */ + postalCode?: string; + /** The country name. */ + country?: string; +} + +declare var ContactAddress: { + /** Constructor of ContactAddress object */ + new(pref?: boolean, + type?: string, + formatted?: string, + streetAddress?: string, + locality?: string, + region?: string, + postalCode?: string, + country?: string): ContactAddress +}; + +/** + * The ContactOrganization object stores a contact's organization properties. A Contact object stores + * one or more ContactOrganization objects in an array. + */ +interface ContactOrganization { + /** Set to true if this ContactOrganization contains the user's preferred value. */ + pref?: boolean; + /** A string that indicates what type of field this is, home for example. */ + type?: string; + /** The name of the organization. */ + name?: string; + /** The department the contract works for. */ + department?: string; + /** The contact's title at the organization. */ + title?: string; +} + +declare var ContactOrganization: { + /** Constructor for ContactOrganization object */ + new(pref?: boolean, + type?: string, + name?: string, + department?: string, + title?: string): ContactOrganization +}; + +/** Search options to filter navigator.contacts. */ +interface ContactFindOptions { + /** The search string used to find navigator.contacts. */ + filter?: string; + /** Determines if the find operation returns multiple navigator.contacts. */ + multiple?: boolean; +} + +declare var ContactFindOptions: { + /** Constructor for ContactFindOptions object */ + new(filter?: string, + multiple?: boolean): ContactFindOptions +}; \ No newline at end of file diff --git a/cordova/plugins/Device.d.ts b/cordova/plugins/Device.d.ts new file mode 100644 index 0000000000..8365ee70f6 --- /dev/null +++ b/cordova/plugins/Device.d.ts @@ -0,0 +1,31 @@ +// Type definitions for Apache Cordova Device plugin. +// Project: https://github.com/apache/cordova-plugin-device +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +/** + * This plugin defines a global device object, which describes the device's hardware and software. + * Although the object is in the global scope, it is not available until after the deviceready event. + */ +interface Device { + /** Get the version of Cordova running on the device. */ + cordova: string; + /** + * The device.model returns the name of the device's model or product. The value is set + * by the device manufacturer and may be different across versions of the same product. + */ + model: string; + /** device.name is deprecated as of version 2.3.0. Use device.model instead. */ + name: string; + /** Get the device's operating system name. */ + platform: string; + /** Get the device's Universally Unique Identifier (UUID). */ + uuid: string; + /** Get the operating system version. */ + version: string; +} + +declare var device: Device; \ No newline at end of file diff --git a/cordova/plugins/DeviceMotion.d.ts b/cordova/plugins/DeviceMotion.d.ts new file mode 100644 index 0000000000..a0e8908494 --- /dev/null +++ b/cordova/plugins/DeviceMotion.d.ts @@ -0,0 +1,77 @@ +// Type definitions for Apache Cordova Device Motion plugin. +// Project: https://github.com/apache/cordova-plugin-device-motion +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** + * This plugin provides access to the device's accelerometer. The accelerometer is a motion sensor + * that detects the change (delta) in movement relative to the current device orientation, + * in three dimensions along the x, y, and z axis. + */ + accelerometer: Accelerometer; +} + +/** + * This plugin provides access to the device's accelerometer. The accelerometer is a motion sensor + * that detects the change (delta) in movement relative to the current device orientation, + * in three dimensions along the x, y, and z axis. + */ +interface Accelerometer { + /** + * Stop watching the Acceleration referenced by the watchID parameter. + * @param watchID The ID returned by navigator.accelerometer.watchAcceleration. + */ + clearWatch(watchID: WatchHandle): void; + /** + * Get the current acceleration along the x, y, and z axes. + * These acceleration values are returned to the accelerometerSuccess callback function. + * @param accelerometerSuccess Success callback that gets the Acceleration object. + * @param accelerometerError Success callback + */ + getCurrentAcceleration( + accelerometerSuccess: (acceleration: Acceleration) => void, + accelerometerError: () => void): void; + /** + * Retrieves the device's current Acceleration at a regular interval, executing the + * accelerometerSuccess callback function each time. Specify the interval in milliseconds + * via the acceleratorOptions object's frequency parameter. + * The returned watch ID references the accelerometer's watch interval, and can be used + * with navigator.accelerometer.clearWatch to stop watching the accelerometer. + * @param accelerometerSuccess Callback, that called at every time interval and passes an Acceleration object. + * @param accelerometerError Error callback. + * @param accelerometerOptions Object with options for watchAcceleration + */ + watchAcceleration( + accelerometerSuccess: (acceleration: Acceleration) => void, + accelerometerError: () => void, + accelerometerOptions?: AccelerometerOptions): WatchHandle; +} + +/** + * Contains Accelerometer data captured at a specific point in time. Acceleration values include + * the effect of gravity (9.81 m/s^2), so that when a device lies flat and facing up, x, y, and z + * values returned should be 0, 0, and 9.81. + */ +interface Acceleration { + /** Amount of acceleration on the x-axis. (in m/s^2) */ + x: number; + /** Amount of acceleration on the y-axis. (in m/s^2) */ + y: number; + /** Amount of acceleration on the z-axis. (in m/s^2) */ + z: number; + /** Creation timestamp in milliseconds. */ + timestamp: number; +} + +/** Object with options for watchAcceleration */ +interface AccelerometerOptions { + /** How often to retrieve the Acceleration in milliseconds. (Default: 10000) */ + frequency?: number; +} + +/** Abstract type for watch IDs used by Accelerometer. Values of these type are actually `number` at runtime.*/ +interface WatchHandle { } \ No newline at end of file diff --git a/cordova/plugins/DeviceOrientation.d.ts b/cordova/plugins/DeviceOrientation.d.ts new file mode 100644 index 0000000000..effbc06dae --- /dev/null +++ b/cordova/plugins/DeviceOrientation.d.ts @@ -0,0 +1,86 @@ +// Type definitions for Apache Cordova Device Orientation plugin. +// Project: https://github.com/apache/cordova-plugin-device-orientation +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** + * This plugin provides access to the device's compass. The compass is a sensor that detects + * the direction or heading that the device is pointed, typically from the top of the device. + * It measures the heading in degrees from 0 to 359.99, where 0 is north. + */ + compass: Compass; +} + +/** + * This plugin provides access to the device's compass. The compass is a sensor that detects + * the direction or heading that the device is pointed, typically from the top of the device. + * It measures the heading in degrees from 0 to 359.99, where 0 is north. + */ +interface Compass { + /** + * Get the current compass heading. The compass heading is returned via a CompassHeading + * object using the onSuccess callback function. + * @param onSuccess Success callback that passes CompassHeading object. + * @param onError Error callback that passes CompassError object. + */ + getCurrentHeading( + onSuccess: (heading: CompassHeading) => void, + onError: (error: CompassError) => void, + options?: CompassOptions): void; + /** + * Gets the device's current heading at a regular interval. Each time the heading is retrieved, + * the headingSuccess callback function is executed. The returned watch ID references the compass + * watch interval. The watch ID can be used with navigator.compass.clearWatch to stop watching + * the navigator.compass. + * @param onSuccess Success callback that passes CompassHeading object. + * @param onError Error callback that passes CompassError object. + * @param options CompassOptions object + */ + watchHeading( + onSuccess: (heading: CompassHeading) => void, + onError: (error: CompassError) => void, + options?: CompassOptions): number; + /** + * Stop watching the compass referenced by the watch ID parameter. + * @param id The ID returned by navigator.compass.watchHeading. + */ + clearWatch(id: number): void; +} + +/** A CompassHeading object is returned to the compassSuccess callback function. */ +interface CompassHeading { + /** The heading in degrees from 0-359.99 at a single moment in time. */ + magneticHeading: number; + /** The heading relative to the geographic North Pole in degrees 0-359.99 at a single moment in time. A negative value indicates that the true heading can't be determined. */ + trueHeading: number; + /** The deviation in degrees between the reported heading and the true heading. */ + headingAccuracy: number; + /** The time at which this heading was determined. */ + timestamp: number; +} + +interface CompassOptions { + filter?: number; + frequency?: number; +} + +/** A CompassError object is returned to the onError callback function when an error occurs. */ +interface CompassError { + /** + * One of the predefined error codes + * CompassError.COMPASS_INTERNAL_ERR + * CompassError.COMPASS_NOT_SUPPORTED + */ + code: number; +} + +declare var CompassError: { + /** Constructor for CompassError object */ + new(code: number): CompassError; + COMPASS_INTERNAL_ERR: number; + COMPASS_NOT_SUPPORTED: number +} \ No newline at end of file diff --git a/cordova/plugins/Dialogs.d.ts b/cordova/plugins/Dialogs.d.ts new file mode 100644 index 0000000000..5e2a7416dc --- /dev/null +++ b/cordova/plugins/Dialogs.d.ts @@ -0,0 +1,66 @@ +// Type definitions for Apache Cordova Dialogs plugin. +// Project: https://github.com/apache/cordova-plugin-dialogs +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** This plugin provides access to some native dialog UI elements. */ + notification: Notification +} + +/** This plugin provides access to some native dialog UI elements. */ +interface Notification { + /** + * Shows a custom alert or dialog box. Most Cordova implementations use a native dialog box for this feature, + * but some platforms use the browser's alert function, which is typically less customizable. + * @param message Dialog message. + * @param alertCallback Callback to invoke when alert dialog is dismissed. + * @param title Dialog title, defaults to 'Alert'. + * @param buttonName Button name, defaults to OK. + */ + alert(message: string, + alertCallback: () => void, + title?: string, + buttonName?: string): void; + /** + * The device plays a beep sound. + * @param times The number of times to repeat the beep. + */ + beep(times: number): void; + /** + * Displays a customizable confirmation dialog box. + * @param message Dialog message. + * @param confirmCallback Callback to invoke with index of button pressed (1, 2, or 3) + * or when the dialog is dismissed without a button press (0). + * @param title Dialog title, defaults to Confirm. + * @param buttonLabels Array of strings specifying button labels, defaults to [OK,Cancel]. + */ + confirm(message: string, + confirmCallback: (choice: number) => void, + title?: string, + buttonLabels?: string[]): void; + /** + * Displays a native dialog box that is more customizable than the browser's prompt function. + * @param message Dialog message. + * @param promptCallback Callback to invoke when a button is pressed. + * @param title Dialog title, defaults to "Prompt". + * @param buttonLabels Array of strings specifying button labels, defaults to ["OK","Cancel"]. + * @param defaultText Default textbox input value, default: "". + */ + prompt(message: string, + promptCallback: (result: NotificationPromptResult) => void, + title?: string, + buttonLabels?: string[], + defaultText?: string): void; +} + +/** Object, passed to promptCallback */ +interface NotificationPromptResult { + /** The index of the pressed button. Note that the index uses one-based indexing, so the value is 1, 2, 3, etc. */ + buttonIndex: number; + /** The text entered in the prompt dialog box. */ + input1: string; +} \ No newline at end of file diff --git a/cordova/plugins/FileSystem.d.ts b/cordova/plugins/FileSystem.d.ts new file mode 100644 index 0000000000..4aefa5ecfd --- /dev/null +++ b/cordova/plugins/FileSystem.d.ts @@ -0,0 +1,294 @@ +// Type definitions for Apache Cordova File System plugin. +// Project: https://github.com/apache/cordova-plugin-file +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Window { + /** + * Requests a filesystem in which to store application data. + * @param type Whether the filesystem requested should be persistent, as defined above. Use one of TEMPORARY or PERSISTENT. + * @param size This is an indicator of how much storage space, in bytes, the application expects to need. + * @param successCallback The callback that is called when the user agent provides a filesystem. + * @param errorCallback A callback that is called when errors happen, or when the request to obtain the filesystem is denied. + */ + requestFileSystem( + type: number, + size: number, + successCallback: (fileSystem: FileSystem) => void, + errorCallback?: (fileError: Error) => void): void; + TEMPORARY: number; + PERSISTENT: number; +} + +/** This interface represents a file system. */ +interface FileSystem { + /** + * Constructor for FileSystem object + * @param name This is the name of the file system. The specifics of naming filesystems + * is unspecified, but a name must be unique across the list of exposed file systems. + * @param root The root directory of the file system. + */ + new (name: string, root: DirectoryEntry) + /** + * This is the name of the file system. The specifics of naming filesystems + * is unspecified, but a name must be unique across the list of exposed file systems. + */ + name: string; + /** The root directory of the file system. */ + root: DirectoryEntry; +} + +/** + * An abstract interface representing entries in a file system, + * each of which may be a File or DirectoryEntry. + */ +interface Entry { + /** Constructor for Entry object */ + new ( isFile: boolean, isDirectory: boolean, name: string, fullPath: string, fileSystem: FileSystem, nativeURL: string) ; + /** Entry is a file. */ + isFile: boolean; + /** Entry is a directory. */ + isDirectory: boolean; + /** The name of the entry, excluding the path leading to it. */ + name: string; + /** The full absolute path from the root to the entry. */ + fullPath: string; + /** The file system on which the entry resides. */ + fileSystem: FileSystem; + nativeURL: string; + /** + * Look up metadata about this entry. + * @param successCallback A callback that is called with the time of the last modification. + * @param errorCallback A callback that is called when errors happen. + */ + getMetadata( + successCallback: (metadata: Metadata) => void, + errorCallback?: (error: Error) => void): void; + /** + * Move an entry to a different location on the file system. It is an error to try to: + * move a directory inside itself or to any child at any depth;move an entry into its parent if a name different from its current one isn't provided; + * move a file to a path occupied by a directory; + * move a directory to a path occupied by a file; + * move any element to a path occupied by a directory which is not empty. + * A move of a file on top of an existing file must attempt to delete and replace that file. + * A move of a directory on top of an existing empty directory must attempt to delete and replace that directory. + * @param parent The directory to which to move the entry. + * @param newName The new name of the entry. Defaults to the Entry's current name if unspecified. + * @param successCallback A callback that is called with the Entry for the new location. + * @param errorCallback A callback that is called when errors happen. + */ + moveTo(parent: DirectoryEntry, + newName?: string, + successCallback?: (entry: Entry) => void , + errorCallback?: (error: Error) => void ): void; + /** + * Copy an entry to a different location on the file system. It is an error to try to: + * copy a directory inside itself or to any child at any depth; + * copy an entry into its parent if a name different from its current one isn't provided; + * copy a file to a path occupied by a directory; + * copy a directory to a path occupied by a file; + * copy any element to a path occupied by a directory which is not empty. + * A copy of a file on top of an existing file must attempt to delete and replace that file. + * A copy of a directory on top of an existing empty directory must attempt to delete and replace that directory. + * Directory copies are always recursive--that is, they copy all contents of the directory. + * @param parent The directory to which to move the entry. + * @param newName The new name of the entry. Defaults to the Entry's current name if unspecified. + * @param successCallback A callback that is called with the Entry for the new object. + * @param errorCallback A callback that is called when errors happen. + */ + copyTo(parent: DirectoryEntry, + newName?: string, + successCallback?: (entry: Entry) => void , + errorCallback?: (error: Error) => void ): void; + toURL(): string; + /** + * Deletes a file or directory. It is an error to attempt to delete a directory that is not empty. It is an error to attempt to delete the root directory of a filesystem. + * @param successCallback A callback that is called on success. + * @param errorCallback A callback that is called when errors happen. + */ + remove(successCallback: () => void , + errorCallback?: (error: Error) => void ): void; + /** + * Look up the parent DirectoryEntry containing this Entry. If this Entry is the root of its filesystem, its parent is itself. + * @param successCallback A callback that is called with the time of the last modification. + * @param errorCallback A callback that is called when errors happen. + */ + getParent(successCallback: (entry: Entry) => void , + errorCallback?: (error: Error) => void ): void; +} + +/** This interface supplies information about the state of a file or directory. */ +interface Metadata { + /** This is the time at which the file or directory was last modified. */ + modificationTime: Date; + /** The size of the file, in bytes. This must return 0 for directories. */ + size: number; +} + +/** This interface represents a directory on a file system. */ +interface DirectoryEntry extends Entry { + /** + * Creates a new DirectoryReader to read Entries from this Directory. + */ + createReader(): DirectoryReader; + /** + * Creates or looks up a file. + * @param path Either an absolute path or a relative path from this DirectoryEntry + * to the file to be looked up or created. + * It is an error to attempt to create a file whose immediate parent does not yet exist. + * @param options If create and exclusive are both true, and the path already exists, getFile must fail. + * If create is true, the path doesn't exist, and no other error occurs, getFile must create it as a zero-length file and return a corresponding FileEntry. + * If create is not true and the path doesn't exist, getFile must fail. + * If create is not true and the path exists, but is a directory, getFile must fail. + * Otherwise, if no other error occurs, getFile must return a FileEntry corresponding to path. + * @param successCallback A callback that is called to return the File selected or created. + * @param errorCallback A callback that is called when errors happen. + */ + getFile(path: string, options?: Flags, + successCallback?: (entry: FileEntry) => void, + errorCallback?: (error: Error) => void): void; + /** + * Creates or looks up a directory. + * @param path Either an absolute path or a relative path from this DirectoryEntry + * to the directory to be looked up or created. + * It is an error to attempt to create a directory whose immediate parent does not yet exist. + * @param options If create and exclusive are both true and the path already exists, getDirectory must fail. + * If create is true, the path doesn't exist, and no other error occurs, getDirectory must create and return a corresponding DirectoryEntry. + * If create is not true and the path doesn't exist, getDirectory must fail. + * If create is not true and the path exists, but is a file, getDirectory must fail. + * Otherwise, if no other error occurs, getDirectory must return a DirectoryEntry corresponding to path. + * @param successCallback A callback that is called to return the Directory selected or created. + * @param errorCallback A callback that is called when errors happen. + */ + getDirectory(path: string, options?: Flags, + successCallback?: (entry: DirectoryEntry) => void, + errorCallback?: (error: Error) => void): void; + /** + * Deletes a directory and all of its contents, if any. In the event of an error (e.g. trying + * to delete a directory that contains a file that cannot be removed), some of the contents + * of the directory may be deleted. It is an error to attempt to delete the root directory of a filesystem. + * @param successCallback A callback that is called on success. + * @param errorCallback A callback that is called when errors happen. + */ + removeRecursively(successCallback: () => void, + errorCallback?: (error: Error) => void): void; +} + +/** + * This dictionary is used to supply arguments to methods + * that look up or create files or directories. + */ +interface Flags { + /** Used to indicate that the user wants to create a file or directory if it was not previously there. */ + create?: boolean; + /** By itself, exclusive must have no effect. Used with create, it must cause getFile and getDirectory to fail if the target path already exists. */ + exclusive?: boolean; +} + +/** + * This interface lets a user list files and directories in a directory. If there are + * no additions to or deletions from a directory between the first and last call to + * readEntries, and no errors occur, then: + * A series of calls to readEntries must return each entry in the directory exactly once. + * Once all entries have been returned, the next call to readEntries must produce an empty array. + * If not all entries have been returned, the array produced by readEntries must not be empty. + * The entries produced by readEntries must not include the directory itself ["."] or its parent [".."]. + */ +interface DirectoryReader { + /** + * Read the next block of entries from this directory. + * @param successCallback Called once per successful call to readEntries to deliver the next + * previously-unreported set of Entries in the associated Directory. + * If all Entries have already been returned from previous invocations + * of readEntries, successCallback must be called with a zero-length array as an argument. + * @param errorCallback A callback indicating that there was an error reading from the Directory. + */ + readEntries(successCallback: (entries: Entry[]) => void, errorCallback?: (error: Error) => void): void; +} + +/** This interface represents a file on a file system. */ +interface FileEntry extends Entry { + /** + * Creates a new FileWriter associated with the file that this FileEntry represents. + * @param successCallback A callback that is called with the new FileWriter. + * @param errorCallback A callback that is called when errors happen. + */ + createWriter(successCallback: ( + writer: FileWriter) => void, + errorCallback?: (error: Error) => void): void; + /** + * Returns a File that represents the current state of the file that this FileEntry represents. + * @param successCallback A callback that is called with the File. + * @param errorCallback A callback that is called when errors happen. + */ + file(successCallback: (file: File) => void, + errorCallback?: (error: Error) => void): void; +} + +/** + * This interface provides methods to monitor the asynchronous writing of blobs + * to disk using progress events and event handler attributes. + */ +interface FileSaver extends EventTarget { + /** Terminate file operation */ + abort(): void; + /** + * The FileSaver object can be in one of 3 states. The readyState attribute, on getting, + * must return the current state, which must be one of the following values: + * INIT + * WRITING + * DONE + */ + readyState: number; + /** Handler for writestart events. */ + onwritestart: (event: ProgressEvent) => void; + /** Handler for progress events. */ + onprogress: (event: ProgressEvent) => void; + /** Handler for write events. */ + onwrite: (event: ProgressEvent) => void; + /** Handler for abort events. */ + onabort: (event: ProgressEvent) => void; + /** Handler for error events. */ + onerror: (event: ProgressEvent) => void; + /** Handler for writeend events. */ + onwriteend: (event: ProgressEvent) => void; + /** The last error that occurred on the FileSaver. */ + error: Error; +} + +/** + * This interface expands on the FileSaver interface to allow for multiple write + * actions, rather than just saving a single Blob. + */ +interface FileWriter extends FileSaver { + /** + * The byte offset at which the next write to the file will occur. This must be no greater than length. + * A newly-created FileWriter must have position set to 0. + */ + position: number; + /** + * The length of the file. If the user does not have read access to the file, + * this must be the highest byte offset at which the user has written. + */ + length: number; + /** + * Write the supplied data to the file at position. + * @param {Blob} data The blob to write. + */ + write(data: Blob): void; + /** + * The file position at which the next write will occur. + * @param offset If nonnegative, an absolute byte offset into the file. + * If negative, an offset back from the end of the file. + */ + seek(offset: number): void; + /** + * Changes the length of the file to that specified. If shortening the file, data beyond the new length + * must be discarded. If extending the file, the existing data must be zero-padded up to the new length. + * @param size The size to which the length of the file is to be adjusted, measured in bytes. + */ + truncate(size: number): void; +} \ No newline at end of file diff --git a/cordova/plugins/FileTransfer.d.ts b/cordova/plugins/FileTransfer.d.ts new file mode 100644 index 0000000000..e8f1793d9b --- /dev/null +++ b/cordova/plugins/FileTransfer.d.ts @@ -0,0 +1,129 @@ +// Type definitions for Apache Cordova FileTransfer plugin. +// Project: https://github.com/apache/cordova-plugin-file-transfer +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +/// + +/** + * The FileTransfer object provides a way to upload files using an HTTP multi-part POST request, + * and to download files as well. + */ +interface FileTransfer { + /** Called with a ProgressEvent whenever a new chunk of data is transferred. */ + onprogress: Function; + /** + * Sends a file to a server. + * @param fileURL Filesystem URL representing the file on the device. For backwards compatibility, + * this can also be the full path of the file on the device. + * @param server URL of the server to receive the file, as encoded by encodeURI(). + * @param successCallback A callback that is passed a FileUploadResult object. + * @param errorCallback A callback that executes if an error occurs retrieving the FileUploadResult. + * Invoked with a FileTransferError object. + * @param options Optional parameters. + * @param trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates. + * This is useful since Android rejects self-signed security certificates. + * Not recommended for production use. Supported on Android and iOS. + */ + upload( + fileURL: string, + server: string, + successCallback: (result: FileUploadResult) => void, + errorCallback: (error: FileTransferError) => void, + options?: FileUploadOptions, + trustAllHosts?: boolean): void; + /** + * downloads a file from server. + * @param source URL of the server to download the file, as encoded by encodeURI(). + * @param target Filesystem url representing the file on the device. For backwards compatibility, + * this can also be the full path of the file on the device. + * @param successCallback A callback that is passed a FileEntry object. (Function) + * @param errorCallback A callback that executes if an error occurs when retrieving the fileEntry. + * Invoked with a FileTransferError object. + * @param options Optional parameters. + * @param trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates. + * This is useful since Android rejects self-signed security certificates. + * Not recommended for production use. Supported on Android and iOS. + */ + download( + source: string, + target: string, + successCallback: (fileEntry: FileEntry) => void, + errorCallback: (error: FileTransferError) => void, + options?: FileDownloadOptions, + trustAllHosts?: boolean): void; + /** + * Aborts an in-progress transfer. The onerror callback is passed a FileTransferError object + * which has an error code of FileTransferError.ABORT_ERR. + */ + abort(): void; +} + +declare var FileTransfer: { + new (): FileTransfer; +}; + +/** A FileUploadResult object is passed to the success callback of the FileTransfer object's upload() method. */ +interface FileUploadResult { + /** The number of bytes sent to the server as part of the upload. */ + bytesSent: number; + /** The HTTP response code returned by the server. */ + responseCode: number; + /** The HTTP response returned by the server. */ + response: string; + /** The HTTP response headers by the server. Currently supported on iOS only.*/ + headers: any; +} + +/** Optional parameters for upload method. */ +interface FileUploadOptions { + /** The name of the form element. Defaults to file. */ + fileKey?: string; + /** The file name to use when saving the file on the server. Defaults to image.jpg. */ + fileName?: string; + /** The mime type of the data to upload. Defaults to image/jpeg. */ + mimeType?: string; + /** A set of optional key/value pairs to pass in the HTTP request. */ + params?: Object; + /** Whether to upload the data in chunked streaming mode. Defaults to true. */ + chunkedMode?: boolean; + /** A map of header name/header values. Use an array to specify more than one value. */ + headers?: Object[]; +} + +/** Optional parameters for download method. */ +interface FileDownloadOptions { + /** A map of header name/header values. Use an array to specify more than one value. */ + headers?: Object[]; +} + +/** A FileTransferError object is passed to an error callback when an error occurs. */ +interface FileTransferError { + /** + * One of the predefined error codes listed below. + * FileTransferError.FILE_NOT_FOUND_ERR + * FileTransferError.INVALID_URL_ERR + * FileTransferError.CONNECTION_ERR + * FileTransferError.ABORT_ERR + */ + code: number; + /** URL to the source. */ + source: string; + /** URL to the target. */ + target: string; + /** HTTP status code. This attribute is only available when a response code is received from the HTTP connection. */ + http_status: number; + body: any; +} + +declare var FileTransferError: { + /** Constructor for FileTransferError object */ + new (code?: number, source?: string, target?: string, status?: number, body?: any): FileTransferError; + FILE_NOT_FOUND_ERR: number; + INVALID_URL_ERR: number; + CONNECTION_ERR: number; + ABORT_ERR: number; +} \ No newline at end of file diff --git a/cordova/plugins/Globalization.d.ts b/cordova/plugins/Globalization.d.ts new file mode 100644 index 0000000000..bb9cd2f4ab --- /dev/null +++ b/cordova/plugins/Globalization.d.ts @@ -0,0 +1,255 @@ +// Type definitions for Apache Cordova Globalization plugin. +// Project: https://github.com/apache/cordova-plugin-globalization +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** This plugin obtains information and performs operations specific to the user's locale and timezone. */ + globalization: Globalization +} + +/** This plugin obtains information and performs operations specific to the user's locale and timezone. */ +interface Globalization { + /** + * Get the string identifier for the client's current language. + * @param onSuccess Called on success getting the language with a properties object, + * that should have a value property with a String value. + * @param onError Called on error getting the language with a GlobalizationError object. + * The error's expected code is GlobalizationError.UNKNOWN_ERROR. + */ + getPreferredLanguage( + onSuccess: (language: { value: string; }) => void, + onError: (error: GlobalizationError) => void): void; + /** + * Get the string identifier for the client's current locale setting. + * @param onSuccess Called on success getting the locale identifier with a properties object, + * that should have a value property with a String value. + * @param onError Called on error getting the locale identifier with a GlobalizationError object. + * The error's expected code is GlobalizationError.UNKNOWN\_ERROR. + */ + getLocaleName( + onSuccess: (locale: { value: string; }) => void, + onError: (error: GlobalizationError) => void): void; + /** + * Returns a date formatted as a string according to the client's locale and timezone. + * @param date Date to format. + * @param onSuccess Called on success with a properties object, + * that should have a value property with a String value. + * @param onError Called on error with a GlobalizationError object. + * The error's expected code is GlobalizationError.FORMATTING_ERROR. + * @param options Optional format parameters. Default {formatLength:'short', selector:'date and time'} + */ + dateToString( + date: Date, + onSuccess: (date: { value: string; }) => void, + onError: (error: GlobalizationError) => void, + options?: { type?: string; item?: string; }): void; + /** + * Parses a date formatted as a string, according to the client's user preferences + * and calendar using the time zone of the client, and returns the corresponding date object. + * @param dateString String to parse + * @param onSuccess Called on success with GlobalizationDate object + * @param onError Called on error getting the language with a GlobalizationError object. + * The error's expected code is GlobalizationError.PARSING_ERROR. + * @param options Optional parse parameters. Default {formatLength:'short', selector:'date and time'} + */ + stringToDate( + dateString: string, + onSuccess: (date: GlobalizationDate) => void, + onError: (error: GlobalizationError) => void, + options?: { type?: string; item?: string; }): void; + /** + * Returns a pattern string to format and parse dates according to the client's user preferences. + * @param onSuccess Called on success getting pattern with a GlobalizationDatePattern object + * @param onError Called on error getting pattern with a GlobalizationError object. + * The error's expected code is GlobalizationError.PATTERN_ERROR. + * @param options Optional format parameters. Default {formatLength:'short', selector:'date and time'} + */ + getDatePattern( + onSuccess: (datePattern: GlobalizationDatePattern) => void, + onError: (error: GlobalizationError) => void, + options?: { type?: string; item?: string; }): void; + /** + * Returns an array of the names of the months or days of the week, depending on the client's user preferences and calendar. + * @param onSuccess Called on success getting names with a properties object, + * that should have a value property with a String[] value. + * @param onError Called on error getting the language with a GlobalizationError object. + * The error's expected code is GlobalizationError.UNKNOWN_ERROR. + * @param options Optional parameters. Default: {type:'wide', item:'months'} + */ + getDateNames( + onSuccess: (names: { value: string[]; }) => void, + onError: (error: GlobalizationError) => void, + options?: { type?: string; item?: string; }): void; + /** + * Indicates whether daylight savings time is in effect for a given date using the client's time zone and calendar. + * @param {Date} date Date to check + * @param onSuccess Called on success with a properties object, + * that should have a dst property with a boolean value. + * @param onError Called on error with a GlobalizationError object. + * The error's expected code is GlobalizationError.UNKNOWN_ERROR. + */ + isDaylightSavingsTime( + date: Date, + onSuccess: (result: { dst: boolean; }) => void, + onError: (error: GlobalizationError) => void): void; + /** + * Returns the first day of the week according to the client's user preferences and calendar. + * @param onSuccess Called on success with a day object, + * that should have a value property with a number value. + * @param onError Called on error with a GlobalizationError object. + * The error's expected code is GlobalizationError.UNKNOWN_ERROR. + */ + getFirstDayOfWeek( + onSuccess: (day: { value: number; }) => void, + onError: (error: GlobalizationError) => void): void; + /** + * Returns a number formatted as a string according to the client's user preferences. + * @param value Number to format + * @param onSuccess Called on success with a result object, + * that should have a value property with a String value. + * @param onError Called on error with a GlobalizationError object. + * The error's expected code is GlobalizationError.FORMATTING_ERROR. + * @param format Optional format parameters. Default: {type:'decimal'} + */ + nubmerToString( + value: number, + onSuccess: (result: { value: string; }) => void, + onError: (error: GlobalizationError) => void, + format?: { type?: string; }): void; + /** + * Parses a number formatted as a string according to the client's user preferences and returns the corresponding number. + * @param value String to parse + * @param onSuccess Called on success with a result object, + * that should have a value property with a number value. + * @param onError Called on error with a GlobalizationError object. + * The error's expected code is GlobalizationError.FORMATTING_ERROR. + * @param format Optional format parameters. Default: {type:'decimal'} + */ + stringToNumber( + value: string, + onSuccess: (result: { value: number; }) => void, + onError: (error: GlobalizationError) => void, + format?: { type?: string; }): void; + /** + * Returns a pattern string to format and parse numbers according to the client's user preferences. + * @param onSuccess Called on success getting pattern with a GlobalizationNumberPattern object + * @param onError Called on error getting the language with a GlobalizationError object. + * The error's expected code is GlobalizationError.PATTERN_ERROR. + * @param options Optional format parameters. Default {type:'decimal'}. + */ + getNumberPattern( + onSuccess: (result: GlobalizationNumberPattern) => void, + onError: (error: GlobalizationError) => void, + format?: { type?: string; }): void; + /** + * Returns a pattern string to format and parse currency values according to the client's user preferences and ISO 4217 currency code. + * @param currencyCode Should be a String of one of the ISO 4217 currency codes, for example 'USD'. + * @param onSuccess Called on success getting pattern with a GlobalizatioCurrencyPattern object + * @param onError Called on error getting pattern with a GlobalizationError object. + * The error's expected code is GlobalizationError.FORMATTING_ERROR. + * @param options Optional format parameters. Default {type:'decimal'}. + */ + getCurrencyPattern( + currencyCode: string, + onSuccess: (result: GlobalizationCurrencyPattern) => void, + onError: (error: GlobalizationError) => void): void; +} + +/** Date returned by stringToDate */ +interface GlobalizationDate { + /* The four digit year. */ + year: number; + /* The month from (0-11). */ + month: number; + /* The day from (1-31). */ + day: number; + /* The hour from (0-23). */ + hour: number; + /* The minute from (0-59). */ + minute: number; + /* The second from (0-59). */ + second: number; + /* The milliseconds (from 0-999), not available on all platforms. */ + millisecond: number; +} + +/** Pattern to format and parse dates according to the client's user preferences.*/ +interface GlobalizationDatePattern { + /* The date and time pattern to format and parse dates. The patterns follow Unicode Technical Standard #35. */ + pattern: string; + /* The abbreviated name of the time zone on the client. */ + timezone: string; + /* The current difference in seconds between the client's time zone and coordinated universal time. */ + utc_offset: number; + /* The current daylight saving time offset in seconds between the client's non-daylight saving's time zone and the client's daylight saving's time zone. */ + dst_offset: number; +} + +interface GlobalizationDateNameOptions { + type?: string; + item?: string; +} + +/** Pattern to format and parse numbers according to the client's user preferences. */ +interface GlobalizationNumberPattern { + /* The number pattern to format and parse numbers. The patterns follow Unicode Technical Standard #35. */ + pattern: string; + /* The symbol to use when formatting and parsing, such as a percent or currency symbol. */ + symbol: string; + /* The number of fractional digits to use when parsing and formatting numbers. */ + fraction: number; + /* The rounding increment to use when parsing and formatting. */ + rounding: number; + /* The symbol to use for positive numbers when parsing and formatting. */ + positive: string; + /* The symbol to use for negative numbers when parsing and formatting. */ + negative: string; + /* The decimal symbol to use for parsing and formatting. */ + decimal: string; + /* The grouping symbol to use for parsing and formatting. */ + grouping: string; +} + +/** + * Pattern to format and parse currency values according + * to the client's user preferences and ISO 4217 currency code. + */ +interface GlobalizationCurrencyPattern { + /** The currency pattern to format and parse currency values. The patterns follow Unicode Technical Standard #35. */ + pattern: string; + /** The ISO 4217 currency code for the pattern. */ + code: string; + /** The number of fractional digits to use when parsing and formatting currency. */ + fraction: number; + /** The rounding increment to use when parsing and formatting. */ + rounding: number; + /** The decimal symbol to use for parsing and formatting. */ + decimal: string; + /** The grouping symbol to use for parsing and formatting. */ + grouping: string; +} + +/** An object representing a error from the Globalization API. */ +interface GlobalizationError { + /** One of the following codes representing the error type: + * GlobalizationError.UNKNOWN_ERROR: 0 + * GlobalizationError.FORMATTING_ERROR: 1 + * GlobalizationError.PARSING_ERROR: 2 + * GlobalizationError.PATTERN_ERROR: 3 + */ + code: number; + /** A text message that includes the error's explanation and/or details */ + message: string; +} + +/** An object representing a error from the Globalization API. */ +declare var GlobalizationError: { + UNKNOWN_ERROR: number; + FORMATTING_ERROR: number; + PARSING_ERROR: number; + PATTERN_ERROR: number; +} \ No newline at end of file diff --git a/cordova/plugins/InAppBrowser.d.ts b/cordova/plugins/InAppBrowser.d.ts new file mode 100644 index 0000000000..882a7cfb3b --- /dev/null +++ b/cordova/plugins/InAppBrowser.d.ts @@ -0,0 +1,219 @@ +// Type definitions for Apache Cordova InAppBrowser plugin. +// Project: https://github.com/apache/cordova-plugin-inappbrowser +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Window { + /** + * Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser. + * @param url The URL to load. + * @param target The target in which to load the URL, an optional parameter that defaults to _self. + * @param options Options for the InAppBrowser. Optional, defaulting to: location=yes. + * The options string must not contain any blank space, and each feature's + * name/value pairs must be separated by a comma. Feature names are case insensitive. + */ + open(url: string, target?: "_self", options?: string): InAppBrowser; + /** + * Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser. + * @param url The URL to load. + * @param target The target in which to load the URL, an optional parameter that defaults to _self. + * @param options Options for the InAppBrowser. Optional, defaulting to: location=yes. + * The options string must not contain any blank space, and each feature's + * name/value pairs must be separated by a comma. Feature names are case insensitive. + */ + open(url: string, target?: "_blank", options?: string): InAppBrowser; + /** + * Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser. + * @param url The URL to load. + * @param target The target in which to load the URL, an optional parameter that defaults to _self. + * @param options Options for the InAppBrowser. Optional, defaulting to: location=yes. + * The options string must not contain any blank space, and each feature's + * name/value pairs must be separated by a comma. Feature names are case insensitive. + */ + open(url: string, target?: "_system", options?: string): InAppBrowser; + /** + * Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser. + * @param url The URL to load. + * @param target The target in which to load the URL, an optional parameter that defaults to _self. + * @param options Options for the InAppBrowser. Optional, defaulting to: location=yes. + * The options string must not contain any blank space, and each feature's + * name/value pairs must be separated by a comma. Feature names are case insensitive. + */ + open(url: string, target?: string, options?: string, replace?: boolean): InAppBrowser; +} + +/** + * The object returned from a call to window.open. + * NOTE: The InAppBrowser window behaves like a standard web browser, and can't access Cordova APIs. + */ +interface InAppBrowser extends Window { + onloadstart: (type: InAppBrowserEvent) => void; + onloadstop: (type: InAppBrowserEvent) => void; + onloaderror: (type: InAppBrowserEvent) => void; + onexit: (type: InAppBrowserEvent) => void; + // addEventListener overloads + /** + * Adds a listener for an event from the InAppBrowser. + * @param type the event to listen for + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + addEventListener(type: "loadstart", callback: (event: InAppBrowserEvent) => void): void; + /** + * Adds a listener for an event from the InAppBrowser. + * @param type the event to listen for + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + addEventListener(type: "loadstop", callback: (event: InAppBrowserEvent) => void): void; + /** + * Adds a listener for an event from the InAppBrowser. + * @param type the event to listen for + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + addEventListener(type: "loaderror", callback: (event: InAppBrowserEvent) => void): void; + /** + * Adds a listener for an event from the InAppBrowser. + * @param type the event to listen for + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + addEventListener(type: "exit", callback: (event: InAppBrowserEvent) => void): void; + /** + * Adds a listener for an event from the InAppBrowser. + * @param type the event to listen for + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + addEventListener(type: string, callback: (event: InAppBrowserEvent) => void): void; + // removeEventListener overloads + /** + * Removes a listener for an event from the InAppBrowser. + * @param type The event to stop listening for. + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + removeEventListener(type: "loadstart", callback: (event: InAppBrowserEvent) => void): void; + /** + * Removes a listener for an event from the InAppBrowser. + * @param type The event to stop listening for. + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + removeEventListener(type: "loadstop", callback: (event: InAppBrowserEvent) => void): void; + /** + * Removes a listener for an event from the InAppBrowser. + * @param type The event to stop listening for. + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + removeEventListener(type: "loaderror", callback: (event: InAppBrowserEvent) => void): void; + /** + * Removes a listener for an event from the InAppBrowser. + * @param type The event to stop listening for. + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + removeEventListener(type: "exit", callback: (event: InAppBrowserEvent) => void): void; + /** + * Removes a listener for an event from the InAppBrowser. + * @param type The event to stop listening for. + * loadstart: event fires when the InAppBrowser starts to load a URL. + * loadstop: event fires when the InAppBrowser finishes loading a URL. + * loaderror: event fires when the InAppBrowser encounters an error when loading a URL. + * exit: event fires when the InAppBrowser window is closed. + * @param callback the function that executes when the event fires. The function is + * passed an InAppBrowserEvent object as a parameter. + */ + removeEventListener(type: string, callback: (event: InAppBrowserEvent) => void): void; + /** Closes the InAppBrowser window. */ + close(): void; + /** + * Displays an InAppBrowser window that was opened hidden. Calling this has no effect + * if the InAppBrowser was already visible. + */ + show(): void; + /** + * Injects JavaScript code into the InAppBrowser window. + * @param script Details of the script to run, specifying either a file or code key. + * @param callback The function that executes after the JavaScript code is injected. + * If the injected script is of type code, the callback executes with + * a single parameter, which is the return value of the script, wrapped in an Array. + * For multi-line scripts, this is the return value of the last statement, + * or the last expression evaluated. + */ + executeScript(script: { code: string }, callback: (result: any) => void): void; + /** + * Injects JavaScript code into the InAppBrowser window. + * @param script Details of the script to run, specifying either a file or code key. + * @param callback The function that executes after the JavaScript code is injected. + * If the injected script is of type code, the callback executes with + * a single parameter, which is the return value of the script, wrapped in an Array. + * For multi-line scripts, this is the return value of the last statement, + * or the last expression evaluated. + */ + executeScript(script: { file: string }, callback: (result: any) => void): void; + /** + * Injects CSS into the InAppBrowser window. + * @param css Details of the script to run, specifying either a file or code key. + * @param callback The function that executes after the CSS is injected. + */ + insertCSS(css: { code: string }, callback: () => void): void; + /** + * Injects CSS into the InAppBrowser window. + * @param css Details of the script to run, specifying either a file or code key. + * @param callback The function that executes after the CSS is injected. + */ + insertCSS(css: { file: string }, callback: () => void): void; +} + +interface InAppBrowserEvent extends Event { + /** the eventname, either loadstart, loadstop, loaderror, or exit. */ + type: string; + /** the URL that was loaded. */ + url: string; + /** the error code, only in the case of loaderror. */ + code: number; + /** the error message, only in the case of loaderror. */ + message: string; +} \ No newline at end of file diff --git a/cordova/plugins/Media.d.ts b/cordova/plugins/Media.d.ts new file mode 100644 index 0000000000..3751152be1 --- /dev/null +++ b/cordova/plugins/Media.d.ts @@ -0,0 +1,86 @@ +// Type definitions for Apache Cordova Media plugin. +// Project: https://github.com/apache/cordova-plugin-media +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +declare var Media: { + new ( + src: string, + mediaSuccess: () => void, + mediaError?: (error: MediaError) => any, + mediaStatus?: (status: number) => void): Media; + //Media statuses + MEDIA_NONE: number; + MEDIA_STARTING: number; + MEDIA_RUNNING: number; + MEDIA_PAUSED: number; + MEDIA_STOPPED: number +}; + +/** + * This plugin provides the ability to record and play back audio files on a device. + * NOTE: The current implementation does not adhere to a W3C specification for media capture, + * and is provided for convenience only. A future implementation will adhere to the latest + * W3C specification and may deprecate the current APIs. + */ +interface Media { + /** + * Constructor for Media object. + * @param src A URI containing the audio content. + * @param mediaSuccess The callback that executes after a Media object has completed + * the current play, record, or stop action. + * @param mediaError The callback that executes if an error occurs. + * @param mediaStatus The callback that executes to indicate status changes. + */ + new ( + src: string, + mediaSuccess: () => void, + mediaError?: (error: MediaError) => any, + mediaStatus?: (status: number) => void): Media; + /** + * Returns the current position within an audio file. Also updates the Media object's position parameter. + * @param mediaSuccess The callback that is passed the current position in seconds. + * @param mediaError The callback to execute if an error occurs. + */ + getCurrentPosition( + mediaSuccess: (position: number) => void, + mediaError?: (error: MediaError) => void): void; + /** Returns the duration of an audio file in seconds. If the duration is unknown, it returns a value of -1. */ + getDuration(): number; + /** Starts or resumes playing an audio file. */ + play(): void; + /** Pauses playing an audio file. */ + pause(): void; + /** + * Releases the underlying operating system's audio resources. This is particularly important + * for Android, since there are a finite amount of OpenCore instances for media playback. + * Applications should call the release function for any Media resource that is no longer needed. + */ + release(): void; + /** + * Sets the current position within an audio file. + * @param position Position in milliseconds. + */ + seekTo(position: number): void; + /** + * Set the volume for an audio file. + * @param volume The volume to set for playback. The value must be within the range of 0.0 to 1.0. + */ + setVolume(volume: number): void; + /** Starts recording an audio file. */ + startRecord(): void; + /** Stops recording an audio file. */ + stopRecord(): void; + /** Stops playing an audio file. */ + stop(): void; + /** + * The position within the audio playback, in seconds. + * Not automatically updated during play; call getCurrentPosition to update. + */ + position: number; + /** The duration of the media, in seconds. */ + duration: number; +} diff --git a/cordova/plugins/MediaCapture.d.ts b/cordova/plugins/MediaCapture.d.ts new file mode 100644 index 0000000000..f4818b2641 --- /dev/null +++ b/cordova/plugins/MediaCapture.d.ts @@ -0,0 +1,167 @@ +// Type definitions for Apache Cordova MediaCapture plugin. +// Project: https://github.com/apache/cordova-plugin-media-capture +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + device: Device; +} + +interface Device { + capture: Capture; +} + +/** This plugin provides access to the device's audio, image, and video capture capabilities. */ +interface Capture { + /** + * Start the audio recorder application and return information about captured audio clip files. + * @param onSuccess Executes when the capture operation finishes with an array + * of MediaFile objects describing each captured audio clip file. + * @param onError Executes, if the user terminates the operation before an audio clip is captured, + * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. + * @param options Encapsulates audio capture configuration options. + */ + captureAudio( + onSuccess: (mediaFiles: MediaFile[]) => void, + onError: (error: CaptureError) => void, + options?: AudioOptions): void ; + /** + * Start the camera application and return information about captured image files. + * @param onSuccess Executes when the capture operation finishes with an array + * of MediaFile objects describing each captured image clip file. + * @param onError Executes, if the user terminates the operation before an audio clip is captured, + * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. + * @param options Encapsulates audio capture configuration options. + */ + captureImage( + onSuccess: (mediaFiles: MediaFile[]) => void, + onError: (error: CaptureError) => void, + options?: ImageOptions): void ; + /** + * Start the video recorder application and return information about captured video clip files. + * @param onSuccess Executes when the capture operation finishes with an array + * of MediaFile objects describing each captured video clip file. + * @param onError Executes, if the user terminates the operation before an audio clip is captured, + * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. + * @param options Encapsulates audio capture configuration options. + */ + captureVideo( + onSuccess: (mediaFiles: MediaFile[]) => void, + onError: (error: CaptureError) => void, + options?: VideoOptions): void ; + /** The audio recording formats supported by the device. */ + supportedAudioModes: ConfigurationData[]; + /** The recording image sizes and formats supported by the device. */ + supportedImageModes: ConfigurationData[]; + /** The recording video resolutions and formats supported by the device. */ + supportedVideoModes: ConfigurationData[]; +} + +/** Encapsulates properties of a media capture file. */ +interface MediaFile { + /** The name of the file, without path information. */ + name: string; + /** The full path of the file, including the name. */ + fullPath: string; + /** The file's mime type */ + type: string; + /** The date and time when the file was last modified. */ + lastModifiedDate: Date; + /** The size of the file, in bytes. */ + size: number; + /** + * Retrieves format information about the media capture file. + * @param successCallback Invoked with a MediaFileData object when successful. + * @param errorCallback Invoked if the attempt fails, this function. + */ + getFormatData( + successCallback: (data: MediaFileData) => void, + errorCallback?: () => void): void; +} + +/** Encapsulates format information about a media file. */ +interface MediaFileData { + /** The actual format of the audio and video content. */ + codecs: string; + /** The average bitrate of the content. The value is zero for images. */ + bitrate: number; + /** The height of the image or video in pixels. The value is zero for audio clips. */ + height: number; + /** The width of the image or video in pixels. The value is zero for audio clips. */ + width: number; + /** The length of the video or sound clip in seconds. The value is zero for images. */ + duration: number; +} + +/** Encapsulates the error code resulting from a failed media capture operation. */ +interface CaptureError { + /** + * One of the pre-defined error codes listed below. + * CaptureError.CAPTURE_INTERNAL_ERR + * The camera or microphone failed to capture image or sound. + * CaptureError.CAPTURE_APPLICATION_BUSY + * The camera or audio capture application is currently serving another capture request. + * CaptureError.CAPTURE_INVALID_ARGUMENT + * Invalid use of the API (e.g., the value of limit is less than one). + * CaptureError.CAPTURE_NO_MEDIA_FILES + * The user exits the camera or audio capture application before capturing anything. + * CaptureError.CAPTURE_NOT_SUPPORTED + * The requested capture operation is not supported. + */ + code: number; + message: string; +} + +declare var CaptureError: { + /** Constructor for CaptureError */ + new (code: number, message: string): CaptureError; + CAPTURE_INTERNAL_ERR: number; + CAPTURE_APPLICATION_BUSY: number; + CAPTURE_INVALID_ARGUMENT: number; + CAPTURE_NO_MEDIA_FILES: number; + CAPTURE_NOT_SUPPORTED: number; +} + +/** Encapsulates audio capture configuration options. */ +interface AudioOptions { + /** + * The maximum number of audio clips the device's user can capture in a single + * capture operation. The value must be greater than or equal to 1. + */ + limit?: number; + /** The maximum duration of a audio clip, in seconds. */ + duration?: number; +} + +/** Encapsulates image capture configuration options. */ +interface ImageOptions { + /** + * The maximum number of images the user can capture in a single capture operation. + * The value must be greater than or equal to 1 (defaults to 1). + */ + limit?: number; +} + +/** Encapsulates video capture configuration options. */ +interface VideoOptions { + /** + * The maximum number of video clips the device's user can capture in a single + * capture operation. The value must be greater than or equal to 1. + */ + limit?: number; + /** The maximum duration of a video clip, in seconds. */ + duration?: number; +} + +/** Encapsulates a set of media capture parameters that a device supports. */ +interface ConfigurationData { + /** The ASCII-encoded lowercase string representing the media type. */ + type: string; + /** The height of the image or video in pixels. The value is zero for sound clips. */ + height: number; + /** The width of the image or video in pixels. The value is zero for sound clips. */ + width: number; +} \ No newline at end of file diff --git a/cordova/plugins/NetworkInformation.d.ts b/cordova/plugins/NetworkInformation.d.ts new file mode 100644 index 0000000000..53093284f1 --- /dev/null +++ b/cordova/plugins/NetworkInformation.d.ts @@ -0,0 +1,60 @@ +// Type definitions for Apache Cordova Network Information plugin. +// Project: https://github.com/apache/cordova-plugin-network-information +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** + * This plugin provides an implementation of an old version of the Network Information API. + * It provides information about the device's cellular and wifi connection, and whether the device has an internet connection. + */ + connection: Connection; + // see https://github.com/apache/cordova-plugin-network-information/blob/dev/doc/index.md#api-change + // for + network: { + /** + * This plugin provides an implementation of an old version of the Network Information API. + * It provides information about the device's cellular and wifi connection, and whether the device has an internet connection. + */ + connection: Connection + } +} + +interface Document { + addEventListener(type: "online", connectionStateCallback: () => any, useCapture?: boolean): void; + addEventListener(type: "offline", connectionStateCallback: () => any, useCapture?: boolean): void; +} + +/** + * The connection object, exposed via navigator.connection, provides information + * about the device's cellular and wifi connection. + */ +interface Connection { + /** + * This property offers a fast way to determine the device's network connection state, and type of connection. + * One of: + * Connection.UNKNOWN + * Connection.ETHERNET + * Connection.WIFI + * Connection.CELL_2G + * Connection.CELL_3G + * Connection.CELL_4G + * Connection.CELL + * Connection.NONE + */ + type: number +} + +declare var Connection: { + UNKNOWN: number; + ETHERNET: number; + WIFI: number; + CELL_2G: number; + CELL_3G: number; + CELL_4G: number; + CELL: number; + NONE: number; +} \ No newline at end of file diff --git a/cordova/plugins/Push.d.ts b/cordova/plugins/Push.d.ts new file mode 100644 index 0000000000..9b66234867 --- /dev/null +++ b/cordova/plugins/Push.d.ts @@ -0,0 +1,68 @@ +// Type definitions for Apache Cordova Push plugin. +// Project: https://github.com/phonegap-build/PushPlugin +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Window { + plugins: { + /** + * This plugin allows to receive push notifications. The Android implementation uses + * Google's GCM (Google Cloud Messaging) service, + * whereas the iOS version is based on Apple APNS Notifications + */ + pushNotification: PushNotification + } +} + +/** + * This plugin allows to receive push notifications. The Android implementation uses + * Google's GCM (Google Cloud Messaging) service, + * whereas the iOS version is based on Apple APNS Notifications + */ +interface PushNotification { + /** + * Registers as push notification receiver. + * @param successCallback Called when a plugin method returns without error. + * @param errorCallback Called when the plugin returns an error. + * @param registrationOptions Options for registration process. + */ + register( + successCallback: (registrationId: string) => void, + errorCallback: (error: any) => void, + registrationOptions: RegistrationOptions): void; + /** + * Unregisters as push notification receiver. + * @param successCallback Called when a plugin method returns without error. + * @param errorCallback Called when the plugin returns an error. + */ + unregister( + successCallback: (result: any) => void, + errorCallback: (error: any) => void): void; + /** + * Sets the badge count visible when the app is not running. iOS only. + * @param successCallback Called when a plugin method returns without error. + * @param errorCallback Called when the plugin returns an error. + * @param badgeCount An integer indicating what number should show up in the badge. Passing 0 will clear the badge. + */ + setApplicationIconBadgeNumber( + successCallback: (result: any) => void, + errorCallback: (error: any) => void, + badgeCount: number): void; +} + +/** Options for registration process. */ +interface RegistrationOptions { + /** This is the Google project ID you need to obtain by registering your application for GCM. Android only */ + senderID?: string; + /** WP8 only */ + channelName?: string; + /** Callback, that is fired when notification arrived */ + ecb?: string; + badge?: boolean; + sound?: boolean; + alert?: boolean +} + diff --git a/cordova/plugins/Splashscreen.d.ts b/cordova/plugins/Splashscreen.d.ts new file mode 100644 index 0000000000..1d0d8697aa --- /dev/null +++ b/cordova/plugins/Splashscreen.d.ts @@ -0,0 +1,17 @@ +// Type definitions for Apache Cordova Splashscreen plugin. +// Project: https://github.com/apache/cordova-plugin-splashscreen +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Navigator { + /** This plugin displays and hides a splash screen during application launch. */ + splashscreen: { + /** Dismiss the splash screen. */ + hide(): void; + /** Displays the splash screen. */ + show(): void; + } +} \ No newline at end of file diff --git a/cordova/plugins/Vibration.d.ts b/cordova/plugins/Vibration.d.ts new file mode 100644 index 0000000000..240d6ec464 --- /dev/null +++ b/cordova/plugins/Vibration.d.ts @@ -0,0 +1,15 @@ +// Type definitions for Apache Cordova Vibration plugin. +// Project: https://github.com/apache/cordova-plugin-vibration +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Notification { + /** + * Vibrates the device for the specified amount of time. + * @param time Milliseconds to vibrate the device. Ignored on iOS. + */ + vibrate(time: number): void +} \ No newline at end of file diff --git a/cordova/plugins/WebSQL.d.ts b/cordova/plugins/WebSQL.d.ts new file mode 100644 index 0000000000..807dab42a7 --- /dev/null +++ b/cordova/plugins/WebSQL.d.ts @@ -0,0 +1,103 @@ +// Type definitions for Apache Cordova WebSQL plugin. +// Project: https://github.com/sgrebnov/cordova-plugin-websql +// Definitions by: Microsoft Open Technologies, Inc. +// Definitions: https://github.com/borisyankov/DefinitelyTyped +// +// Copyright (c) Microsoft Open Technologies, Inc. +// Licensed under the MIT license. + +interface Window { + /** + * Creates (opens, if exist) database with supplied parameters. + * @param name Database name + * @param version Database version + * @param displayname Database display name + * @param size Size, in bytes + * @param creationCallback Callback, that executed on database creation. Accepts Database object. + */ + openDatabase(name: string, + version: string, + displayname: string, + size: number, + creationCallback?: (database: Database) => void): Database; +} + +interface Database { + /** + * Starts new transaction. + * @param callback Function, that will be called when transaction starts. + * @param errorCallback Called, when Transaction fails. + * @param successCallback Called, when transaction committed. + */ + transaction(callback: (transaction: SqlTransaction) => void, + errorCallback?: (error: SqlError) => void, + successCallback?: () => void): void; + /** + * Starts new transaction. + * @param callback Function, that will be called when transaction starts. + * @param errorCallback Called, when Transaction fails. + * @param successCallback Called, when transaction committed. + */ + readTransaction(callback: (transaction: SqlTransaction) => void, + errorCallback?: (error: SqlError) => void, + successCallback?: () => void): void; + name: string; + version: string; + displayname: string; + size: number; +} + +declare var Database: { + /** Constructor for Database object */ + new(name: string, + version: string, + displayname: string, + size: number, + creationCallback: (database: Database)=> void): Database; +}; + +interface SqlTransaction { + /** + * Executes SQL statement via current transaction. + * @param sql SQL statement to execute. + * @param arguments SQL stetement arguments. + * @param successCallback Called in case of query has been successfully done. + * @param errorCallback Called, when query fails. + */ + executeSql(sql: string, + arguments?: any[], + successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void, + errorCallback?: (transaction: SqlTransaction, error: SqlError) => void): void; +} + +declare var SqlTransaction: { + new(): SqlTransaction; +}; + +interface SqlResultSet { + insertId: number; + rowsAffected: number; + rows: SqlResultSetRowList; +} + +interface SqlResultSetRowList { + length: number; + item(index: number): Object; +} + +interface SqlError { + code: number; + message: string; +} + +declare var SqlError: { + // Error code constants from http://www.w3.org/TR/webdatabase/#sqlerror + UNKNOWN_ERR: number; + DATABASE_ERR: number; + VERSION_ERR: number; + TOO_LARGE_ERR: number; + QUOTA_ERR: number; + SYNTAX_ERR: number; + CONSTRAINT_ERR: number; + TIMEOUT_ERR: number; +}; \ No newline at end of file