diff --git a/gulpfile.js b/gulpfile.js index c6f6e91..855ca27 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -111,7 +111,7 @@ gulp.task("compile-test", function () { var ts = require("gulp-typescript"); var insert = require("gulp-insert"); - return gulp.src([testPath + tsFiles]) + return gulp.src([testPath + "/test.ts"]) .pipe(ts(tsCompileOptions)) .pipe(insert.prepend(compiledSourceWarningMessage)) .pipe(gulp.dest(path.join(binPath, testPath))); @@ -158,7 +158,7 @@ gulp.task("tslint", function () { } } - return gulp.src([testPath + tsFiles]) + return gulp.src([testPath + tsFiles, "!" + testPath + "/typings/*"]) .pipe(tslint({ configuration: config })) .pipe(tslint.report("verbose")); }); diff --git a/package.json b/package.json index c3eb6b9..3e6df40 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,11 @@ "url": "https://github.com/Microsoft/react-native-code-push" }, "dependencies": { + "code-push": "1.8.0-beta" + }, + "devDependencies": { "archiver": "latest", "body-parser": "latest", - "code-push": "1.8.0-beta", "del": "latest", "express": "latest", "gulp-typescript": "2.12.2", diff --git a/test/test.ts b/test/test.ts index 1603a23..6d90225 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,10 +1,9 @@ -/// -/// +/// /// -/// -/// -/// -/// +/// +/// +/// +/// "use strict"; @@ -571,7 +570,7 @@ PluginTestingFramework.initializeTests(new RNProjectManager(), supportedTargetPl try { assert.equal(requestBody.message, ServerUtil.TestMessage.CHECK_UPDATE_AVAILABLE); assert.notEqual(requestBody.args[0], null); - var remotePackage: IRemotePackage = requestBody.args[0]; + var remotePackage: any = requestBody.args[0]; assert.equal(remotePackage.downloadUrl, updateResponse.downloadURL); assert.equal(remotePackage.isMandatory, updateResponse.isMandatory); assert.equal(remotePackage.label, updateResponse.label); diff --git a/typings/assert.d.ts b/test/typings/assert.d.ts similarity index 100% rename from typings/assert.d.ts rename to test/typings/assert.d.ts diff --git a/typings/mkdirp.d.ts b/test/typings/mkdirp.d.ts similarity index 100% rename from typings/mkdirp.d.ts rename to test/typings/mkdirp.d.ts diff --git a/typings/mocha.d.ts b/test/typings/mocha.d.ts similarity index 100% rename from typings/mocha.d.ts rename to test/typings/mocha.d.ts diff --git a/typings/node.d.ts b/test/typings/node.d.ts similarity index 100% rename from typings/node.d.ts rename to test/typings/node.d.ts diff --git a/typings/q.d.ts b/test/typings/q.d.ts similarity index 100% rename from typings/q.d.ts rename to test/typings/q.d.ts diff --git a/typings/replace.d.ts b/test/typings/replace.d.ts similarity index 100% rename from typings/replace.d.ts rename to test/typings/replace.d.ts diff --git a/typings/codePush.d.ts b/typings/codePush.d.ts deleted file mode 100644 index a90a943..0000000 --- a/typings/codePush.d.ts +++ /dev/null @@ -1,400 +0,0 @@ -// Type definitions for Apache Cordova CodePush plugin. -// Project: https://github.com/Microsoft/cordova-plugin-code-push -// -// Copyright (c) Microsoft Corporation -// All rights reserved. -// Licensed under the MIT license. - -declare module Http { - export const enum Verb { - GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH - } - - export interface Response { - statusCode: number; - body?: string; - } - - export interface Requester { - request(verb: Verb, url: string, callback: Callback): void; - request(verb: Verb, url: string, requestBody: string, callback: Callback): void; - } -} - -interface Window { - codePush: CodePushCordovaPlugin; -} - -/** - * Defines a package. All fields are non-nullable, except when retrieving the currently running package on the first run of the app, - * in which case only the appVersion is compulsory. - * - * !! THIS TYPE IS READ FROM NATIVE CODE AS WELL. ANY CHANGES TO THIS INTERFACE NEEDS TO BE UPDATED IN NATIVE CODE !! - */ -interface IPackage { - deploymentKey: string; - description: string; - label: string; - appVersion: string; - isMandatory: boolean; - packageHash: string; - packageSize: number; - failedInstall: boolean; -} - -/** - * Defines a remote package, which represents an update package available for download. - */ -interface IRemotePackage extends IPackage { - /** - * The URL at which the package is available for download. - */ - downloadUrl: string; - - /** - * Downloads the package update from the CodePush service. - * - * @param downloadSuccess Called with one parameter, the downloaded package information, once the download completed successfully. - * @param downloadError Optional callback invoked in case of an error. - * @param downloadProgress Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter. - */ - download(downloadSuccess: SuccessCallback, downloadError?: ErrorCallback, downloadProgress?: SuccessCallback): void; - - /** - * Aborts the current download session, previously started with download(). - * - * @param abortSuccess Optional callback invoked if the abort operation succeeded. - * @param abortError Optional callback invoked in case of an error. - */ - abortDownload(abortSuccess?: SuccessCallback, abortError?: ErrorCallback): void; -} - -/** - * Defines a local package. - * - * !! THIS TYPE IS READ FROM NATIVE CODE AS WELL. ANY CHANGES TO THIS INTERFACE NEEDS TO BE UPDATED IN NATIVE CODE !! - */ -interface ILocalPackage extends IPackage { - /** - * The local storage path where this package is located. - */ - localPath: string; - - /** - * Indicates if the current application run is the first one after the package was applied. - */ - isFirstRun: boolean; - - /** - * Applies this package to the application. The application will be reloaded with this package and on every application launch this package will be loaded. - * On the first run after the update, the application will wait for a codePush.notifyApplicationReady() call. Once this call is made, the install operation is considered a success. - * Otherwise, the install operation will be marked as failed, and the application is reverted to its previous version on the next run. - * - * @param installSuccess Callback invoked if the install operation succeeded. - * @param installError Optional callback inovoked in case of an error. - * @param installOptions Optional parameter used for customizing the installation behavior. - */ - install(installSuccess: SuccessCallback, errorCallback?: ErrorCallback, installOptions?: InstallOptions): void; -} - -/** - * Decomposed static side of RemotePackage. - * For Class Decomposition guidelines see http://www.typescriptlang.org/Handbook#writing-dts-files-guidelines-and-specifics - */ -interface RemotePackage_Static { - new (): IRemotePackage; -} - -/** - * Decomposed static side of LocalPackage. - * For Class Decomposition guidelines see http://www.typescriptlang.org/Handbook#writing-dts-files-guidelines-and-specifics - */ -interface LocalPackage_Static { - new (): ILocalPackage; -} - -declare var RemotePackage: RemotePackage_Static; -declare var LocalPackage: LocalPackage_Static; - -/** - * Defines the JSON format of the current package information file. - * This file is stored in the local storage of the device and persists between store updates and code-push updates. - * - * !! THIS FILE IS READ FROM NATIVE CODE AS WELL. ANY CHANGES TO THIS INTERFACE NEEDS TO BE UPDATED IN NATIVE CODE !! - */ -interface IPackageInfoMetadata extends ILocalPackage { - nativeBuildTime: string; -} - -interface NativeUpdateNotification { - updateAppVersion: boolean; // Always true - appVersion: string; -} - -interface Callback { (error: Error, parameter: T): void; } -interface SuccessCallback { (result?: T): void; } -interface ErrorCallback { (error?: Error): void; } - -interface Configuration { - appVersion: string; - clientUniqueId: string; - deploymentKey: string; - serverUrl: string; - ignoreAppVersion?: boolean -} - -declare class AcquisitionStatus { - static DeploymentSucceeded: string; - static DeploymentFailed: string; -} - -declare class AcquisitionManager { - constructor(httpRequester: Http.Requester, configuration: Configuration); - public queryUpdateWithCurrentPackage(currentPackage: IPackage, callback?: Callback): void; - public reportStatusDeploy(pkg?: IPackage, status?: string, previousLabelOrAppVersion?: string, previousDeploymentKey?: string, callback?: Callback): void; - public reportStatusDownload(pkg: IPackage, callback?: Callback): void; -} - -interface CodePushCordovaPlugin { - - /** - * Get the current package information. - * - * @param packageSuccess Callback invoked with the currently deployed package information. - * @param packageError Optional callback invoked in case of an error. - */ - getCurrentPackage(packageSuccess: SuccessCallback, packageError?: ErrorCallback): void; - - /** - * Gets the pending package information, if any. A pending package is one that has been installed but the application still runs the old code. - * This happends only after a package has been installed using ON_NEXT_RESTART or ON_NEXT_RESUME mode, but the application was not restarted/resumed yet. - */ - getPendingPackage(packageSuccess: SuccessCallback, packageError?: ErrorCallback): void; - - /** - * Checks with the CodePush server if an update package is available for download. - * - * @param querySuccess Callback invoked in case of a successful response from the server. - * The callback takes one RemotePackage parameter. A non-null package is a valid update. - * A null package means the application is up to date for the current native application version. - * @param queryError Optional callback invoked in case of an error. - * @param deploymentKey Optional deployment key that overrides the config.xml setting. - */ - checkForUpdate(querySuccess: SuccessCallback, queryError?: ErrorCallback, deploymentKey?: string): void; - - /** - * Notifies the plugin that the update operation succeeded and that the application is ready. - * Calling this function is required on the first run after an update. On every subsequent application run, calling this function is a noop. - * If using sync API, calling this function is not required since sync calls it internally. - * - * @param notifySucceeded Optional callback invoked if the plugin was successfully notified. - * @param notifyFailed Optional callback invoked in case of an error during notifying the plugin. - */ - notifyApplicationReady(notifySucceeded?: SuccessCallback, notifyFailed?: ErrorCallback): void; - - /** - * Reloads the application. If there is a pending update package installed using ON_NEXT_RESTART or ON_NEXT_RESUME modes, the update - * will be immediately visible to the user. Otherwise, calling this function will simply reload the current version of the application. - */ - restartApplication(installSuccess: SuccessCallback, errorCallback?: ErrorCallback): void; - - /** - * Convenience method for installing updates in one method call. - * This method is provided for simplicity, and its behavior can be replicated by using window.codePush.checkForUpdate(), RemotePackage's download() and LocalPackage's install() methods. - * - * The algorithm of this method is the following: - * - Checks for an update on the CodePush server. - * - If an update is available - * - If the update is mandatory and the alertMessage is set in options, the user will be informed that the application will be updated to the latest version. - * The update package will then be downloaded and applied. - * - If the update is not mandatory and the confirmMessage is set in options, the user will be asked if they want to update to the latest version. - * If they decline, the syncCallback will be invoked with SyncStatus.UPDATE_IGNORED. - * - Otherwise, the update package will be downloaded and applied with no user interaction. - * - If no update is available on the server, or if a previously rolled back update is available and the ignoreFailedUpdates is set to true, the syncCallback will be invoked with the SyncStatus.UP_TO_DATE. - * - If an error occurs during checking for update, downloading or installing it, the syncCallback will be invoked with the SyncStatus.ERROR. - * - * @param syncCallback Optional callback to be called with the status of the sync operation. - * The callback will be called only once, and the possible statuses are defined by the SyncStatus enum. - * @param syncOptions Optional SyncOptions parameter configuring the behavior of the sync operation. - * @param downloadProgress Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter. - * - */ - sync(syncCallback?: SuccessCallback, syncOptions?: SyncOptions, downloadProgress?: SuccessCallback): void; -} - -/** - * Defines the possible result statuses of the window.codePush.sync operation. - */ -declare enum SyncStatus { - /** - * The application is up to date. - */ - UP_TO_DATE, - - /** - * An update is available, it has been downloaded, unzipped and copied to the deployment folder. - * After the completion of the callback invoked with SyncStatus.UPDATE_INSTALLED, the application will be reloaded with the updated code and resources. - */ - UPDATE_INSTALLED, - - /** - * An optional update is available, but the user declined to install it. The update was not downloaded. - */ - UPDATE_IGNORED, - - /** - * An error happened during the sync operation. This might be an error while communicating with the server, downloading or unziping the update. - * The console logs should contain more information about what happened. No update has been applied in this case. - */ - ERROR, - - /** - * There is an ongoing sync in progress, so this attempt to sync has been aborted. - */ - IN_PROGRESS, - - /** - * Intermediate status - the plugin is about to check for updates. - */ - CHECKING_FOR_UPDATE, - - /** - * Intermediate status - a user dialog is about to be displayed. This status will be reported only if user interaction is enabled. - */ - AWAITING_USER_ACTION, - - /** - * Intermediate status - the update package is about to be downloaded. - */ - DOWNLOADING_PACKAGE, - - /** - * Intermediate status - the update package is about to be installed. - */ - INSTALLING_UPDATE -} - -/** - * Defines the available install modes for updates. - */ -declare enum InstallMode { - /** - * The update will be applied to the running application immediately. The application will be reloaded with the new content immediately. - */ - IMMEDIATE, - - /** - * The update is downloaded but not installed immediately. The new content will be available the next time the application is started. - */ - ON_NEXT_RESTART, - - /** - * The udpate is downloaded but not installed immediately. The new content will be available the next time the application is resumed or restarted, whichever event happends first. - */ - ON_NEXT_RESUME -} - -/** - * Defines the install operation options. - */ -interface InstallOptions { - /** - * Used to specify the InstallMode used for the install operation. This is optional and defaults to InstallMode.ON_NEXT_RESTART. - */ - installMode?: InstallMode; - - /** - * If installMode === ON_NEXT_RESUME, the minimum amount of time (in seconds) which needs to pass with the app in the background before an update install occurs when the app is resumed. - */ - minimumBackgroundDuration?: number; - - /** - * Used to specify the InstallMode used for the install operation if the update is mandatory. This is optional and defaults to InstallMode.IMMEDIATE. - */ - mandatoryInstallMode?: InstallMode; -} - -/** - * Defines the sync operation options. - */ -interface SyncOptions extends InstallOptions { - /** - * Optional boolean flag. If set, previous updates which were rolled back will be ignored. Defaults to true. - */ - ignoreFailedUpdates?: boolean; - - /** - * Used to enable, disable or customize the user interaction during sync. - * If set to false, user interaction will be disabled. If set to true, the user will be alerted or asked to confirm new updates, based on whether the update is mandatory. - * To customize the user dialog, this option can be set to a custom UpdateDialogOptions instance. - */ - updateDialog?: boolean | UpdateDialogOptions; - - /** - * Overrides the config.xml deployment key when checking for updates. - */ - deploymentKey?: string; -} - -/** - * Defines the configuration options for the alert or confirmation dialog - */ -interface UpdateDialogOptions { - /** - * If a mandatory update is available and this option is set, the message will be displayed to the user in an alert dialog before downloading and installing the update. - * The user will not be able to cancel the operation, since the update is mandatory. - */ - mandatoryUpdateMessage?: string; - - /** - * If an optional update is available and this option is set, the message will be displayed to the user in a confirmation dialog. - * If the user confirms the update, it will be downloaded and installed. Otherwise, the update update is not downloaded. - */ - optionalUpdateMessage?: string; - - /** - * The title of the dialog box used for interacting with the user in case of a mandatory or optional update. - * This title will only be used if at least one of mandatoryUpdateMessage or optionalUpdateMessage options are set. - */ - updateTitle?: string; - - /** - * The label of the confirmation button in case of an optional update. - */ - optionalInstallButtonLabel?: string; - - /** - * The label of the cancel button in case of an optional update. - */ - optionalIgnoreButtonLabel?: string; - - /** - * The label of the continue button in case of a mandatory update. - */ - mandatoryContinueButtonLabel?: string; - - /** - * Flag indicating if the update description provided by the CodePush server should be displayed in the dialog box appended to the update message. - */ - appendReleaseDescription?: boolean; - - /** - * Optional prefix to add to the release description. - */ - descriptionPrefix?: string; -} - -/** - * Defines the JSON format of the package diff manifest file. - */ -interface IDiffManifest { - deletedFiles: string[]; -} - -/** - * Defines the format of the DownloadProgress object, used to send periodical update notifications on the progress of the update download. - */ -interface DownloadProgress { - totalBytes: number; - receivedBytes: number; -} \ No newline at end of file diff --git a/typings/cordova.d.ts b/typings/cordova.d.ts deleted file mode 100644 index c8081a4..0000000 --- a/typings/cordova.d.ts +++ /dev/null @@ -1,77 +0,0 @@ -// 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; - /** Namespace for Cordova plugin functionality */ - plugins: CordovaPlugins; -} - -interface CordovaPlugins { } - -interface Document { - addEventListener(type: "deviceready", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resume", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "backbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "menubutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "searchbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "startcallbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "endcallbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumedownbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumeupbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - - removeEventListener(type: "deviceready", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "resume", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "backbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "menubutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "searchbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "startcallbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "endcallbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "volumedownbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: "volumeupbutton", listener: (ev: Event) => any, useCapture?: boolean): void; - - addEventListener(type: string, listener: (ev: Event) => any, useCapture?: boolean): void; - removeEventListener(type: string, listener: (ev: Event) => any, useCapture?: boolean): void; -} - -interface Window { - cordova: Cordova; -} - -// 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; - diff --git a/typings/device.d.ts b/typings/device.d.ts deleted file mode 100644 index 1abb375..0000000 --- a/typings/device.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -// 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; - /** 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; - /** Get the device's manufacturer. */ - manufacturer: string; - /** Whether the device is running on a simulator. */ - isVirtual: boolean; - /** Get the device hardware serial number. */ - serial: string;} - -declare var device: Device; \ No newline at end of file diff --git a/typings/dialogs.d.ts b/typings/dialogs.d.ts deleted file mode 100644 index 6d86c62..0000000 --- a/typings/dialogs.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -// 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. - * 0 is the result when the dialog is dismissed without a button press. - */ - buttonIndex: number; - /** The text entered in the prompt dialog box. */ - input1: string; -} \ No newline at end of file diff --git a/typings/fileSystem.d.ts b/typings/fileSystem.d.ts deleted file mode 100644 index 7b4348f..0000000 --- a/typings/fileSystem.d.ts +++ /dev/null @@ -1,363 +0,0 @@ -// 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: FileError) => void): void; - /** - * Look up file system Entry referred to by local URI. - * @param string uri URI referring to a local file or directory - * @param successCallback invoked with Entry object corresponding to URI - * @param errorCallback invoked if error occurs retrieving file system entry - */ - resolveLocalFileSystemURL(uri: string, - successCallback: (entry: Entry) => void, - errorCallback?: (error: FileError) => void): void; - TEMPORARY: number; - PERSISTENT: number; -} - -/** This interface represents a file system. */ -interface FileSystem { - /* The name of the file system, 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 { - /** 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: FileError) => 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: FileError) => 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: FileError) => void): void; - /** - * Returns a URL that can be used as the src attribute of a