sa2kit 3.8.0 → 3.9.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/chunk-FV7IHC23.js +751 -0
- package/dist/chunk-FV7IHC23.js.map +1 -0
- package/dist/chunk-OOVINE7M.mjs +715 -0
- package/dist/chunk-OOVINE7M.mjs.map +1 -0
- package/dist/common/appLauncher/index.d.mts +32 -0
- package/dist/common/appLauncher/index.d.ts +32 -0
- package/dist/common/appLauncher/index.js +149 -0
- package/dist/common/appLauncher/index.js.map +1 -0
- package/dist/common/appLauncher/index.mjs +4 -0
- package/dist/common/appLauncher/index.mjs.map +1 -0
- package/dist/common/appLauncher/rn/index.d.mts +35 -0
- package/dist/common/appLauncher/rn/index.d.ts +35 -0
- package/dist/common/appLauncher/rn/index.js +100 -0
- package/dist/common/appLauncher/rn/index.js.map +1 -0
- package/dist/common/appLauncher/rn/index.mjs +31 -0
- package/dist/common/appLauncher/rn/index.mjs.map +1 -0
- package/dist/index-BHgDdlJW.d.mts +177 -0
- package/dist/index-BHgDdlJW.d.ts +177 -0
- package/package.json +11 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/appLauncher/adapters/rn.ts","../src/common/appLauncher/detect.ts","../src/common/appLauncher/adapters/web.ts","../src/common/appLauncher/core/config.ts","../src/common/appLauncher/types.ts","../src/common/appLauncher/utils/query.ts","../src/common/appLauncher/providers/amap.ts","../src/common/appLauncher/providers/baidu.ts","../src/common/appLauncher/providers/generic.ts","../src/common/appLauncher/providers/google.ts","../src/common/appLauncher/providers/qq.ts","../src/common/appLauncher/providers/wechat.ts","../src/common/appLauncher/providers/registry.ts","../src/common/appLauncher/core/launcher.ts","../src/common/appLauncher/core/return-handler.ts","../src/common/appLauncher/shortcuts/map-navigation.ts","../src/common/appLauncher/shortcuts/index.ts"],"names":["result","buildKeywordNavigationUrl","buildCoordinateNavigationUrl"],"mappings":"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","file":"chunk-OOVINE7M.mjs","sourcesContent":["import type {\n AppLaunchAdapter,\n AppLaunchPlatform,\n AppLaunchResult,\n LaunchExecutionOptions,\n} from '../types';\n\n/** RN Linking 最小能力面,避免硬依赖 react-native */\nexport type RnLinkingLike = {\n canOpenURL(url: string): Promise<boolean>;\n openURL(url: string): Promise<void>;\n addEventListener?: (\n type: 'url',\n handler: (event: { url: string }) => void,\n ) => void;\n removeEventListener?: (\n type: 'url',\n handler: (event: { url: string }) => void,\n ) => void;\n getInitialURL?: () => Promise<string | null>;\n};\n\nexport function createRnAppLaunchAdapter(linking: RnLinkingLike): AppLaunchAdapter {\n const platform: AppLaunchPlatform = 'rn';\n\n return {\n platform,\n\n async canOpen(url: string): Promise<boolean> {\n try {\n return await linking.canOpenURL(url);\n } catch {\n return false;\n }\n },\n\n async launch(urls, options: LaunchExecutionOptions): Promise<AppLaunchResult> {\n const baseResult = {\n provider: options.provider,\n action: options.action,\n platform,\n } satisfies Pick<AppLaunchResult, 'provider' | 'action' | 'platform'>;\n\n const tryOpen = async (url: string) => {\n const canOpen = await linking.canOpenURL(url).catch(() => false);\n if (!canOpen) {\n return false;\n }\n await linking.openURL(url);\n return true;\n };\n\n if (await tryOpen(urls.primary)) {\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'opened',\n url: urls.primary,\n };\n options.callbacks?.onOpened?.(result);\n return result;\n }\n\n if (urls.fallback && (await tryOpen(urls.fallback))) {\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'fallback',\n url: urls.fallback,\n };\n options.callbacks?.onFallback?.(result);\n return result;\n }\n\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'unavailable',\n url: urls.primary,\n };\n options.callbacks?.onUnavailable?.(result);\n return result;\n },\n };\n}\n\n/**\n * 在已安装 react-native 的宿主中快捷创建 adapter。\n * 若未安装 react-native 将抛出明确错误。\n */\nexport function createRnAppLaunchAdapterFromReactNative(): AppLaunchAdapter {\n let linking: RnLinkingLike;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n linking = require('react-native').Linking as RnLinkingLike;\n } catch {\n throw new Error(\n '[appLauncher/rn] 未找到 react-native,请使用 createRnAppLaunchAdapter(linking) 手动注入 Linking',\n );\n }\n return createRnAppLaunchAdapter(linking);\n}\n","export function isAndroid(userAgent = getUserAgent()): boolean {\n return /Android/i.test(userAgent);\n}\n\nexport function isIOS(userAgent = getUserAgent()): boolean {\n return /iPhone|iPad|iPod/i.test(userAgent);\n}\n\nexport function isMobileDevice(userAgent = getUserAgent()): boolean {\n return isAndroid(userAgent) || isIOS(userAgent);\n}\n\nfunction getUserAgent(): string {\n if (typeof navigator === 'undefined') {\n return '';\n }\n return navigator.userAgent;\n}\n","import { isMobileDevice } from '../detect';\nimport type {\n AppLaunchAdapter,\n AppLaunchPlatform,\n AppLaunchResult,\n AppLaunchStatus,\n AppLaunchUrls,\n LaunchExecutionOptions,\n} from '../types';\n\nfunction dispatchCallbacks(\n options: LaunchExecutionOptions,\n result: AppLaunchResult,\n): void {\n const { callbacks } = options;\n if (!callbacks) {\n return;\n }\n\n switch (result.status) {\n case 'opened':\n callbacks.onOpened?.(result);\n break;\n case 'fallback':\n callbacks.onFallback?.(result);\n break;\n case 'unavailable':\n case 'timeout':\n case 'cancelled':\n callbacks.onUnavailable?.(result);\n break;\n default:\n break;\n }\n}\n\nfunction openUrl(url: string, mobile: boolean): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (mobile) {\n window.location.assign(url);\n return;\n }\n\n window.open(url, '_blank', 'noopener,noreferrer');\n}\n\nfunction waitForAppOpen(timeoutMs: number): Promise<AppLaunchStatus> {\n return new Promise(resolve => {\n if (typeof document === 'undefined') {\n resolve('opened');\n return;\n }\n\n let settled = false;\n const finish = (status: AppLaunchStatus) => {\n if (settled) {\n return;\n }\n settled = true;\n document.removeEventListener('visibilitychange', onVisibilityChange);\n window.clearTimeout(timer);\n resolve(status);\n };\n\n const onVisibilityChange = () => {\n if (document.hidden) {\n finish('opened');\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n const timer = window.setTimeout(() => finish('timeout'), timeoutMs);\n });\n}\n\nexport function createWebAppLaunchAdapter(): AppLaunchAdapter {\n const platform: AppLaunchPlatform = 'web';\n\n return {\n platform,\n\n async launch(urls, options): Promise<AppLaunchResult> {\n const mobile = isMobileDevice();\n const baseResult = {\n provider: options.provider,\n action: options.action,\n platform,\n } satisfies Pick<AppLaunchResult, 'provider' | 'action' | 'platform'>;\n\n openUrl(urls.primary, mobile);\n\n if (mobile) {\n const status = await waitForAppOpen(options.timeoutMs);\n if (status === 'opened') {\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'opened',\n url: urls.primary,\n };\n dispatchCallbacks(options, result);\n return result;\n }\n\n if (urls.fallback) {\n openUrl(urls.fallback, true);\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'fallback',\n url: urls.fallback,\n };\n dispatchCallbacks(options, result);\n return result;\n }\n\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'timeout',\n url: urls.primary,\n };\n dispatchCallbacks(options, result);\n return result;\n }\n\n const result: AppLaunchResult = {\n ...baseResult,\n status: 'opened',\n url: urls.primary,\n };\n dispatchCallbacks(options, result);\n return result;\n },\n };\n}\n","import type { AppLauncherConfig } from '../types';\n\nconst defaultConfig: AppLauncherConfig = {\n sourceApplication: 'sa2kit',\n};\n\nlet runtimeConfig: AppLauncherConfig = { ...defaultConfig };\n\nexport function configureAppLauncher(patch: Partial<AppLauncherConfig>): AppLauncherConfig {\n runtimeConfig = {\n ...runtimeConfig,\n ...patch,\n defaultOptions: {\n ...runtimeConfig.defaultOptions,\n ...patch.defaultOptions,\n },\n defaultCallbacks: {\n ...runtimeConfig.defaultCallbacks,\n ...patch.defaultCallbacks,\n },\n };\n return getAppLauncherConfig();\n}\n\nexport function getAppLauncherConfig(): AppLauncherConfig {\n return runtimeConfig;\n}\n\nexport function resetAppLauncherConfig(): void {\n runtimeConfig = { ...defaultConfig };\n}\n","/** 支持的第三方 App 提供方 */\nexport type AppProviderId = 'amap' | 'baidu' | 'google' | 'wechat' | 'qq' | 'generic';\n\n/** 运行平台 */\nexport type AppLaunchPlatform = 'web' | 'rn';\n\n/** 唤起结果状态 */\nexport type AppLaunchStatus =\n | 'opened'\n | 'fallback'\n | 'unavailable'\n | 'cancelled'\n | 'timeout';\n\nexport type AppLaunchUrls = {\n /** 优先尝试的 scheme / URI */\n primary: string;\n /** 无法唤起 App 时的降级链接(通常为 https://uri.* 网页版) */\n fallback?: string;\n};\n\nexport type AppLaunchResult = {\n provider: AppProviderId;\n action: string;\n status: AppLaunchStatus;\n url: string;\n platform: AppLaunchPlatform;\n data?: Record<string, unknown>;\n};\n\nexport class AppLaunchError extends Error {\n readonly code:\n | 'UNKNOWN_PROVIDER'\n | 'UNKNOWN_ACTION'\n | 'INVALID_PARAMS'\n | 'ADAPTER_MISSING'\n | 'OPEN_FAILED';\n\n readonly details?: Record<string, unknown>;\n\n constructor(\n code: AppLaunchError['code'],\n message: string,\n details?: Record<string, unknown>,\n ) {\n super(message);\n this.name = 'AppLaunchError';\n this.code = code;\n this.details = details;\n }\n}\n\nexport type AppReturnPayload = {\n provider?: AppProviderId;\n action?: string;\n url: string;\n params: Record<string, string>;\n raw?: unknown;\n};\n\nexport type AppLaunchCallbacks = {\n /** 已成功尝试唤起(Web 端通过页面隐藏等方式推断) */\n onOpened?: (result: AppLaunchResult) => void;\n /** 使用了 fallback 链接 */\n onFallback?: (result: AppLaunchResult) => void;\n /** 无法唤起目标 App */\n onUnavailable?: (result: AppLaunchResult) => void;\n /** 第三方 App 通过 returnUrl / deep link 回传 */\n onReturn?: (payload: AppReturnPayload) => void;\n /** 任意错误 */\n onError?: (error: AppLaunchError) => void;\n};\n\nexport type AppLaunchOptions = {\n /** 第三方统计用的来源应用名,如 profile-v1 */\n sourceApplication?: string;\n /** 自定义 fallback,覆盖 provider 默认值 */\n fallbackUrl?: string;\n /** 回跳地址(如 myapp://launch/callback),供宿主监听 */\n returnUrl?: string;\n /** Web 端等待 App 唤起的超时(毫秒) */\n timeoutMs?: number;\n};\n\nexport type AppLaunchRequest = {\n provider: AppProviderId;\n action: string;\n params?: Record<string, unknown>;\n options?: AppLaunchOptions;\n callbacks?: AppLaunchCallbacks;\n /** 单次调用可覆盖全局 adapter */\n adapter?: AppLaunchAdapter;\n};\n\nexport type LaunchExecutionOptions = {\n timeoutMs: number;\n callbacks?: AppLaunchCallbacks;\n provider: AppProviderId;\n action: string;\n};\n\n/** 平台适配器:负责实际 openURL 与结果推断 */\nexport type AppLaunchAdapter = {\n platform: AppLaunchPlatform;\n launch(urls: AppLaunchUrls, options: LaunchExecutionOptions): Promise<AppLaunchResult>;\n canOpen?(url: string): Promise<boolean>;\n};\n\nexport type AppLauncherConfig = {\n sourceApplication: string;\n adapter?: AppLaunchAdapter;\n defaultOptions?: AppLaunchOptions;\n defaultCallbacks?: AppLaunchCallbacks;\n};\n\nexport type AppLaunchProviderContext = {\n sourceApplication: string;\n options: AppLaunchOptions;\n};\n\n/** 各子功能(高德/微信/QQ 等)的统一契约 */\nexport type AppLaunchProvider = {\n id: AppProviderId;\n actions: readonly string[];\n buildUrls(\n action: string,\n params: Record<string, unknown>,\n context: AppLaunchProviderContext,\n ): AppLaunchUrls;\n validateParams?(\n action: string,\n params: Record<string, unknown>,\n ): void;\n};\n","import { AppLaunchError } from '../types';\n\nexport function requireNonEmptyString(\n value: unknown,\n field: string,\n): string {\n if (typeof value !== 'string' || !value.trim()) {\n throw new AppLaunchError('INVALID_PARAMS', `${field} 不能为空`);\n }\n return value.trim();\n}\n\nexport function optionalString(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nexport function encodeQuery(value: string): string {\n return encodeURIComponent(value);\n}\n\nexport function appendQuery(url: string, key: string, value: string): string {\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n}\n","import type {\n AppLaunchProvider,\n AppLaunchUrls,\n} from '../types';\nimport { AppLaunchError } from '../types';\nimport { requireNonEmptyString, encodeQuery } from '../utils/query';\nimport { isAndroid } from '../detect';\n\nexport type AmapNavigateParams = {\n destination: string;\n mode?: 'car' | 'walk' | 'ride' | 'bus';\n};\n\nexport type AmapNavigateByCoordinateParams = {\n latitude: number;\n longitude: number;\n destination?: string;\n mode?: 'car' | 'walk' | 'ride' | 'bus';\n};\n\nfunction buildKeywordNavigationUrl(\n destination: string,\n sourceApplication: string,\n): string {\n const keyword = encodeQuery(destination);\n\n if (typeof navigator !== 'undefined' && isAndroid()) {\n return `androidamap://keywordNavi?sourceApplication=${encodeQuery(sourceApplication)}&keyword=${keyword}&style=2`;\n }\n\n return `https://uri.amap.com/navigation?to=,,${keyword}&mode=car&callnative=1`;\n}\n\nfunction buildCoordinateNavigationUrl(\n params: AmapNavigateByCoordinateParams,\n sourceApplication: string,\n): AppLaunchUrls {\n const name = params.destination ? encodeQuery(params.destination) : '';\n const mode = params.mode ?? 'car';\n const lon = params.longitude;\n const lat = params.latitude;\n\n const primary =\n typeof navigator !== 'undefined' && isAndroid()\n ? `androidamap://route?sourceApplication=${encodeQuery(sourceApplication)}&dlat=${lat}&dlon=${lon}&dname=${name}&dev=0&t=0`\n : `iosamap://navi?sourceApplication=${encodeQuery(sourceApplication)}&lat=${lat}&lon=${lon}&dev=0&style=2`;\n\n const fallback = `https://uri.amap.com/navigation?to=${lon},${lat},${name}&mode=${mode}&callnative=1`;\n\n return { primary, fallback };\n}\n\nexport const amapProvider: AppLaunchProvider = {\n id: 'amap',\n actions: ['navigate', 'navigateByCoordinate'] as const,\n\n validateParams(action, params) {\n if (action === 'navigate') {\n requireNonEmptyString(params.destination, 'destination');\n return;\n }\n if (action === 'navigateByCoordinate') {\n if (typeof params.latitude !== 'number' || typeof params.longitude !== 'number') {\n throw new AppLaunchError(\n 'INVALID_PARAMS',\n 'navigateByCoordinate 需要 latitude 与 longitude',\n );\n }\n }\n },\n\n buildUrls(action, params, context): AppLaunchUrls {\n const sourceApplication = context.sourceApplication;\n\n if (action === 'navigate') {\n const destination = requireNonEmptyString(params.destination, 'destination');\n const url = buildKeywordNavigationUrl(destination, sourceApplication);\n const fallback =\n context.options.fallbackUrl ??\n `https://uri.amap.com/search?keyword=${encodeQuery(destination)}&callnative=1`;\n\n return { primary: url, fallback };\n }\n\n if (action === 'navigateByCoordinate') {\n const coordinateParams: AmapNavigateByCoordinateParams = {\n latitude: params.latitude as number,\n longitude: params.longitude as number,\n destination: params.destination as string | undefined,\n mode: params.mode as AmapNavigateByCoordinateParams['mode'],\n };\n const urls = buildCoordinateNavigationUrl(coordinateParams, sourceApplication);\n if (context.options.fallbackUrl) {\n urls.fallback = context.options.fallbackUrl;\n }\n return urls;\n }\n\n throw new Error(`[amapProvider] 不支持 action: ${action}`);\n },\n};\n\nexport function buildAmapNavigationUrl(\n destination: string,\n sourceApplication = 'sa2kit',\n): string {\n return buildKeywordNavigationUrl(destination, sourceApplication);\n}\n","import type { AppLaunchProvider, AppLaunchUrls } from '../types';\nimport { AppLaunchError } from '../types';\nimport { requireNonEmptyString, encodeQuery } from '../utils/query';\n\nfunction buildSrcParam(sourceApplication: string): string {\n const normalized = sourceApplication.replace(/[^a-zA-Z0-9._-]/g, '');\n return `andr.web.${normalized || 'sa2kit'}`;\n}\n\nfunction buildKeywordNavigationUrl(\n destination: string,\n sourceApplication: string,\n): string {\n const encodedDestination = encodeQuery(destination);\n const src = encodeQuery(buildSrcParam(sourceApplication));\n\n return [\n 'baidumap://map/navi',\n `?destination=${encodedDestination}`,\n '&mode=driving',\n '&coord_type=gcj02',\n `&src=${src}`,\n ].join('');\n}\n\nexport const baiduProvider: AppLaunchProvider = {\n id: 'baidu',\n actions: ['navigate', 'navigateByCoordinate'] as const,\n\n validateParams(action, params) {\n if (action === 'navigate') {\n requireNonEmptyString(params.destination, 'destination');\n return;\n }\n if (action === 'navigateByCoordinate') {\n if (typeof params.latitude !== 'number' || typeof params.longitude !== 'number') {\n throw new AppLaunchError(\n 'INVALID_PARAMS',\n 'navigateByCoordinate 需要 latitude 与 longitude',\n );\n }\n }\n },\n\n buildUrls(action, params, context): AppLaunchUrls {\n const sourceApplication = context.sourceApplication;\n\n if (action === 'navigate') {\n const destination = requireNonEmptyString(params.destination, 'destination');\n const primary = buildKeywordNavigationUrl(destination, sourceApplication);\n const encodedDestination = encodeQuery(destination);\n\n return {\n primary,\n fallback:\n context.options.fallbackUrl ??\n `https://map.baidu.com/mobile/webapp/search/search/qt=na&wd=${encodedDestination}&mode=MAP_MODE&newmap=1`,\n };\n }\n\n if (action === 'navigateByCoordinate') {\n const latitude = String(params.latitude);\n const longitude = String(params.longitude);\n const name = params.destination ? encodeQuery(String(params.destination)) : '';\n const src = encodeQuery(buildSrcParam(sourceApplication));\n const destination = name\n ? `latlng:${latitude},${longitude}|name:${name}`\n : `latlng:${latitude},${longitude}`;\n\n return {\n primary: `baidumap://map/navi?destination=${encodeQuery(destination)}&mode=driving&coord_type=gcj02&src=${src}`,\n fallback:\n context.options.fallbackUrl ??\n `https://map.baidu.com/mobile/webapp/search/search/qt=na&wd=${encodeQuery(`${latitude},${longitude}`)}&mode=MAP_MODE&newmap=1`,\n };\n }\n\n throw new Error(`[baiduProvider] 不支持 action: ${action}`);\n },\n};\n\nexport function buildBaiduNavigationUrl(\n destination: string,\n sourceApplication = 'sa2kit',\n): string {\n return buildKeywordNavigationUrl(destination, sourceApplication);\n}\n","import type { AppLaunchProvider } from '../types';\nimport { requireNonEmptyString } from '../utils/query';\n\nexport type GenericOpenParams = {\n url: string;\n fallback?: string;\n};\n\n/** 通用 scheme / https 唤起 */\nexport const genericProvider: AppLaunchProvider = {\n id: 'generic',\n actions: ['open'] as const,\n\n validateParams(_action, params) {\n requireNonEmptyString(params.url, 'url');\n },\n\n buildUrls(_action, params, context) {\n const url = requireNonEmptyString(params.url, 'url');\n const fallback =\n context.options.fallbackUrl ??\n (typeof params.fallback === 'string' ? params.fallback : undefined);\n\n return { primary: url, fallback };\n },\n};\n","import type { AppLaunchProvider, AppLaunchUrls } from '../types';\nimport { AppLaunchError } from '../types';\nimport { requireNonEmptyString, encodeQuery } from '../utils/query';\nimport { isAndroid } from '../detect';\n\nfunction buildKeywordNavigationUrl(destination: string): AppLaunchUrls {\n const encoded = encodeQuery(destination);\n\n const primary =\n typeof navigator !== 'undefined' && isAndroid()\n ? `google.navigation:q=${encoded}`\n : `comgooglemaps://?daddr=${encoded}&directionsmode=driving`;\n\n return {\n primary,\n fallback: `https://www.google.com/maps/dir/?api=1&destination=${encoded}&travelmode=driving`,\n };\n}\n\nfunction buildCoordinateNavigationUrl(\n latitude: number,\n longitude: number,\n destination?: string,\n): AppLaunchUrls {\n const coordinateQuery = destination\n ? encodeQuery(destination)\n : `${latitude},${longitude}`;\n\n const primary =\n typeof navigator !== 'undefined' && isAndroid()\n ? `google.navigation:q=${latitude},${longitude}`\n : `comgooglemaps://?daddr=${coordinateQuery}&directionsmode=driving`;\n\n const fallbackDestination = destination\n ? encodeQuery(destination)\n : `${latitude},${longitude}`;\n\n return {\n primary,\n fallback: `https://www.google.com/maps/dir/?api=1&destination=${fallbackDestination}&travelmode=driving`,\n };\n}\n\nexport const googleProvider: AppLaunchProvider = {\n id: 'google',\n actions: ['navigate', 'navigateByCoordinate'] as const,\n\n validateParams(action, params) {\n if (action === 'navigate') {\n requireNonEmptyString(params.destination, 'destination');\n return;\n }\n if (action === 'navigateByCoordinate') {\n if (typeof params.latitude !== 'number' || typeof params.longitude !== 'number') {\n throw new AppLaunchError(\n 'INVALID_PARAMS',\n 'navigateByCoordinate 需要 latitude 与 longitude',\n );\n }\n }\n },\n\n buildUrls(action, params, context): AppLaunchUrls {\n if (action === 'navigate') {\n const destination = requireNonEmptyString(params.destination, 'destination');\n const urls = buildKeywordNavigationUrl(destination);\n if (context.options.fallbackUrl) {\n urls.fallback = context.options.fallbackUrl;\n }\n return urls;\n }\n\n if (action === 'navigateByCoordinate') {\n const urls = buildCoordinateNavigationUrl(\n params.latitude as number,\n params.longitude as number,\n params.destination as string | undefined,\n );\n if (context.options.fallbackUrl) {\n urls.fallback = context.options.fallbackUrl;\n }\n return urls;\n }\n\n throw new Error(`[googleProvider] 不支持 action: ${action}`);\n },\n};\n\nexport function buildGoogleNavigationUrl(destination: string): string {\n return buildKeywordNavigationUrl(destination).primary;\n}\n","import type { AppLaunchProvider } from '../types';\nimport { requireNonEmptyString, encodeQuery } from '../utils/query';\n\nexport type QqShareParams = {\n title: string;\n summary?: string;\n url: string;\n imageUrl?: string;\n};\n\n/** QQ 好友分享 — mqqapi scheme */\nexport const qqProvider: AppLaunchProvider = {\n id: 'qq',\n actions: ['share', 'open'] as const,\n\n validateParams(action, params) {\n if (action === 'open') {\n return;\n }\n requireNonEmptyString(params.title, 'title');\n requireNonEmptyString(params.url, 'url');\n },\n\n buildUrls(action, params, context) {\n if (action === 'open') {\n return {\n primary: 'mqqapi://',\n fallback: context.options.fallbackUrl ?? 'https://im.qq.com/',\n };\n }\n\n const title = encodeQuery(requireNonEmptyString(params.title, 'title'));\n const summary = encodeQuery(\n typeof params.summary === 'string' ? params.summary : '',\n );\n const url = encodeQuery(requireNonEmptyString(params.url, 'url'));\n const imageUrl = params.imageUrl\n ? encodeQuery(String(params.imageUrl))\n : '';\n\n const primary = [\n 'mqqapi://share/to_fri',\n '?src_type=web',\n '&version=1',\n '&file_type=news',\n `&title=${title}`,\n `&description=${summary}`,\n `&url=${url}`,\n imageUrl ? `&image_url=${imageUrl}` : '',\n ].join('');\n\n return {\n primary,\n fallback: context.options.fallbackUrl ?? `https://connect.qq.com/`,\n };\n },\n};\n","import type { AppLaunchProvider, AppLaunchUrls } from '../types';\nimport { requireNonEmptyString, encodeQuery } from '../utils/query';\n\nexport type WechatShareParams = {\n title: string;\n description?: string;\n url: string;\n thumbUrl?: string;\n};\n\n/**\n * 微信外链唤起能力受场景限制:\n * - 微信内 H5 通常需 JS-SDK\n * - 外部浏览器多仅能打开微信或跳转 Universal Link\n */\nexport const wechatProvider: AppLaunchProvider = {\n id: 'wechat',\n actions: ['open', 'share'] as const,\n\n validateParams(action, params) {\n if (action === 'open') {\n return;\n }\n requireNonEmptyString(params.title, 'title');\n requireNonEmptyString(params.url, 'url');\n },\n\n buildUrls(action, params, context): AppLaunchUrls {\n const sourceApplication = encodeQuery(context.sourceApplication);\n\n if (action === 'open') {\n return {\n primary: `weixin://`,\n fallback: context.options.fallbackUrl ?? 'https://weixin.qq.com/',\n };\n }\n\n const title = encodeQuery(requireNonEmptyString(params.title, 'title'));\n const description = encodeQuery(\n typeof params.description === 'string' ? params.description : '',\n );\n const url = encodeQuery(requireNonEmptyString(params.url, 'url'));\n const thumbUrl = params.thumbUrl\n ? encodeQuery(String(params.thumbUrl))\n : '';\n\n // 移动端常用唤起:打开微信并进入分享流程(具体能力依赖微信版本与场景)\n const primary = `weixin://dl/businessWebview/link?appid=&url=${url}&title=${title}&description=${description}`;\n\n return {\n primary,\n fallback:\n context.options.fallbackUrl ??\n `https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=${url}&response_type=code&scope=snsapi_userinfo&state=${sourceApplication}#wechat_redirect`,\n };\n },\n};\n","import type { AppLaunchProvider, AppProviderId } from '../types';\nimport { amapProvider } from './amap';\nimport { baiduProvider } from './baidu';\nimport { genericProvider } from './generic';\nimport { googleProvider } from './google';\nimport { qqProvider } from './qq';\nimport { wechatProvider } from './wechat';\n\nconst builtinProviders: Record<AppProviderId, AppLaunchProvider> = {\n amap: amapProvider,\n baidu: baiduProvider,\n google: googleProvider,\n wechat: wechatProvider,\n qq: qqProvider,\n generic: genericProvider,\n};\n\nconst customProviders = new Map<AppProviderId, AppLaunchProvider>();\n\nexport function registerAppProvider(provider: AppLaunchProvider): void {\n customProviders.set(provider.id, provider);\n}\n\nexport function getAppProvider(id: AppProviderId): AppLaunchProvider | undefined {\n return customProviders.get(id) ?? builtinProviders[id];\n}\n\nexport function listAppProviders(): AppProviderId[] {\n const ids = new Set<AppProviderId>([\n ...(Object.keys(builtinProviders) as AppProviderId[]),\n ...customProviders.keys(),\n ]);\n return [...ids];\n}\n\nexport { amapProvider, baiduProvider, googleProvider, wechatProvider, qqProvider, genericProvider };\n","import { createWebAppLaunchAdapter } from '../adapters/web';\nimport { getAppLauncherConfig } from './config';\nimport { getAppProvider } from '../providers/registry';\nimport {\n AppLaunchError,\n type AppLaunchAdapter,\n type AppLaunchRequest,\n type AppLaunchResult,\n} from '../types';\n\nfunction resolveAdapter(request: AppLaunchRequest): AppLaunchAdapter {\n const config = getAppLauncherConfig();\n const adapter = request.adapter ?? config.adapter;\n\n if (adapter) {\n return adapter;\n }\n\n if (typeof window !== 'undefined') {\n return createWebAppLaunchAdapter();\n }\n\n throw new AppLaunchError(\n 'ADAPTER_MISSING',\n '未配置 AppLaunchAdapter,请在宿主启动时调用 configureAppLauncher({ adapter })',\n );\n}\n\n/**\n * 统一唤起入口:按 provider + action 构建 scheme,经平台 adapter 拉起第三方 App。\n */\nexport async function launchApp(request: AppLaunchRequest): Promise<AppLaunchResult> {\n const config = getAppLauncherConfig();\n const provider = getAppProvider(request.provider);\n\n if (!provider) {\n throw new AppLaunchError('UNKNOWN_PROVIDER', `未知 provider: ${request.provider}`);\n }\n\n if (!provider.actions.includes(request.action)) {\n throw new AppLaunchError(\n 'UNKNOWN_ACTION',\n `provider \"${request.provider}\" 不支持 action \"${request.action}\"`,\n { supportedActions: [...provider.actions] },\n );\n }\n\n const params = request.params ?? {};\n provider.validateParams?.(request.action, params);\n\n const mergedOptions = {\n sourceApplication: config.sourceApplication,\n timeoutMs: 1500,\n ...config.defaultOptions,\n ...request.options,\n };\n\n const urls = provider.buildUrls(request.action, params, {\n sourceApplication: mergedOptions.sourceApplication ?? config.sourceApplication,\n options: mergedOptions,\n });\n\n if (mergedOptions.fallbackUrl && !urls.fallback) {\n urls.fallback = mergedOptions.fallbackUrl;\n }\n\n const adapter = resolveAdapter(request);\n const callbacks = {\n ...config.defaultCallbacks,\n ...request.callbacks,\n };\n\n try {\n return await adapter.launch(urls, {\n provider: request.provider,\n action: request.action,\n timeoutMs: mergedOptions.timeoutMs ?? 1500,\n callbacks,\n });\n } catch (error) {\n const launchError =\n error instanceof AppLaunchError\n ? error\n : new AppLaunchError(\n 'OPEN_FAILED',\n error instanceof Error ? error.message : '唤起第三方 App 失败',\n );\n callbacks.onError?.(launchError);\n throw launchError;\n }\n}\n","import type { AppProviderId, AppReturnPayload } from '../types';\n\nexport type { AppReturnPayload };\n\nexport function parseReturnUrl(url: string): AppReturnPayload {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return { url, params: {} };\n }\n\n const params: Record<string, string> = {};\n parsed.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n\n const provider = parsed.searchParams.get('provider') as AppProviderId | null;\n\n return {\n provider: provider ?? undefined,\n action: parsed.searchParams.get('action') ?? undefined,\n url,\n params,\n };\n}\n\ntype ReturnListener = (payload: AppReturnPayload) => void;\n\nconst listeners = new Set<ReturnListener>();\n\n/** 宿主 App 在收到 deep link 回跳时调用,分发给 onReturn 订阅者 */\nexport function notifyAppReturn(payload: AppReturnPayload): void {\n listeners.forEach(listener => listener(payload));\n}\n\nexport function subscribeAppReturn(listener: ReturnListener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function matchesReturnUrl(\n incomingUrl: string,\n expectedReturnUrl?: string,\n): boolean {\n if (!expectedReturnUrl) {\n return false;\n }\n\n if (incomingUrl === expectedReturnUrl) {\n return true;\n }\n\n try {\n const incoming = new URL(incomingUrl);\n const expected = new URL(expectedReturnUrl);\n return (\n incoming.protocol === expected.protocol &&\n incoming.hostname === expected.hostname &&\n incoming.pathname === expected.pathname\n );\n } catch {\n return incomingUrl.startsWith(expectedReturnUrl);\n }\n}\n","import { launchApp } from '../core/launcher';\nimport type { AppLaunchCallbacks, AppLaunchOptions, AppLaunchResult } from '../types';\n\n/** 地图导航提供方(关键词导航场景) */\nexport type MapNavigationProviderId = 'amap' | 'baidu' | 'google';\n\nexport type MapNavigationOption = {\n id: MapNavigationProviderId;\n label: string;\n description?: string;\n};\n\nexport const MAP_NAVIGATION_OPTIONS: readonly MapNavigationOption[] = [\n { id: 'amap', label: '高德地图', description: '国内常用,支持关键词导航' },\n { id: 'baidu', label: '百度地图', description: '国内常用,支持关键词导航' },\n { id: 'google', label: '谷歌地图', description: '海外或已安装 Google Maps 时适用' },\n] as const;\n\nexport type MapNavigationOptions = AppLaunchOptions & {\n callbacks?: AppLaunchCallbacks;\n};\n\nexport async function launchMapNavigation(\n provider: MapNavigationProviderId,\n destination: string,\n options?: MapNavigationOptions,\n): Promise<AppLaunchResult> {\n const { callbacks, ...launchOptions } = options ?? {};\n return launchApp({\n provider,\n action: 'navigate',\n params: { destination },\n options: launchOptions,\n callbacks,\n });\n}\n\n/** 同步唤起,结果通过 callbacks 回传 */\nexport function openMapNavigation(\n provider: MapNavigationProviderId,\n destination: string,\n options?: MapNavigationOptions,\n): void {\n void launchMapNavigation(provider, destination, options);\n}\n","import { launchApp } from '../core/launcher';\nimport { buildAmapNavigationUrl } from '../providers/amap';\nimport { buildBaiduNavigationUrl } from '../providers/baidu';\nimport { buildGoogleNavigationUrl } from '../providers/google';\nimport type { AppLaunchCallbacks, AppLaunchOptions, AppLaunchResult } from '../types';\n\nexport type AmapNavigationOptions = AppLaunchOptions & {\n callbacks?: AppLaunchCallbacks;\n};\n\n/** 高德关键词导航(日历等场景:仅地点文本) */\nexport async function launchAmapNavigation(\n destination: string,\n options?: AmapNavigationOptions,\n): Promise<AppLaunchResult> {\n const { callbacks, ...launchOptions } = options ?? {};\n return launchApp({\n provider: 'amap',\n action: 'navigate',\n params: { destination },\n options: launchOptions,\n callbacks,\n });\n}\n\n/** 兼容同步调用:不阻塞 UI,结果通过 callbacks 回传 */\nexport function openAmapNavigation(\n destination: string,\n options?: AmapNavigationOptions,\n): void {\n void launchAmapNavigation(destination, options);\n}\n\nexport { buildAmapNavigationUrl };\n\nexport type WechatShareOptions = AppLaunchOptions & {\n callbacks?: AppLaunchCallbacks;\n title: string;\n description?: string;\n url: string;\n thumbUrl?: string;\n};\n\nexport async function launchWechatShare(\n options: WechatShareOptions,\n): Promise<AppLaunchResult> {\n const { callbacks, title, description, url, thumbUrl, ...launchOptions } = options;\n return launchApp({\n provider: 'wechat',\n action: 'share',\n params: { title, description, url, thumbUrl },\n options: launchOptions,\n callbacks,\n });\n}\n\nexport type QqShareOptions = AppLaunchOptions & {\n callbacks?: AppLaunchCallbacks;\n title: string;\n summary?: string;\n url: string;\n imageUrl?: string;\n};\n\nexport async function launchQqShare(options: QqShareOptions): Promise<AppLaunchResult> {\n const { callbacks, title, summary, url, imageUrl, ...launchOptions } = options;\n return launchApp({\n provider: 'qq',\n action: 'share',\n params: { title, summary, url, imageUrl },\n options: launchOptions,\n callbacks,\n });\n}\n\nexport async function launchGenericUrl(\n url: string,\n options?: AppLaunchOptions & { callbacks?: AppLaunchCallbacks; fallback?: string },\n): Promise<AppLaunchResult> {\n const { callbacks, fallback, ...launchOptions } = options ?? {};\n return launchApp({\n provider: 'generic',\n action: 'open',\n params: { url, fallback },\n options: launchOptions,\n callbacks,\n });\n}\n\nexport {\n MAP_NAVIGATION_OPTIONS,\n launchMapNavigation,\n openMapNavigation,\n type MapNavigationOption,\n type MapNavigationOptions,\n type MapNavigationProviderId,\n} from './map-navigation';\n\nexport { buildBaiduNavigationUrl } from '../providers/baidu';\nexport { buildGoogleNavigationUrl } from '../providers/google';\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { u as AppLaunchAdapter, v as AppLaunchProvider } from '../../index-BHgDdlJW.mjs';
|
|
2
|
+
export { I as AmapNavigationOptions, j as AppLaunchCallbacks, H as AppLaunchError, k as AppLaunchOptions, B as AppLaunchPlatform, C as AppLaunchRequest, q as AppLaunchResult, D as AppLaunchStatus, E as AppLaunchUrls, F as AppLauncherConfig, G as AppProviderId, A as AppReturnPayload, L as LaunchExecutionOptions, M as MAP_NAVIGATION_OPTIONS, J as MapNavigationOption, K as MapNavigationOptions, t as MapNavigationProviderId, Q as QqShareOptions, R as RnLinkingLike, W as WechatShareOptions, c as configureAppLauncher, a as createRnAppLaunchAdapter, b as createRnAppLaunchAdapterFromReactNative, g as getAppLauncherConfig, x as getAppProvider, d as launchAmapNavigation, l as launchApp, e as launchGenericUrl, i as launchMapNavigation, f as launchQqShare, h as launchWechatShare, y as listAppProviders, m as matchesReturnUrl, n as notifyAppReturn, z as openAmapNavigation, o as openMapNavigation, p as parseReturnUrl, r as registerAppProvider, w as resetAppLauncherConfig, s as subscribeAppReturn } from '../../index-BHgDdlJW.mjs';
|
|
3
|
+
|
|
4
|
+
declare function createWebAppLaunchAdapter(): AppLaunchAdapter;
|
|
5
|
+
|
|
6
|
+
declare function isAndroid(userAgent?: string): boolean;
|
|
7
|
+
declare function isIOS(userAgent?: string): boolean;
|
|
8
|
+
declare function isMobileDevice(userAgent?: string): boolean;
|
|
9
|
+
|
|
10
|
+
declare const amapProvider: AppLaunchProvider;
|
|
11
|
+
declare function buildAmapNavigationUrl(destination: string, sourceApplication?: string): string;
|
|
12
|
+
|
|
13
|
+
declare const baiduProvider: AppLaunchProvider;
|
|
14
|
+
declare function buildBaiduNavigationUrl(destination: string, sourceApplication?: string): string;
|
|
15
|
+
|
|
16
|
+
/** 通用 scheme / https 唤起 */
|
|
17
|
+
declare const genericProvider: AppLaunchProvider;
|
|
18
|
+
|
|
19
|
+
declare const googleProvider: AppLaunchProvider;
|
|
20
|
+
declare function buildGoogleNavigationUrl(destination: string): string;
|
|
21
|
+
|
|
22
|
+
/** QQ 好友分享 — mqqapi scheme */
|
|
23
|
+
declare const qqProvider: AppLaunchProvider;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 微信外链唤起能力受场景限制:
|
|
27
|
+
* - 微信内 H5 通常需 JS-SDK
|
|
28
|
+
* - 外部浏览器多仅能打开微信或跳转 Universal Link
|
|
29
|
+
*/
|
|
30
|
+
declare const wechatProvider: AppLaunchProvider;
|
|
31
|
+
|
|
32
|
+
export { AppLaunchAdapter, AppLaunchProvider, amapProvider, baiduProvider, buildAmapNavigationUrl, buildBaiduNavigationUrl, buildGoogleNavigationUrl, createWebAppLaunchAdapter, genericProvider, googleProvider, isAndroid, isIOS, isMobileDevice, qqProvider, wechatProvider };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { u as AppLaunchAdapter, v as AppLaunchProvider } from '../../index-BHgDdlJW.js';
|
|
2
|
+
export { I as AmapNavigationOptions, j as AppLaunchCallbacks, H as AppLaunchError, k as AppLaunchOptions, B as AppLaunchPlatform, C as AppLaunchRequest, q as AppLaunchResult, D as AppLaunchStatus, E as AppLaunchUrls, F as AppLauncherConfig, G as AppProviderId, A as AppReturnPayload, L as LaunchExecutionOptions, M as MAP_NAVIGATION_OPTIONS, J as MapNavigationOption, K as MapNavigationOptions, t as MapNavigationProviderId, Q as QqShareOptions, R as RnLinkingLike, W as WechatShareOptions, c as configureAppLauncher, a as createRnAppLaunchAdapter, b as createRnAppLaunchAdapterFromReactNative, g as getAppLauncherConfig, x as getAppProvider, d as launchAmapNavigation, l as launchApp, e as launchGenericUrl, i as launchMapNavigation, f as launchQqShare, h as launchWechatShare, y as listAppProviders, m as matchesReturnUrl, n as notifyAppReturn, z as openAmapNavigation, o as openMapNavigation, p as parseReturnUrl, r as registerAppProvider, w as resetAppLauncherConfig, s as subscribeAppReturn } from '../../index-BHgDdlJW.js';
|
|
3
|
+
|
|
4
|
+
declare function createWebAppLaunchAdapter(): AppLaunchAdapter;
|
|
5
|
+
|
|
6
|
+
declare function isAndroid(userAgent?: string): boolean;
|
|
7
|
+
declare function isIOS(userAgent?: string): boolean;
|
|
8
|
+
declare function isMobileDevice(userAgent?: string): boolean;
|
|
9
|
+
|
|
10
|
+
declare const amapProvider: AppLaunchProvider;
|
|
11
|
+
declare function buildAmapNavigationUrl(destination: string, sourceApplication?: string): string;
|
|
12
|
+
|
|
13
|
+
declare const baiduProvider: AppLaunchProvider;
|
|
14
|
+
declare function buildBaiduNavigationUrl(destination: string, sourceApplication?: string): string;
|
|
15
|
+
|
|
16
|
+
/** 通用 scheme / https 唤起 */
|
|
17
|
+
declare const genericProvider: AppLaunchProvider;
|
|
18
|
+
|
|
19
|
+
declare const googleProvider: AppLaunchProvider;
|
|
20
|
+
declare function buildGoogleNavigationUrl(destination: string): string;
|
|
21
|
+
|
|
22
|
+
/** QQ 好友分享 — mqqapi scheme */
|
|
23
|
+
declare const qqProvider: AppLaunchProvider;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 微信外链唤起能力受场景限制:
|
|
27
|
+
* - 微信内 H5 通常需 JS-SDK
|
|
28
|
+
* - 外部浏览器多仅能打开微信或跳转 Universal Link
|
|
29
|
+
*/
|
|
30
|
+
declare const wechatProvider: AppLaunchProvider;
|
|
31
|
+
|
|
32
|
+
export { AppLaunchAdapter, AppLaunchProvider, amapProvider, baiduProvider, buildAmapNavigationUrl, buildBaiduNavigationUrl, buildGoogleNavigationUrl, createWebAppLaunchAdapter, genericProvider, googleProvider, isAndroid, isIOS, isMobileDevice, qqProvider, wechatProvider };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkFV7IHC23_js = require('../../chunk-FV7IHC23.js');
|
|
4
|
+
require('../../chunk-NSBPE2FW.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "AppLaunchError", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkFV7IHC23_js.AppLaunchError; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "MAP_NAVIGATION_OPTIONS", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkFV7IHC23_js.MAP_NAVIGATION_OPTIONS; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "amapProvider", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkFV7IHC23_js.amapProvider; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "baiduProvider", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkFV7IHC23_js.baiduProvider; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "buildAmapNavigationUrl", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkFV7IHC23_js.buildAmapNavigationUrl; }
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports, "buildBaiduNavigationUrl", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return chunkFV7IHC23_js.buildBaiduNavigationUrl; }
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "buildGoogleNavigationUrl", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () { return chunkFV7IHC23_js.buildGoogleNavigationUrl; }
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "configureAppLauncher", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () { return chunkFV7IHC23_js.configureAppLauncher; }
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(exports, "createRnAppLaunchAdapter", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function () { return chunkFV7IHC23_js.createRnAppLaunchAdapter; }
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "createRnAppLaunchAdapterFromReactNative", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () { return chunkFV7IHC23_js.createRnAppLaunchAdapterFromReactNative; }
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "createWebAppLaunchAdapter", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () { return chunkFV7IHC23_js.createWebAppLaunchAdapter; }
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(exports, "genericProvider", {
|
|
53
|
+
enumerable: true,
|
|
54
|
+
get: function () { return chunkFV7IHC23_js.genericProvider; }
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(exports, "getAppLauncherConfig", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function () { return chunkFV7IHC23_js.getAppLauncherConfig; }
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "getAppProvider", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () { return chunkFV7IHC23_js.getAppProvider; }
|
|
63
|
+
});
|
|
64
|
+
Object.defineProperty(exports, "googleProvider", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
get: function () { return chunkFV7IHC23_js.googleProvider; }
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(exports, "isAndroid", {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () { return chunkFV7IHC23_js.isAndroid; }
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "isIOS", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () { return chunkFV7IHC23_js.isIOS; }
|
|
75
|
+
});
|
|
76
|
+
Object.defineProperty(exports, "isMobileDevice", {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () { return chunkFV7IHC23_js.isMobileDevice; }
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(exports, "launchAmapNavigation", {
|
|
81
|
+
enumerable: true,
|
|
82
|
+
get: function () { return chunkFV7IHC23_js.launchAmapNavigation; }
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, "launchApp", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () { return chunkFV7IHC23_js.launchApp; }
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(exports, "launchGenericUrl", {
|
|
89
|
+
enumerable: true,
|
|
90
|
+
get: function () { return chunkFV7IHC23_js.launchGenericUrl; }
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(exports, "launchMapNavigation", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function () { return chunkFV7IHC23_js.launchMapNavigation; }
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(exports, "launchQqShare", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () { return chunkFV7IHC23_js.launchQqShare; }
|
|
99
|
+
});
|
|
100
|
+
Object.defineProperty(exports, "launchWechatShare", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function () { return chunkFV7IHC23_js.launchWechatShare; }
|
|
103
|
+
});
|
|
104
|
+
Object.defineProperty(exports, "listAppProviders", {
|
|
105
|
+
enumerable: true,
|
|
106
|
+
get: function () { return chunkFV7IHC23_js.listAppProviders; }
|
|
107
|
+
});
|
|
108
|
+
Object.defineProperty(exports, "matchesReturnUrl", {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () { return chunkFV7IHC23_js.matchesReturnUrl; }
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(exports, "notifyAppReturn", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
get: function () { return chunkFV7IHC23_js.notifyAppReturn; }
|
|
115
|
+
});
|
|
116
|
+
Object.defineProperty(exports, "openAmapNavigation", {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: function () { return chunkFV7IHC23_js.openAmapNavigation; }
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(exports, "openMapNavigation", {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: function () { return chunkFV7IHC23_js.openMapNavigation; }
|
|
123
|
+
});
|
|
124
|
+
Object.defineProperty(exports, "parseReturnUrl", {
|
|
125
|
+
enumerable: true,
|
|
126
|
+
get: function () { return chunkFV7IHC23_js.parseReturnUrl; }
|
|
127
|
+
});
|
|
128
|
+
Object.defineProperty(exports, "qqProvider", {
|
|
129
|
+
enumerable: true,
|
|
130
|
+
get: function () { return chunkFV7IHC23_js.qqProvider; }
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperty(exports, "registerAppProvider", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function () { return chunkFV7IHC23_js.registerAppProvider; }
|
|
135
|
+
});
|
|
136
|
+
Object.defineProperty(exports, "resetAppLauncherConfig", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
get: function () { return chunkFV7IHC23_js.resetAppLauncherConfig; }
|
|
139
|
+
});
|
|
140
|
+
Object.defineProperty(exports, "subscribeAppReturn", {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: function () { return chunkFV7IHC23_js.subscribeAppReturn; }
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(exports, "wechatProvider", {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function () { return chunkFV7IHC23_js.wechatProvider; }
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=index.js.map
|
|
149
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AppLaunchError, MAP_NAVIGATION_OPTIONS, amapProvider, baiduProvider, buildAmapNavigationUrl, buildBaiduNavigationUrl, buildGoogleNavigationUrl, configureAppLauncher, createRnAppLaunchAdapter, createRnAppLaunchAdapterFromReactNative, createWebAppLaunchAdapter, genericProvider, getAppLauncherConfig, getAppProvider, googleProvider, isAndroid, isIOS, isMobileDevice, launchAmapNavigation, launchApp, launchGenericUrl, launchMapNavigation, launchQqShare, launchWechatShare, listAppProviders, matchesReturnUrl, notifyAppReturn, openAmapNavigation, openMapNavigation, parseReturnUrl, qqProvider, registerAppProvider, resetAppLauncherConfig, subscribeAppReturn, wechatProvider } from '../../chunk-OOVINE7M.mjs';
|
|
2
|
+
import '../../chunk-MAI35PU6.mjs';
|
|
3
|
+
//# sourceMappingURL=index.mjs.map
|
|
4
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { A as AppReturnPayload, R as RnLinkingLike } from '../../../index-BHgDdlJW.mjs';
|
|
2
|
+
export { j as AppLaunchCallbacks, k as AppLaunchOptions, q as AppLaunchResult, M as MAP_NAVIGATION_OPTIONS, t as MapNavigationProviderId, c as configureAppLauncher, a as createRnAppLaunchAdapter, b as createRnAppLaunchAdapterFromReactNative, g as getAppLauncherConfig, d as launchAmapNavigation, l as launchApp, e as launchGenericUrl, i as launchMapNavigation, f as launchQqShare, h as launchWechatShare, m as matchesReturnUrl, n as notifyAppReturn, o as openMapNavigation, p as parseReturnUrl, r as registerAppProvider, s as subscribeAppReturn } from '../../../index-BHgDdlJW.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* React Native 宿主集成
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { Linking } from 'react-native';
|
|
10
|
+
* import {
|
|
11
|
+
* configureAppLauncher,
|
|
12
|
+
* createRnAppLaunchAdapter,
|
|
13
|
+
* setupRnAppReturnListener,
|
|
14
|
+
* } from 'sa2kit/common/appLauncher/rn';
|
|
15
|
+
*
|
|
16
|
+
* configureAppLauncher({
|
|
17
|
+
* sourceApplication: 'my-rn-app',
|
|
18
|
+
* adapter: createRnAppLaunchAdapter(Linking),
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* setupRnAppReturnListener(Linking, {
|
|
22
|
+
* returnUrlPrefix: 'myapp://launch/',
|
|
23
|
+
* onReturn: payload => console.log(payload),
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
type RnReturnListenerOptions = {
|
|
29
|
+
returnUrlPrefix?: string;
|
|
30
|
+
onReturn: (payload: AppReturnPayload) => void;
|
|
31
|
+
};
|
|
32
|
+
/** 监听 RN Linking 回跳并转发给 appLauncher 订阅者 */
|
|
33
|
+
declare function setupRnAppReturnListener(linking: RnLinkingLike, options: RnReturnListenerOptions): () => void;
|
|
34
|
+
|
|
35
|
+
export { AppReturnPayload, RnLinkingLike, type RnReturnListenerOptions, setupRnAppReturnListener };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { A as AppReturnPayload, R as RnLinkingLike } from '../../../index-BHgDdlJW.js';
|
|
2
|
+
export { j as AppLaunchCallbacks, k as AppLaunchOptions, q as AppLaunchResult, M as MAP_NAVIGATION_OPTIONS, t as MapNavigationProviderId, c as configureAppLauncher, a as createRnAppLaunchAdapter, b as createRnAppLaunchAdapterFromReactNative, g as getAppLauncherConfig, d as launchAmapNavigation, l as launchApp, e as launchGenericUrl, i as launchMapNavigation, f as launchQqShare, h as launchWechatShare, m as matchesReturnUrl, n as notifyAppReturn, o as openMapNavigation, p as parseReturnUrl, r as registerAppProvider, s as subscribeAppReturn } from '../../../index-BHgDdlJW.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* React Native 宿主集成
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { Linking } from 'react-native';
|
|
10
|
+
* import {
|
|
11
|
+
* configureAppLauncher,
|
|
12
|
+
* createRnAppLaunchAdapter,
|
|
13
|
+
* setupRnAppReturnListener,
|
|
14
|
+
* } from 'sa2kit/common/appLauncher/rn';
|
|
15
|
+
*
|
|
16
|
+
* configureAppLauncher({
|
|
17
|
+
* sourceApplication: 'my-rn-app',
|
|
18
|
+
* adapter: createRnAppLaunchAdapter(Linking),
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* setupRnAppReturnListener(Linking, {
|
|
22
|
+
* returnUrlPrefix: 'myapp://launch/',
|
|
23
|
+
* onReturn: payload => console.log(payload),
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
type RnReturnListenerOptions = {
|
|
29
|
+
returnUrlPrefix?: string;
|
|
30
|
+
onReturn: (payload: AppReturnPayload) => void;
|
|
31
|
+
};
|
|
32
|
+
/** 监听 RN Linking 回跳并转发给 appLauncher 订阅者 */
|
|
33
|
+
declare function setupRnAppReturnListener(linking: RnLinkingLike, options: RnReturnListenerOptions): () => void;
|
|
34
|
+
|
|
35
|
+
export { AppReturnPayload, RnLinkingLike, type RnReturnListenerOptions, setupRnAppReturnListener };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkFV7IHC23_js = require('../../../chunk-FV7IHC23.js');
|
|
4
|
+
require('../../../chunk-NSBPE2FW.js');
|
|
5
|
+
|
|
6
|
+
// src/common/appLauncher/rn/index.ts
|
|
7
|
+
function setupRnAppReturnListener(linking, options) {
|
|
8
|
+
const handler = (event) => {
|
|
9
|
+
const { returnUrlPrefix, onReturn } = options;
|
|
10
|
+
if (returnUrlPrefix && !event.url.startsWith(returnUrlPrefix)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const payload = chunkFV7IHC23_js.parseReturnUrl(event.url);
|
|
14
|
+
onReturn(payload);
|
|
15
|
+
chunkFV7IHC23_js.notifyAppReturn(payload);
|
|
16
|
+
};
|
|
17
|
+
linking.addEventListener?.("url", handler);
|
|
18
|
+
if (linking.getInitialURL) {
|
|
19
|
+
void linking.getInitialURL().then((url) => {
|
|
20
|
+
if (url) {
|
|
21
|
+
handler({ url });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return () => {
|
|
26
|
+
linking.removeEventListener?.("url", handler);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Object.defineProperty(exports, "MAP_NAVIGATION_OPTIONS", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return chunkFV7IHC23_js.MAP_NAVIGATION_OPTIONS; }
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(exports, "configureAppLauncher", {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () { return chunkFV7IHC23_js.configureAppLauncher; }
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "createRnAppLaunchAdapter", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () { return chunkFV7IHC23_js.createRnAppLaunchAdapter; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "createRnAppLaunchAdapterFromReactNative", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return chunkFV7IHC23_js.createRnAppLaunchAdapterFromReactNative; }
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(exports, "getAppLauncherConfig", {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () { return chunkFV7IHC23_js.getAppLauncherConfig; }
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(exports, "launchAmapNavigation", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () { return chunkFV7IHC23_js.launchAmapNavigation; }
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "launchApp", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () { return chunkFV7IHC23_js.launchApp; }
|
|
57
|
+
});
|
|
58
|
+
Object.defineProperty(exports, "launchGenericUrl", {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
get: function () { return chunkFV7IHC23_js.launchGenericUrl; }
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(exports, "launchMapNavigation", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () { return chunkFV7IHC23_js.launchMapNavigation; }
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "launchQqShare", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () { return chunkFV7IHC23_js.launchQqShare; }
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(exports, "launchWechatShare", {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
get: function () { return chunkFV7IHC23_js.launchWechatShare; }
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(exports, "matchesReturnUrl", {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
get: function () { return chunkFV7IHC23_js.matchesReturnUrl; }
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, "notifyAppReturn", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () { return chunkFV7IHC23_js.notifyAppReturn; }
|
|
81
|
+
});
|
|
82
|
+
Object.defineProperty(exports, "openMapNavigation", {
|
|
83
|
+
enumerable: true,
|
|
84
|
+
get: function () { return chunkFV7IHC23_js.openMapNavigation; }
|
|
85
|
+
});
|
|
86
|
+
Object.defineProperty(exports, "parseReturnUrl", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function () { return chunkFV7IHC23_js.parseReturnUrl; }
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(exports, "registerAppProvider", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () { return chunkFV7IHC23_js.registerAppProvider; }
|
|
93
|
+
});
|
|
94
|
+
Object.defineProperty(exports, "subscribeAppReturn", {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
get: function () { return chunkFV7IHC23_js.subscribeAppReturn; }
|
|
97
|
+
});
|
|
98
|
+
exports.setupRnAppReturnListener = setupRnAppReturnListener;
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/appLauncher/rn/index.ts"],"names":["parseReturnUrl","notifyAppReturn"],"mappings":";;;;;;AA8DO,SAAS,wBAAA,CACd,SACA,OAAA,EACY;AACZ,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAA2B;AAC1C,IAAA,MAAM,EAAE,eAAA,EAAiB,QAAA,EAAS,GAAI,OAAA;AACtC,IAAA,IAAI,mBAAmB,CAAC,KAAA,CAAM,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,EAAG;AAC7D,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAUA,+BAAA,CAAe,KAAA,CAAM,GAAG,CAAA;AACxC,IAAA,QAAA,CAAS,OAAO,CAAA;AAChB,IAAAC,gCAAA,CAAgB,OAAO,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,OAAA,CAAQ,gBAAA,GAAmB,OAAO,OAAO,CAAA;AAEzC,EAAA,IAAI,QAAQ,aAAA,EAAe;AACzB,IAAA,KAAK,OAAA,CAAQ,aAAA,EAAc,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO;AACvC,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAA,CAAQ,EAAE,KAAK,CAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAM;AACX,IAAA,OAAA,CAAQ,mBAAA,GAAsB,OAAO,OAAO,CAAA;AAAA,EAC9C,CAAA;AACF","file":"index.js","sourcesContent":["/**\n * React Native 宿主集成\n *\n * @example\n * ```ts\n * import { Linking } from 'react-native';\n * import {\n * configureAppLauncher,\n * createRnAppLaunchAdapter,\n * setupRnAppReturnListener,\n * } from 'sa2kit/common/appLauncher/rn';\n *\n * configureAppLauncher({\n * sourceApplication: 'my-rn-app',\n * adapter: createRnAppLaunchAdapter(Linking),\n * });\n *\n * setupRnAppReturnListener(Linking, {\n * returnUrlPrefix: 'myapp://launch/',\n * onReturn: payload => console.log(payload),\n * });\n * ```\n */\nexport {\n configureAppLauncher,\n createRnAppLaunchAdapter,\n createRnAppLaunchAdapterFromReactNative,\n getAppLauncherConfig,\n launchApp,\n launchAmapNavigation,\n launchGenericUrl,\n launchQqShare,\n launchWechatShare,\n launchMapNavigation,\n openMapNavigation,\n MAP_NAVIGATION_OPTIONS,\n notifyAppReturn,\n parseReturnUrl,\n registerAppProvider,\n subscribeAppReturn,\n type AppLaunchCallbacks,\n type AppLaunchOptions,\n type AppLaunchResult,\n type AppReturnPayload,\n type MapNavigationProviderId,\n type RnLinkingLike,\n} from '../index';\n\nimport {\n matchesReturnUrl,\n notifyAppReturn,\n parseReturnUrl,\n} from '../core/return-handler';\nimport type { AppReturnPayload } from '../types';\nimport type { RnLinkingLike } from '../adapters/rn';\n\nexport type RnReturnListenerOptions = {\n returnUrlPrefix?: string;\n onReturn: (payload: AppReturnPayload) => void;\n};\n\n/** 监听 RN Linking 回跳并转发给 appLauncher 订阅者 */\nexport function setupRnAppReturnListener(\n linking: RnLinkingLike,\n options: RnReturnListenerOptions,\n): () => void {\n const handler = (event: { url: string }) => {\n const { returnUrlPrefix, onReturn } = options;\n if (returnUrlPrefix && !event.url.startsWith(returnUrlPrefix)) {\n return;\n }\n const payload = parseReturnUrl(event.url);\n onReturn(payload);\n notifyAppReturn(payload);\n };\n\n linking.addEventListener?.('url', handler);\n\n if (linking.getInitialURL) {\n void linking.getInitialURL().then(url => {\n if (url) {\n handler({ url });\n }\n });\n }\n\n return () => {\n linking.removeEventListener?.('url', handler);\n };\n}\n\nexport { matchesReturnUrl };\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { parseReturnUrl, notifyAppReturn } from '../../../chunk-OOVINE7M.mjs';
|
|
2
|
+
export { MAP_NAVIGATION_OPTIONS, configureAppLauncher, createRnAppLaunchAdapter, createRnAppLaunchAdapterFromReactNative, getAppLauncherConfig, launchAmapNavigation, launchApp, launchGenericUrl, launchMapNavigation, launchQqShare, launchWechatShare, matchesReturnUrl, notifyAppReturn, openMapNavigation, parseReturnUrl, registerAppProvider, subscribeAppReturn } from '../../../chunk-OOVINE7M.mjs';
|
|
3
|
+
import '../../../chunk-MAI35PU6.mjs';
|
|
4
|
+
|
|
5
|
+
// src/common/appLauncher/rn/index.ts
|
|
6
|
+
function setupRnAppReturnListener(linking, options) {
|
|
7
|
+
const handler = (event) => {
|
|
8
|
+
const { returnUrlPrefix, onReturn } = options;
|
|
9
|
+
if (returnUrlPrefix && !event.url.startsWith(returnUrlPrefix)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const payload = parseReturnUrl(event.url);
|
|
13
|
+
onReturn(payload);
|
|
14
|
+
notifyAppReturn(payload);
|
|
15
|
+
};
|
|
16
|
+
linking.addEventListener?.("url", handler);
|
|
17
|
+
if (linking.getInitialURL) {
|
|
18
|
+
void linking.getInitialURL().then((url) => {
|
|
19
|
+
if (url) {
|
|
20
|
+
handler({ url });
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return () => {
|
|
25
|
+
linking.removeEventListener?.("url", handler);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { setupRnAppReturnListener };
|
|
30
|
+
//# sourceMappingURL=index.mjs.map
|
|
31
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/common/appLauncher/rn/index.ts"],"names":[],"mappings":";;;;;AA8DO,SAAS,wBAAA,CACd,SACA,OAAA,EACY;AACZ,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAA2B;AAC1C,IAAA,MAAM,EAAE,eAAA,EAAiB,QAAA,EAAS,GAAI,OAAA;AACtC,IAAA,IAAI,mBAAmB,CAAC,KAAA,CAAM,GAAA,CAAI,UAAA,CAAW,eAAe,CAAA,EAAG;AAC7D,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,CAAM,GAAG,CAAA;AACxC,IAAA,QAAA,CAAS,OAAO,CAAA;AAChB,IAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,OAAA,CAAQ,gBAAA,GAAmB,OAAO,OAAO,CAAA;AAEzC,EAAA,IAAI,QAAQ,aAAA,EAAe;AACzB,IAAA,KAAK,OAAA,CAAQ,aAAA,EAAc,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO;AACvC,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAA,CAAQ,EAAE,KAAK,CAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAM;AACX,IAAA,OAAA,CAAQ,mBAAA,GAAsB,OAAO,OAAO,CAAA;AAAA,EAC9C,CAAA;AACF","file":"index.mjs","sourcesContent":["/**\n * React Native 宿主集成\n *\n * @example\n * ```ts\n * import { Linking } from 'react-native';\n * import {\n * configureAppLauncher,\n * createRnAppLaunchAdapter,\n * setupRnAppReturnListener,\n * } from 'sa2kit/common/appLauncher/rn';\n *\n * configureAppLauncher({\n * sourceApplication: 'my-rn-app',\n * adapter: createRnAppLaunchAdapter(Linking),\n * });\n *\n * setupRnAppReturnListener(Linking, {\n * returnUrlPrefix: 'myapp://launch/',\n * onReturn: payload => console.log(payload),\n * });\n * ```\n */\nexport {\n configureAppLauncher,\n createRnAppLaunchAdapter,\n createRnAppLaunchAdapterFromReactNative,\n getAppLauncherConfig,\n launchApp,\n launchAmapNavigation,\n launchGenericUrl,\n launchQqShare,\n launchWechatShare,\n launchMapNavigation,\n openMapNavigation,\n MAP_NAVIGATION_OPTIONS,\n notifyAppReturn,\n parseReturnUrl,\n registerAppProvider,\n subscribeAppReturn,\n type AppLaunchCallbacks,\n type AppLaunchOptions,\n type AppLaunchResult,\n type AppReturnPayload,\n type MapNavigationProviderId,\n type RnLinkingLike,\n} from '../index';\n\nimport {\n matchesReturnUrl,\n notifyAppReturn,\n parseReturnUrl,\n} from '../core/return-handler';\nimport type { AppReturnPayload } from '../types';\nimport type { RnLinkingLike } from '../adapters/rn';\n\nexport type RnReturnListenerOptions = {\n returnUrlPrefix?: string;\n onReturn: (payload: AppReturnPayload) => void;\n};\n\n/** 监听 RN Linking 回跳并转发给 appLauncher 订阅者 */\nexport function setupRnAppReturnListener(\n linking: RnLinkingLike,\n options: RnReturnListenerOptions,\n): () => void {\n const handler = (event: { url: string }) => {\n const { returnUrlPrefix, onReturn } = options;\n if (returnUrlPrefix && !event.url.startsWith(returnUrlPrefix)) {\n return;\n }\n const payload = parseReturnUrl(event.url);\n onReturn(payload);\n notifyAppReturn(payload);\n };\n\n linking.addEventListener?.('url', handler);\n\n if (linking.getInitialURL) {\n void linking.getInitialURL().then(url => {\n if (url) {\n handler({ url });\n }\n });\n }\n\n return () => {\n linking.removeEventListener?.('url', handler);\n };\n}\n\nexport { matchesReturnUrl };\n"]}
|