From 298bdfef6818b3fb754b8c9bf94e2197f7fbe57f Mon Sep 17 00:00:00 2001
From: Chris Matheson
Date: Thu, 22 Dec 2016 16:20:51 +0000
Subject: [PATCH] merge in definately typed TS definitions to parse project
taking the work allready done https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/parse/index.d.ts and merge it into the project as per sugestions of https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html
this will mean users of typescript & parse will have one less step to do (manually pull in types) and
hopefully changes in the definitions themselves will stay closer to the actual thing
---
index.d.ts | 1099 +++++++++++++++++++++++++++++++
integration/types/index.ts | 415 ++++++++++++
integration/types/tsconfig.json | 20 +
package.json | 7 +
4 files changed, 1541 insertions(+)
create mode 100644 index.d.ts
create mode 100644 integration/types/index.ts
create mode 100644 integration/types/tsconfig.json
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 000000000..7081ed60b
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,1099 @@
+// Type definitions for Parse v1.2.19
+// Project: https://parse.com/
+// Definitions by: Ullisen Media Group
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+///
+///
+
+declare namespace Parse {
+
+ var applicationId: string;
+ var javaScriptKey: string;
+ var masterKey: string;
+ var serverURL: string;
+ var VERSION: string;
+
+ interface SuccessOption {
+ success?: Function;
+ }
+
+ interface ErrorOption {
+ error?: Function;
+ }
+
+ interface SuccessFailureOptions extends SuccessOption, ErrorOption {
+ }
+
+ interface SessionTokenOption {
+ sessionToken?: string;
+ }
+
+ interface WaitOption {
+ /**
+ * Set to true to wait for the server to confirm success
+ * before triggering an event.
+ */
+ wait?: boolean;
+ }
+
+ interface UseMasterKeyOption {
+ /**
+ * In Cloud Code and Node only, causes the Master Key to be used for this request.
+ */
+ useMasterKey?: boolean;
+ }
+
+ interface ScopeOptions extends SessionTokenOption, UseMasterKeyOption {
+ }
+
+ interface SilentOption {
+ /**
+ * Set to true to avoid firing the event.
+ */
+ silent?: boolean;
+ }
+
+ /**
+ * A Promise is returned by async methods as a hook to provide callbacks to be
+ * called when the async task is fulfilled.
+ *
+ *
+ *
+ * @see Parse.Promise.prototype.then
+ * @class
+ */
+
+ interface IPromise {
+
+ then(resolvedCallback: (...values: T[]) => IPromise, rejectedCallback?: (reason: any) => IPromise): IPromise;
+ then(resolvedCallback: (...values: T[]) => U, rejectedCallback?: (reason: any) => IPromise): IPromise;
+ then(resolvedCallback: (...values: T[]) => U, rejectedCallback?: (reason: any) => U): IPromise;
+ }
+
+ class Promise implements IPromise {
+
+ static as(resolvedValue: U): Promise;
+ static error(error: U): Promise;
+ static is(possiblePromise: any): Boolean;
+ static when(promises: IPromise[]): Promise;
+ static when(...promises: IPromise[]): Promise;
+
+ always(callback: Function): Promise;
+ done(callback: Function): Promise;
+ fail(callback: Function): Promise;
+ reject(error: any): void;
+ resolve(result: any): void;
+ then(resolvedCallback: (...values: T[]) => IPromise,
+ rejectedCallback?: (reason: any) => IPromise): IPromise;
+ then(resolvedCallback: (...values: T[]) => U,
+ rejectedCallback?: (reason: any) => IPromise): IPromise;
+ then(resolvedCallback: (...values: T[]) => U,
+ rejectedCallback?: (reason: any) => U): IPromise;
+ }
+
+ interface IBaseObject {
+ toJSON(): any;
+ }
+
+ class BaseObject implements IBaseObject {
+ toJSON(): any;
+ }
+
+ /**
+ * Creates a new ACL.
+ * If no argument is given, the ACL has no permissions for anyone.
+ * If the argument is a Parse.User, the ACL will have read and write
+ * permission for only that user.
+ * If the argument is any other JSON object, that object will be interpretted
+ * as a serialized ACL created with toJSON().
+ * @see Parse.Object#setACL
+ * @class
+ *
+ *
An ACL, or Access Control List can be added to any
+ * Parse.Object to restrict access to only a subset of users
+ * of your application.
+ */
+ class ACL extends BaseObject {
+
+ permissionsById: any;
+
+ constructor(arg1?: any);
+
+ setPublicReadAccess(allowed: boolean): void;
+ getPublicReadAccess(): boolean;
+
+ setPublicWriteAccess(allowed: boolean): void;
+ getPublicWriteAccess(): boolean;
+
+ setReadAccess(userId: User, allowed: boolean): void;
+ getReadAccess(userId: User): boolean;
+
+ setReadAccess(userId: string, allowed: boolean): void;
+ getReadAccess(userId: string): boolean;
+
+ setRoleReadAccess(role: Role, allowed: boolean): void;
+ setRoleReadAccess(role: string, allowed: boolean): void;
+ getRoleReadAccess(role: Role): boolean;
+ getRoleReadAccess(role: string): boolean;
+
+ setRoleWriteAccess(role: Role, allowed: boolean): void;
+ setRoleWriteAccess(role: string, allowed: boolean): void;
+ getRoleWriteAccess(role: Role): boolean;
+ getRoleWriteAccess(role: string): boolean;
+
+ setWriteAccess(userId: User, allowed: boolean): void;
+ setWriteAccess(userId: string, allowed: boolean): void;
+ getWriteAccess(userId: User): boolean;
+ getWriteAccess(userId: string): boolean;
+ }
+
+
+ /**
+ * A Parse.File is a local representation of a file that is saved to the Parse
+ * cloud.
+ * @class
+ * @param name {String} The file's name. This will be prefixed by a unique
+ * value once the file has finished saving. The file name must begin with
+ * an alphanumeric character, and consist of alphanumeric characters,
+ * periods, spaces, underscores, or dashes.
+ * @param data {Array} The data for the file, as either:
+ * 1. an Array of byte value Numbers, or
+ * 2. an Object like { base64: "..." } with a base64-encoded String.
+ * 3. a File object selected with a file upload control. (3) only works
+ * in Firefox 3.6+, Safari 6.0.2+, Chrome 7+, and IE 10+.
+ * For example:
+ * var fileUploadControl = $("#profilePhotoFileUpload")[0];
+ * if (fileUploadControl.files.length > 0) {
+ * var file = fileUploadControl.files[0];
+ * var name = "photo.jpg";
+ * var parseFile = new Parse.File(name, file);
+ * parseFile.save().then(function() {
+ * // The file has been saved to Parse.
+ * }, function(error) {
+ * // The file either could not be read, or could not be saved to Parse.
+ * });
+ * }
+ * @param type {String} Optional Content-Type header to use for the file. If
+ * this is omitted, the content type will be inferred from the name's
+ * extension.
+ */
+ class File {
+
+ constructor(name: string, data: any, type?: string);
+ name(): string;
+ url(): string;
+ save(options?: SuccessFailureOptions): Promise;
+
+ }
+
+ /**
+ * Creates a new GeoPoint with any of the following forms:
+ *
+ * new GeoPoint(otherGeoPoint)
+ * new GeoPoint(30, 30)
+ * new GeoPoint([30, 30])
+ * new GeoPoint({latitude: 30, longitude: 30})
+ * new GeoPoint() // defaults to (0, 0)
+ *
+ * @class
+ *
+ *
Represents a latitude / longitude point that may be associated
+ * with a key in a ParseObject or used as a reference point for geo queries.
+ * This allows proximity-based queries on the key.
+ *
+ *
Only one key in a class may contain a GeoPoint.
+ *
+ *
Example:
+ * var point = new Parse.GeoPoint(30.0, -20.0);
+ * var object = new Parse.Object("PlaceObject");
+ * object.set("location", point);
+ * object.save();
+ */
+ class GeoPoint extends BaseObject {
+
+ latitude: number;
+ longitude: number;
+
+ constructor(arg1?: any, arg2?: any);
+
+ current(options?: SuccessFailureOptions): GeoPoint;
+ radiansTo(point: GeoPoint): number;
+ kilometersTo(point: GeoPoint): number;
+ milesTo(point: GeoPoint): number;
+ }
+
+ /**
+ * History serves as a global router (per frame) to handle hashchange
+ * events or pushState, match the appropriate route, and trigger
+ * callbacks. You shouldn't ever have to create one of these yourself
+ * — you should use the reference to Parse.history
+ * that will be created for you automatically if you make use of
+ * Routers with routes.
+ * @class
+ *
+ *
A fork of Backbone.History, provided for your convenience. If you
+ * use this class, you must also include jQuery, or another library
+ * that provides a jQuery-compatible $ function. For more information,
+ * see the
+ * Backbone documentation.
+ *
Available in the client SDK only.
+ */
+ class History {
+
+ handlers: any[];
+ interval: number;
+ fragment: string;
+
+ checkUrl(e?: any): void;
+ getFragment(fragment?: string, forcePushState?: boolean): string;
+ getHash(windowOverride: Window): string;
+ loadUrl(fragmentOverride: any): boolean;
+ navigate(fragment: string, options?: any): any;
+ route(route: any, callback: Function): void;
+ start(options: any): boolean;
+ stop(): void;
+ }
+
+ /**
+ * A class that is used to access all of the children of a many-to-many relationship.
+ * Each instance of Parse.Relation is associated with a particular parent object and key.
+ */
+ class Relation extends BaseObject {
+
+ parent: Object;
+ key: string;
+ targetClassName: string;
+
+ constructor(parent?: Object, key?: string);
+
+ //Adds a Parse.Object or an array of Parse.Objects to the relation.
+ add(object: Object): void;
+
+ // Returns a Parse.Query that is limited to objects in this relation.
+ query(): Query;
+
+ // Removes a Parse.Object or an array of Parse.Objects from this relation.
+ remove(object: Object): void;
+ }
+
+ /**
+ * Creates a new model with defined attributes. A client id (cid) is
+ * automatically generated and assigned for you.
+ *
+ *
You won't normally call this method directly. It is recommended that
+ * you use a subclass of Parse.Object instead, created by calling
+ * extend.
+ *
+ *
However, if you don't want to use a subclass, or aren't sure which
+ * subclass is appropriate, you can use this form:
+ * var object = new Parse.Object("ClassName");
+ *
+ * That is basically equivalent to:
+ * var MyClass = Parse.Object.extend("ClassName");
+ * var object = new MyClass();
+ *
+ *
+ * @param {Object} attributes The initial set of data to store in the object.
+ * @param {Object} options A set of Backbone-like options for creating the
+ * object. The only option currently supported is "collection".
+ * @see Parse.Object.extend
+ *
+ * @class
+ *
+ *
The fundamental unit of Parse data, which implements the Backbone Model
+ * interface.
Parse.Events is a fork of Backbone's Events module, provided for your
+ * convenience.
+ *
+ *
A module that can be mixed in to any object in order to provide
+ * it with custom events. You may bind callback functions to an event
+ * with `on`, or remove these functions with `off`.
+ * Triggering an event fires all callbacks in the order that `on` was
+ * called.
+ *
+ *
Parse.Query defines a query that is used to fetch Parse.Objects. The
+ * most common use case is finding all objects that match a query through the
+ * find method. For example, this sample code fetches all objects
+ * of class MyClass. It calls a different function depending on
+ * whether the fetch succeeded or not.
+ *
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.find({
+ * success: function(results) {
+ * // results is an array of Parse.Object.
+ * },
+ *
+ * error: function(error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });
+ *
+ *
A Parse.Query can also be used to retrieve a single object whose id is
+ * known, through the get method. For example, this sample code fetches an
+ * object of class MyClass and id myId. It calls a
+ * different function depending on whether the fetch succeeded or not.
+ *
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.get(myId, {
+ * success: function(object) {
+ * // object is an instance of Parse.Object.
+ * },
+ *
+ * error: function(object, error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });
+ *
+ *
A Parse.Query can also be used to count the number of objects that match
+ * the query without retrieving all of those objects. For example, this
+ * sample code counts the number of objects of the class MyClass
+ *
+ * var query = new Parse.Query(MyClass);
+ * query.count({
+ * success: function(number) {
+ * // There are number instances of MyClass.
+ * },
+ *
+ * error: function(error) {
+ * // error is an instance of Parse.Error.
+ * }
+ * });