Skip to content
This repository has been archived by the owner on Jun 27, 2023. It is now read-only.

Commit

Permalink
fix(core): fix TypeScript typings
Browse files Browse the repository at this point in the history
  • Loading branch information
fathyb committed Oct 24, 2018
1 parent 9978cd7 commit fe7933c
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 68 deletions.
42 changes: 39 additions & 3 deletions packages/core/src/bridge.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,47 @@
import { NativeModules } from 'react-native'

import bridge = NativeModules.RNAnalytics
export interface Configuration {
writeKey: string
recordScreenViews: boolean
trackAppLifecycleEvents: boolean
trackAttributionData: boolean
debug: boolean
flushAt: number

android: {
flushInterval?: number
collectDeviceId: boolean
}
ios: {
trackAdvertising: boolean
trackDeepLinks: boolean
}
}

export type JsonValue = boolean | number | string | null | JsonList | JsonMap
export interface JsonMap {
[key: string]: JsonValue
[index: number]: JsonValue
}
export interface JsonList extends Array<JsonValue> {}

export interface Bridge {
setup(configuration: Configuration): Promise<void>
track(event: string, properties: JsonMap, context: JsonMap): Promise<void>
identify(user: string, traits: JsonMap, context: JsonMap): Promise<void>
screen(name: string, properties: JsonMap, context: JsonMap): Promise<void>
group(groupId: string, traits: JsonMap, context: JsonMap): Promise<void>
alias(alias: string, context: JsonMap): Promise<void>
reset(): Promise<void>
flush(): Promise<void>
enable(): Promise<void>
disable(): Promise<void>
}

const bridge: Bridge = NativeModules.RNAnalytics

if (!bridge) {
throw new Error('Failed to load Analytics native module.')
}

export default bridge
export type JsonMap = NativeModules.RNAnalytics.JsonMap
export type Bridge = typeof bridge
8 changes: 4 additions & 4 deletions packages/core/src/configuration.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { Analytics } from './analytics'
import Bridge from './bridge'
import { Configuration } from './bridge'

const defaults = {
android: ({
collectDeviceId = true,
flushInterval
}: Partial<Bridge.Configuration['android']>) => ({
}: Partial<Configuration['android']>) => ({
collectDeviceId,
flushInterval
}),
ios: ({
trackAdvertising = false,
trackDeepLinks = false
}: Partial<Bridge.Configuration['ios']>) => ({
}: Partial<Configuration['ios']>) => ({
trackAdvertising,
trackDeepLinks
})
Expand All @@ -31,7 +31,7 @@ export const configure = async (
ios = {},
android = {}
}: Analytics.Configuration
): Promise<Bridge.Configuration> => {
): Promise<Configuration> => {
await Promise.all(
using.map(
async integration =>
Expand Down
62 changes: 1 addition & 61 deletions packages/core/src/modules.d.ts
Original file line number Diff line number Diff line change
@@ -1,62 +1,2 @@
declare module '*.json'
declare module 'react-native' {
export namespace NativeModules.RNAnalytics {
export interface Configuration {
writeKey: string
recordScreenViews: boolean
trackAppLifecycleEvents: boolean
trackAttributionData: boolean
debug: boolean
flushAt: number

android: {
flushInterval?: number
collectDeviceId: boolean
}
ios: {
trackAdvertising: boolean
trackDeepLinks: boolean
}
}

export type JsonValue =
| boolean
| number
| string
| null
| JsonList
| JsonMap
export interface JsonMap {
[key: string]: JsonValue
[index: number]: JsonValue
}
export interface JsonList extends Array<JsonValue> {}

export function setup(configuration: Configuration): Promise<void>
export function track(
event: string,
properties: JsonMap,
context: JsonMap
): Promise<void>
export function identify(
user: string,
traits: JsonMap,
context: JsonMap
): Promise<void>
export function screen(
name: string,
properties: JsonMap,
context: JsonMap
): Promise<void>
export function group(
groupId: string,
traits: JsonMap,
context: JsonMap
): Promise<void>
export function alias(alias: string, context: JsonMap): Promise<void>
export function reset(): Promise<void>
export function flush(): Promise<void>
export function enable(): Promise<void>
export function disable(): Promise<void>
}
}
declare module 'react-native'

0 comments on commit fe7933c

Please sign in to comment.