[types][firestore] rework types

This commit is contained in:
Salakar
2019-07-15 01:26:09 +01:00
parent 935c1174f4
commit ce0dfd1e28
3 changed files with 52 additions and 42 deletions

View File

@@ -63,3 +63,4 @@ android/.settings
*.coverage.json
.circleci
.eslintignore
type-test.ts

View File

@@ -15,11 +15,7 @@
*
*/
import {
ReactNativeFirebaseModule,
ReactNativeFirebaseNamespace,
ReactNativeFirebaseModuleAndStatics,
} from '@react-native-firebase/app-types';
import { ReactNativeFirebase } from '@react-native-firebase/app';
/**
* Firebase Cloud Firestore package for React Native.
@@ -58,6 +54,8 @@ import {
* @firebase firestore
*/
export namespace Firestore {
import FirebaseModule = ReactNativeFirebase.FirebaseModule;
/**
* An immutable object representing an array of bytes.
*/
@@ -1629,7 +1627,7 @@ export namespace Firestore {
* ```
*
*/
export class Module extends ReactNativeFirebaseModule {
export class Module extends FirebaseModule {
/**
* Creates a write batch, used for performing multiple writes as a single atomic operation.
* The maximum number of writes allowed in a single WriteBatch is 500, but note that each usage
@@ -1756,48 +1754,27 @@ export namespace Firestore {
}
declare module '@react-native-firebase/firestore' {
import { ReactNativeFirebaseNamespace } from '@react-native-firebase/app-types';
import ReactNativeFirebaseModule = ReactNativeFirebase.Module;
import FirebaseModuleWithStaticsAndApp = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp;
const FirebaseNamespaceExport: {} & ReactNativeFirebaseNamespace;
const firebaseNamedExport: {} & ReactNativeFirebaseModule;
export const firebase = firebaseNamedExport;
/**
* @example
* ```js
* import { firebase } from '@react-native-firebase/firestore';
* firebase.firestore().X(...);
* ```
*/
export const firebase = FirebaseNamespaceExport;
const FirestoreDefaultExport: ReactNativeFirebaseModuleAndStatics<
Firestore.Module,
Firestore.Statics
>;
/**
* @example
* ```js
* import firestore from '@react-native-firebase/firestore';
* firestore().X(...);
* ```
*/
export default FirestoreDefaultExport;
const module: FirebaseModuleWithStaticsAndApp<Firestore.Module, Firestore.Statics>;
export default module;
}
/**
* Attach namespace to `firebase.` and `FirebaseApp.`.
*/
declare module '@react-native-firebase/app-types' {
interface ReactNativeFirebaseNamespace {
/**
* Firestore
*/
firestore: ReactNativeFirebaseModuleAndStatics<Firestore.Module, Firestore.Statics>;
}
interface FirebaseApp {
/**
* Firestore
*/
firestore(): Firestore.Module;
declare module '@react-native-firebase/app' {
namespace ReactNativeFirebase {
import FirebaseModuleWithStaticsAndApp = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp;
interface Module {
firestore: FirebaseModuleWithStaticsAndApp<Firestore.Module, Firestore.Statics>;
}
interface FirebaseApp {
firestore(): Firestore.Module;
}
}
}

View File

@@ -0,0 +1,32 @@
import firebase from '@react-native-firebase/app';
import defaultExport, { firebase as firebaseFromModule } from '@react-native-firebase/firestore';
// checks module exists at root
console.log(firebase.firestore().app.name);
// checks module exists at app level
console.log(firebase.app().firestore().app.name);
console.log(
firebase
.app()
.firestore()
.collection('foo'),
);
// checks statics exist
console.log(firebase.firestore.SDK_VERSION);
// checks statics exist on defaultExport
console.log(defaultExport.SDK_VERSION);
// checks root exists
console.log(firebase.SDK_VERSION);
// checks firebase named export exists on module
console.log(firebaseFromModule.SDK_VERSION);
// checks multi-app support exists
console.log(firebase.firestore(firebase.app()).app.name);
// checks default export supports app arg
console.log(defaultExport(firebase.app()).app.name);