@doubao-dev/cli 0.0.33 → 0.0.35
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/2168.js +2 -2
- package/dist/275.js +5 -5
- package/dist/4931.js +1 -1
- package/dist/{8079.js → 6427.js} +3 -3
- package/dist/{9667.js → 8981.js} +2 -2
- package/dist/@byted-doubao-apps/kit.js +1 -1
- package/dist/@byted-doubao-apps/login.js +1 -1
- package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
- package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
- package/dist/assets/web-sdk-debugger/__doubao_web_sdk_native_modules/applet-bridge-module-core.js +1 -1
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/js/index.9f626ba3a2.js +44 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
- package/dist/check.js +1 -1
- package/dist/dev-shell.js +1 -1
- package/dist/dev.js +5 -5
- package/dist/init.js +1 -1
- package/dist/ink.js +1 -1
- package/dist/prompt.js +1 -1
- package/dist/run.js +1 -1
- package/dist/sdk.js +42 -42
- package/dist/sdk~1.js +28 -28
- package/package.json +2 -3
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/06-/350/267/257/347/224/261.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/08-/344/272/244/344/272/222.md +2 -2
- package/dist/assets/web-sdk-debugger/static/js/index.d1bb36b355.js +0 -44
- /package/dist/{9091.js → 3688.js} +0 -0
- /package/dist/{9667.js.LICENSE.txt → 8981.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import"node:module";import"../3551.js";let e=e=>e,r=e=>e;export{CloudBuildLauncher,DEBUG_DRIVER_NAMES,DebugDriverType,isDebugDriverName,selectDevServerHost}from"../
|
|
1
|
+
import"node:module";import"../3551.js";let e=e=>e,r=e=>e;export{CloudBuildLauncher,DEBUG_DRIVER_NAMES,DebugDriverType,isDebugDriverName,selectDevServerHost}from"../6427.js";export{r as defineAppConfig,e as defineConfig};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../7945.js";import{getErrorMessage as r}from"../
|
|
1
|
+
let e,t;import"node:module";import{__webpack_require__ as o}from"../rslib-runtime.js";import"../7945.js";import{getErrorMessage as r}from"../6427.js";let i="pnpm --filter @byted-doubao-apps/login exec playwright-core install chromium";async function n(){try{let{chromium:e}=await import("node:module").then(function(e){return o.t(e.createRequire(import.meta.url)("playwright-core"),18)});return e}catch(e){throw Error(`Unable to load Playwright Core for CLI login. It is installed through @byted-doubao-apps/kit -> @byted-doubao-apps/login, so users should not install playwright-core separately. Reinstall or upgrade @byted-doubao-apps/kit; when developing inside this repo, run pnpm install once to refresh workspace links. Cause: ${r(e)}`)}}function a(e,t){return"Playwright Chromium"===e.label&&/Executable doesn't exist|Looks like Playwright was just installed|playwright install|ms-playwright|chromium_headless_shell/i.test(r(t))?`${e.label}: optional fallback browser is not installed. Prefer installing Google Chrome or Microsoft Edge. If you still need this fallback, run \`${i}\`.`:`${e.label}: ${r(t).split("\n").find(Boolean)??"Unknown error"}`}let s="doubao-apps-sdk",l=Function("specifier","return import(specifier)");function u(e){"applet0930"===process.env.DEBUG&&console.warn(e)}async function c(){try{let e=await l("@napi-rs/keyring"),t=e.default??e;if("object"==typeof t&&null!==t&&"function"==typeof t.Entry)return function({Entry:e}){return{getPassword:async(t,o)=>await Promise.resolve(new e(t,o).getPassword()),async setPassword(t,o,r){await Promise.resolve(new e(t,o).setPassword(r))},deletePassword:async(t,o)=>await Promise.resolve(new e(t,o).deletePassword())}}(t);u("[login] System credential store is unavailable: invalid @napi-rs/keyring module.")}catch(e){u(`[login] System credential store is unavailable. Cause: ${r(e)}`)}}function d({route:e,targetUrl:t}){return`login-cookie:${e}:${t}`}function p(){return void 0!==t?Promise.resolve(t??void 0):(e??(e=c()),e)}let f={"sso-internal":{route:"sso",targetUrl:"https://doubao-developer.bytedance.net",loginUrl:"https://doubao-developer.bytedance.net",cookieNames:["sso_sessionid","sso_sessionid_ss","sessionid","sessionid_ss","sid_guard","sid_tt"],cookieNamePrefixes:["bd_sso_"]},"sms-internal":{route:"sms",targetUrl:"https://doubao-developer-open.bytedance.net",loginUrl:"https://doubao-developer-open.bytedance.net",cookieNames:["sessionid","sessionid_ss","sid_guard","sid_tt","sid_ucp_v1","ssid_ucp_v1"]},"sms-external":{route:"sms",targetUrl:"https://hello.doubao-dev.com",loginUrl:"https://hello.doubao-dev.com",cookieNames:["sessionid_doubao_open","sessionid_ss_doubao_open","sid_guard_doubao_open","sid_tt_doubao_open","sid_ucp_v1_doubao_open","ssid_ucp_v1_doubao_open"]}},m={sso:f["sso-internal"],sms:f["sms-external"]};function h(e){if(!e||"sso"===e)return"sso";if("sms"===e)return"sms";throw Error(`Unsupported login route "${e}". Expected "sso" or "sms".`)}let w=["sso_sessionid","sso_uid","passport_csrf_token","XSRF-TOKEN"];function g(e){let t=w.indexOf(e.name);return -1===t?w.length:t}function y(e,t){let{cookieNames:o,cookieNamePrefixes:r=[]}=m[h(e)];return o.includes(t)||r.some(e=>t.startsWith(e))}function b(e,t){return!!t&&t.split(";").some(t=>{let o=t.trim(),r=o.indexOf("=");if(r<=0||r===o.length-1)return!1;let i=o.slice(0,r);return!!o.slice(r+1).trim()&&y(e,i)})}async function _(e,t,o){var r;let i,n=await e.cookies([o,`${o}/`]);return{cookies:n,cookieHeader:(r=n,i=new Map,r.forEach(e=>{e.name&&e.value&&i.set(`${e.name};${e.domain??""};${e.path??""}`,e)}),[...Array.from(i.values())].sort((e,t)=>{let o=g(e)-g(t);if(0!==o)return o;let r=e.path?.length??0,i=t.path?.length??0;return r!==i?i-r:e.name.localeCompare(t.name)}).map(e=>`${e.name}=${e.value}`).join("; ")),expiresAt:function(e,t){let o=t.filter(t=>t.name&&t.value&&y(e,t.name)).map(e=>e.expires).filter(e=>Number.isFinite(e)&&e>0).map(e=>1e3*e);if(o.length)return Math.min(...o)}(t,n)}}async function k({route:e,targetUrl:t}){let o=await p();if(!o)return"";try{let r=await o.getPassword(s,d({route:e,targetUrl:t}));if(!r)return"";let i=function(e){try{let t=JSON.parse(e);if(t?.version!==1||"string"!=typeof t.cookieHeader||"number"!=typeof t.expiresAt||!Number.isFinite(t.expiresAt))return;return{version:1,cookieHeader:t.cookieHeader,expiresAt:t.expiresAt}}catch{return}}(r);if(!i||i.expiresAt<=Date.now()||!b(e,i.cookieHeader))return"";return i.cookieHeader}catch(e){return u(`[login] Failed to read login cookie from system credential store. Cause: ${r(e)}`),""}}async function v({route:e,targetUrl:t,cookieHeader:o,expiresAt:i}){if(!b(e,o)||!i||!Number.isFinite(i)||i<=Date.now())return;let n=await p();if(n)try{await n.setPassword(s,d({route:e,targetUrl:t}),JSON.stringify({version:1,cookieHeader:o,expiresAt:i}))}catch(e){u(`[login] Failed to write login cookie to system credential store. Cause: ${r(e)}`)}}async function C(){let e=await p();if(!e?.deletePassword)return 0;let t=0;for(let o of Array.from(new Set(Object.values(f).map(({route:e,targetUrl:t})=>d({route:e,targetUrl:t})))))try{let r=await e.deletePassword(s,o);!1!==r&&(t+=1)}catch(e){if(function(e){let t=r(e).toLowerCase();return t.includes("noentry")||t.includes("no entry")||t.includes("no matching")||t.includes("no credential")||t.includes("not found")||t.includes("not exist")||t.includes("could not be found")}(e))continue;throw u(`[login] Failed to delete login cookie from system credential store. Cause: ${r(e)}`),e}return t}let P=o("node:fs/promises"),x=o("node:os"),$=o("node:path");function E(e){return $.join(x.homedir(),".doubao-apps","login-profiles",e)}async function H(e=["sso","sms"].map(e=>E(e))){let t=[];for(let o of e)await P.rm(o,{recursive:!0,force:!0}),t.push(o);return t}async function A({chromium:e,candidate:t,route:o,profileDir:r,targetUrl:i}){let n=await e.launchPersistentContext(r,{...t.launchOptions,headless:!0});try{let e=await _(n,o,i);return b(o,e.cookieHeader)?e:void 0}finally{await n.close()}}async function U(e,t){let o=e.pages()[0]??await e.newPage();await o.goto(t,{waitUntil:"domcontentloaded"})}async function N({context:e,route:t,targetUrl:o,timeoutMs:r,pollIntervalMs:i}){let n=Date.now()+r;for(;Date.now()<=n;){let r=await _(e,t,o);if(b(t,r.cookieHeader))return r;await function(e){return new Promise(t=>setTimeout(t,e))}(i)}throw Error(`Timed out waiting for ${t} login cookie after ${r}ms`)}async function O(e,t={}){let o=h(t.route),{targetUrl:r,loginUrl:n}=m[h(o)],s=t.profileDir??E(o),l=t.timeoutMs??3e5,u=t.pollIntervalMs??1e3,c=function(e){if(e.browserPath)return[{label:`custom browser at ${e.browserPath}`,launchOptions:{executablePath:e.browserPath}}];let t={label:"Google Chrome",launchOptions:{channel:"chrome"}},o={label:"Microsoft Edge",launchOptions:{channel:"msedge"}},r={label:"Playwright Chromium",launchOptions:{}};switch(function(e){if(!e||"auto"===e)return"auto";if("chrome"===e||"msedge"===e||"chromium"===e)return e;throw Error(`Unsupported login browser "${e}". Expected "auto", "chrome", "msedge", or "chromium".`)}(e.browser)){case"chrome":return[t];case"msedge":return[o];case"chromium":return[r];case"auto":return[t,o,r]}}(t),d=[];if(!t.force){if(!t.skipCachedCookie){let e=await k({route:o,targetUrl:r});if(e)return e}for(let t of c)try{let i=await A({chromium:e,candidate:t,route:o,profileDir:s,targetUrl:r});if(i)return await v({route:o,targetUrl:r,cookieHeader:i.cookieHeader,expiresAt:i.expiresAt}),i.cookieHeader;break}catch(e){d.push(a(t,e))}}for(let i of c){let c;try{c=await e.launchPersistentContext(s,{...i.launchOptions,headless:!1,viewport:{width:1120,height:820}})}catch(e){d.push(a(i,e));continue}try{t.force&&await c.clearCookies(),await U(c,n);let e=await N({context:c,route:o,targetUrl:r,timeoutMs:l,pollIntervalMs:u});return await v({route:o,targetUrl:r,cookieHeader:e.cookieHeader,expiresAt:e.expiresAt}),e.cookieHeader}finally{await c.close()}}throw Error(["Unable to launch a browser for CLI login.",d.some(e=>e.includes("optional fallback browser is not installed"))?"Optional Playwright Chromium fallback browser is not installed.":"","Recommended: install Google Chrome or Microsoft Edge and retry.","Alternative: pass --login-browser-path to a Chromium-based browser executable.","Fallback: if you cannot install Chrome or Edge, install Playwright Chromium with:",` ${i}`,d.length?`Launch failures:
|
|
2
2
|
${d.map(e=>`- ${e}`).join("\n")}`:""].filter(Boolean).join("\n"))}async function S(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)];return await k({route:t,targetUrl:o})||void 0}async function M(e={}){let t=h(e.route),{targetUrl:o}=m[h(t)],r=e.profileDir??E(t);if(!e.force){let e=await k({route:t,targetUrl:o});if(e)return e}return O(await n(),{...e,route:t,profileDir:r,skipCachedCookie:!0})}async function F(){let e=await H();return{credentialEntriesDeleted:await C(),profileDirsDeleted:e}}export{F as clearLoginState,M as ensureLoginCookie,S as getCachedLoginCookie};
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
"build": "doubao build"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@byted-doubao-apps/framework": "0.3.0-rc.
|
|
10
|
-
"@byted-doubao-apps/template": "0.3.0-rc.
|
|
9
|
+
"@byted-doubao-apps/framework": "0.3.0-rc.3",
|
|
10
|
+
"@byted-doubao-apps/template": "0.3.0-rc.3"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@byted-doubao-apps/kit": "0.3.0-rc.
|
|
13
|
+
"@byted-doubao-apps/kit": "0.3.0-rc.3",
|
|
14
14
|
"typescript": "6.0.3"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"test": "rstest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@byted-doubao-apps/framework": "0.3.0-rc.
|
|
13
|
-
"@byted-doubao-apps/template": "0.3.0-rc.
|
|
12
|
+
"@byted-doubao-apps/framework": "0.3.0-rc.3",
|
|
13
|
+
"@byted-doubao-apps/template": "0.3.0-rc.3"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@byted-doubao-apps/kit": "0.3.0-rc.
|
|
16
|
+
"@byted-doubao-apps/kit": "0.3.0-rc.3",
|
|
17
17
|
"@rstest/core": "^0.11.0",
|
|
18
18
|
"typescript": "6.0.3"
|
|
19
19
|
}
|
package/dist/assets/web-sdk-debugger/__doubao_web_sdk_native_modules/applet-bridge-module-core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let runtimeBridgeController;function utils_isRecord(e){return"object"==typeof e&&null!==e}function isBridgeCallMessage(e){return(null==e?void 0:e.type)==="call"}function isBridgeCallbackMessage(e){return(null==e?void 0:e.type)==="callback"}function isBridgeEventMessage(e){return(null==e?void 0:e.type)==="event"}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let RESULT_CODE_SUCCESS=1,RESULT_CODE_FAILED=0;class BridgeAPIError extends Error{constructor(e,t,r=e){super(e),_define_property(this,"errNo",void 0),_define_property(this,"errMsg",void 0),this.errNo=t,this.errMsg=r,Object.setPrototypeOf(this,new.target.prototype),this.name="BridgeAPIError"}}function bridge_api_createSuccessCallback(e,t){return{type:"callback",callbackId:e.callbackId,params:{code:1,data:t}}}function createFailedCallback(e,t,r=-1,n=t){return{type:"callback",callbackId:e.callbackId,params:{code:0,msg:t,errNo:r,errMsg:n}}}function getErrorMessage(e){return e instanceof Error?e.message:String(e)}function createFailedCallbackFromError(e,t){return t instanceof BridgeAPIError?createFailedCallback(e,t.message,t.errNo,t.errMsg):createFailedCallback(e,getErrorMessage(t))}function dispatchBridgeAPI(e,t,r={}){if(!isBridgeCallMessage(e))return;let n=t[e.name];if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e,r);if(t instanceof Promise)return t.catch(t=>createFailedCallbackFromError(e,t));return null!=t?t:createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`)}catch(t){return createFailedCallbackFromError(e,t)}}function setRuntimeBridgeController(e){return runtimeBridgeController=e,()=>{runtimeBridgeController===e&&(runtimeBridgeController=void 0)}}function getCurrentPageStack(){var e;return null!=(e=null==runtimeBridgeController?void 0:runtimeBridgeController.getCurrentPages())?e:[]}function page_stack_getRuntimePackageInfo(){return null==runtimeBridgeController?void 0:runtimeBridgeController.getPackageInfo()}function navigateRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.navigateTo(e),!!runtimeBridgeController}function redirectRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.redirectTo(e),!!runtimeBridgeController}function reLaunchRuntime(e){return null==runtimeBridgeController||runtimeBridgeController.reLaunch(e),!!runtimeBridgeController}function navigateRuntimeBack(e){return null==runtimeBridgeController||runtimeBridgeController.navigateBack(e),!!runtimeBridgeController}function exitRuntimeApp(){return null==runtimeBridgeController||runtimeBridgeController.exitApp(),!!runtimeBridgeController}function closeRuntimePage(e){return null==runtimeBridgeController||runtimeBridgeController.close(e),!!runtimeBridgeController}let MENU_BUTTON_WIDTH=84,MENU_BUTTON_HEIGHT=36,MENU_BUTTON_RIGHT=12,MENU_BUTTON_TOP=4;function getMenuButtonGlobalProps(e){var t;return null!=e?e:null==(t=globalThis.lynx)?void 0:t.__globalProps}function menu_button_getMenuButtonBoundingClientRect(e){let{screenWidth:t,statusBarHeight:r}=getMenuButtonGlobalProps(e),n=Math.round(r)+4,i=Math.round(t)-12;return{bottom:n+36,height:36,left:i-84,right:i,top:n,width:84}}function registry_define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function normalizeRegistration(e){var t;return"function"==typeof e?{handler:e,canIUse:!0}:{...e,canIUse:null==(t=e.canIUse)||t}}class BridgeAPIRegistry{register(e,t,r={}){if(!r.override&&this.registry.has(e))throw Error(`Bridge API handler ${e} is already registered`);let n=this.registry.get(e),i=normalizeRegistration(t);return this.registry.set(e,i),this.handlers[e]=i.handler,()=>{if(this.registry.get(e)===i){if(n){this.registry.set(e,n),this.handlers[e]=n.handler;return}this.registry.delete(e),delete this.handlers[e]}}}registerMany(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.register(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}get(e){var t;return null==(t=this.registry.get(e))?void 0:t.handler}getSyncResults(e){let t={};for(let[r,n]of this.registry)n.syncResult&&this.canIUse(r,e)&&(t[r]="function"==typeof n.syncResult?n.syncResult({...e,apiRegistry:this}):n.syncResult);return t}registerEventSource(e,t,r={}){var n;if(!r.override&&this.eventSources.has(e))throw Error(`Bridge event source ${e} is already registered`);let i=this.eventSources.get(e),o="function"==typeof t?{source:t}:t;return this.stopEventSource(e),this.eventSources.set(e,o),(null!=(n=this.eventSourceRetainCounts.get(e))?n:0)>0&&this.startEventSource(e,o),()=>{if(this.eventSources.get(e)===o){if(this.stopEventSource(e),i){var t;this.eventSources.set(e,i),(null!=(t=this.eventSourceRetainCounts.get(e))?t:0)>0&&this.startEventSource(e,i);return}this.eventSources.delete(e)}}}registerEventSources(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.registerEventSource(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}canIUse(e,t){var r;let n=this.registry.get(e);if(n)return"function"==typeof n.canIUse?n.canIUse({...t,apiRegistry:this}):n.canIUse;let i=this.eventSources.get(e);return!!i&&("function"==typeof i.canIUse?i.canIUse({...t,apiRegistry:this}):null==(r=i.canIUse)||r)}dispatch(e,t={}){if(!isBridgeCallMessage(e))return;let r={...t,apiRegistry:this};if(this.canIUse(e.name,r))return dispatchBridgeAPI(e,this.handlers,r);let n=r.onUnsupportedAPI;if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e.name);return t instanceof Promise?t.then(()=>bridge_api_createSuccessCallback(e,{})).catch(t=>createFailedCallbackFromError(e,t)):bridge_api_createSuccessCallback(e,{})}catch(t){return createFailedCallbackFromError(e,t)}}getSupportedNames(e){return[...new Set([...this.registry.keys(),...this.eventSources.keys()])].filter(t=>this.canIUse(t,e))}emitEvent(e,t){let r=!1;for(let n of this.eventControllers)r=n.emit(e,t)||r;return r}createEventController(e){return new BridgeEventController(this,e)}fork(){let e=new BridgeAPIRegistry(this.getRegistrations());return e.registerEventSources(this.getEventSources()),e}getRegistrations(){return Object.fromEntries(this.registry)}getEventSources(){return Object.fromEntries(this.eventSources)}attachEventController(e){return this.eventControllers.add(e),()=>{this.eventControllers.delete(e)}}retainEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(this.eventSourceRetainCounts.set(e,r+1),r>0)return;let n=this.eventSources.get(e);n&&this.startEventSource(e,n)}releaseEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(r<=1){this.eventSourceRetainCounts.delete(e),this.stopEventSource(e);return}this.eventSourceRetainCounts.set(e,r-1)}startEventSource(e,t){this.stopEventSource(e);let r=t.source(t=>{this.emitEvent(e,t)});"function"==typeof r&&this.eventSourceCleanups.set(e,r)}stopEventSource(e){var t;null==(t=this.eventSourceCleanups.get(e))||t(),this.eventSourceCleanups.delete(e)}constructor(e){registry_define_property(this,"registry",new Map),registry_define_property(this,"eventSources",new Map),registry_define_property(this,"eventSourceCleanups",new Map),registry_define_property(this,"eventSourceRetainCounts",new Map),registry_define_property(this,"eventControllers",new Set),registry_define_property(this,"handlers",{}),e&&this.registerMany(e)}}class BridgeEventController{subscribe(e){this.subscribedEventNames.has(e)||(this.subscribedEventNames.add(e),this.apiRegistry.retainEventSource(e))}unsubscribe(e){this.subscribedEventNames.delete(e)&&this.apiRegistry.releaseEventSource(e)}emit(e,t){return!!this.subscribedEventNames.has(e)&&(this.dispatch(e,t),!0)}destroy(){for(let e of this.subscribedEventNames)this.apiRegistry.releaseEventSource(e);this.subscribedEventNames.clear(),this.cleanupRegistry()}constructor(e,t){registry_define_property(this,"apiRegistry",void 0),registry_define_property(this,"dispatch",void 0),registry_define_property(this,"cleanupRegistry",void 0),registry_define_property(this,"subscribedEventNames",void 0),this.apiRegistry=e,this.dispatch=t,this.subscribedEventNames=new Set,this.cleanupRegistry=this.apiRegistry.attachEventController(this)}}let registry_defaultBridgeAPIRegistry=new BridgeAPIRegistry,bridgeAPIHandlers=registry_defaultBridgeAPIRegistry.handlers;function registerBridgeAPIHandler(e,t,r={}){return registry_defaultBridgeAPIRegistry.register(e,t,r)}function registerBridgeAPIHandlers(e,t={}){return registry_defaultBridgeAPIRegistry.registerMany(e,t)}function canUseRegisteredBridgeAPI(e,t){return registry_defaultBridgeAPIRegistry.canIUse(e,t)}function getRegisteredBridgeAPINames(e){return registry_defaultBridgeAPIRegistry.getSupportedNames(e)}function registerBridgeEventSource(e,t,r={}){return registry_defaultBridgeAPIRegistry.registerEventSource(e,t,r)}function registerBridgeEventSources(e,t={}){return registry_defaultBridgeAPIRegistry.registerEventSources(e,t)}function createBridgeAPIRegistry(e){return new BridgeAPIRegistry(e)}function system_getSupportedWebBridgeAPINames(e=registry_defaultBridgeAPIRegistry){return e.getSupportedNames({apiRegistry:e})}function canUseWebBridgeAPI(e,t=defaultBridgeAPIRegistry){return t.canIUse(e,{apiRegistry:t})}function getLanguage(){return(navigator.language||"zh-CN").replace("-","_")}function getTheme(){var e,t,r;return(null==(t=(r=window).matchMedia)||null==(e=t.call(r,"(prefers-color-scheme: dark)"))?void 0:e.matches)?"dark":"light"}function getSDKVersion(){return"u"<typeof DoubaoAppsSDKVersion?void 0:DoubaoAppsSDKVersion}function getUserAgentData(){return navigator.userAgentData}function getBrowserBrand(){var e,t;let r=null==(t=getUserAgentData())?void 0:t.brands,n=null==r?void 0:r.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==n?void 0:n.brand)return n.brand;let i=null!=(e=navigator.userAgent)?e:"";return/edg\//i.test(i)?"Microsoft Edge":/chrome|crios/i.test(i)?"Chrome":/firefox|fxios/i.test(i)?"Firefox":/safari/i.test(i)?"Safari":"Browser"}function getBrowserVersion(){var e,t,r,n;let i=null==(r=getUserAgentData())?void 0:r.brands,o=null==i?void 0:i.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==o?void 0:o.version)return o.version;let a=null!=(e=navigator.userAgent)?e:"";return null!=(t=null==(n=/(?:edg|chrome|crios|firefox|fxios|version)\/([\d.]+)/i.exec(a))?void 0:n[1])?t:void 0}function getPlatformInfo(){var e,t,r,n,i;let o=null!=(e=navigator.userAgent)?e:"",a=null!=(t=navigator.platform)?t:"",s=null!=(r=null==(i=getUserAgentData())?void 0:i.platform)?r:"",l=`${s} ${a} ${o}`,u=null!=(n=navigator.maxTouchPoints)?n:0;return/android/i.test(l)?{platform:"android",brand:"Android"}:/iphone/i.test(l)?{platform:"ios",brand:"iPhone"}:/ipad/i.test(l)||/mac/i.test(a)&&u>1?{platform:"ios",brand:"iPad"}:/mac/i.test(l)?{platform:"mac",brand:"Mac"}:/win/i.test(l)?{platform:"windows",brand:"Windows"}:/linux/i.test(l)?{platform:"linux",brand:"Linux"}:{platform:"web",brand:"Browser"}}function getPackageInfo(e=getRuntimePackageInfo()){var t,r;return{appId:null!=(t=null==e?void 0:e.appId)?t:"",name:null!=(r=null==e?void 0:e.name)?r:"",iconSrc:null==e?void 0:e.iconSrc}}function getViewportWidth(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.width)?t:window.innerWidth)?e:0)}function getViewportHeight(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.height)?t:window.innerHeight)?e:0)}function getWindowInfo(){var e,t,r,n,i,o,a;let s=getViewportWidth(),l=getViewportHeight(),u=null!=(e=window.devicePixelRatio)?e:1,c=Math.round(null!=(t=null==(i=window.screen)?void 0:i.width)?t:s),g=Math.round(null!=(r=null==(o=window.screen)?void 0:o.height)?r:l),d=Math.round(null!=(n=null==(a=window.visualViewport)?void 0:a.offsetTop)?n:0);return{pixelRatio:u,screenWidth:c,screenHeight:g,windowWidth:s,windowHeight:l,statusBarHeight:d,safeArea:{left:0,right:s,top:d,bottom:l,width:s,height:Math.max(0,l-d)},screenTop:d}}function getPlatform(){return getPlatformInfo().platform}function getSystemVersion(){var e,t,r,n,i,o;let a=null!=(e=navigator.userAgent)?e:"",s=getPlatform();return"android"===s?null==(t=/android\s+([\d.]+)/i.exec(a))?void 0:t[1]:"ios"===s?null==(n=/(?:iphone os|cpu os)\s+([\d_]+)/i.exec(a))||null==(r=n[1])?void 0:r.replace(/_/g,"."):"mac"===s?null==(o=/mac os x\s+([\d_]+)/i.exec(a))||null==(i=o[1])?void 0:i.replace(/_/g,"."):void 0}function getSystemNameAndVersion(){let e=getPlatform(),t=getSystemVersion();if("android"===e)return t?`Android ${t}`:"Android";if("ios"===e)return t?`iOS ${t}`:"iOS";if("mac"===e)return t?`macOS ${t}`:"macOS";if("windows"===e)return"Windows";if("linux"===e)return"Linux";let r=getBrowserVersion(),n=getBrowserBrand();return r?`${n} ${r}`:"Web"}function getDeviceModel(){var e,t,r;let n=null!=(e=navigator.userAgent)?e:"",i=getPlatform();return"android"===i?(null==(r=/android\s+[\d.]+;\s*([^;)]+)/i.exec(n))||null==(t=r[1])?void 0:t.trim())||"Android":"ios"===i?getPlatformInfo().brand:"mac"===i||"windows"===i||"linux"===i?navigator.platform||getPlatformInfo().brand:getBrowserBrand()}function getMemorySize(){let e=navigator.deviceMemory;return"number"==typeof e&&Number.isFinite(e)?String(Math.round(1024*e)):""}function getCpuType(){return navigator.platform||getPlatform()}function getDefaultNetworkStatus(){return{isConnected:!0,networkType:"unknown",hasSystemProxy:!1,weakNet:!1}}function getDeviceInfo(){let e=getPlatformInfo(),t=getCpuType();return{abi:t,deviceAbi:t,benchmarkLevel:-1,brand:e.brand,model:getDeviceModel(),system:getSystemNameAndVersion(),platform:e.platform,cpuType:t,memorySize:getMemorySize()}}function getWebSystemGlobalProps(){let e=getDeviceInfo(),t=getWindowInfo(),r=t.windowWidth>t.windowHeight;return{os:e.platform,osVersion:getSystemVersion(),deviceBrand:e.brand,deviceModel:e.model,deviceType:e.model,channel:"debug",screenOrientation:+!!r,isLandscape:+!!r,abi:e.abi}}function getSystemInfo(){let e=getWindowInfo(),t=getDeviceInfo();return{...e,brand:t.brand,model:t.model,language:getLanguage(),version:getBrowserVersion(),system:t.system,platform:t.platform,SDKVersion:getSDKVersion(),theme:getTheme(),benchmarkLevel:-1,enableDebug:!0,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait",abi:t.abi}}function getSystemSetting(){let e=getWindowInfo();return{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:getDefaultNetworkStatus().isConnected,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait"}}function getNetworkType(){var e,t;let r=getDefaultNetworkStatus();return{networkType:r.networkType,signalStrength:r.signalStrength,hasSystemProxy:null!=(e=r.hasSystemProxy)&&e,weakNet:null!=(t=r.weakNet)&&t}}function getAppBaseInfo(e=getRuntimePackageInfo()){return{SDKVersion:getSDKVersion(),enableDebug:!0,host:{appId:getPackageInfo(e).appId},language:getLanguage(),version:getBrowserVersion(),theme:getTheme()}}function getAccountInfo(e=getRuntimePackageInfo()){var t;return{miniProgram:{appId:getPackageInfo(e).appId,envVersion:"develop",version:null!=(t=null==e?void 0:e.versionName)?t:""}}}function system_getSystemSyncBridgeAPIResults(e,t,r){return(null!=t?t:defaultBridgeAPIRegistry).getSyncResults({globalProps:r,packageInfo:e})}function getSyncPackageInfo(e){return null==e?void 0:e.packageInfo}let systemHandlers=null,storage_core_WEB_STORAGE_PREFIX="doubao-web-sdk:storage:",WEB_STORAGE_LIMIT_KB=10240,WEB_STORAGE_MAX_KEY_LENGTH=1024,WEB_STORAGE_MAX_ITEM_SIZE_BYTES=1048576,WEB_STORAGE_LIMIT_BYTES=0xa00000,WEB_STORAGE_TOTAL_SIZE_EXCEEDED_ERROR=1600002;function storage_core_getWebStorageKey(e){return`${storage_core_WEB_STORAGE_PREFIX}${e}`}function validateWebStorageKey(e){if("string"!=typeof e)throw Error("key must be a string");if(0===e.length)throw Error("key must not be empty");if(e.length>1024)throw Error("key length must be less than or equal to 1024");return e}function validateWebStorageData(e){if(getWebStorageDataSize(e)>1048576)throw Error("data size must be less than or equal to 1048576 bytes")}function getWebStorageDataSize(e){return new TextEncoder().encode(e).byteLength}function getWebStorageSnapshotSize(e){return Object.values(e).reduce((e,t)=>e+getWebStorageDataSize(t),0)}function validateWebStorageTotalSize(e){if(e>WEB_STORAGE_LIMIT_BYTES)throw new BridgeAPIError("total storage size exceeded",1600002)}function validateWebStorageWrite(e,t,r){let n=validateWebStorageKey(t);validateWebStorageData(r);let i=Object.prototype.hasOwnProperty.call(e,n)?e[n]:void 0;return validateWebStorageTotalSize(getWebStorageSnapshotSize(e)-(void 0===i?0:getWebStorageDataSize(i))+getWebStorageDataSize(r)),n}function getWebStorageItemFromSnapshot(e,t){return e[validateWebStorageKey(t)]}function storage_core_validateWebStorageSnapshot(e){for(let[t,r]of Object.entries(e))validateWebStorageKey(t),validateWebStorageData(r);validateWebStorageTotalSize(getWebStorageSnapshotSize(e))}function storage_core_getWebStorageSnapshotFromStorage(e){let t={};for(let n=0;n<e.length;n+=1){let i=e.key(n);if(null==i?void 0:i.startsWith(storage_core_WEB_STORAGE_PREFIX)){var r;t[i.slice(storage_core_WEB_STORAGE_PREFIX.length)]=null!=(r=e.getItem(i))?r:""}}return t}function getWebStorageInfoFromSnapshot(e){return{keys:Object.keys(e),currentSize:Math.ceil(getWebStorageSnapshotSize(e)/1024),limitSize:10240}}let WEB_SYNC_BRIDGE_GLOBAL_PROP="__DOUBAO_WEB_SDK_SYNC_BRIDGE__",WEB_SYNC_BRIDGE_PERSIST_API="doubao.__webSyncBridgePersist",WEB_FILE_SYSTEM_STORAGE_KEY="doubao-web-sdk:file-system",WEB_SYNC_BRIDGE_URL_PARAM="__doubao_sync_bridge";function getStringProperty(e,t){if(!utils_isRecord(e))return;let r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function getPackageInfoFromGlobalProps(e){if(!utils_isRecord(e)||!utils_isRecord(e.packageInfo))return;let{appId:t,iconSrc:r,name:n,versionName:i}=e.packageInfo;return{appId:"string"==typeof t?t:void 0,iconSrc:"string"==typeof r?r:void 0,name:"string"==typeof n?n:void 0,versionName:"string"==typeof i?i:void 0}}function getWebFileSystemNamespace(e){var t,r,n,i;let o=getPackageInfoFromGlobalProps(e),a=null!=(t=null!=(r=null==o?void 0:o.appId)?r:getStringProperty(e,"appName"))?t:"unknown-app",s=null!=(n=null!=(i=getStringProperty(e,"userId"))?i:getStringProperty(e,"userID"))?n:"anonymous";return`${encodeURIComponent(a)}:${encodeURIComponent(s)}`}function createEmptyWebFileSystemSnapshot(){let e=Date.now();return{entries:{"/":{type:"directory",createTime:e,lastModifiedTime:e},"/temp":{type:"directory",createTime:e,lastModifiedTime:e},"/user":{type:"directory",createTime:e,lastModifiedTime:e}}}}function getStorageSnapshot(){return getWebStorageSnapshotFromStorage(localStorage)}function getWebFileSystemStorageKey(e){return`doubao-web-sdk:file-system:${encodeURIComponent(e)}`}function getFileSystemSnapshot(e){let t=localStorage.getItem(getWebFileSystemStorageKey(e));if(!t)return createEmptyWebFileSystemSnapshot();try{let e=JSON.parse(t);if(isRecord(e)&&isRecord(e.entries))return e}catch(e){}return createEmptyWebFileSystemSnapshot()}function createWebSyncBridgeGlobalValue(e,t,r=getWebFileSystemNamespace(e)){let n=getSupportedWebBridgeAPINames(t);return{fileSystemNamespace:r,fileSystemSnapshot:getFileSystemSnapshot(r),apiResults:getSystemSyncBridgeAPIResults(getPackageInfoFromGlobalProps(e),t,e),storageSnapshot:getStorageSnapshot(),supportedAPIs:n}}function isWebSyncBridgeGlobalValue(e){return utils_isRecord(e)&&"string"==typeof e.fileSystemNamespace&&utils_isRecord(e.fileSystemSnapshot)&&utils_isRecord(e.apiResults)&&utils_isRecord(e.storageSnapshot)&&Array.isArray(e.supportedAPIs)}function addWebSyncBridgeDataToUrl(e,t){let r=new URL(e),n=new URLSearchParams(r.hash.slice(1));return n.set(WEB_SYNC_BRIDGE_URL_PARAM,JSON.stringify({...t,fileSystemSnapshot:createEmptyWebFileSystemSnapshot()})),r.hash=n.toString(),r.href}function getWebSyncBridgeDataFromUrl(e){try{let t=new URLSearchParams(new URL(e).hash.slice(1)).get(WEB_SYNC_BRIDGE_URL_PARAM);if(!t)return;let r=JSON.parse(t);return isWebSyncBridgeGlobalValue(r)?r:void 0}catch(e){return}}function persistWebStorageSnapshot(e){let t=[];validateWebStorageSnapshot(e);for(let e=0;e<localStorage.length;e+=1){let r=localStorage.key(e);(null==r?void 0:r.startsWith(WEB_STORAGE_PREFIX))&&t.push(r)}for(let e of t)localStorage.removeItem(e);for(let[t,r]of Object.entries(e))localStorage.setItem(getWebStorageKey(t),r)}function persistWebFileSystemSnapshot(e,t){localStorage.setItem(getWebFileSystemStorageKey(e),JSON.stringify(t))}function sync_file_system_getFileSystemSnapshot(e){utils_isRecord(e.fileSystemSnapshot)||(e.fileSystemSnapshot={entries:{}}),utils_isRecord(e.fileSystemSnapshot.entries)||(e.fileSystemSnapshot.entries={});let t=Date.now();for(let n of["/","/temp","/user"]){var r;(null==(r=e.fileSystemSnapshot.entries[n])?void 0:r.type)!=="directory"&&(e.fileSystemSnapshot.entries[n]={type:"directory",createTime:t,lastModifiedTime:t})}return e.fileSystemSnapshot}function getStringParam(e,t){let r=e[t];if("string"!=typeof r)throw Error(`${t} must be a string`);return r}function getOptionalStringParam(e,t){let r=e[t];return"string"==typeof r?r:void 0}function decodePathSegment(e){let t;if(0===e.length||e.includes("?")||e.includes("#")||/%(?![0-9a-f]{2})/i.test(e))throw Error("invalid applet file path");try{t=decodeURIComponent(e)}catch(e){throw Error("invalid applet file path")}if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw Error("invalid applet file path");return t}function normalizePath(e){let t=/^appletfile:\/\/(user|temp)(?:\/(.*))?$/.exec(e);if(!t)throw Error("path must use appletfile://user or appletfile://temp");let r=t[1],n=t[2];if(void 0===n||0===n.length)return`/${r}`;let i=n.split("/").map(decodePathSegment);return`/${r}/${i.join("/")}`}function getParentPath(e){let t=normalizePath(e);if("/temp"===t||"/user"===t)return"";let r=t.lastIndexOf("/");return t.slice(0,r)}function getBaseName(e){let t=normalizePath(e);return"/temp"===t||"/user"===t?"":t.slice(t.lastIndexOf("/")+1)}function encodePathSegment(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function toAppletFilePath(e){let t=e.split("/").filter(Boolean),r=t.shift();if("temp"!==r&&"user"!==r)throw Error(`invalid applet file path: ${e}`);let n=t.map(encodePathSegment).join("/");return n.length>0?`appletfile://${r}/${n}`:`appletfile://${r}`}function getEntry(e,t){return e.entries[normalizePath(t)]}function assertFile(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"file"!==n.type)throw Error(`file not found: ${r}`);return n}function assertDirectory(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"directory"!==n.type)throw Error(`directory not found: ${r}`);return n}function assertParentDirectory(e,t){var r;let n=getParentPath(t);if(!n)throw Error(`invalid parent directory: ${t}`);if((null==(r=e.entries[n])?void 0:r.type)!=="directory")throw Error(`directory not found: ${n}`)}function createParentDirectories(e,t){let r=getParentPath(t);if(!r)throw Error(`invalid parent directory: ${t}`);let n=Date.now(),i="";for(let t of r.split("/").filter(Boolean)){i+=`/${t}`;let r=e.entries[i];if((null==r?void 0:r.type)==="file")throw Error(`path is not a directory: ${i}`);r||(e.entries[i]={type:"directory",createTime:n,lastModifiedTime:n})}}function bytesToBase64(e){let t="";for(let r=0;r<e.length;r+=1)t+=String.fromCharCode(e[r]);return btoa(t)}function base64ToBytes(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)r[e]=t.charCodeAt(e);return r}function encodeFileData(e,t){let r="string"==typeof e?e:String(null!=e?e:"");return"base64"===t?base64ToBytes(r):new TextEncoder().encode(r)}function decodeFileData(e,t){return"utf-8"===t?new TextDecoder().decode(base64ToBytes(e)):e}function getChildNames(e,t){let r=normalizePath(t),n="/"===r?"/":`${r}/`,i=new Set;for(let t of Object.keys(e.entries)){if(t===r||!t.startsWith(n))continue;let e=t.slice(n.length).split("/")[0];e&&i.add(e)}return[...i]}function writeFileEntry(e,t,r){var n;let i=normalizePath(t);createParentDirectories(e,t);let o=Date.now(),a=e.entries[i];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${i}`);e.entries[i]={type:"file",data:bytesToBase64(r),createTime:null!=(n=null==a?void 0:a.createTime)?n:o,lastModifiedTime:o}}function readFile(e,t){return{data:decodeFileData(assertFile(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath")).data,getOptionalStringParam(t,"encoding"))}}function writeFile(e,t,r){return writeFileEntry(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath"),encodeFileData(t.data,getOptionalStringParam(t,"encoding"))),r(),{}}function appendFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i),a=n.entries[o];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${o}`);let s=(null==a?void 0:a.type)==="file"?base64ToBytes(a.data):new Uint8Array,l=encodeFileData(t.data,getOptionalStringParam(t,"encoding")),u=new Uint8Array(s.length+l.length);return u.set(s),u.set(l,s.length),writeFileEntry(n,i,u),r(),{}}function accessPath(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"path");if(!getEntry(r,n))throw Error(`path not found: ${n}`);return{}}function mkdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i),a=Date.now(),s=n.entries[o];if((null==s?void 0:s.type)==="directory")return{};if(s)throw Error(`path is not a directory: ${o}`);if(!0===t.recursive){let e="";for(let t of o.split("/").filter(Boolean))if(e+=`/${t}`,n.entries[e]||(n.entries[e]={type:"directory",createTime:a,lastModifiedTime:a}),"directory"!==n.entries[e].type)throw Error(`path is not a directory: ${e}`)}else assertParentDirectory(n,i),n.entries[o]={type:"directory",createTime:a,lastModifiedTime:a};return r(),{}}function rmdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i);if("/temp"===o||"/user"===o)throw Error("cannot remove root directory");assertDirectory(n,i);let a=`${o}/`,s=Object.keys(n.entries).filter(e=>e.startsWith(a));if(!0!==t.recursive&&s.length>0)throw Error(`directory is not empty: ${o}`);for(let e of s)delete n.entries[e];return delete n.entries[o],r(),{}}function readdir(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"dirPath");return assertDirectory(r,n),{files:getChildNames(r,n)}}function unlink(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i);return assertFile(n,i),delete n.entries[o],r(),{}}function stat(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=normalizePath(getStringParam(t,"path")),i=r.entries[n];if(!i)throw Error(`path not found: ${n}`);return{size:"file"===i.type?base64ToBytes(i.data).length:0,lastModifiedTime:i.lastModifiedTime,isDirectory:"directory"===i.type}}function copyFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=assertFile(n,getStringParam(t,"srcPath"));return writeFileEntry(n,getStringParam(t,"destPath"),base64ToBytes(i.data)),r(),{}}function rename(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"oldPath"),o=getStringParam(t,"newPath"),a=normalizePath(i),s=normalizePath(o);if(!n.entries[a])throw Error(`path not found: ${a}`);if("/temp"===a||"/user"===a)throw Error("cannot rename root directory");for(let e of(createParentDirectories(n,o),Object.keys(n.entries)))if(e===a||e.startsWith(`${a}/`)){let t=s+e.slice(a.length);n.entries[t]=n.entries[e],delete n.entries[e]}return r(),{}}function truncate(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=assertFile(n,i),a="number"==typeof t.length?t.length:0,s=base64ToBytes(o.data),l=new Uint8Array(a);return l.set(s.slice(0,a)),writeFileEntry(n,i,l),r(),{}}function saveFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"tempFilePath"),o=assertFile(n,i),a=getOptionalStringParam(t,"filePath"),s=a&&a.length>0?a:toAppletFilePath(`/user/${Date.now()}_${getBaseName(i)}`);return writeFileEntry(n,s,base64ToBytes(o.data)),delete n.entries[normalizePath(i)],r(),{savedFilePath:s}}let fileSystemBridgeHandlers={"doubao.readFile":readFile,"doubao.writeFile":writeFile,"doubao.appendFile":appendFile,"doubao.access":accessPath,"doubao.mkdir":mkdir,"doubao.rmdir":rmdir,"doubao.readdir":readdir,"doubao.unlink":unlink,"doubao.stat":stat,"doubao.copyFile":copyFile,"doubao.rename":rename,"doubao.truncate":truncate,"doubao.saveFile":saveFile},nextInternalCallbackId=Date.now();function isPromise(e){return utils_isRecord(e)&&"function"==typeof e.then}function sync_bridge_runtime_getPackageInfoFromGlobalProps(e){var t,r,n,i,o,a,s;let l=null!=(t=e.packageInfo)?t:{};return{appId:null!=(r=null!=(n=l.appId)?n:e.appName)?r:"",iconSrc:l.iconSrc,name:null!=(i=null!=(o=l.name)?o:e.appName)?i:"",versionName:null!=(a=null!=(s=l.versionName)?s:e.appVersion)?a:""}}function createFallbackWindowInfo(){return{pixelRatio:1,screenWidth:0,screenHeight:0,windowWidth:0,windowHeight:0,statusBarHeight:0,safeArea:{left:0,right:0,top:0,bottom:0,width:0,height:0},screenTop:0}}function createFallbackDeviceInfo(){return{abi:"web",deviceAbi:"web",benchmarkLevel:-1,brand:"Browser",model:"Browser",system:"Web",platform:"web",cpuType:"web",memorySize:""}}function createFallbackSyncBridgeData(e){var t,r;let n=sync_bridge_runtime_getPackageInfoFromGlobalProps(e),i=createFallbackWindowInfo(),o=createFallbackDeviceInfo(),a=null!=(t=e.language)?t:"zh_CN",s=null!=(r=e.appTheme)?r:"light",l=e.appVersion,u="string"==typeof DoubaoAppsSDKVersion?DoubaoAppsSDKVersion:"";return{fileSystemNamespace:getWebFileSystemNamespace(e),fileSystemSnapshot:createEmptyWebFileSystemSnapshot(),apiResults:{"doubao.authorize":{},"doubao.getAccountInfo":{miniProgram:{appId:n.appId,envVersion:"develop",version:n.versionName}},"doubao.getAppBaseInfo":{SDKVersion:u,enableDebug:!0,host:{appId:n.appId},language:a,version:l,theme:s},"doubao.getMenuButtonBoundingClientRect":menu_button_getMenuButtonBoundingClientRect(e),"doubao.getPackageInfo":{appId:n.appId,name:n.name,iconSrc:n.iconSrc},"doubao.getSystemInfo":{...i,brand:o.brand,model:o.model,language:a,version:l,system:o.system,platform:o.platform,SDKVersion:u,theme:s,benchmarkLevel:-1,enableDebug:!0,deviceOrientation:"portrait",abi:o.abi},"doubao.getSystemSetting":{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:!0,deviceOrientation:"portrait"},"doubao.getWindowInfo":i,"doubao.getDeviceInfo":o,"doubao.getNetworkType":{networkType:"unknown",hasSystemProxy:!1,weakNet:!1}},storageSnapshot:{},supportedAPIs:system_getSupportedWebBridgeAPINames()}}function resolveSyncBridgeData(e){var t;let r=null==(t=globalThis.lynx)?void 0:t.__globalProps;if(!r)return e;let n=r[WEB_SYNC_BRIDGE_GLOBAL_PROP];if(n)return n;let i=createFallbackSyncBridgeData(r);return r[WEB_SYNC_BRIDGE_GLOBAL_PROP]=i,i}function sync_bridge_runtime_getStorageSnapshot(e){return utils_isRecord(e.storageSnapshot)||(e.storageSnapshot={}),e.storageSnapshot}function createPersistMessage(e){return{type:"call",name:"doubao.__webSyncBridgePersist",params:{fileSystemNamespace:e.fileSystemNamespace,fileSystemSnapshot:e.fileSystemSnapshot,storageSnapshot:e.storageSnapshot},callbackId:nextInternalCallbackId++}}function persistSyncBridgeState(e,t){let r=e("postMessage",createPersistMessage(t));isPromise(r)&&r.catch(()=>{})}function getLocalStorage(){try{return globalThis.localStorage}catch(e){return}}function setLocalStorageItem(e,t){var r;null==(r=getLocalStorage())||r.setItem(storage_core_getWebStorageKey(e),t)}function removeLocalStorageItem(e){var t;null==(t=getLocalStorage())||t.removeItem(storage_core_getWebStorageKey(e))}function clearLocalStorageItems(e){let t=getLocalStorage();if(t)for(let r of Object.keys(e))t.removeItem(storage_core_getWebStorageKey(r))}function setStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=String(t.data),o=validateWebStorageWrite(n,t.key,i);return setLocalStorageItem(o,i),n[o]=i,r(),{}}function getStorage(e,t){return{data:getWebStorageItemFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e),t.key)}}function removeStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=validateWebStorageKey(t.key);return delete n[i],removeLocalStorageItem(i),r(),{}}function clearStorage(e,t,r){return clearLocalStorageItems(sync_bridge_runtime_getStorageSnapshot(e)),e.storageSnapshot={},r(),{}}function getStorageInfo(e){return getWebStorageInfoFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e))}let localBridgeHandlers={"doubao.setStorage":setStorage,"doubao.getStorage":getStorage,"doubao.removeStorage":removeStorage,"doubao.clearStorage":clearStorage,"doubao.getStorageInfo":getStorageInfo,...fileSystemBridgeHandlers};function canDispatchLocalBridgeAPI(e){return isBridgeCallMessage(e)&&Object.prototype.hasOwnProperty.call(localBridgeHandlers,e.name)}function dispatchSyncBridgeAPI(e,t,r){if(!isBridgeCallMessage(e))return;let n=resolveSyncBridgeData(r);if(!n)return createFailedCallback(e,"Sync bridge data is not available in Doubao Web SDK");if("doubao.canIUse"===e.name){let t=utils_isRecord(e.params)&&"string"==typeof e.params.schema?e.params.schema:"";return bridge_api_createSuccessCallback(e,{result:(Array.isArray(n.supportedAPIs)?n.supportedAPIs:[]).includes(t)})}let i=n.apiResults;if(utils_isRecord(i)&&Object.prototype.hasOwnProperty.call(i,e.name))return bridge_api_createSuccessCallback(e,i[e.name]);let o=localBridgeHandlers[e.name];if(o)try{let r=utils_isRecord(e.params)?e.params:{};return bridge_api_createSuccessCallback(e,o(n,r,()=>persistSyncBridgeState(t,n)))}catch(t){return createFailedCallbackFromError(e,t)}}function emitAppletBridgeMessage(e){var t,r;if(!utils_isRecord(e)||"callback"!==e.type)return!1;let n=null==(r=globalThis.lynx)||null==(t=r.getJSModule)?void 0:t.call(r,"GlobalEventEmitter");return"function"==typeof(null==n?void 0:n.emit)?(n.emit("__APPLET_BRIDGE__",[e]),!0):"function"==typeof(null==n?void 0:n.trigger)&&(n.trigger("__APPLET_BRIDGE__",e),!0)}function createAppletBridgeModule(e,t,r){return{async postMessage(e,n){let i;if(canDispatchLocalBridgeAPI(e)){let i=dispatchSyncBridgeAPI(e,t,r);if(i)return null==n||n(i),emitAppletBridgeMessage(i)||n||await t("postMessage",i),i}try{i=await t("postMessage",e)}catch(t){i=isBridgeCallMessage(e)?createFailedCallbackFromError(e,t):void 0}return null==n||n(i),emitAppletBridgeMessage(i),i},postMessageSync(e){let n=dispatchSyncBridgeAPI(e,t,r);return n||!isBridgeCallMessage(e)?n:createFailedCallback(e,`Sync API ${e.name} is not implemented in Doubao Web SDK`)}}}export{createAppletBridgeModule,getWebSyncBridgeDataFromUrl};
|
|
1
|
+
let runtimeBridgeController;function utils_isRecord(e){return"object"==typeof e&&null!==e}function isBridgeCallMessage(e){return(null==e?void 0:e.type)==="call"}function isBridgeCallbackMessage(e){return(null==e?void 0:e.type)==="callback"}function isBridgeEventMessage(e){return(null==e?void 0:e.type)==="event"}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}let RESULT_CODE_SUCCESS=1,RESULT_CODE_FAILED=0;class BridgeAPIError extends Error{constructor(e,t,r=e){super(e),_define_property(this,"errNo",void 0),_define_property(this,"errMsg",void 0),this.errNo=t,this.errMsg=r,Object.setPrototypeOf(this,new.target.prototype),this.name="BridgeAPIError"}}function bridge_api_createSuccessCallback(e,t){return{type:"callback",callbackId:e.callbackId,params:{code:1,data:t}}}function createFailedCallback(e,t,r=-1,n=t){return{type:"callback",callbackId:e.callbackId,params:{code:0,msg:t,errNo:r,errMsg:n}}}function getErrorMessage(e){return e instanceof Error?e.message:String(e)}function createFailedCallbackFromError(e,t){return t instanceof BridgeAPIError?createFailedCallback(e,t.message,t.errNo,t.errMsg):createFailedCallback(e,getErrorMessage(t))}function dispatchBridgeAPI(e,t,r={}){if(!isBridgeCallMessage(e))return;let n=t[e.name];if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e,r);if(t instanceof Promise)return t.catch(t=>createFailedCallbackFromError(e,t));return null!=t?t:createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`)}catch(t){return createFailedCallbackFromError(e,t)}}function setRuntimeBridgeController(e){return runtimeBridgeController=e,()=>{runtimeBridgeController===e&&(runtimeBridgeController=void 0)}}function getCurrentPageStack(){var e;return null!=(e=null==runtimeBridgeController?void 0:runtimeBridgeController.getCurrentPages())?e:[]}function page_stack_getRuntimePackageInfo(){return null==runtimeBridgeController?void 0:runtimeBridgeController.getPackageInfo()}function navigateRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.navigateTo(e),!!runtimeBridgeController}function redirectRuntimeTo(e){return null==runtimeBridgeController||runtimeBridgeController.redirectTo(e),!!runtimeBridgeController}function reLaunchRuntime(e){return null==runtimeBridgeController||runtimeBridgeController.reLaunch(e),!!runtimeBridgeController}function navigateRuntimeBack(e){var t;return null!=(t=null==runtimeBridgeController?void 0:runtimeBridgeController.navigateBack(e))&&t}function exitRuntimeApp(){return null==runtimeBridgeController||runtimeBridgeController.exitApp(),!!runtimeBridgeController}let MENU_BUTTON_WIDTH=84,MENU_BUTTON_HEIGHT=36,MENU_BUTTON_RIGHT=12,MENU_BUTTON_TOP=4;function getMenuButtonGlobalProps(e){var t;return null!=e?e:null==(t=globalThis.lynx)?void 0:t.__globalProps}function menu_button_getMenuButtonBoundingClientRect(e){let{screenWidth:t,statusBarHeight:r}=getMenuButtonGlobalProps(e),n=Math.round(r)+4,i=Math.round(t)-12;return{bottom:n+36,height:36,left:i-84,right:i,top:n,width:84}}function registry_define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function normalizeRegistration(e){var t;return"function"==typeof e?{handler:e,canIUse:!0}:{...e,canIUse:null==(t=e.canIUse)||t}}class BridgeAPIRegistry{register(e,t,r={}){if(!r.override&&this.registry.has(e))throw Error(`Bridge API handler ${e} is already registered`);let n=this.registry.get(e),i=normalizeRegistration(t);return this.registry.set(e,i),this.handlers[e]=i.handler,()=>{if(this.registry.get(e)===i){if(n){this.registry.set(e,n),this.handlers[e]=n.handler;return}this.registry.delete(e),delete this.handlers[e]}}}registerMany(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.register(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}get(e){var t;return null==(t=this.registry.get(e))?void 0:t.handler}getSyncResults(e){let t={};for(let[r,n]of this.registry)n.syncResult&&this.canIUse(r,e)&&(t[r]="function"==typeof n.syncResult?n.syncResult({...e,apiRegistry:this}):n.syncResult);return t}registerEventSource(e,t,r={}){var n;if(!r.override&&this.eventSources.has(e))throw Error(`Bridge event source ${e} is already registered`);let i=this.eventSources.get(e),o="function"==typeof t?{source:t}:t;return this.stopEventSource(e),this.eventSources.set(e,o),(null!=(n=this.eventSourceRetainCounts.get(e))?n:0)>0&&this.startEventSource(e,o),()=>{if(this.eventSources.get(e)===o){if(this.stopEventSource(e),i){var t;this.eventSources.set(e,i),(null!=(t=this.eventSourceRetainCounts.get(e))?t:0)>0&&this.startEventSource(e,i);return}this.eventSources.delete(e)}}}registerEventSources(e,t={}){let r=[];try{for(let[n,i]of Object.entries(e))r.push(this.registerEventSource(n,i,t))}catch(e){for(let e of r.reverse())e();throw e}return()=>{for(let e of r.reverse())e()}}canIUse(e,t){var r;let n=this.registry.get(e);if(n)return"function"==typeof n.canIUse?n.canIUse({...t,apiRegistry:this}):n.canIUse;let i=this.eventSources.get(e);return!!i&&("function"==typeof i.canIUse?i.canIUse({...t,apiRegistry:this}):null==(r=i.canIUse)||r)}dispatch(e,t={}){if(!isBridgeCallMessage(e))return;let r={...t,apiRegistry:this};if(this.canIUse(e.name,r))return dispatchBridgeAPI(e,this.handlers,r);let n=r.onUnsupportedAPI;if(!n)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=n(e.name);return t instanceof Promise?t.then(()=>bridge_api_createSuccessCallback(e,{})).catch(t=>createFailedCallbackFromError(e,t)):bridge_api_createSuccessCallback(e,{})}catch(t){return createFailedCallbackFromError(e,t)}}getSupportedNames(e){return[...new Set([...this.registry.keys(),...this.eventSources.keys()])].filter(t=>this.canIUse(t,e))}emitEvent(e,t){let r=!1;for(let n of this.eventControllers)r=n.emit(e,t)||r;return r}createEventController(e){return new BridgeEventController(this,e)}fork(){let e=new BridgeAPIRegistry(this.getRegistrations());return e.registerEventSources(this.getEventSources()),e}getRegistrations(){return Object.fromEntries(this.registry)}getEventSources(){return Object.fromEntries(this.eventSources)}attachEventController(e){return this.eventControllers.add(e),()=>{this.eventControllers.delete(e)}}retainEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(this.eventSourceRetainCounts.set(e,r+1),r>0)return;let n=this.eventSources.get(e);n&&this.startEventSource(e,n)}releaseEventSource(e){var t;let r=null!=(t=this.eventSourceRetainCounts.get(e))?t:0;if(r<=1){this.eventSourceRetainCounts.delete(e),this.stopEventSource(e);return}this.eventSourceRetainCounts.set(e,r-1)}startEventSource(e,t){this.stopEventSource(e);let r=t.source(t=>{this.emitEvent(e,t)});"function"==typeof r&&this.eventSourceCleanups.set(e,r)}stopEventSource(e){var t;null==(t=this.eventSourceCleanups.get(e))||t(),this.eventSourceCleanups.delete(e)}constructor(e){registry_define_property(this,"registry",new Map),registry_define_property(this,"eventSources",new Map),registry_define_property(this,"eventSourceCleanups",new Map),registry_define_property(this,"eventSourceRetainCounts",new Map),registry_define_property(this,"eventControllers",new Set),registry_define_property(this,"handlers",{}),e&&this.registerMany(e)}}class BridgeEventController{subscribe(e){this.subscribedEventNames.has(e)||(this.subscribedEventNames.add(e),this.apiRegistry.retainEventSource(e))}unsubscribe(e){this.subscribedEventNames.delete(e)&&this.apiRegistry.releaseEventSource(e)}emit(e,t){return!!this.subscribedEventNames.has(e)&&(this.dispatch(e,t),!0)}destroy(){for(let e of this.subscribedEventNames)this.apiRegistry.releaseEventSource(e);this.subscribedEventNames.clear(),this.cleanupRegistry()}constructor(e,t){registry_define_property(this,"apiRegistry",void 0),registry_define_property(this,"dispatch",void 0),registry_define_property(this,"cleanupRegistry",void 0),registry_define_property(this,"subscribedEventNames",void 0),this.apiRegistry=e,this.dispatch=t,this.subscribedEventNames=new Set,this.cleanupRegistry=this.apiRegistry.attachEventController(this)}}let registry_defaultBridgeAPIRegistry=new BridgeAPIRegistry,bridgeAPIHandlers=registry_defaultBridgeAPIRegistry.handlers;function registerBridgeAPIHandler(e,t,r={}){return registry_defaultBridgeAPIRegistry.register(e,t,r)}function registerBridgeAPIHandlers(e,t={}){return registry_defaultBridgeAPIRegistry.registerMany(e,t)}function canUseRegisteredBridgeAPI(e,t){return registry_defaultBridgeAPIRegistry.canIUse(e,t)}function getRegisteredBridgeAPINames(e){return registry_defaultBridgeAPIRegistry.getSupportedNames(e)}function registerBridgeEventSource(e,t,r={}){return registry_defaultBridgeAPIRegistry.registerEventSource(e,t,r)}function registerBridgeEventSources(e,t={}){return registry_defaultBridgeAPIRegistry.registerEventSources(e,t)}function createBridgeAPIRegistry(e){return new BridgeAPIRegistry(e)}function system_getSupportedWebBridgeAPINames(e=registry_defaultBridgeAPIRegistry){return e.getSupportedNames({apiRegistry:e})}function canUseWebBridgeAPI(e,t=defaultBridgeAPIRegistry){return t.canIUse(e,{apiRegistry:t})}function getLanguage(){return(navigator.language||"zh-CN").replace("-","_")}function getTheme(){var e,t,r;return(null==(t=(r=window).matchMedia)||null==(e=t.call(r,"(prefers-color-scheme: dark)"))?void 0:e.matches)?"dark":"light"}function getSDKVersion(){return"u"<typeof DoubaoAppsSDKVersion?void 0:DoubaoAppsSDKVersion}function getUserAgentData(){return navigator.userAgentData}function getBrowserBrand(){var e,t;let r=null==(t=getUserAgentData())?void 0:t.brands,n=null==r?void 0:r.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==n?void 0:n.brand)return n.brand;let i=null!=(e=navigator.userAgent)?e:"";return/edg\//i.test(i)?"Microsoft Edge":/chrome|crios/i.test(i)?"Chrome":/firefox|fxios/i.test(i)?"Firefox":/safari/i.test(i)?"Safari":"Browser"}function getBrowserVersion(){var e,t,r,n;let i=null==(r=getUserAgentData())?void 0:r.brands,o=null==i?void 0:i.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==o?void 0:o.version)return o.version;let a=null!=(e=navigator.userAgent)?e:"";return null!=(t=null==(n=/(?:edg|chrome|crios|firefox|fxios|version)\/([\d.]+)/i.exec(a))?void 0:n[1])?t:void 0}function getPlatformInfo(){var e,t,r,n,i;let o=null!=(e=navigator.userAgent)?e:"",a=null!=(t=navigator.platform)?t:"",s=null!=(r=null==(i=getUserAgentData())?void 0:i.platform)?r:"",l=`${s} ${a} ${o}`,u=null!=(n=navigator.maxTouchPoints)?n:0;return/android/i.test(l)?{platform:"android",brand:"Android"}:/iphone/i.test(l)?{platform:"ios",brand:"iPhone"}:/ipad/i.test(l)||/mac/i.test(a)&&u>1?{platform:"ios",brand:"iPad"}:/mac/i.test(l)?{platform:"mac",brand:"Mac"}:/win/i.test(l)?{platform:"windows",brand:"Windows"}:/linux/i.test(l)?{platform:"linux",brand:"Linux"}:{platform:"web",brand:"Browser"}}function getPackageInfo(e=getRuntimePackageInfo()){var t,r;return{appId:null!=(t=null==e?void 0:e.appId)?t:"",name:null!=(r=null==e?void 0:e.name)?r:"",iconSrc:null==e?void 0:e.iconSrc}}function getViewportWidth(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.width)?t:window.innerWidth)?e:0)}function getViewportHeight(){var e,t,r;return Math.round(null!=(e=null!=(t=null==(r=window.visualViewport)?void 0:r.height)?t:window.innerHeight)?e:0)}function getWindowInfo(){var e,t,r,n,i,o,a;let s=getViewportWidth(),l=getViewportHeight(),u=null!=(e=window.devicePixelRatio)?e:1,c=Math.round(null!=(t=null==(i=window.screen)?void 0:i.width)?t:s),g=Math.round(null!=(r=null==(o=window.screen)?void 0:o.height)?r:l),d=Math.round(null!=(n=null==(a=window.visualViewport)?void 0:a.offsetTop)?n:0);return{pixelRatio:u,screenWidth:c,screenHeight:g,windowWidth:s,windowHeight:l,statusBarHeight:d,safeArea:{left:0,right:s,top:d,bottom:l,width:s,height:Math.max(0,l-d)},screenTop:d}}function getPlatform(){return getPlatformInfo().platform}function getSystemVersion(){var e,t,r,n,i,o;let a=null!=(e=navigator.userAgent)?e:"",s=getPlatform();return"android"===s?null==(t=/android\s+([\d.]+)/i.exec(a))?void 0:t[1]:"ios"===s?null==(n=/(?:iphone os|cpu os)\s+([\d_]+)/i.exec(a))||null==(r=n[1])?void 0:r.replace(/_/g,"."):"mac"===s?null==(o=/mac os x\s+([\d_]+)/i.exec(a))||null==(i=o[1])?void 0:i.replace(/_/g,"."):void 0}function getSystemNameAndVersion(){let e=getPlatform(),t=getSystemVersion();if("android"===e)return t?`Android ${t}`:"Android";if("ios"===e)return t?`iOS ${t}`:"iOS";if("mac"===e)return t?`macOS ${t}`:"macOS";if("windows"===e)return"Windows";if("linux"===e)return"Linux";let r=getBrowserVersion(),n=getBrowserBrand();return r?`${n} ${r}`:"Web"}function getDeviceModel(){var e,t,r;let n=null!=(e=navigator.userAgent)?e:"",i=getPlatform();return"android"===i?(null==(r=/android\s+[\d.]+;\s*([^;)]+)/i.exec(n))||null==(t=r[1])?void 0:t.trim())||"Android":"ios"===i?getPlatformInfo().brand:"mac"===i||"windows"===i||"linux"===i?navigator.platform||getPlatformInfo().brand:getBrowserBrand()}function getMemorySize(){let e=navigator.deviceMemory;return"number"==typeof e&&Number.isFinite(e)?String(Math.round(1024*e)):""}function getCpuType(){return navigator.platform||getPlatform()}function getDefaultNetworkStatus(){return{isConnected:!0,networkType:"unknown",hasSystemProxy:!1,weakNet:!1}}function getDeviceInfo(){let e=getPlatformInfo(),t=getCpuType();return{abi:t,deviceAbi:t,benchmarkLevel:-1,brand:e.brand,model:getDeviceModel(),system:getSystemNameAndVersion(),platform:e.platform,cpuType:t,memorySize:getMemorySize()}}function getWebSystemGlobalProps(){let e=getDeviceInfo(),t=getWindowInfo(),r=t.windowWidth>t.windowHeight;return{os:e.platform,osVersion:getSystemVersion(),deviceBrand:e.brand,deviceModel:e.model,deviceType:e.model,channel:"debug",screenOrientation:+!!r,isLandscape:+!!r,abi:e.abi}}function getSystemInfo(){let e=getWindowInfo(),t=getDeviceInfo();return{...e,brand:t.brand,model:t.model,language:getLanguage(),version:getBrowserVersion(),system:t.system,platform:t.platform,SDKVersion:getSDKVersion(),theme:getTheme(),benchmarkLevel:-1,enableDebug:!0,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait",abi:t.abi}}function getSystemSetting(){let e=getWindowInfo();return{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:getDefaultNetworkStatus().isConnected,deviceOrientation:e.windowWidth>e.windowHeight?"landscape":"portrait"}}function getNetworkType(){var e,t;let r=getDefaultNetworkStatus();return{networkType:r.networkType,signalStrength:r.signalStrength,hasSystemProxy:null!=(e=r.hasSystemProxy)&&e,weakNet:null!=(t=r.weakNet)&&t}}function getAppBaseInfo(e=getRuntimePackageInfo()){return{SDKVersion:getSDKVersion(),enableDebug:!0,host:{appId:getPackageInfo(e).appId},language:getLanguage(),version:getBrowserVersion(),theme:getTheme()}}function getAccountInfo(e=getRuntimePackageInfo()){var t;return{miniProgram:{appId:getPackageInfo(e).appId,envVersion:"develop",version:null!=(t=null==e?void 0:e.versionName)?t:""}}}function system_getSystemSyncBridgeAPIResults(e,t,r){return(null!=t?t:defaultBridgeAPIRegistry).getSyncResults({globalProps:r,packageInfo:e})}function getSyncPackageInfo(e){return null==e?void 0:e.packageInfo}let systemHandlers=null,storage_core_WEB_STORAGE_PREFIX="doubao-web-sdk:storage:",WEB_STORAGE_LIMIT_KB=10240,WEB_STORAGE_MAX_KEY_LENGTH=1024,WEB_STORAGE_MAX_ITEM_SIZE_BYTES=1048576,WEB_STORAGE_LIMIT_BYTES=0xa00000,WEB_STORAGE_TOTAL_SIZE_EXCEEDED_ERROR=1600002;function storage_core_getWebStorageKey(e){return`${storage_core_WEB_STORAGE_PREFIX}${e}`}function validateWebStorageKey(e){if("string"!=typeof e)throw Error("key must be a string");if(0===e.length)throw Error("key must not be empty");if(e.length>1024)throw Error("key length must be less than or equal to 1024");return e}function validateWebStorageData(e){if(getWebStorageDataSize(e)>1048576)throw Error("data size must be less than or equal to 1048576 bytes")}function getWebStorageDataSize(e){return new TextEncoder().encode(e).byteLength}function getWebStorageSnapshotSize(e){return Object.values(e).reduce((e,t)=>e+getWebStorageDataSize(t),0)}function validateWebStorageTotalSize(e){if(e>WEB_STORAGE_LIMIT_BYTES)throw new BridgeAPIError("total storage size exceeded",1600002)}function validateWebStorageWrite(e,t,r){let n=validateWebStorageKey(t);validateWebStorageData(r);let i=Object.prototype.hasOwnProperty.call(e,n)?e[n]:void 0;return validateWebStorageTotalSize(getWebStorageSnapshotSize(e)-(void 0===i?0:getWebStorageDataSize(i))+getWebStorageDataSize(r)),n}function getWebStorageItemFromSnapshot(e,t){return e[validateWebStorageKey(t)]}function storage_core_validateWebStorageSnapshot(e){for(let[t,r]of Object.entries(e))validateWebStorageKey(t),validateWebStorageData(r);validateWebStorageTotalSize(getWebStorageSnapshotSize(e))}function storage_core_getWebStorageSnapshotFromStorage(e){let t={};for(let n=0;n<e.length;n+=1){let i=e.key(n);if(null==i?void 0:i.startsWith(storage_core_WEB_STORAGE_PREFIX)){var r;t[i.slice(storage_core_WEB_STORAGE_PREFIX.length)]=null!=(r=e.getItem(i))?r:""}}return t}function getWebStorageInfoFromSnapshot(e){return{keys:Object.keys(e),currentSize:Math.ceil(getWebStorageSnapshotSize(e)/1024),limitSize:10240}}let WEB_SYNC_BRIDGE_GLOBAL_PROP="__DOUBAO_WEB_SDK_SYNC_BRIDGE__",WEB_SYNC_BRIDGE_PERSIST_API="doubao.__webSyncBridgePersist",WEB_FILE_SYSTEM_STORAGE_KEY="doubao-web-sdk:file-system",WEB_SYNC_BRIDGE_URL_PARAM="__doubao_sync_bridge";function getStringProperty(e,t){if(!utils_isRecord(e))return;let r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function getPackageInfoFromGlobalProps(e){if(!utils_isRecord(e)||!utils_isRecord(e.packageInfo))return;let{appId:t,iconSrc:r,name:n,versionName:i}=e.packageInfo;return{appId:"string"==typeof t?t:void 0,iconSrc:"string"==typeof r?r:void 0,name:"string"==typeof n?n:void 0,versionName:"string"==typeof i?i:void 0}}function getWebFileSystemNamespace(e){var t,r,n,i;let o=getPackageInfoFromGlobalProps(e),a=null!=(t=null!=(r=null==o?void 0:o.appId)?r:getStringProperty(e,"appName"))?t:"unknown-app",s=null!=(n=null!=(i=getStringProperty(e,"userId"))?i:getStringProperty(e,"userID"))?n:"anonymous";return`${encodeURIComponent(a)}:${encodeURIComponent(s)}`}function createEmptyWebFileSystemSnapshot(){let e=Date.now();return{entries:{"/":{type:"directory",createTime:e,lastModifiedTime:e},"/temp":{type:"directory",createTime:e,lastModifiedTime:e},"/user":{type:"directory",createTime:e,lastModifiedTime:e}}}}function getStorageSnapshot(){return getWebStorageSnapshotFromStorage(localStorage)}function getWebFileSystemStorageKey(e){return`doubao-web-sdk:file-system:${encodeURIComponent(e)}`}function getFileSystemSnapshot(e){let t=localStorage.getItem(getWebFileSystemStorageKey(e));if(!t)return createEmptyWebFileSystemSnapshot();try{let e=JSON.parse(t);if(isRecord(e)&&isRecord(e.entries))return e}catch(e){}return createEmptyWebFileSystemSnapshot()}function createWebSyncBridgeGlobalValue(e,t,r=getWebFileSystemNamespace(e)){let n=getSupportedWebBridgeAPINames(t);return{fileSystemNamespace:r,fileSystemSnapshot:getFileSystemSnapshot(r),apiResults:getSystemSyncBridgeAPIResults(getPackageInfoFromGlobalProps(e),t,e),storageSnapshot:getStorageSnapshot(),supportedAPIs:n}}function isWebSyncBridgeGlobalValue(e){return utils_isRecord(e)&&"string"==typeof e.fileSystemNamespace&&utils_isRecord(e.fileSystemSnapshot)&&utils_isRecord(e.apiResults)&&utils_isRecord(e.storageSnapshot)&&Array.isArray(e.supportedAPIs)}function addWebSyncBridgeDataToUrl(e,t){let r=new URL(e),n=new URLSearchParams(r.hash.slice(1));return n.set(WEB_SYNC_BRIDGE_URL_PARAM,JSON.stringify({...t,fileSystemSnapshot:createEmptyWebFileSystemSnapshot()})),r.hash=n.toString(),r.href}function getWebSyncBridgeDataFromUrl(e){try{let t=new URLSearchParams(new URL(e).hash.slice(1)).get(WEB_SYNC_BRIDGE_URL_PARAM);if(!t)return;let r=JSON.parse(t);return isWebSyncBridgeGlobalValue(r)?r:void 0}catch(e){return}}function persistWebStorageSnapshot(e){let t=[];validateWebStorageSnapshot(e);for(let e=0;e<localStorage.length;e+=1){let r=localStorage.key(e);(null==r?void 0:r.startsWith(WEB_STORAGE_PREFIX))&&t.push(r)}for(let e of t)localStorage.removeItem(e);for(let[t,r]of Object.entries(e))localStorage.setItem(getWebStorageKey(t),r)}function persistWebFileSystemSnapshot(e,t){localStorage.setItem(getWebFileSystemStorageKey(e),JSON.stringify(t))}function sync_file_system_getFileSystemSnapshot(e){utils_isRecord(e.fileSystemSnapshot)||(e.fileSystemSnapshot={entries:{}}),utils_isRecord(e.fileSystemSnapshot.entries)||(e.fileSystemSnapshot.entries={});let t=Date.now();for(let n of["/","/temp","/user"]){var r;(null==(r=e.fileSystemSnapshot.entries[n])?void 0:r.type)!=="directory"&&(e.fileSystemSnapshot.entries[n]={type:"directory",createTime:t,lastModifiedTime:t})}return e.fileSystemSnapshot}function getStringParam(e,t){let r=e[t];if("string"!=typeof r)throw Error(`${t} must be a string`);return r}function getOptionalStringParam(e,t){let r=e[t];return"string"==typeof r?r:void 0}function decodePathSegment(e){let t;if(0===e.length||e.includes("?")||e.includes("#")||/%(?![0-9a-f]{2})/i.test(e))throw Error("invalid applet file path");try{t=decodeURIComponent(e)}catch(e){throw Error("invalid applet file path")}if("."===t||".."===t||t.includes("/")||t.includes("\\")||t.includes("\0"))throw Error("invalid applet file path");return t}function normalizePath(e){let t=/^appletfile:\/\/(user|temp)(?:\/(.*))?$/.exec(e);if(!t)throw Error("path must use appletfile://user or appletfile://temp");let r=t[1],n=t[2];if(void 0===n||0===n.length)return`/${r}`;let i=n.split("/").map(decodePathSegment);return`/${r}/${i.join("/")}`}function getParentPath(e){let t=normalizePath(e);if("/temp"===t||"/user"===t)return"";let r=t.lastIndexOf("/");return t.slice(0,r)}function getBaseName(e){let t=normalizePath(e);return"/temp"===t||"/user"===t?"":t.slice(t.lastIndexOf("/")+1)}function encodePathSegment(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}function toAppletFilePath(e){let t=e.split("/").filter(Boolean),r=t.shift();if("temp"!==r&&"user"!==r)throw Error(`invalid applet file path: ${e}`);let n=t.map(encodePathSegment).join("/");return n.length>0?`appletfile://${r}/${n}`:`appletfile://${r}`}function getEntry(e,t){return e.entries[normalizePath(t)]}function assertFile(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"file"!==n.type)throw Error(`file not found: ${r}`);return n}function assertDirectory(e,t){let r=normalizePath(t),n=e.entries[r];if(!n||"directory"!==n.type)throw Error(`directory not found: ${r}`);return n}function assertParentDirectory(e,t){var r;let n=getParentPath(t);if(!n)throw Error(`invalid parent directory: ${t}`);if((null==(r=e.entries[n])?void 0:r.type)!=="directory")throw Error(`directory not found: ${n}`)}function createParentDirectories(e,t){let r=getParentPath(t);if(!r)throw Error(`invalid parent directory: ${t}`);let n=Date.now(),i="";for(let t of r.split("/").filter(Boolean)){i+=`/${t}`;let r=e.entries[i];if((null==r?void 0:r.type)==="file")throw Error(`path is not a directory: ${i}`);r||(e.entries[i]={type:"directory",createTime:n,lastModifiedTime:n})}}function bytesToBase64(e){let t="";for(let r=0;r<e.length;r+=1)t+=String.fromCharCode(e[r]);return btoa(t)}function base64ToBytes(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)r[e]=t.charCodeAt(e);return r}function encodeFileData(e,t){let r="string"==typeof e?e:String(null!=e?e:"");return"base64"===t?base64ToBytes(r):new TextEncoder().encode(r)}function decodeFileData(e,t){return"utf-8"===t?new TextDecoder().decode(base64ToBytes(e)):e}function getChildNames(e,t){let r=normalizePath(t),n="/"===r?"/":`${r}/`,i=new Set;for(let t of Object.keys(e.entries)){if(t===r||!t.startsWith(n))continue;let e=t.slice(n.length).split("/")[0];e&&i.add(e)}return[...i]}function writeFileEntry(e,t,r){var n;let i=normalizePath(t);createParentDirectories(e,t);let o=Date.now(),a=e.entries[i];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${i}`);e.entries[i]={type:"file",data:bytesToBase64(r),createTime:null!=(n=null==a?void 0:a.createTime)?n:o,lastModifiedTime:o}}function readFile(e,t){return{data:decodeFileData(assertFile(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath")).data,getOptionalStringParam(t,"encoding"))}}function writeFile(e,t,r){return writeFileEntry(sync_file_system_getFileSystemSnapshot(e),getStringParam(t,"filePath"),encodeFileData(t.data,getOptionalStringParam(t,"encoding"))),r(),{}}function appendFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i),a=n.entries[o];if((null==a?void 0:a.type)==="directory")throw Error(`path is a directory: ${o}`);let s=(null==a?void 0:a.type)==="file"?base64ToBytes(a.data):new Uint8Array,l=encodeFileData(t.data,getOptionalStringParam(t,"encoding")),u=new Uint8Array(s.length+l.length);return u.set(s),u.set(l,s.length),writeFileEntry(n,i,u),r(),{}}function accessPath(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"path");if(!getEntry(r,n))throw Error(`path not found: ${n}`);return{}}function mkdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i),a=Date.now(),s=n.entries[o];if((null==s?void 0:s.type)==="directory")return{};if(s)throw Error(`path is not a directory: ${o}`);if(!0===t.recursive){let e="";for(let t of o.split("/").filter(Boolean))if(e+=`/${t}`,n.entries[e]||(n.entries[e]={type:"directory",createTime:a,lastModifiedTime:a}),"directory"!==n.entries[e].type)throw Error(`path is not a directory: ${e}`)}else assertParentDirectory(n,i),n.entries[o]={type:"directory",createTime:a,lastModifiedTime:a};return r(),{}}function rmdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),o=normalizePath(i);if("/temp"===o||"/user"===o)throw Error("cannot remove root directory");assertDirectory(n,i);let a=`${o}/`,s=Object.keys(n.entries).filter(e=>e.startsWith(a));if(!0!==t.recursive&&s.length>0)throw Error(`directory is not empty: ${o}`);for(let e of s)delete n.entries[e];return delete n.entries[o],r(),{}}function readdir(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=getStringParam(t,"dirPath");return assertDirectory(r,n),{files:getChildNames(r,n)}}function unlink(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=normalizePath(i);return assertFile(n,i),delete n.entries[o],r(),{}}function stat(e,t){let r=sync_file_system_getFileSystemSnapshot(e),n=normalizePath(getStringParam(t,"path")),i=r.entries[n];if(!i)throw Error(`path not found: ${n}`);return{size:"file"===i.type?base64ToBytes(i.data).length:0,lastModifiedTime:i.lastModifiedTime,isDirectory:"directory"===i.type}}function copyFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=assertFile(n,getStringParam(t,"srcPath"));return writeFileEntry(n,getStringParam(t,"destPath"),base64ToBytes(i.data)),r(),{}}function rename(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"oldPath"),o=getStringParam(t,"newPath"),a=normalizePath(i),s=normalizePath(o);if(!n.entries[a])throw Error(`path not found: ${a}`);if("/temp"===a||"/user"===a)throw Error("cannot rename root directory");for(let e of(createParentDirectories(n,o),Object.keys(n.entries)))if(e===a||e.startsWith(`${a}/`)){let t=s+e.slice(a.length);n.entries[t]=n.entries[e],delete n.entries[e]}return r(),{}}function truncate(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"filePath"),o=assertFile(n,i),a="number"==typeof t.length?t.length:0,s=base64ToBytes(o.data),l=new Uint8Array(a);return l.set(s.slice(0,a)),writeFileEntry(n,i,l),r(),{}}function saveFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"tempFilePath"),o=assertFile(n,i),a=getOptionalStringParam(t,"filePath"),s=a&&a.length>0?a:toAppletFilePath(`/user/${Date.now()}_${getBaseName(i)}`);return writeFileEntry(n,s,base64ToBytes(o.data)),delete n.entries[normalizePath(i)],r(),{savedFilePath:s}}let fileSystemBridgeHandlers={"doubao.readFile":readFile,"doubao.writeFile":writeFile,"doubao.appendFile":appendFile,"doubao.access":accessPath,"doubao.mkdir":mkdir,"doubao.rmdir":rmdir,"doubao.readdir":readdir,"doubao.unlink":unlink,"doubao.stat":stat,"doubao.copyFile":copyFile,"doubao.rename":rename,"doubao.truncate":truncate,"doubao.saveFile":saveFile},nextInternalCallbackId=Date.now();function isPromise(e){return utils_isRecord(e)&&"function"==typeof e.then}function sync_bridge_runtime_getPackageInfoFromGlobalProps(e){var t,r,n,i,o,a,s;let l=null!=(t=e.packageInfo)?t:{};return{appId:null!=(r=null!=(n=l.appId)?n:e.appName)?r:"",iconSrc:l.iconSrc,name:null!=(i=null!=(o=l.name)?o:e.appName)?i:"",versionName:null!=(a=null!=(s=l.versionName)?s:e.appVersion)?a:""}}function createFallbackWindowInfo(){return{pixelRatio:1,screenWidth:0,screenHeight:0,windowWidth:0,windowHeight:0,statusBarHeight:0,safeArea:{left:0,right:0,top:0,bottom:0,width:0,height:0},screenTop:0}}function createFallbackDeviceInfo(){return{abi:"web",deviceAbi:"web",benchmarkLevel:-1,brand:"Browser",model:"Browser",system:"Web",platform:"web",cpuType:"web",memorySize:""}}function createFallbackSyncBridgeData(e){var t,r;let n=sync_bridge_runtime_getPackageInfoFromGlobalProps(e),i=createFallbackWindowInfo(),o=createFallbackDeviceInfo(),a=null!=(t=e.language)?t:"zh_CN",s=null!=(r=e.appTheme)?r:"light",l=e.appVersion,u="string"==typeof DoubaoAppsSDKVersion?DoubaoAppsSDKVersion:"";return{fileSystemNamespace:getWebFileSystemNamespace(e),fileSystemSnapshot:createEmptyWebFileSystemSnapshot(),apiResults:{"doubao.authorize":{},"doubao.getAccountInfo":{miniProgram:{appId:n.appId,envVersion:"develop",version:n.versionName}},"doubao.getAppBaseInfo":{SDKVersion:u,enableDebug:!0,host:{appId:n.appId},language:a,version:l,theme:s},"doubao.getMenuButtonBoundingClientRect":menu_button_getMenuButtonBoundingClientRect(e),"doubao.getPackageInfo":{appId:n.appId,name:n.name,iconSrc:n.iconSrc},"doubao.getSystemInfo":{...i,brand:o.brand,model:o.model,language:a,version:l,system:o.system,platform:o.platform,SDKVersion:u,theme:s,benchmarkLevel:-1,enableDebug:!0,deviceOrientation:"portrait",abi:o.abi},"doubao.getSystemSetting":{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:!0,deviceOrientation:"portrait"},"doubao.getWindowInfo":i,"doubao.getDeviceInfo":o,"doubao.getNetworkType":{networkType:"unknown",hasSystemProxy:!1,weakNet:!1}},storageSnapshot:{},supportedAPIs:system_getSupportedWebBridgeAPINames()}}function resolveSyncBridgeData(e){var t;let r=null==(t=globalThis.lynx)?void 0:t.__globalProps;if(!r)return e;let n=r[WEB_SYNC_BRIDGE_GLOBAL_PROP];if(n)return n;let i=createFallbackSyncBridgeData(r);return r[WEB_SYNC_BRIDGE_GLOBAL_PROP]=i,i}function sync_bridge_runtime_getStorageSnapshot(e){return utils_isRecord(e.storageSnapshot)||(e.storageSnapshot={}),e.storageSnapshot}function createPersistMessage(e){return{type:"call",name:"doubao.__webSyncBridgePersist",params:{fileSystemNamespace:e.fileSystemNamespace,fileSystemSnapshot:e.fileSystemSnapshot,storageSnapshot:e.storageSnapshot},callbackId:nextInternalCallbackId++}}function persistSyncBridgeState(e,t){let r=e("postMessage",createPersistMessage(t));isPromise(r)&&r.catch(()=>{})}function getLocalStorage(){try{return globalThis.localStorage}catch(e){return}}function setLocalStorageItem(e,t){var r;null==(r=getLocalStorage())||r.setItem(storage_core_getWebStorageKey(e),t)}function removeLocalStorageItem(e){var t;null==(t=getLocalStorage())||t.removeItem(storage_core_getWebStorageKey(e))}function clearLocalStorageItems(e){let t=getLocalStorage();if(t)for(let r of Object.keys(e))t.removeItem(storage_core_getWebStorageKey(r))}function setStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=String(t.data),o=validateWebStorageWrite(n,t.key,i);return setLocalStorageItem(o,i),n[o]=i,r(),{}}function getStorage(e,t){return{data:getWebStorageItemFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e),t.key)}}function removeStorage(e,t,r){let n=sync_bridge_runtime_getStorageSnapshot(e),i=validateWebStorageKey(t.key);return delete n[i],removeLocalStorageItem(i),r(),{}}function clearStorage(e,t,r){return clearLocalStorageItems(sync_bridge_runtime_getStorageSnapshot(e)),e.storageSnapshot={},r(),{}}function getStorageInfo(e){return getWebStorageInfoFromSnapshot(sync_bridge_runtime_getStorageSnapshot(e))}let localBridgeHandlers={"doubao.setStorage":setStorage,"doubao.getStorage":getStorage,"doubao.removeStorage":removeStorage,"doubao.clearStorage":clearStorage,"doubao.getStorageInfo":getStorageInfo,...fileSystemBridgeHandlers};function canDispatchLocalBridgeAPI(e){return isBridgeCallMessage(e)&&Object.prototype.hasOwnProperty.call(localBridgeHandlers,e.name)}function dispatchSyncBridgeAPI(e,t,r){if(!isBridgeCallMessage(e))return;let n=resolveSyncBridgeData(r);if(!n)return createFailedCallback(e,"Sync bridge data is not available in Doubao Web SDK");if("doubao.canIUse"===e.name){let t=utils_isRecord(e.params)&&"string"==typeof e.params.schema?e.params.schema:"";return bridge_api_createSuccessCallback(e,{result:(Array.isArray(n.supportedAPIs)?n.supportedAPIs:[]).includes(t)})}let i=n.apiResults;if(utils_isRecord(i)&&Object.prototype.hasOwnProperty.call(i,e.name))return bridge_api_createSuccessCallback(e,i[e.name]);let o=localBridgeHandlers[e.name];if(o)try{let r=utils_isRecord(e.params)?e.params:{};return bridge_api_createSuccessCallback(e,o(n,r,()=>persistSyncBridgeState(t,n)))}catch(t){return createFailedCallbackFromError(e,t)}}function emitAppletBridgeMessage(e){var t,r;if(!utils_isRecord(e)||"callback"!==e.type)return!1;let n=null==(r=globalThis.lynx)||null==(t=r.getJSModule)?void 0:t.call(r,"GlobalEventEmitter");return"function"==typeof(null==n?void 0:n.emit)?(n.emit("__APPLET_BRIDGE__",[e]),!0):"function"==typeof(null==n?void 0:n.trigger)&&(n.trigger("__APPLET_BRIDGE__",e),!0)}function createAppletBridgeModule(e,t,r){return{async postMessage(e,n){let i;if(canDispatchLocalBridgeAPI(e)){let i=dispatchSyncBridgeAPI(e,t,r);if(i)return null==n||n(i),emitAppletBridgeMessage(i)||n||await t("postMessage",i),i}try{i=await t("postMessage",e)}catch(t){i=isBridgeCallMessage(e)?createFailedCallbackFromError(e,t):void 0}return null==n||n(i),emitAppletBridgeMessage(i),i},postMessageSync(e){let n=dispatchSyncBridgeAPI(e,t,r);return n||!isBridgeCallMessage(e)?n:createFailedCallback(e,`Sync API ${e.name} is not implemented in Doubao Web SDK`)}}}export{createAppletBridgeModule,getWebSyncBridgeDataFromUrl};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
7
7
|
<title>豆包智能服务 Web 调试工具</title>
|
|
8
|
-
<link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.9daa7c863e.js"></script><script type="module" src="/static/js/lib-react.6b5c1c8899.js"></script><script type="module" src="/static/js/682.de47e82f6b.js"></script><script type="module" src="/static/js/670.8a8f0f7d57.js"></script><script type="module" src="/static/js/index.
|
|
8
|
+
<link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.9daa7c863e.js"></script><script type="module" src="/static/js/lib-react.6b5c1c8899.js"></script><script type="module" src="/static/js/682.de47e82f6b.js"></script><script type="module" src="/static/js/670.8a8f0f7d57.js"></script><script type="module" src="/static/js/index.9f626ba3a2.js"></script><link href="/static/css/index.7c65607402.css" rel="stylesheet"></head>
|
|
9
9
|
<body>
|
|
10
10
|
<main id="app"></main>
|
|
11
11
|
</body>
|