[internal][types][module-template] rework types

This commit is contained in:
Salakar
2019-07-15 01:32:34 +01:00
parent c8f93399e1
commit 22ab0ab93e
2 changed files with 50 additions and 21 deletions

View File

@@ -15,11 +15,7 @@
*
*/
import {
ReactNativeFirebaseModule,
ReactNativeFirebaseNamespace,
ReactNativeFirebaseModuleAndStatics,
} from '@react-native-firebase/app-types';
import { ReactNativeFirebase } from '@react-native-firebase/app';
/**
* Firebase _Template_ package for React Native.
@@ -58,6 +54,8 @@ import {
* @firebase _template_
*/
export namespace _Template_ {
import FirebaseModule = ReactNativeFirebase.FirebaseModule;
export interface Statics {
// firebase._template_.* static props go here
}
@@ -99,28 +97,33 @@ export namespace _Template_ {
* ```
*
*/
export class Module extends ReactNativeFirebaseModule {
export class Module extends FirebaseModule {
// firebase._template_().* methods & props go here
}
}
declare module '@react-native-firebase/_template_' {
import { ReactNativeFirebaseNamespace } from '@react-native-firebase/app-types';
const FirebaseNamespaceExport: {} & ReactNativeFirebaseNamespace;
export const firebase = FirebaseNamespaceExport;
const _Template_DefaultExport: ReactNativeFirebaseModuleAndStatics<
_Template_.Module,
_Template_.Statics
>;
export default _Template_DefaultExport;
import ReactNativeFirebaseModule = ReactNativeFirebase.Module;
import FirebaseModuleWithStaticsAndApp = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp;
const firebaseNamedExport: {} & ReactNativeFirebaseModule;
export const firebase = firebaseNamedExport;
const module: FirebaseModuleWithStaticsAndApp<_Template_.Module, _Template_.Statics>;
export default module;
}
declare module '@react-native-firebase/app-types' {
interface ReactNativeFirebaseNamespace {
_template_: ReactNativeFirebaseModuleAndStatics<_Template_.Module, _Template_.Statics>;
}
interface FirebaseApp {
_template_(): _Template_.Module;
/**
* Attach namespace to `firebase.` and `FirebaseApp.`.
*/
declare module '@react-native-firebase/app' {
namespace ReactNativeFirebase {
import FirebaseModuleWithStaticsAndApp = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp;
interface Module {
_template_: FirebaseModuleWithStaticsAndApp<_Template_.Module, _Template_.Statics>;
}
interface FirebaseApp {
_template_(): _Template_.Module;
}
}
}

View File

@@ -0,0 +1,26 @@
import firebase from '@react-native-firebase/app';
import defaultExport, { firebase as firebaseFromModule } from '@react-native-firebase/_Template_';
// checks module exists at root
console.log(firebase._Template_().app.name);
// checks module exists at app level
console.log(firebase.app()._Template_().app.name);
// checks statics exist
console.log(firebase._Template_.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._Template_(firebase.app()).app.name);
// checks default export supports app arg
console.log(defaultExport(firebase.app()).app.name);