diff --git a/packages/indexing/.npmignore b/packages/indexing/.npmignore index d9fa30e5..29e5aa19 100644 --- a/packages/indexing/.npmignore +++ b/packages/indexing/.npmignore @@ -63,3 +63,4 @@ android/.settings *.coverage.json .circleci .eslintignore +type-test.ts diff --git a/packages/indexing/lib/index.d.ts b/packages/indexing/lib/index.d.ts index e02b0efd..95d9c8b9 100644 --- a/packages/indexing/lib/index.d.ts +++ b/packages/indexing/lib/index.d.ts @@ -15,11 +15,7 @@ * */ -import { - ReactNativeFirebaseModule, - ReactNativeFirebaseModuleAndStatics, - ReactNativeFirebaseNamespace, -} from '@react-native-firebase/app-types'; +import { ReactNativeFirebase } from '@react-native-firebase/app'; /** * Firebase Indexing package for React Native. @@ -58,6 +54,8 @@ import { * @firebase indexing */ export namespace Indexing { + import FirebaseModule = ReactNativeFirebase.FirebaseModule; + export interface Statics {} /** @@ -74,7 +72,7 @@ export namespace Indexing { * const defaultAppIndexing = firebase.indexing(); * ``` */ - export class Module extends ReactNativeFirebaseModule { + export class Module extends FirebaseModule { /** * If the application was launched via a deep link URL, the URL is returned, otherwise * value is `null`. @@ -94,22 +92,27 @@ export namespace Indexing { } declare module '@react-native-firebase/indexing' { - import { ReactNativeFirebaseNamespace } from '@react-native-firebase/app-types'; - const FirebaseNamespaceExport: {} & ReactNativeFirebaseNamespace; - export const firebase = FirebaseNamespaceExport; - const IndexingDefaultExport: ReactNativeFirebaseModuleAndStatics< - Indexing.Module, - Indexing.Statics - >; - export default IndexingDefaultExport; + import ReactNativeFirebaseModule = ReactNativeFirebase.Module; + import FirebaseModuleWithStatics = ReactNativeFirebase.FirebaseModuleWithStatics; + + const firebaseNamedExport: {} & ReactNativeFirebaseModule; + export const firebase = firebaseNamedExport; + + const module: FirebaseModuleWithStatics; + export default module; } -declare module '@react-native-firebase/app-types' { - interface ReactNativeFirebaseNamespace { - indexing: ReactNativeFirebaseModuleAndStatics; - } - - interface FirebaseApp { - indexing(): Indexing.Module; +/** + * Attach namespace to `firebase.` and `FirebaseApp.`. + */ +declare module '@react-native-firebase/app' { + namespace ReactNativeFirebase { + import FirebaseModuleWithStatics = ReactNativeFirebase.FirebaseModuleWithStatics; + interface Module { + indexing: FirebaseModuleWithStatics; + } + interface FirebaseApp { + indexing(): Indexing.Module; + } } } diff --git a/packages/indexing/type-test.ts b/packages/indexing/type-test.ts new file mode 100644 index 00000000..4abe2229 --- /dev/null +++ b/packages/indexing/type-test.ts @@ -0,0 +1,26 @@ +import firebase from '@react-native-firebase/app'; +import defaultExport, { firebase as firebaseFromModule } from '@react-native-firebase/indexing'; + +// checks module exists at root +console.log(firebase.indexing().app.name); + +// checks module exists at app level +console.log(firebase.app().indexing().app.name); + +// checks statics exist +console.log(firebase.indexing.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.indexing(firebase.app()).app.name); + +// checks default export supports app arg +// console.log(defaultExport(firebase.app()).app.name);