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

51 行
1.6 KiB
TypeScript

/**
* SDK
*
* Android SDK ContentProvider
*
* withXuqmConfig Metro
* 1. 宿 .xuqmconfig src/assets/config/
* 2. metro.config.js 使 withXuqmConfig(metroConfig)
* 3. tryRequire('@xuqm/autoinit-config')
*
* alias
* 1. 宿 src/assets/xuqm/config.xuqmconfig.ts
* 2. 宿 babel/metro config alias: '@xuqm/autoinit-config'
*
* 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((e: unknown) => {
console.error('[XuqmSDK] Auto-init failed:', e)
if (__DEV__) throw e
})
}