@rn-bridge-tools/expo 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +741 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +113 -0
- package/dist/index.d.ts +113 -0
- package/dist/index.js +696 -0
- package/dist/index.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/WebViewBridge.tsx","../src/handlers/camera.ts","../src/handlers/location.ts","../src/handlers/file.ts","../src/handlers/share.ts","../src/handlers/device.ts","../src/handlers/statusbar.ts","../src/handlers/keyboard.ts","../src/handlers/haptic.ts","../src/handlers/clipboard.ts","../src/handlers/scanner.ts","../src/handlers/auth.ts","../src/handlers/iap.ts","../src/handlers/push.ts","../src/handlers/permission.ts","../src/handlers/preference.ts","../src/handlers/navigation.ts","../src/handlers/browser.ts","../src/createHandlers.ts"],"sourcesContent":["export { WebViewBridge } from './WebViewBridge.js';\nexport type { WebViewBridgeProps, WebViewBridgeRef } from './WebViewBridge.js';\nexport { createDefaultHandlers } from './createHandlers.js';\nexport type { HandlerFn, HandlerMap } from './createHandlers.js';\n\n// Re-export handler maps for advanced usage\nexport { cameraHandlers } from './handlers/camera.js';\nexport { locationHandlers } from './handlers/location.js';\nexport { fileHandlers } from './handlers/file.js';\nexport { shareHandlers } from './handlers/share.js';\nexport { deviceHandlers } from './handlers/device.js';\nexport { statusbarHandlers } from './handlers/statusbar.js';\nexport { keyboardHandlers } from './handlers/keyboard.js';\nexport { hapticHandlers } from './handlers/haptic.js';\nexport { clipboardHandlers } from './handlers/clipboard.js';\nexport { scannerHandlers } from './handlers/scanner.js';\nexport { authHandlers } from './handlers/auth.js';\nexport { iapHandlers } from './handlers/iap.js';\nexport { pushHandlers } from './handlers/push.js';\nexport { permissionHandlers } from './handlers/permission.js';\nexport { preferenceHandlers } from './handlers/preference.js';\nexport { navigationHandlers } from './handlers/navigation.js';\nexport { browserHandlers } from './handlers/browser.js';\n","import React, { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\nimport { bridge, createWebView } from '@webview-bridge/react-native';\nimport type { WebViewProps } from 'react-native-webview';\nimport type { BridgeToolsAction, BridgeToolsEvents, BridgeToolsEvent } from '@rn-bridge-tools/core';\n\ndeclare const __DEV__: boolean | undefined;\n\nimport type { HandlerFn, HandlerMap } from './createHandlers.js';\n\nexport interface WebViewBridgeProps extends Omit<WebViewProps, 'ref'> {\n handlers: HandlerMap;\n customHandlers?: Partial<Record<BridgeToolsAction, HandlerFn>>;\n}\n\nexport interface WebViewBridgeRef {\n emit: <E extends BridgeToolsEvent>(event: E, data: BridgeToolsEvents[E]) => void;\n}\n\nexport const WebViewBridge = forwardRef<WebViewBridgeRef, WebViewBridgeProps>(\n function WebViewBridge({ handlers, customHandlers, ...webViewProps }, ref) {\n const handlersRef = useRef(handlers);\n const customRef = useRef(customHandlers);\n\n const { InternalWebView, postMessage } = useMemo(() => {\n const allHandlers: Record<string, (...args: unknown[]) => Promise<unknown>> = {};\n\n const mergedHandlers = { ...handlersRef.current, ...customRef.current };\n for (const [key, handler] of Object.entries(mergedHandlers)) {\n if (handler) {\n allHandlers[key] = async (...args: unknown[]) => {\n const payload = args[0] ?? {};\n return (handler as (p: unknown) => Promise<unknown>)(payload);\n };\n }\n }\n\n const appBridge = bridge(allHandlers);\n const result = createWebView({\n bridge: appBridge,\n debug: __DEV__ ?? false,\n });\n return { InternalWebView: result.WebView, postMessage: result.postMessage };\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n emit: <E extends BridgeToolsEvent>(event: E, data: BridgeToolsEvents[E]) => {\n postMessage(event, data as never);\n },\n }),\n [postMessage],\n );\n\n return <InternalWebView {...webViewProps} />;\n },\n);\n","import type { CameraNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface ImagePickerModule {\n launchCameraAsync: (opts: {\n quality?: number;\n cameraType?: unknown;\n allowsEditing?: boolean;\n }) => Promise<{\n canceled: boolean;\n assets: Array<{\n uri: string;\n width: number;\n height: number;\n fileSize?: number;\n mimeType?: string | null;\n }>;\n }>;\n launchImageLibraryAsync: (opts: {\n allowsMultipleSelection?: boolean;\n quality?: number;\n selectionLimit?: number;\n }) => Promise<{\n canceled: boolean;\n assets: Array<{\n uri: string;\n width: number;\n height: number;\n fileSize?: number;\n mimeType?: string | null;\n }>;\n }>;\n CameraType: { front: unknown; back: unknown };\n}\n\nexport const cameraHandlers = {\n 'camera.take': async (\n payload: CameraNamespace['camera.take']['request'],\n ): Promise<CameraNamespace['camera.take']['response']> => {\n const ImagePicker = await tryImport<ImagePickerModule>('expo-image-picker');\n if (!ImagePicker) return moduleNotInstalledError('expo-image-picker') as never;\n\n const result = await ImagePicker.launchCameraAsync({\n quality: payload.quality ?? 0.8,\n cameraType:\n payload.facing === 'front'\n ? ImagePicker.CameraType.front\n : ImagePicker.CameraType.back,\n allowsEditing: payload.allowsEditing ?? false,\n });\n\n if (result.canceled) {\n return { success: false, assets: [] } as never;\n }\n\n const asset = result.assets[0];\n return {\n success: true,\n uri: asset.uri,\n width: asset.width,\n height: asset.height,\n fileSize: asset.fileSize,\n mimeType: asset.mimeType ?? undefined,\n };\n },\n\n 'camera.pickImage': async (\n payload: CameraNamespace['camera.pickImage']['request'],\n ): Promise<CameraNamespace['camera.pickImage']['response']> => {\n const ImagePicker = await tryImport<ImagePickerModule>('expo-image-picker');\n if (!ImagePicker) return moduleNotInstalledError('expo-image-picker') as never;\n\n const result = await ImagePicker.launchImageLibraryAsync({\n allowsMultipleSelection: payload.allowsMultipleSelection ?? false,\n quality: payload.quality ?? 0.8,\n selectionLimit: payload.maxCount ?? 0,\n });\n\n if (result.canceled) {\n return { success: false, assets: [] };\n }\n\n return {\n success: true,\n assets: result.assets.map((a) => ({\n uri: a.uri,\n width: a.width,\n height: a.height,\n fileSize: a.fileSize,\n mimeType: a.mimeType ?? undefined,\n })),\n };\n },\n};\n","import type { LocationNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface ExpoLocationModule {\n Accuracy: {\n Lowest: number;\n Low: number;\n Balanced: number;\n High: number;\n Highest: number;\n };\n getCurrentPositionAsync: (opts: {\n accuracy?: number;\n }) => Promise<{\n coords: {\n latitude: number;\n longitude: number;\n altitude: number | null;\n accuracy: number | null;\n };\n timestamp: number;\n }>;\n watchPositionAsync: (\n opts: { accuracy?: number; distanceInterval?: number; timeInterval?: number },\n callback: (location: unknown) => void,\n ) => Promise<{ remove: () => void }>;\n}\n\nconst watchSubscriptions = new Map<string, { remove: () => void }>();\nlet watchCounter = 0;\n\nexport const locationHandlers = {\n 'location.getCurrent': async (\n payload: LocationNamespace['location.getCurrent']['request'],\n ): Promise<LocationNamespace['location.getCurrent']['response']> => {\n const Location = await tryImport<ExpoLocationModule>('expo-location');\n if (!Location) return moduleNotInstalledError('expo-location') as never;\n\n const accuracyMap: Record<string, number> = {\n lowest: Location.Accuracy.Lowest,\n low: Location.Accuracy.Low,\n balanced: Location.Accuracy.Balanced,\n high: Location.Accuracy.High,\n highest: Location.Accuracy.Highest,\n };\n\n const result = await Location.getCurrentPositionAsync({\n accuracy: accuracyMap[payload.accuracy ?? 'balanced'] ?? Location.Accuracy.Balanced,\n });\n\n return {\n lat: result.coords.latitude,\n lng: result.coords.longitude,\n altitude: result.coords.altitude ?? undefined,\n accuracy: result.coords.accuracy ?? undefined,\n timestamp: result.timestamp,\n };\n },\n\n 'location.watchStart': async (\n payload: LocationNamespace['location.watchStart']['request'],\n ): Promise<LocationNamespace['location.watchStart']['response']> => {\n const Location = await tryImport<ExpoLocationModule>('expo-location');\n if (!Location) return moduleNotInstalledError('expo-location') as never;\n\n watchCounter += 1;\n const watchId = `watch_${watchCounter}`;\n\n const accuracyMap: Record<string, number> = {\n low: Location.Accuracy.Low,\n balanced: Location.Accuracy.Balanced,\n high: Location.Accuracy.High,\n };\n\n const subscription = await Location.watchPositionAsync(\n {\n accuracy: accuracyMap[payload.accuracy ?? 'balanced'] ?? Location.Accuracy.Balanced,\n distanceInterval: payload.distanceInterval,\n timeInterval: payload.timeInterval,\n },\n (_location) => {\n // Event push is handled by the WebViewBridge component via emit\n },\n );\n\n watchSubscriptions.set(watchId, subscription);\n return { watchId };\n },\n\n 'location.watchStop': async (\n payload: LocationNamespace['location.watchStop']['request'],\n ): Promise<LocationNamespace['location.watchStop']['response']> => {\n const subscription = watchSubscriptions.get(payload.watchId);\n if (subscription) {\n subscription.remove();\n watchSubscriptions.delete(payload.watchId);\n return { success: true };\n }\n return { success: false };\n },\n};\n","import type { FileNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface FileSystemModule {\n Paths: {\n document: { uri: string };\n cache: { uri: string };\n };\n File: new (...uris: (string | { uri: string })[]) => {\n uri: string;\n text: () => Promise<string>;\n write: (content: string) => void;\n create: () => void;\n exists: boolean;\n };\n Directory: new (...uris: (string | { uri: string })[]) => {\n uri: string;\n create: () => void;\n exists: boolean;\n };\n}\n\ninterface DocumentPickerModule {\n getDocumentAsync: (opts: {\n type?: string[];\n multiple?: boolean;\n }) => Promise<{\n canceled: boolean;\n assets: Array<{\n uri: string;\n name: string;\n size?: number;\n mimeType?: string;\n }>;\n }>;\n}\n\nexport const fileHandlers = {\n 'file.download': async (\n payload: FileNamespace['file.download']['request'],\n ): Promise<FileNamespace['file.download']['response']> => {\n const FS = await tryImport<FileSystemModule>('expo-file-system');\n if (!FS) return moduleNotInstalledError('expo-file-system') as never;\n\n try {\n const response = await fetch(payload.url);\n const text = await response.text();\n const file = new FS.File(FS.Paths.document, payload.filename);\n file.write(text);\n return { success: true, localUri: file.uri };\n } catch (err) {\n return { success: false, error: String(err) };\n }\n },\n\n 'file.read': async (\n payload: FileNamespace['file.read']['request'],\n ): Promise<FileNamespace['file.read']['response']> => {\n const FS = await tryImport<FileSystemModule>('expo-file-system');\n if (!FS) return moduleNotInstalledError('expo-file-system') as never;\n\n try {\n const file = new FS.File(payload.uri);\n const content = await file.text();\n return { success: true, content };\n } catch (err) {\n return { success: false, error: String(err) };\n }\n },\n\n 'file.write': async (\n payload: FileNamespace['file.write']['request'],\n ): Promise<FileNamespace['file.write']['response']> => {\n const FS = await tryImport<FileSystemModule>('expo-file-system');\n if (!FS) return moduleNotInstalledError('expo-file-system') as never;\n\n try {\n const dirMap = {\n document: FS.Paths.document,\n cache: FS.Paths.cache,\n temp: FS.Paths.cache,\n };\n const baseDir = dirMap[payload.directory ?? 'document'];\n const file = new FS.File(baseDir, payload.filename);\n file.write(payload.content);\n return { success: true, uri: file.uri };\n } catch (err) {\n return { success: false, error: String(err) };\n }\n },\n\n 'file.pick': async (\n payload: FileNamespace['file.pick']['request'],\n ): Promise<FileNamespace['file.pick']['response']> => {\n const DocumentPicker = await tryImport<DocumentPickerModule>('expo-document-picker');\n if (!DocumentPicker) return moduleNotInstalledError('expo-document-picker') as never;\n\n try {\n const result = await DocumentPicker.getDocumentAsync({\n type: payload.type ?? ['*/*'],\n multiple: payload.multiple ?? false,\n });\n\n if (result.canceled) {\n return { success: false, files: [] };\n }\n\n return {\n success: true,\n files: result.assets.map((a) => ({\n uri: a.uri,\n name: a.name,\n size: a.size ?? 0,\n mimeType: a.mimeType ?? 'application/octet-stream',\n })),\n };\n } catch {\n return { success: false, files: [] };\n }\n },\n};\n","import type { ShareNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface SharingModule {\n isAvailableAsync: () => Promise<boolean>;\n shareAsync: (url: string, opts?: { dialogTitle?: string }) => Promise<void>;\n}\n\nexport const shareHandlers = {\n 'share.open': async (\n payload: ShareNamespace['share.open']['request'],\n ): Promise<ShareNamespace['share.open']['response']> => {\n const Sharing = await tryImport<SharingModule>('expo-sharing');\n if (!Sharing) return moduleNotInstalledError('expo-sharing') as never;\n\n try {\n const isAvailable = await Sharing.isAvailableAsync();\n if (!isAvailable) {\n return { success: false };\n }\n await Sharing.shareAsync(payload.url ?? '', {\n dialogTitle: payload.title,\n });\n return { success: true };\n } catch {\n return { success: false };\n }\n },\n};\n","import type { DeviceNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\nimport { Platform } from 'react-native';\n\ninterface DeviceModule {\n modelName: string | null;\n brand: string | null;\n deviceType: number | null;\n DeviceType: { TABLET: number };\n}\n\nexport const deviceHandlers = {\n 'device.getInfo': async (\n _payload: DeviceNamespace['device.getInfo']['request'],\n ): Promise<DeviceNamespace['device.getInfo']['response']> => {\n const Device = await tryImport<DeviceModule>('expo-device');\n if (!Device) return moduleNotInstalledError('expo-device') as never;\n\n return {\n os: Platform.OS as 'ios' | 'android',\n osVersion: Platform.Version?.toString() ?? '',\n model: Device.modelName ?? '',\n brand: Device.brand ?? '',\n isTablet: Device.deviceType === Device.DeviceType.TABLET,\n appVersion: '1.0.0',\n buildNumber: '1',\n bundleId: '',\n };\n },\n\n 'device.getBattery': async (\n _payload: DeviceNamespace['device.getBattery']['request'],\n ): Promise<DeviceNamespace['device.getBattery']['response']> => {\n try {\n const Battery = await tryImport<{ getBatteryLevelAsync: () => Promise<number>; getBatteryStateAsync: () => Promise<number>; BatteryState: { CHARGING: number } }>('expo-battery');\n if (!Battery) {\n return { level: -1, isCharging: false };\n }\n const level = await Battery.getBatteryLevelAsync();\n const state = await Battery.getBatteryStateAsync();\n return {\n level,\n isCharging: state === Battery.BatteryState.CHARGING,\n };\n } catch {\n return { level: -1, isCharging: false };\n }\n },\n\n 'device.getNetwork': async (\n _payload: DeviceNamespace['device.getNetwork']['request'],\n ): Promise<DeviceNamespace['device.getNetwork']['response']> => {\n try {\n const NetInfo = await tryImport<{ fetch: () => Promise<{ type: string; isConnected: boolean | null }> }>('@react-native-community/netinfo');\n if (!NetInfo) {\n return { type: 'unknown', isConnected: true };\n }\n const state = await NetInfo.fetch();\n return {\n type: (state.type as 'wifi' | 'cellular' | 'none' | 'unknown') ?? 'unknown',\n isConnected: state.isConnected ?? false,\n };\n } catch {\n return { type: 'unknown', isConnected: true };\n }\n },\n};\n","import type { StatusBarNamespace } from '@rn-bridge-tools/core';\nimport { StatusBar } from 'react-native';\n\nexport const statusbarHandlers = {\n 'statusbar.setStyle': async (\n payload: StatusBarNamespace['statusbar.setStyle']['request'],\n ): Promise<StatusBarNamespace['statusbar.setStyle']['response']> => {\n const styleMap: Record<string, 'default' | 'light-content' | 'dark-content'> = {\n light: 'light-content',\n dark: 'dark-content',\n auto: 'default',\n };\n StatusBar.setBarStyle(styleMap[payload.style] ?? 'default');\n return { success: true };\n },\n\n 'statusbar.setBackgroundColor': async (\n payload: StatusBarNamespace['statusbar.setBackgroundColor']['request'],\n ): Promise<StatusBarNamespace['statusbar.setBackgroundColor']['response']> => {\n StatusBar.setBackgroundColor(payload.color, payload.animated ?? false);\n return { success: true };\n },\n\n 'statusbar.setHidden': async (\n payload: StatusBarNamespace['statusbar.setHidden']['request'],\n ): Promise<StatusBarNamespace['statusbar.setHidden']['response']> => {\n const animationMap: Record<string, 'fade' | 'slide' | 'none'> = {\n fade: 'fade',\n slide: 'slide',\n none: 'none',\n };\n StatusBar.setHidden(payload.hidden, animationMap[payload.animation ?? 'none']);\n return { success: true };\n },\n};\n","import type { KeyboardNamespace } from '@rn-bridge-tools/core';\nimport { Keyboard } from 'react-native';\n\nexport const keyboardHandlers = {\n 'keyboard.dismiss': async (\n _payload: KeyboardNamespace['keyboard.dismiss']['request'],\n ): Promise<KeyboardNamespace['keyboard.dismiss']['response']> => {\n Keyboard.dismiss();\n return { success: true };\n },\n\n 'keyboard.getState': async (\n _payload: KeyboardNamespace['keyboard.getState']['request'],\n ): Promise<KeyboardNamespace['keyboard.getState']['response']> => {\n return {\n visible: false,\n height: 0,\n };\n },\n};\n","import type { HapticNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface HapticsModule {\n ImpactFeedbackStyle: { Light: unknown; Medium: unknown; Heavy: unknown };\n NotificationFeedbackType: { Success: unknown; Warning: unknown; Error: unknown };\n impactAsync: (style: never) => Promise<void>;\n notificationAsync: (type: never) => Promise<void>;\n selectionAsync: () => Promise<void>;\n}\n\nexport const hapticHandlers = {\n 'haptic.impact': async (\n payload: HapticNamespace['haptic.impact']['request'],\n ): Promise<void> => {\n const Haptics = await tryImport<HapticsModule>('expo-haptics');\n if (!Haptics) {\n moduleNotInstalledError('expo-haptics');\n return;\n }\n\n const styleMap: Record<string, unknown> = {\n light: Haptics.ImpactFeedbackStyle.Light,\n medium: Haptics.ImpactFeedbackStyle.Medium,\n heavy: Haptics.ImpactFeedbackStyle.Heavy,\n };\n await Haptics.impactAsync(styleMap[payload.style] as never);\n },\n\n 'haptic.notification': async (\n payload: HapticNamespace['haptic.notification']['request'],\n ): Promise<void> => {\n const Haptics = await tryImport<HapticsModule>('expo-haptics');\n if (!Haptics) {\n moduleNotInstalledError('expo-haptics');\n return;\n }\n\n const typeMap: Record<string, unknown> = {\n success: Haptics.NotificationFeedbackType.Success,\n warning: Haptics.NotificationFeedbackType.Warning,\n error: Haptics.NotificationFeedbackType.Error,\n };\n await Haptics.notificationAsync(typeMap[payload.type] as never);\n },\n\n 'haptic.selection': async (): Promise<void> => {\n const Haptics = await tryImport<HapticsModule>('expo-haptics');\n if (!Haptics) {\n moduleNotInstalledError('expo-haptics');\n return;\n }\n await Haptics.selectionAsync();\n },\n};\n","import type { ClipboardNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface ClipboardModule {\n setStringAsync: (text: string) => Promise<void>;\n getStringAsync: () => Promise<string>;\n}\n\nexport const clipboardHandlers = {\n 'clipboard.copy': async (\n payload: ClipboardNamespace['clipboard.copy']['request'],\n ): Promise<ClipboardNamespace['clipboard.copy']['response']> => {\n const Clipboard = await tryImport<ClipboardModule>('expo-clipboard');\n if (!Clipboard) return moduleNotInstalledError('expo-clipboard') as never;\n\n await Clipboard.setStringAsync(payload.text);\n return { success: true };\n },\n\n 'clipboard.paste': async (\n _payload: ClipboardNamespace['clipboard.paste']['request'],\n ): Promise<ClipboardNamespace['clipboard.paste']['response']> => {\n const Clipboard = await tryImport<ClipboardModule>('expo-clipboard');\n if (!Clipboard) return moduleNotInstalledError('expo-clipboard') as never;\n\n const text = await Clipboard.getStringAsync();\n return { text, hasContent: text.length > 0 };\n },\n};\n","import type { ScannerNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface CameraModule {\n Camera: {\n requestCameraPermissionsAsync: () => Promise<{ status: string }>;\n };\n}\n\nexport const scannerHandlers = {\n 'scanner.scanQR': async (\n _payload: ScannerNamespace['scanner.scanQR']['request'],\n ): Promise<ScannerNamespace['scanner.scanQR']['response']> => {\n const Camera = await tryImport<CameraModule>('expo-camera');\n if (!Camera) return moduleNotInstalledError('expo-camera') as never;\n\n try {\n const { status } = await Camera.Camera.requestCameraPermissionsAsync();\n if (status !== 'granted') {\n return { success: false, cancelled: true };\n }\n // QR scanning is typically handled via a component, not a direct call.\n // Return a placeholder indicating the scanner should be opened.\n return { success: false, error: 'Use Camera component for QR scanning' } as never;\n } catch {\n return { success: false };\n }\n },\n};\n","import type { AuthNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\n\ninterface LocalAuthModule {\n authenticateAsync: (opts: {\n promptMessage?: string;\n cancelLabel?: string;\n fallbackLabel?: string;\n }) => Promise<{ success: boolean; error?: string }>;\n hasHardwareAsync: () => Promise<boolean>;\n supportedAuthenticationTypesAsync: () => Promise<number[]>;\n AuthenticationType: {\n FACIAL_RECOGNITION: number;\n FINGERPRINT: number;\n IRIS: number;\n };\n}\n\nexport const authHandlers = {\n 'auth.biometric': async (\n payload: AuthNamespace['auth.biometric']['request'],\n ): Promise<AuthNamespace['auth.biometric']['response']> => {\n const LocalAuth = await tryImport<LocalAuthModule>('expo-local-authentication');\n if (!LocalAuth) return moduleNotInstalledError('expo-local-authentication') as never;\n\n try {\n const result = await LocalAuth.authenticateAsync({\n promptMessage: payload.promptMessage ?? 'Authenticate',\n cancelLabel: payload.cancelLabel,\n fallbackLabel: payload.fallbackLabel,\n });\n\n if (result.success) {\n return { success: true };\n }\n return { success: false, error: result.error };\n } catch (err) {\n return { success: false, error: String(err) };\n }\n },\n\n 'auth.isBiometricAvailable': async (\n _payload: AuthNamespace['auth.isBiometricAvailable']['request'],\n ): Promise<AuthNamespace['auth.isBiometricAvailable']['response']> => {\n const LocalAuth = await tryImport<LocalAuthModule>('expo-local-authentication');\n if (!LocalAuth) return moduleNotInstalledError('expo-local-authentication') as never;\n\n try {\n const available = await LocalAuth.hasHardwareAsync();\n const types = await LocalAuth.supportedAuthenticationTypesAsync();\n\n let biometryType: 'fingerprint' | 'facial' | 'iris' | undefined;\n if (types.includes(LocalAuth.AuthenticationType.FACIAL_RECOGNITION)) {\n biometryType = 'facial';\n } else if (types.includes(LocalAuth.AuthenticationType.FINGERPRINT)) {\n biometryType = 'fingerprint';\n } else if (types.includes(LocalAuth.AuthenticationType.IRIS)) {\n biometryType = 'iris';\n }\n\n return { available, biometryType };\n } catch {\n return { available: false };\n }\n },\n};\n","import type { IAPNamespace } from '@rn-bridge-tools/core';\n\nexport const iapHandlers = {\n 'iap.getProducts': async (\n _payload: IAPNamespace['iap.getProducts']['request'],\n ): Promise<IAPNamespace['iap.getProducts']['response']> => {\n // IAP requires react-native-iap or expo-in-app-purchases\n // Placeholder implementation\n return { products: [] };\n },\n\n 'iap.purchase': async (\n _payload: IAPNamespace['iap.purchase']['request'],\n ): Promise<IAPNamespace['iap.purchase']['response']> => {\n return { success: false, error: 'IAP not configured' };\n },\n\n 'iap.restore': async (\n _payload: IAPNamespace['iap.restore']['request'],\n ): Promise<IAPNamespace['iap.restore']['response']> => {\n return { purchases: [] };\n },\n};\n","import type { PushNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\nimport { Platform } from 'react-native';\n\ninterface NotificationsModule {\n getExpoPushTokenAsync: () => Promise<{ data: string }>;\n requestPermissionsAsync: () => Promise<{ status: string }>;\n}\n\nexport const pushHandlers = {\n 'push.getToken': async (\n _payload: PushNamespace['push.getToken']['request'],\n ): Promise<PushNamespace['push.getToken']['response']> => {\n const Notifications = await tryImport<NotificationsModule>('expo-notifications');\n if (!Notifications) return moduleNotInstalledError('expo-notifications') as never;\n\n try {\n const token = await Notifications.getExpoPushTokenAsync();\n return {\n token: token.data,\n platform: Platform.OS === 'ios' ? 'apns' : 'fcm',\n };\n } catch {\n return { token: '', platform: Platform.OS === 'ios' ? 'apns' : 'fcm' };\n }\n },\n\n 'push.requestPermission': async (\n _payload: PushNamespace['push.requestPermission']['request'],\n ): Promise<PushNamespace['push.requestPermission']['response']> => {\n const Notifications = await tryImport<NotificationsModule>('expo-notifications');\n if (!Notifications) return moduleNotInstalledError('expo-notifications') as never;\n\n try {\n const { status } = await Notifications.requestPermissionsAsync();\n return {\n granted: status === 'granted',\n status: status as 'granted' | 'denied' | 'undetermined',\n };\n } catch {\n return { granted: false, status: 'denied' };\n }\n },\n};\n","import type { PermissionNamespace, PermissionType } from '@rn-bridge-tools/core';\nimport { Linking } from 'react-native';\nimport { tryImport } from '@rn-bridge-tools/core';\n\ninterface PermissionCameraModule {\n Camera: {\n getCameraPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n requestCameraPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n };\n}\n\ninterface PermissionLocationModule {\n getForegroundPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n requestForegroundPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n}\n\ninterface PermissionNotificationsModule {\n getPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n requestPermissionsAsync: () => Promise<{ status: string; canAskAgain?: boolean }>;\n}\n\nasync function getPermissionModule(permission: PermissionType) {\n switch (permission) {\n case 'camera': {\n const mod = await tryImport<PermissionCameraModule>('expo-camera');\n return mod\n ? {\n check: () => mod.Camera.getCameraPermissionsAsync(),\n request: () => mod.Camera.requestCameraPermissionsAsync(),\n }\n : null;\n }\n case 'location': {\n const mod = await tryImport<PermissionLocationModule>('expo-location');\n return mod\n ? {\n check: () => mod.getForegroundPermissionsAsync(),\n request: () => mod.requestForegroundPermissionsAsync(),\n }\n : null;\n }\n case 'notifications': {\n const mod = await tryImport<PermissionNotificationsModule>('expo-notifications');\n return mod\n ? {\n check: () => mod.getPermissionsAsync(),\n request: () => mod.requestPermissionsAsync(),\n }\n : null;\n }\n default:\n return null;\n }\n}\n\nexport const permissionHandlers = {\n 'permission.check': async (\n payload: PermissionNamespace['permission.check']['request'],\n ): Promise<PermissionNamespace['permission.check']['response']> => {\n const mod = await getPermissionModule(payload.permission);\n if (!mod) {\n return { status: 'undetermined', canAskAgain: true };\n }\n try {\n const result = await mod.check();\n return {\n status: result.status as 'granted' | 'denied' | 'undetermined',\n canAskAgain: result.canAskAgain ?? true,\n };\n } catch {\n return { status: 'undetermined', canAskAgain: true };\n }\n },\n\n 'permission.request': async (\n payload: PermissionNamespace['permission.request']['request'],\n ): Promise<PermissionNamespace['permission.request']['response']> => {\n const mod = await getPermissionModule(payload.permission);\n if (!mod) {\n return { status: 'undetermined', canAskAgain: true };\n }\n try {\n const result = await mod.request();\n return {\n status: result.status as 'granted' | 'denied' | 'undetermined',\n canAskAgain: result.canAskAgain ?? true,\n };\n } catch {\n return { status: 'undetermined', canAskAgain: true };\n }\n },\n\n 'permission.openSettings': async (\n _payload: PermissionNamespace['permission.openSettings']['request'],\n ): Promise<PermissionNamespace['permission.openSettings']['response']> => {\n try {\n await Linking.openSettings();\n return { success: true };\n } catch {\n return { success: false };\n }\n },\n};\n","import type { PreferenceNamespace } from '@rn-bridge-tools/core';\nimport { tryImport } from '@rn-bridge-tools/core';\n\ntype AsyncStorage = {\n default: {\n getItem: (key: string) => Promise<string | null>;\n setItem: (key: string, value: string) => Promise<void>;\n removeItem: (key: string) => Promise<void>;\n clear: () => Promise<void>;\n };\n};\n\nexport const preferenceHandlers = {\n 'preference.get': async (\n payload: PreferenceNamespace['preference.get']['request'],\n ): Promise<PreferenceNamespace['preference.get']['response']> => {\n const mod = await tryImport<AsyncStorage>('@react-native-async-storage/async-storage');\n if (!mod) return { value: null };\n\n const value = await mod.default.getItem(payload.key);\n return { value };\n },\n\n 'preference.set': async (\n payload: PreferenceNamespace['preference.set']['request'],\n ): Promise<PreferenceNamespace['preference.set']['response']> => {\n const mod = await tryImport<AsyncStorage>('@react-native-async-storage/async-storage');\n if (!mod) return { success: false };\n\n await mod.default.setItem(payload.key, payload.value);\n return { success: true };\n },\n\n 'preference.remove': async (\n payload: PreferenceNamespace['preference.remove']['request'],\n ): Promise<PreferenceNamespace['preference.remove']['response']> => {\n const mod = await tryImport<AsyncStorage>('@react-native-async-storage/async-storage');\n if (!mod) return { success: false };\n\n await mod.default.removeItem(payload.key);\n return { success: true };\n },\n\n 'preference.clear': async (\n _payload: PreferenceNamespace['preference.clear']['request'],\n ): Promise<PreferenceNamespace['preference.clear']['response']> => {\n const mod = await tryImport<AsyncStorage>('@react-native-async-storage/async-storage');\n if (!mod) return { success: false };\n\n await mod.default.clear();\n return { success: true };\n },\n};\n","import type { NavigationNamespace } from '@rn-bridge-tools/core';\n\nexport const navigationHandlers = {\n 'navigation.goBack': async (\n _payload: NavigationNamespace['navigation.goBack']['request'],\n ): Promise<NavigationNamespace['navigation.goBack']['response']> => {\n // WebView goBack is handled by the WebViewBridge component\n return { success: true };\n },\n\n 'navigation.push': async (\n _payload: NavigationNamespace['navigation.push']['request'],\n ): Promise<NavigationNamespace['navigation.push']['response']> => {\n // Navigation push requires access to the navigation context\n return { success: true };\n },\n\n 'navigation.close': async (\n _payload: NavigationNamespace['navigation.close']['request'],\n ): Promise<NavigationNamespace['navigation.close']['response']> => {\n return { success: true };\n },\n\n 'navigation.setSwipeBack': async (\n _payload: NavigationNamespace['navigation.setSwipeBack']['request'],\n ): Promise<NavigationNamespace['navigation.setSwipeBack']['response']> => {\n return { success: true };\n },\n};\n","import type { BrowserNamespace } from '@rn-bridge-tools/core';\nimport { moduleNotInstalledError, tryImport } from '@rn-bridge-tools/core';\nimport { Linking } from 'react-native';\n\ninterface WebBrowserModule {\n openBrowserAsync: (\n url: string,\n opts?: { showTitle?: boolean; toolbarColor?: string },\n ) => Promise<void>;\n}\n\nexport const browserHandlers = {\n 'browser.openExternal': async (\n payload: BrowserNamespace['browser.openExternal']['request'],\n ): Promise<BrowserNamespace['browser.openExternal']['response']> => {\n try {\n await Linking.openURL(payload.url);\n return { success: true };\n } catch {\n return { success: false };\n }\n },\n\n 'browser.openInternal': async (\n payload: BrowserNamespace['browser.openInternal']['request'],\n ): Promise<BrowserNamespace['browser.openInternal']['response']> => {\n const WebBrowser = await tryImport<WebBrowserModule>('expo-web-browser');\n if (!WebBrowser) return moduleNotInstalledError('expo-web-browser') as never;\n\n try {\n await WebBrowser.openBrowserAsync(payload.url, {\n showTitle: payload.showTitle,\n toolbarColor: payload.toolbarColor,\n });\n return { success: true };\n } catch {\n return { success: false };\n }\n },\n};\n","import type { HandlerOptions } from '@rn-bridge-tools/core';\nimport { cameraHandlers } from './handlers/camera.js';\nimport { locationHandlers } from './handlers/location.js';\nimport { fileHandlers } from './handlers/file.js';\nimport { shareHandlers } from './handlers/share.js';\nimport { deviceHandlers } from './handlers/device.js';\nimport { statusbarHandlers } from './handlers/statusbar.js';\nimport { keyboardHandlers } from './handlers/keyboard.js';\nimport { hapticHandlers } from './handlers/haptic.js';\nimport { clipboardHandlers } from './handlers/clipboard.js';\nimport { scannerHandlers } from './handlers/scanner.js';\nimport { authHandlers } from './handlers/auth.js';\nimport { iapHandlers } from './handlers/iap.js';\nimport { pushHandlers } from './handlers/push.js';\nimport { permissionHandlers } from './handlers/permission.js';\nimport { preferenceHandlers } from './handlers/preference.js';\nimport { navigationHandlers } from './handlers/navigation.js';\nimport { browserHandlers } from './handlers/browser.js';\n\nexport type HandlerFn = (payload: never) => Promise<unknown> | unknown;\nexport type HandlerMap = Record<string, HandlerFn>;\n\nconst handlerRegistry: Record<string, Record<string, (payload: never) => Promise<unknown> | unknown>> = {\n camera: cameraHandlers as Record<string, (payload: never) => Promise<unknown>>,\n location: locationHandlers as Record<string, (payload: never) => Promise<unknown>>,\n file: fileHandlers as Record<string, (payload: never) => Promise<unknown>>,\n share: shareHandlers as Record<string, (payload: never) => Promise<unknown>>,\n device: deviceHandlers as Record<string, (payload: never) => Promise<unknown>>,\n statusbar: statusbarHandlers as Record<string, (payload: never) => Promise<unknown>>,\n keyboard: keyboardHandlers as Record<string, (payload: never) => Promise<unknown>>,\n haptic: hapticHandlers as Record<string, (payload: never) => Promise<unknown>>,\n clipboard: clipboardHandlers as Record<string, (payload: never) => Promise<unknown>>,\n scanner: scannerHandlers as Record<string, (payload: never) => Promise<unknown>>,\n auth: authHandlers as Record<string, (payload: never) => Promise<unknown>>,\n iap: iapHandlers as Record<string, (payload: never) => Promise<unknown>>,\n push: pushHandlers as Record<string, (payload: never) => Promise<unknown>>,\n permission: permissionHandlers as Record<string, (payload: never) => Promise<unknown>>,\n preference: preferenceHandlers as Record<string, (payload: never) => Promise<unknown>>,\n navigation: navigationHandlers as Record<string, (payload: never) => Promise<unknown>>,\n browser: browserHandlers as Record<string, (payload: never) => Promise<unknown>>,\n};\n\nfunction createDisabledHandler(_namespace: string, _action: string): HandlerFn {\n return async () => ({\n success: false,\n error: `not_enabled: ${_namespace}.${_action}`,\n });\n}\n\nexport function createDefaultHandlers(options: HandlerOptions = {}): HandlerMap {\n const result: HandlerMap = {};\n\n for (const [namespace, handlers] of Object.entries(handlerRegistry)) {\n const enabled = options[namespace as keyof HandlerOptions] ?? false;\n\n for (const [action, handler] of Object.entries(handlers)) {\n if (enabled) {\n result[action] = handler as HandlerFn;\n } else {\n const actionName = action.split('.')[1] ?? action;\n result[action] = createDisabledHandler(namespace, actionName);\n }\n }\n }\n\n return result;\n}\n"],"mappings":"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","names":["WebViewBridge","import_core","import_core","import_core","import_core","import_react_native","import_react_native","import_react_native","import_core","import_core","import_core","import_core","import_core","import_react_native","import_react_native","import_core","import_core","import_core","import_react_native"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WebViewProps } from 'react-native-webview';
|
|
3
|
+
import { HandlerOptions, BridgeToolsAction, BridgeToolsEvent, BridgeToolsEvents, CameraNamespace, LocationNamespace, FileNamespace, ShareNamespace, DeviceNamespace, StatusBarNamespace, KeyboardNamespace, HapticNamespace, ClipboardNamespace, ScannerNamespace, AuthNamespace, IAPNamespace, PushNamespace, PermissionNamespace, PreferenceNamespace, NavigationNamespace, BrowserNamespace } from '@rn-bridge-tools/core';
|
|
4
|
+
|
|
5
|
+
type HandlerFn = (payload: never) => Promise<unknown> | unknown;
|
|
6
|
+
type HandlerMap = Record<string, HandlerFn>;
|
|
7
|
+
declare function createDefaultHandlers(options?: HandlerOptions): HandlerMap;
|
|
8
|
+
|
|
9
|
+
interface WebViewBridgeProps extends Omit<WebViewProps, 'ref'> {
|
|
10
|
+
handlers: HandlerMap;
|
|
11
|
+
customHandlers?: Partial<Record<BridgeToolsAction, HandlerFn>>;
|
|
12
|
+
}
|
|
13
|
+
interface WebViewBridgeRef {
|
|
14
|
+
emit: <E extends BridgeToolsEvent>(event: E, data: BridgeToolsEvents[E]) => void;
|
|
15
|
+
}
|
|
16
|
+
declare const WebViewBridge: React.ForwardRefExoticComponent<WebViewBridgeProps & React.RefAttributes<WebViewBridgeRef>>;
|
|
17
|
+
|
|
18
|
+
declare const cameraHandlers: {
|
|
19
|
+
'camera.take': (payload: CameraNamespace["camera.take"]["request"]) => Promise<CameraNamespace["camera.take"]["response"]>;
|
|
20
|
+
'camera.pickImage': (payload: CameraNamespace["camera.pickImage"]["request"]) => Promise<CameraNamespace["camera.pickImage"]["response"]>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare const locationHandlers: {
|
|
24
|
+
'location.getCurrent': (payload: LocationNamespace["location.getCurrent"]["request"]) => Promise<LocationNamespace["location.getCurrent"]["response"]>;
|
|
25
|
+
'location.watchStart': (payload: LocationNamespace["location.watchStart"]["request"]) => Promise<LocationNamespace["location.watchStart"]["response"]>;
|
|
26
|
+
'location.watchStop': (payload: LocationNamespace["location.watchStop"]["request"]) => Promise<LocationNamespace["location.watchStop"]["response"]>;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare const fileHandlers: {
|
|
30
|
+
'file.download': (payload: FileNamespace["file.download"]["request"]) => Promise<FileNamespace["file.download"]["response"]>;
|
|
31
|
+
'file.read': (payload: FileNamespace["file.read"]["request"]) => Promise<FileNamespace["file.read"]["response"]>;
|
|
32
|
+
'file.write': (payload: FileNamespace["file.write"]["request"]) => Promise<FileNamespace["file.write"]["response"]>;
|
|
33
|
+
'file.pick': (payload: FileNamespace["file.pick"]["request"]) => Promise<FileNamespace["file.pick"]["response"]>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
declare const shareHandlers: {
|
|
37
|
+
'share.open': (payload: ShareNamespace["share.open"]["request"]) => Promise<ShareNamespace["share.open"]["response"]>;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
declare const deviceHandlers: {
|
|
41
|
+
'device.getInfo': (_payload: DeviceNamespace["device.getInfo"]["request"]) => Promise<DeviceNamespace["device.getInfo"]["response"]>;
|
|
42
|
+
'device.getBattery': (_payload: DeviceNamespace["device.getBattery"]["request"]) => Promise<DeviceNamespace["device.getBattery"]["response"]>;
|
|
43
|
+
'device.getNetwork': (_payload: DeviceNamespace["device.getNetwork"]["request"]) => Promise<DeviceNamespace["device.getNetwork"]["response"]>;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
declare const statusbarHandlers: {
|
|
47
|
+
'statusbar.setStyle': (payload: StatusBarNamespace["statusbar.setStyle"]["request"]) => Promise<StatusBarNamespace["statusbar.setStyle"]["response"]>;
|
|
48
|
+
'statusbar.setBackgroundColor': (payload: StatusBarNamespace["statusbar.setBackgroundColor"]["request"]) => Promise<StatusBarNamespace["statusbar.setBackgroundColor"]["response"]>;
|
|
49
|
+
'statusbar.setHidden': (payload: StatusBarNamespace["statusbar.setHidden"]["request"]) => Promise<StatusBarNamespace["statusbar.setHidden"]["response"]>;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare const keyboardHandlers: {
|
|
53
|
+
'keyboard.dismiss': (_payload: KeyboardNamespace["keyboard.dismiss"]["request"]) => Promise<KeyboardNamespace["keyboard.dismiss"]["response"]>;
|
|
54
|
+
'keyboard.getState': (_payload: KeyboardNamespace["keyboard.getState"]["request"]) => Promise<KeyboardNamespace["keyboard.getState"]["response"]>;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
declare const hapticHandlers: {
|
|
58
|
+
'haptic.impact': (payload: HapticNamespace["haptic.impact"]["request"]) => Promise<void>;
|
|
59
|
+
'haptic.notification': (payload: HapticNamespace["haptic.notification"]["request"]) => Promise<void>;
|
|
60
|
+
'haptic.selection': () => Promise<void>;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
declare const clipboardHandlers: {
|
|
64
|
+
'clipboard.copy': (payload: ClipboardNamespace["clipboard.copy"]["request"]) => Promise<ClipboardNamespace["clipboard.copy"]["response"]>;
|
|
65
|
+
'clipboard.paste': (_payload: ClipboardNamespace["clipboard.paste"]["request"]) => Promise<ClipboardNamespace["clipboard.paste"]["response"]>;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
declare const scannerHandlers: {
|
|
69
|
+
'scanner.scanQR': (_payload: ScannerNamespace["scanner.scanQR"]["request"]) => Promise<ScannerNamespace["scanner.scanQR"]["response"]>;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
declare const authHandlers: {
|
|
73
|
+
'auth.biometric': (payload: AuthNamespace["auth.biometric"]["request"]) => Promise<AuthNamespace["auth.biometric"]["response"]>;
|
|
74
|
+
'auth.isBiometricAvailable': (_payload: AuthNamespace["auth.isBiometricAvailable"]["request"]) => Promise<AuthNamespace["auth.isBiometricAvailable"]["response"]>;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
declare const iapHandlers: {
|
|
78
|
+
'iap.getProducts': (_payload: IAPNamespace["iap.getProducts"]["request"]) => Promise<IAPNamespace["iap.getProducts"]["response"]>;
|
|
79
|
+
'iap.purchase': (_payload: IAPNamespace["iap.purchase"]["request"]) => Promise<IAPNamespace["iap.purchase"]["response"]>;
|
|
80
|
+
'iap.restore': (_payload: IAPNamespace["iap.restore"]["request"]) => Promise<IAPNamespace["iap.restore"]["response"]>;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
declare const pushHandlers: {
|
|
84
|
+
'push.getToken': (_payload: PushNamespace["push.getToken"]["request"]) => Promise<PushNamespace["push.getToken"]["response"]>;
|
|
85
|
+
'push.requestPermission': (_payload: PushNamespace["push.requestPermission"]["request"]) => Promise<PushNamespace["push.requestPermission"]["response"]>;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
declare const permissionHandlers: {
|
|
89
|
+
'permission.check': (payload: PermissionNamespace["permission.check"]["request"]) => Promise<PermissionNamespace["permission.check"]["response"]>;
|
|
90
|
+
'permission.request': (payload: PermissionNamespace["permission.request"]["request"]) => Promise<PermissionNamespace["permission.request"]["response"]>;
|
|
91
|
+
'permission.openSettings': (_payload: PermissionNamespace["permission.openSettings"]["request"]) => Promise<PermissionNamespace["permission.openSettings"]["response"]>;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
declare const preferenceHandlers: {
|
|
95
|
+
'preference.get': (payload: PreferenceNamespace["preference.get"]["request"]) => Promise<PreferenceNamespace["preference.get"]["response"]>;
|
|
96
|
+
'preference.set': (payload: PreferenceNamespace["preference.set"]["request"]) => Promise<PreferenceNamespace["preference.set"]["response"]>;
|
|
97
|
+
'preference.remove': (payload: PreferenceNamespace["preference.remove"]["request"]) => Promise<PreferenceNamespace["preference.remove"]["response"]>;
|
|
98
|
+
'preference.clear': (_payload: PreferenceNamespace["preference.clear"]["request"]) => Promise<PreferenceNamespace["preference.clear"]["response"]>;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
declare const navigationHandlers: {
|
|
102
|
+
'navigation.goBack': (_payload: NavigationNamespace["navigation.goBack"]["request"]) => Promise<NavigationNamespace["navigation.goBack"]["response"]>;
|
|
103
|
+
'navigation.push': (_payload: NavigationNamespace["navigation.push"]["request"]) => Promise<NavigationNamespace["navigation.push"]["response"]>;
|
|
104
|
+
'navigation.close': (_payload: NavigationNamespace["navigation.close"]["request"]) => Promise<NavigationNamespace["navigation.close"]["response"]>;
|
|
105
|
+
'navigation.setSwipeBack': (_payload: NavigationNamespace["navigation.setSwipeBack"]["request"]) => Promise<NavigationNamespace["navigation.setSwipeBack"]["response"]>;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
declare const browserHandlers: {
|
|
109
|
+
'browser.openExternal': (payload: BrowserNamespace["browser.openExternal"]["request"]) => Promise<BrowserNamespace["browser.openExternal"]["response"]>;
|
|
110
|
+
'browser.openInternal': (payload: BrowserNamespace["browser.openInternal"]["request"]) => Promise<BrowserNamespace["browser.openInternal"]["response"]>;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { type HandlerFn, type HandlerMap, WebViewBridge, type WebViewBridgeProps, type WebViewBridgeRef, authHandlers, browserHandlers, cameraHandlers, clipboardHandlers, createDefaultHandlers, deviceHandlers, fileHandlers, hapticHandlers, iapHandlers, keyboardHandlers, locationHandlers, navigationHandlers, permissionHandlers, preferenceHandlers, pushHandlers, scannerHandlers, shareHandlers, statusbarHandlers };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WebViewProps } from 'react-native-webview';
|
|
3
|
+
import { HandlerOptions, BridgeToolsAction, BridgeToolsEvent, BridgeToolsEvents, CameraNamespace, LocationNamespace, FileNamespace, ShareNamespace, DeviceNamespace, StatusBarNamespace, KeyboardNamespace, HapticNamespace, ClipboardNamespace, ScannerNamespace, AuthNamespace, IAPNamespace, PushNamespace, PermissionNamespace, PreferenceNamespace, NavigationNamespace, BrowserNamespace } from '@rn-bridge-tools/core';
|
|
4
|
+
|
|
5
|
+
type HandlerFn = (payload: never) => Promise<unknown> | unknown;
|
|
6
|
+
type HandlerMap = Record<string, HandlerFn>;
|
|
7
|
+
declare function createDefaultHandlers(options?: HandlerOptions): HandlerMap;
|
|
8
|
+
|
|
9
|
+
interface WebViewBridgeProps extends Omit<WebViewProps, 'ref'> {
|
|
10
|
+
handlers: HandlerMap;
|
|
11
|
+
customHandlers?: Partial<Record<BridgeToolsAction, HandlerFn>>;
|
|
12
|
+
}
|
|
13
|
+
interface WebViewBridgeRef {
|
|
14
|
+
emit: <E extends BridgeToolsEvent>(event: E, data: BridgeToolsEvents[E]) => void;
|
|
15
|
+
}
|
|
16
|
+
declare const WebViewBridge: React.ForwardRefExoticComponent<WebViewBridgeProps & React.RefAttributes<WebViewBridgeRef>>;
|
|
17
|
+
|
|
18
|
+
declare const cameraHandlers: {
|
|
19
|
+
'camera.take': (payload: CameraNamespace["camera.take"]["request"]) => Promise<CameraNamespace["camera.take"]["response"]>;
|
|
20
|
+
'camera.pickImage': (payload: CameraNamespace["camera.pickImage"]["request"]) => Promise<CameraNamespace["camera.pickImage"]["response"]>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare const locationHandlers: {
|
|
24
|
+
'location.getCurrent': (payload: LocationNamespace["location.getCurrent"]["request"]) => Promise<LocationNamespace["location.getCurrent"]["response"]>;
|
|
25
|
+
'location.watchStart': (payload: LocationNamespace["location.watchStart"]["request"]) => Promise<LocationNamespace["location.watchStart"]["response"]>;
|
|
26
|
+
'location.watchStop': (payload: LocationNamespace["location.watchStop"]["request"]) => Promise<LocationNamespace["location.watchStop"]["response"]>;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare const fileHandlers: {
|
|
30
|
+
'file.download': (payload: FileNamespace["file.download"]["request"]) => Promise<FileNamespace["file.download"]["response"]>;
|
|
31
|
+
'file.read': (payload: FileNamespace["file.read"]["request"]) => Promise<FileNamespace["file.read"]["response"]>;
|
|
32
|
+
'file.write': (payload: FileNamespace["file.write"]["request"]) => Promise<FileNamespace["file.write"]["response"]>;
|
|
33
|
+
'file.pick': (payload: FileNamespace["file.pick"]["request"]) => Promise<FileNamespace["file.pick"]["response"]>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
declare const shareHandlers: {
|
|
37
|
+
'share.open': (payload: ShareNamespace["share.open"]["request"]) => Promise<ShareNamespace["share.open"]["response"]>;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
declare const deviceHandlers: {
|
|
41
|
+
'device.getInfo': (_payload: DeviceNamespace["device.getInfo"]["request"]) => Promise<DeviceNamespace["device.getInfo"]["response"]>;
|
|
42
|
+
'device.getBattery': (_payload: DeviceNamespace["device.getBattery"]["request"]) => Promise<DeviceNamespace["device.getBattery"]["response"]>;
|
|
43
|
+
'device.getNetwork': (_payload: DeviceNamespace["device.getNetwork"]["request"]) => Promise<DeviceNamespace["device.getNetwork"]["response"]>;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
declare const statusbarHandlers: {
|
|
47
|
+
'statusbar.setStyle': (payload: StatusBarNamespace["statusbar.setStyle"]["request"]) => Promise<StatusBarNamespace["statusbar.setStyle"]["response"]>;
|
|
48
|
+
'statusbar.setBackgroundColor': (payload: StatusBarNamespace["statusbar.setBackgroundColor"]["request"]) => Promise<StatusBarNamespace["statusbar.setBackgroundColor"]["response"]>;
|
|
49
|
+
'statusbar.setHidden': (payload: StatusBarNamespace["statusbar.setHidden"]["request"]) => Promise<StatusBarNamespace["statusbar.setHidden"]["response"]>;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare const keyboardHandlers: {
|
|
53
|
+
'keyboard.dismiss': (_payload: KeyboardNamespace["keyboard.dismiss"]["request"]) => Promise<KeyboardNamespace["keyboard.dismiss"]["response"]>;
|
|
54
|
+
'keyboard.getState': (_payload: KeyboardNamespace["keyboard.getState"]["request"]) => Promise<KeyboardNamespace["keyboard.getState"]["response"]>;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
declare const hapticHandlers: {
|
|
58
|
+
'haptic.impact': (payload: HapticNamespace["haptic.impact"]["request"]) => Promise<void>;
|
|
59
|
+
'haptic.notification': (payload: HapticNamespace["haptic.notification"]["request"]) => Promise<void>;
|
|
60
|
+
'haptic.selection': () => Promise<void>;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
declare const clipboardHandlers: {
|
|
64
|
+
'clipboard.copy': (payload: ClipboardNamespace["clipboard.copy"]["request"]) => Promise<ClipboardNamespace["clipboard.copy"]["response"]>;
|
|
65
|
+
'clipboard.paste': (_payload: ClipboardNamespace["clipboard.paste"]["request"]) => Promise<ClipboardNamespace["clipboard.paste"]["response"]>;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
declare const scannerHandlers: {
|
|
69
|
+
'scanner.scanQR': (_payload: ScannerNamespace["scanner.scanQR"]["request"]) => Promise<ScannerNamespace["scanner.scanQR"]["response"]>;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
declare const authHandlers: {
|
|
73
|
+
'auth.biometric': (payload: AuthNamespace["auth.biometric"]["request"]) => Promise<AuthNamespace["auth.biometric"]["response"]>;
|
|
74
|
+
'auth.isBiometricAvailable': (_payload: AuthNamespace["auth.isBiometricAvailable"]["request"]) => Promise<AuthNamespace["auth.isBiometricAvailable"]["response"]>;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
declare const iapHandlers: {
|
|
78
|
+
'iap.getProducts': (_payload: IAPNamespace["iap.getProducts"]["request"]) => Promise<IAPNamespace["iap.getProducts"]["response"]>;
|
|
79
|
+
'iap.purchase': (_payload: IAPNamespace["iap.purchase"]["request"]) => Promise<IAPNamespace["iap.purchase"]["response"]>;
|
|
80
|
+
'iap.restore': (_payload: IAPNamespace["iap.restore"]["request"]) => Promise<IAPNamespace["iap.restore"]["response"]>;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
declare const pushHandlers: {
|
|
84
|
+
'push.getToken': (_payload: PushNamespace["push.getToken"]["request"]) => Promise<PushNamespace["push.getToken"]["response"]>;
|
|
85
|
+
'push.requestPermission': (_payload: PushNamespace["push.requestPermission"]["request"]) => Promise<PushNamespace["push.requestPermission"]["response"]>;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
declare const permissionHandlers: {
|
|
89
|
+
'permission.check': (payload: PermissionNamespace["permission.check"]["request"]) => Promise<PermissionNamespace["permission.check"]["response"]>;
|
|
90
|
+
'permission.request': (payload: PermissionNamespace["permission.request"]["request"]) => Promise<PermissionNamespace["permission.request"]["response"]>;
|
|
91
|
+
'permission.openSettings': (_payload: PermissionNamespace["permission.openSettings"]["request"]) => Promise<PermissionNamespace["permission.openSettings"]["response"]>;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
declare const preferenceHandlers: {
|
|
95
|
+
'preference.get': (payload: PreferenceNamespace["preference.get"]["request"]) => Promise<PreferenceNamespace["preference.get"]["response"]>;
|
|
96
|
+
'preference.set': (payload: PreferenceNamespace["preference.set"]["request"]) => Promise<PreferenceNamespace["preference.set"]["response"]>;
|
|
97
|
+
'preference.remove': (payload: PreferenceNamespace["preference.remove"]["request"]) => Promise<PreferenceNamespace["preference.remove"]["response"]>;
|
|
98
|
+
'preference.clear': (_payload: PreferenceNamespace["preference.clear"]["request"]) => Promise<PreferenceNamespace["preference.clear"]["response"]>;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
declare const navigationHandlers: {
|
|
102
|
+
'navigation.goBack': (_payload: NavigationNamespace["navigation.goBack"]["request"]) => Promise<NavigationNamespace["navigation.goBack"]["response"]>;
|
|
103
|
+
'navigation.push': (_payload: NavigationNamespace["navigation.push"]["request"]) => Promise<NavigationNamespace["navigation.push"]["response"]>;
|
|
104
|
+
'navigation.close': (_payload: NavigationNamespace["navigation.close"]["request"]) => Promise<NavigationNamespace["navigation.close"]["response"]>;
|
|
105
|
+
'navigation.setSwipeBack': (_payload: NavigationNamespace["navigation.setSwipeBack"]["request"]) => Promise<NavigationNamespace["navigation.setSwipeBack"]["response"]>;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
declare const browserHandlers: {
|
|
109
|
+
'browser.openExternal': (payload: BrowserNamespace["browser.openExternal"]["request"]) => Promise<BrowserNamespace["browser.openExternal"]["response"]>;
|
|
110
|
+
'browser.openInternal': (payload: BrowserNamespace["browser.openInternal"]["request"]) => Promise<BrowserNamespace["browser.openInternal"]["response"]>;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { type HandlerFn, type HandlerMap, WebViewBridge, type WebViewBridgeProps, type WebViewBridgeRef, authHandlers, browserHandlers, cameraHandlers, clipboardHandlers, createDefaultHandlers, deviceHandlers, fileHandlers, hapticHandlers, iapHandlers, keyboardHandlers, locationHandlers, navigationHandlers, permissionHandlers, preferenceHandlers, pushHandlers, scannerHandlers, shareHandlers, statusbarHandlers };
|