update realm type definitions to realm 1.0

This commit is contained in:
akim95
2017-02-06 00:47:34 +08:00
parent 241f8fc6ee
commit 4f8a6b2510
2 changed files with 177 additions and 37 deletions
+138 -36
View File
@@ -1,4 +1,4 @@
// Type definitions for realm-js 0.14
// Type definitions for realm-js 1.0
// Project: https://github.com/realm/realm-js
// Definitions by: Akim <https://github.com/Akim95>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
@@ -6,13 +6,13 @@
declare namespace Realm {
/**
* PropertyType
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~PropertyType }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.html#~PropertyType }
*/
export type PropertyType = string | 'bool' | 'int' | 'float' | 'double' | 'string' | 'data' | 'date' | 'list';
/**
* ObjectSchemaProperty
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~ObjectSchemaProperty }
* @see { @link https://realm.io/docs/javascriptlatest/api/Realm.html#~ObjectSchemaProperty }
*/
export interface ObjectSchemaProperty {
type: PropertyType;
@@ -29,7 +29,7 @@ declare namespace Realm {
/**
* ObjectSchema
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~ObjectSchema }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.html#~ObjectSchema }
*/
export interface ObjectSchema {
name: string;
@@ -39,7 +39,7 @@ declare namespace Realm {
/**
* ObjectClass
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~ObjectClass }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.html#~ObjectClass }
*/
export interface ObjectClass {
schema: ObjectSchema;
@@ -47,15 +47,20 @@ declare namespace Realm {
/**
* ObjectType
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~ObjectType }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.html#~ObjectType }
*/
export interface ObjectType {
type: ObjectClass;
}
interface SyncConfiguration {
user: User;
url: string;
}
/**
* realm configuration
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.html#~Configuration }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.html#~Configuration }
*/
export interface Configuration {
encryptionKey?: any;
@@ -64,6 +69,7 @@ declare namespace Realm {
readOnly?: boolean;
schema?: ObjectClass[] | ObjectSchema[];
schemaVersion?: number;
sync?: SyncConfiguration;
}
// object props type
@@ -73,13 +79,13 @@ declare namespace Realm {
/**
* SortDescriptor
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.Collection.html#~SortDescriptor }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Collection.html#~SortDescriptor }
*/
export type SortDescriptor = string | [string, boolean] | any[];
/**
* Iterator
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.Collection.html#~Iterator }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Collection.html#~Iterator }
*/
export interface IteratorResult<T> {
done: boolean;
@@ -87,12 +93,13 @@ declare namespace Realm {
}
export interface Iterator<T> {
next(value?: any): IteratorResult<T>;
next(done: boolean, value?: any): IteratorResult<T>;
[Symbol.iterator](): any;
}
/**
* Collection
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.Collection.html }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Collection.html }
*/
export interface Collection<T> {
readonly length: number;
@@ -117,7 +124,7 @@ declare namespace Realm {
sorted(descriptor: string | SortDescriptor, reverse?: boolean): Results<T>;
/**
* @returns Iterator<T|any>
* @returns Iterator
*/
[Symbol.iterator](): Iterator<T>;
@@ -150,70 +157,87 @@ declare namespace Realm {
/**
* @param {number} start?
* @param {number} end?
* @returns T[] | Object[]
* @returns T
*/
slice(start?: number, end?: number): T[];
/**
* @param {(object:any,index?:any,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns Object|void
* @returns T
*/
find(callback: (object: any, index?: any, collection?: any) => void, thisArg?: any): T | null | undefined;
/**
* @param {(object:any,index?:any,collection?:any)=>void} callback
* @param {(object:any,index?:number,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns number
*/
findIndex(callback: (object: any, index?: number, collection?: any) => void, thisArg?: any): number;
/**
* @param {(object:T|any,index?:number,collection?:any)=>void} callback
* @param {(object:T,index?:number,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns void
*/
forEach(callback: (object: T, index?: number, collection?: any) => void, thisArg?: any): void;
/**
* @param {(object:T|any,index?:number,collection?:any)=>void} callback
* @param {(object:T,index?:number,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns boolean
*/
every(callback: (object: T, index?: number, collection?: any) => void, thisArg?: any): boolean;
/**
* @param {(object:any,index?:number,collection?:any)=>void} callback
* @param {(object:T,index?:number,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns boolean
*/
some(callback: (object: T, index?: number, collection?: any) => void, thisArg?: any): boolean;
/**
* @param {(object:any,index?:number,collection?:any)=>void} callback
* @param {(object:T,index?:number,collection?:any)=>void} callback
* @param {any} thisArg?
* @returns any
*/
map(callback: (object: T, index?: number, collection?: any) => void, thisArg?: any): any[];
/**
* @param {(previousValue:T|any,object?:any,index?:number,collection?:any)=>void} callback
* @param {(previousValue:T,object?:T,index?:number,collection?:any)=>void} callback
* @param {any} initialValue?
* @returns any
*/
reduce(callback: (previousValue: T, object?: T, index?: number, collection?: any) => void, initialValue?: any): any;
/**
* @param {(previousValue:any,object?:any,index?:any,collection?:any)=>void} callback
* @param {(previousValue:T,object?:T,index?:any,collection?:any)=>void} callback
* @param {any} initialValue?
* @returns any
*/
reduceRight(callback: (previousValue: T, object?: T, index?: any, collection?: any) => void, initialValue?: any): any;
/**
* @param {(collection:any,changes:any)=>void} callback
* @returns void
*/
addListener(callback: (collection: any, changes: any) => void): void;
/**
* @returns void
*/
removeAllListeners(): void;
/**
* @param {()=>void} callback
* @returns void
*/
removeListener(callback: () => void): void;
}
/**
* Object
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.Object.html }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Object.html }
*/
export interface Object {
/**
@@ -224,22 +248,22 @@ declare namespace Realm {
/**
* List
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.List.html }
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.List.html }
*/
export interface List<T> extends Collection<T> {
/**
* @returns Object|void
* @returns T
*/
pop(): T | null | undefined;
/**
* @param {any} object
* @param {T} object
* @returns number
*/
push(object: T): number;
/**
* @returns Object|void
* @returns T
*/
shift(): T | null | undefined;
@@ -247,12 +271,12 @@ declare namespace Realm {
* @param {number} index
* @param {number} count?
* @param {any} object?
* @returns Object
* @returns T
*/
splice(index: number, count?: number, object?: any): T[];
/**
* @param {any} object
* @param {T} object
* @returns number
*/
unshift(object: T): number;
@@ -260,9 +284,81 @@ declare namespace Realm {
/**
* Results
* @see { @link https://realm.io/docs/react-native/latest/api/Realm.Results.html }
* @see { @link https://realm.io/docs/javascriptlatest/api/Realm.Results.html }
*/
export type Results<T> = Collection<T>;
/**
* User
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.User.html }
*/
export interface User {
all: any;
current: User;
readonly identity: string;
readonly isAdmin: boolean;
readonly server: string;
readonly token: string;
adminUser(adminToken: string): User;
login(server: string, username: string, password: string, callback: (error: any, user: any) => void): void;
loginWithProvider(server: string, provider: string, providerToken: string, callback: (error: any, user: any) => void): void;
register(server: string, username: string, password: string, callback: (error: any, user: any) => void): void;
registerWithProvider(server: string, provider: string, providerToken: string, callback: (error: any, user: any) => void): void;
logout(): void;
openManagementRealm(): Realm;
}
/**
* Session
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.Session.html }
*/
export interface Session {
readonly config: any;
readonly state: string;
readonly url: string;
readonly user: User;
}
/**
* AuthError
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.AuthError.html }
*/
export interface AuthError {
readonly code: number;
readonly type: string;
}
/**
* ChangeEvent
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.ChangeEvent.html }
*/
export interface ChangeEvent {
readonly changes: any;
readonly oldRealm: Realm;
readonly path: string;
readonly realm: Realm;
}
/**
* LogLevel
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.html#~LogLevel }
*/
type LogLevelType = string | 'error' | 'info' | 'defug';
/**
* Sync
* @see { @link https://realm.io/docs/javascript/latest/api/Realm.Sync.html }
*/
interface Sync {
User: User;
Session: Session;
AuthError: AuthError;
ChangeEvent: ChangeEvent;
addListener(serverURL: string, adminUser: User, regex: string, name: string, changeCallback: () => void): void;
removeAllListeners(name?: string[]): void;
removeListener(regex: string, name: string, changeCallback: () => void): void;
setLogLevel(logLevel: LogLevelType): void;
}
}
declare class Realm {
@@ -274,12 +370,18 @@ declare class Realm {
readonly schema: Realm.ObjectSchema[];
readonly schemaVersion: number;
static Sync: Realm.Sync;
syncSession: Realm.Session;
/**
* @param {string} path?
* @param {string} path
* @param {any} encryptionKey?
* @returns number
*/
schemaVersion(path?: string, encryptionKey?: any): number;
static schemaVersion(path: string, encryptionKey?: any): number;
/**
* @param {Realm.Configuration} config?
@@ -293,14 +395,14 @@ declare class Realm {
/**
* @param {string|Realm.ObjectType} type
* @param {Realm.ObjectPropsType} properties
* @param {T&Realm.ObjectPropsType} properties
* @param {boolean} update?
* @returns Realm.Object|T|any
* @returns T
*/
create<T>(type: string | Realm.ObjectType, properties: T & Realm.ObjectPropsType, update?: boolean): T;
/**
* @param {Realm.Object|Realm.Object[]|Realm.List|Realm.Results|any} object
* @param {Realm.Object|Realm.Object[]|Realm.List<any>|Realm.Results<any>|any} object
* @returns void
*/
delete(object: Realm.Object | Realm.Object[] | Realm.List<any> | Realm.Results<any> | any): void;
@@ -313,13 +415,13 @@ declare class Realm {
/**
* @param {string|Realm.ObjectType} type
* @param {number|string} key
* @returns Realm.Object|void
* @returns T
*/
objectForPrimaryKey<T>(type: string | Realm.ObjectType, key: number | string): T | void;
/**
* @param {string|Realm.ObjectType} type
* @returns Realm.Results
* @returns Realm
*/
objects<T>(type: string | Realm.ObjectType): Realm.ObjectType & Realm.Results<T>;
+39 -1
View File
@@ -15,7 +15,7 @@ const personSchema = {
const key = new Int8Array(64);
// constructor test
let realm = new Realm({
const realm = new Realm({
schema: [personSchema],
encryptionKey: key
});
@@ -59,3 +59,41 @@ realm.removeAllListeners();
allPerson.find((person: any) => {
return person.name === 'Jack';
});
const currentVersion = Realm.schemaVersion(Realm.defaultPath);
// username/password authentication
Realm.Sync.User.register('http://localhost:9080', 'username@example.com', 'p@s$w0rd', (error, user) => { /* ... */ });
Realm.Sync.User.login('http://localhost.com:9080', 'username@example.com', 'p@s$w0rd', (error, user) => {
const todoSchema = {
name: 'Todo',
primaryKey: 'id',
properties: {
id: 'int',
task: 'string',
}
};
// sync test
const realm = new Realm({
schema: [todoSchema],
sync: { user, url: 'realm://localhost:9080/~/todos' }
});
// session test
const session = realm.syncSession;
const sessionUrl = session.config.url;
});
// facebook authentication
const fbAccessToken = 'acc3ssT0ken...';
Realm.Sync.User.registerWithProvider('http://localhost:9080', 'facebook', fbAccessToken, (error, user) => { /* ... */ });
// user test
const user = Realm.Sync.User.current;
const users = Realm.Sync.User.all;
// access control test
const managementRealm = user.openManagementRealm();