diff --git a/package.json b/package.json index e16489c..4138b17 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@meteorrn/core", "version": "2.9.0", "description": "Full Meteor Client for React Native", + "types": "src/Meteor.d.ts", "main": "src/index.js", "repository": { "type": "git", diff --git a/src/Meteor.d.ts b/src/Meteor.d.ts index 56c7b0d..0437f49 100644 --- a/src/Meteor.d.ts +++ b/src/Meteor.d.ts @@ -1,9 +1,8 @@ +import { AsyncStorageStatic } from '@react-native-async-storage/async-storage'; + declare module '@meteorrn/core' { type Callback = (...args: unknown[]) => void; - function connect(endpoint: string, options?: any): void; - function disconnect(): void; - function reconnect(): void; type Status = | 'change' | 'connected' @@ -11,15 +10,7 @@ declare module '@meteorrn/core' { | 'loggingIn' | 'loggingOut'; - function call(...args: any[]): void; - function status(): { - connected: boolean; - status: Status; - }; - - function logout(cb: Callback): void; - function loggingOut(): boolean; - function loggingIn(): boolean; + type useTracker = (cb: () => T) => T; interface Data { getUrl(): string; @@ -35,7 +26,12 @@ declare module '@meteorrn/core' { socket: unknown; }; } - function getData(): Data; + + interface MeteorError { + error: string; + reason?: string; + details?: string; + } interface User { _id: string; @@ -45,15 +41,53 @@ declare module '@meteorrn/core' { settings: {}; }; } - function user(): User | undefined; + + interface ConnectOptions { + suppressUrlErrors: boolean; + AsyncStorage: AsyncStorageStatic; + reachabilityUrl: string; + } + + interface Meteor { + connect(endpoint: string, options?: ConnectOptions): void; + disconnect(): void; + reconnect(): void; + + call(...args: any[]): void; + status(): { + connected: boolean; + status: Status; + }; + + logout(cb: Callback): void; + loggingOut(): boolean; + loggingIn(): boolean; + + getData(): Data; + user(): User | undefined; + getAuthToken(): string; + + readonly isVerbose: boolean; + enableVerbose(): void; + + useTracker(): useTracker; + + ddp: Data; + + _handleLoginCallback( + err: MeteorError | null | undefined, + res: { token: string; id: string } + ): void; + } + interface Accounts { onLogin(cb: Callback): void; } - function getAuthToken(): string; - const ddp: Data; - let isVerbose: boolean; - function _handleLoginCallback(err: any, res: any): void; + // Export default Meteor object + const Meteor: Meteor; + export default Meteor; - function useTracker(cb: () => T): T; + // Export other members + export { useTracker, Accounts }; }