XuqmGroup-RNSDK/packages/common/src/autoInit.ts

47 行
1.4 KiB
TypeScript

/**
* SDK
*
* Android SDK ContentProvider
*
* React Native ContentProvider Metro moduleNameMapper
* 1. 宿 src/assets/xuqm/config.xuqmconfig.ts
* 2. 宿 babel.config.js alias: '@xuqm/autoinit-config'
* 3. tryRequire('@xuqm/autoinit-config')
* 4. 宿
*
* alias require
*/
import {isInitialized} from './config'
import {XuqmSDK} from './sdk'
let _autoInitAttempted = false
function tryRequireConfig(): string | null {
try {
// Metro moduleNameMapper 将此路径映射到宿主的配置文件
// eslint-disable-next-line @typescript-eslint/no-require-imports
const mod = require('@xuqm/autoinit-config') as {ENCRYPTED_CONFIG?: string; default?: string}
return mod?.ENCRYPTED_CONFIG ?? mod?.default ?? null
} catch {
return null
}
}
/**
*
* Android SDK runCatching + Log.w
*/
export function tryAutoInit(): void {
if (_autoInitAttempted) return
_autoInitAttempted = true
if (isInitialized()) return
const encrypted = tryRequireConfig()
if (!encrypted) return
XuqmSDK.initWithConfigFile(encrypted, {debug: __DEV__}).catch(() => {
// 静默降级
})
}