29 行
952 B
TypeScript
29 行
952 B
TypeScript
export interface XuqmBundleIdentity {
|
|
buildId: string
|
|
moduleId: string
|
|
moduleVersion: string
|
|
bundleHash: string
|
|
}
|
|
|
|
export type XuqmBundleIdentityProvider = (stacktrace: string) => Promise<XuqmBundleIdentity | null>
|
|
|
|
let provider: { owner: string; resolve: XuqmBundleIdentityProvider } | null = null
|
|
|
|
/** @internal update 是 Bundle 状态唯一事实源,只允许注册一个解析器。 */
|
|
export function _registerBundleIdentityProvider(
|
|
owner: string,
|
|
next: XuqmBundleIdentityProvider,
|
|
): void {
|
|
if (provider && provider.owner !== owner) {
|
|
throw new Error('[XuqmSDK] A bundle identity provider is already registered.')
|
|
}
|
|
provider = { owner, resolve: next }
|
|
}
|
|
|
|
/** @internal 无法精确归属时返回 null,调用方不得猜测 latest 或 app Bundle。 */
|
|
export async function _resolveBundleIdentity(
|
|
stacktrace: string,
|
|
): Promise<XuqmBundleIdentity | null> {
|
|
return provider ? provider.resolve(stacktrace) : null
|
|
}
|