@doubao-dev/cli 0.0.34 → 0.0.36

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.
Files changed (142) hide show
  1. package/dist/1232.js +1 -0
  2. package/dist/1264.js +1 -0
  3. package/dist/1611.js +2 -0
  4. package/dist/2232.js +60 -0
  5. package/dist/2507.js +1 -0
  6. package/dist/275.js +5 -8
  7. package/dist/2932.js +1 -1
  8. package/dist/4525.js +1 -1
  9. package/dist/4880.js +1 -1
  10. package/dist/4931.js +1 -1
  11. package/dist/{3688.js → 5887.js} +3 -3
  12. package/dist/6438.js +140 -0
  13. package/dist/6976.js +280 -0
  14. package/dist/{8981.js.LICENSE.txt → 6976.js.LICENSE.txt} +108 -0
  15. package/dist/7410.js +1 -2
  16. package/dist/@byted-doubao-apps/create.js +1 -1
  17. package/dist/@byted-doubao-apps/kit.js +1 -1
  18. package/dist/@byted-doubao-apps/login.js +2 -2
  19. package/dist/@byted-doubao-apps/login~1.js +2 -2
  20. package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
  21. package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
  22. package/dist/@byted-hdt/cli.js +1 -1
  23. package/dist/@inquirer/select.js +1 -1
  24. package/dist/{assets/web-sdk-debugger/static/wasm/eaf690f2cd.module.wasm → @lynx-js/static/wasm/77fb77f77f.module.wasm} +0 -0
  25. package/dist/@lynx-js/{web-core-canary.js → web-core.js} +2 -2
  26. package/dist/app.js +1 -1
  27. package/dist/assets/web-sdk-debugger/__doubao_web_sdk_native_modules/applet-bridge-module-core.js +1 -1
  28. package/dist/assets/web-sdk-debugger/index.html +1 -1
  29. package/dist/assets/web-sdk-debugger/preact-devtools/index.js +4 -1
  30. package/dist/assets/web-sdk-debugger/static/css/index.ef5d8bc5ad.css +1 -0
  31. package/dist/assets/web-sdk-debugger/static/js/{682.de47e82f6b.js → 426.53c43a8594.js} +2 -2
  32. package/dist/assets/web-sdk-debugger/static/js/479.26e0b1d922.js +1829 -0
  33. package/dist/assets/web-sdk-debugger/static/js/async/503.259fed5610.js +1 -0
  34. package/dist/assets/web-sdk-debugger/static/js/async/{legacy-wasm-js.bacc8b5564.js → legacy-wasm-js.9b9367f818.js} +2 -2
  35. package/dist/assets/web-sdk-debugger/static/js/async/lynx-core-chunk.7f5e94dfae.js +5 -0
  36. package/dist/assets/web-sdk-debugger/static/js/async/web-core-main-chunk.f78260697f.js +1 -0
  37. package/dist/assets/web-sdk-debugger/static/js/async/web-core-markup-encoder.33c43c480e.js +4 -0
  38. package/dist/assets/web-sdk-debugger/static/js/async/web-core-template-loader-thread.ba290b32d7.js +4 -0
  39. package/dist/assets/web-sdk-debugger/static/js/async/web-core-worker-chunk.9a5989b104.js +1 -0
  40. package/dist/assets/web-sdk-debugger/static/js/async/web-elements.3fbd53918e.js +365 -0
  41. package/dist/assets/web-sdk-debugger/static/js/async/xmarkdown-deps.efd0ffb051.js +5 -0
  42. package/dist/assets/web-sdk-debugger/static/js/async/{xmarkdown-deps.3ea5672b2c.js.LICENSE.txt → xmarkdown-deps.efd0ffb051.js.LICENSE.txt} +1 -1
  43. package/dist/assets/web-sdk-debugger/static/js/index.b6e5c76345.js +44 -0
  44. package/dist/assets/web-sdk-debugger/static/js/lib-polyfill.c91181f230.js +1 -0
  45. package/dist/assets/web-sdk-debugger/static/wasm/{69a8ba8eb9.module.wasm → 4c402c7981.module.wasm} +0 -0
  46. package/dist/assets/web-sdk-debugger/static/wasm/{03b02f9e5a.module.wasm → 72aaf7d0aa.module.wasm} +0 -0
  47. package/dist/{@lynx-js/static/wasm/eaf690f2cd.module.wasm → assets/web-sdk-debugger/static/wasm/77fb77f77f.module.wasm} +0 -0
  48. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
  49. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
  50. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-react-dev.template.js +0 -0
  51. package/dist/assets/web-sdk-debugger/wsd/doubao-apps-react.template.js +0 -0
  52. package/dist/browser.js +1 -1
  53. package/dist/build.js +1 -1
  54. package/dist/build~1.js +10 -10
  55. package/dist/check.js +1 -1
  56. package/dist/client.js +1 -0
  57. package/dist/client~1.js +1 -0
  58. package/dist/components-loader.js +1 -1
  59. package/dist/demo-server.js +2 -2
  60. package/dist/demo.js +2 -2
  61. package/dist/dev-config.js +2 -2
  62. package/dist/dev-shell.js +1 -1
  63. package/dist/dev.js +19 -16
  64. package/dist/explore.js +10 -0
  65. package/dist/gen-explore.js +1 -1
  66. package/dist/gen-trajectory.js +1 -1
  67. package/dist/info.js +2 -2
  68. package/dist/init.js +4 -4
  69. package/dist/ink.js +1 -1
  70. package/dist/inquirer.js +1 -1
  71. package/dist/json-file.js +2 -2
  72. package/dist/legacy-status.js +1 -1
  73. package/dist/legacy-upload.js +1 -1
  74. package/dist/lepus.js +1 -1
  75. package/dist/login.js +2 -1
  76. package/dist/main.js +1 -1
  77. package/dist/{manifest-mcp-config.js → manifest-headers.js} +1 -1
  78. package/dist/ora.js +1 -1
  79. package/dist/portal.js +1 -1
  80. package/dist/project-layout.js +1 -1
  81. package/dist/project.js +1 -1
  82. package/dist/prompt.js +8 -8
  83. package/dist/prompts.js +1 -1
  84. package/dist/qrcode.js +1 -0
  85. package/dist/report.js +1 -1
  86. package/dist/run-registry.js +1 -1
  87. package/dist/run.js +321 -321
  88. package/dist/sandbox.js +1 -1
  89. package/dist/scan.js +1 -1
  90. package/dist/sdk.js +192 -59
  91. package/dist/sdk~1.js +66 -58
  92. package/dist/server.js +10 -10
  93. package/dist/skill.js +1 -1
  94. package/dist/skills.js +1 -1
  95. package/dist/skills~1.js +1 -1
  96. package/dist/status.js +1 -1
  97. package/dist/status~1.js +2 -2
  98. package/dist/stop.js +1 -1
  99. package/dist/sync.js +1 -1
  100. package/dist/trajectory.js +3 -0
  101. package/dist/update.js +1 -1
  102. package/dist/upgrade.js +1 -1
  103. package/dist/workspace.js +1 -1
  104. package/dist/yaml.js +1 -1
  105. package/package.json +7 -7
  106. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +2 -2
  107. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/06-/350/267/257/347/224/261.md +4 -0
  108. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +8 -0
  109. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/26-/345/237/272/347/241/200/344/277/241/346/201/257.md +2 -1
  110. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/33-/345/261/217/345/271/225.md +124 -8
  111. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/groups.md +1 -1
  112. package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +2 -1
  113. package/skills/doubao-agentic-service-development/references/frontend/examples/page-widget-basics.md +1 -0
  114. package/skills/doubao-agentic-service-development/references/frontend/guides/client-tools-and-events.md +209 -0
  115. package/skills/doubao-agentic-service-development/references/frontend/guides/component-development.md +7 -1
  116. package/skills/doubao-agentic-service-development/references/frontend/guides/debugger-mcp.md +1 -1
  117. package/skills/doubao-agentic-service-development/references/frontend/widget-templates/overview.md +13 -9
  118. package/skills/doubao-agentic-service-development/references/frontend/widget-templates/props.md +26 -1
  119. package/skills/doubao-agentic-service-development/references/frontend-dev.md +2 -0
  120. package/dist/2168.js +0 -60
  121. package/dist/318.js +0 -1
  122. package/dist/3974.js +0 -151
  123. package/dist/6427.js +0 -126
  124. package/dist/7417.js +0 -204
  125. package/dist/7417.js.LICENSE.txt +0 -107
  126. package/dist/7945.js +0 -1
  127. package/dist/8981.js +0 -78
  128. package/dist/assets/web-sdk-debugger/static/css/index.7c65607402.css +0 -1
  129. package/dist/assets/web-sdk-debugger/static/js/670.8a8f0f7d57.js +0 -1829
  130. package/dist/assets/web-sdk-debugger/static/js/async/503.cf61731bba.js +0 -1
  131. package/dist/assets/web-sdk-debugger/static/js/async/lynx-core-chunk.afc1ded023.js +0 -5
  132. package/dist/assets/web-sdk-debugger/static/js/async/web-core-main-chunk.7fe9af852c.js +0 -1
  133. package/dist/assets/web-sdk-debugger/static/js/async/web-core-markup-encoder.f81d6d2cae.js +0 -4
  134. package/dist/assets/web-sdk-debugger/static/js/async/web-core-template-loader-thread.4a49f8a286.js +0 -4
  135. package/dist/assets/web-sdk-debugger/static/js/async/web-core-worker-chunk.c315fd6753.js +0 -1
  136. package/dist/assets/web-sdk-debugger/static/js/async/web-elements.43d1e29387.js +0 -365
  137. package/dist/assets/web-sdk-debugger/static/js/async/xmarkdown-deps.3ea5672b2c.js +0 -5
  138. package/dist/assets/web-sdk-debugger/static/js/index.9f626ba3a2.js +0 -44
  139. package/dist/assets/web-sdk-debugger/static/js/lib-polyfill.9daa7c863e.js +0 -1
  140. package/dist/simulator-client.js +0 -1
  141. /package/dist/{7410.js.LICENSE.txt → 1611.js.LICENSE.txt} +0 -0
  142. /package/dist/assets/web-sdk-debugger/static/js/{670.8a8f0f7d57.js.LICENSE.txt → 479.26e0b1d922.js.LICENSE.txt} +0 -0
package/dist/app.js CHANGED
@@ -1 +1 @@
1
- import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{authorizedFetch as t,getApiUrl as o,configuredFetch as a}from"./2168.js";let i="Doubao Agentic Service",n="doubao-agentic-service-development",r="doubao-agentic-service",s="doubao-agentic-service.zip";class p extends Error{operation;serviceCode;serviceMessage;httpStatus;logId;constructor(e){var t;super(void 0!==(t=e).httpStatus?`${t.operation} failed: HTTP ${t.httpStatus} ${t.httpStatusText??""}`.trim():void 0!==t.serviceCode?`${t.operation} failed: [${t.serviceCode}] ${t.serviceMessage??"unknown error"}`:`${t.operation} failed: ${t.serviceMessage??"unknown error"}`),this.name="GatewayResponseError",this.operation=e.operation,this.serviceCode=e.serviceCode,this.serviceMessage=e.serviceMessage,this.httpStatus=e.httpStatus,this.logId=e.logId}}async function d(e,t){let o=e.headers.get("x-tt-logid")??void 0;if(!e.ok)throw new p({operation:t,httpStatus:e.status,httpStatusText:e.statusText,logId:o});let a=await e.json();if("number"!=typeof a.code)throw new p({operation:t,serviceMessage:"invalid gateway response: missing numeric code",logId:a.log_id??o});if(0!==a.code)throw new p({operation:t,serviceCode:a.code,serviceMessage:a.message??"unknown error",logId:a.log_id??o});return a}let c=/^\d+\.\d+\.\d+$/;function u(e){let t=e?.trim();if(t){if(!c.test(t))throw Error(`--app-version-tag 的值 ${JSON.stringify(t)} 格式不正确。请使用三段由点分隔的纯数字,例如 1.2.3;不要添加 v 前缀或 -beta 等预发布后缀。`);return t}}async function l(e){return d(await t(o(`/app_developer/api/sandbox/app/get?sandbox_project_id=${encodeURIComponent(e)}`),{method:"GET"}),"Get sandbox app")}async function v(e,a,i="manifest"){return d(await t(o("/app_developer/api/yaml/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({yaml:e,mode:a,yaml_type:i})}),"Verify YAML")}async function f(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions`);return d(await t(a,{method:"GET"}),"List mini app versions")}async function g(a){let{readFile:i}=await import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),n=await i(a.filePath),r=o(`/app_developer/api/apps/${encodeURIComponent(a.appKey)}/draft/upload?source_type=${a.sourceType}`);return d(await t(r,{method:"POST",headers:{"Content-Type":a.contentType??"application/zip","Content-Length":String(n.byteLength)},body:new Blob([n],{type:a.contentType??"application/zip"})}),"Upload agentic service version draft package")}async function m(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/start`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sha256:e.sha256})}),"Start agentic service version draft source code uploading")}async function h(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/finish`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({upload_token:e.uploadToken,size:e.size,sha256:e.sha256})}),"Finish agentic service version draft source code uploading")}async function y(t){let[{readFile:o},{createHash:i}]=await Promise.all([import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:crypto"),22)})]),n=await o(t.filePath),r=i("sha256").update(n).digest("hex"),s=(await m({appKey:t.appKey,sha256:r})).data;if(!s?.upload_url||!s.upload_token)throw Error("Start agentic service version draft source code uploading failed: missing upload session");let p=await a(s.upload_url,{method:"PUT",headers:s.upload_headers??{},body:new Blob([n])});if(!p.ok)throw Error(`Upload agentic service version draft source code to TOS failed: HTTP ${p.status} ${p.statusText}`);return h({appKey:t.appKey,uploadToken:s.upload_token,size:n.byteLength,sha256:r})}async function _(e,a={}){let i=u(a.appVersionTag),n=o(`/app_developer/api/apps/${encodeURIComponent(e)}/draft/submit`);return d(await t(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_config_version:process.env.PROJECT_CONFIG_VERSION,version_type:a.release?"release":void 0,app_version_tag:i,dbx_version:"miniapp-version-v2",...a.variables?.length?{variables:a.variables}:{}})}),"Submit agentic service version draft")}async function T(e,a){let i=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions/${encodeURIComponent(a)}/artifact`);return d(await t(i,{method:"GET"}),"Get agentic service version artifact")}export{i as AGENTIC_SERVICE_DISPLAY_NAME,n as AGENTIC_SERVICE_SKILL_NAME,r as DEFAULT_FRONTEND_DIRECTORY,s as FRONTEND_ARCHIVE_FILENAME,p as GatewayResponseError,T as getMiniAppVersionArtifact,l as getSandboxApp,f as listMiniAppVersions,u as normalizeAppVersionTag,d as readGatewayJson,_ as submitMiniAppVersionDraft,g as uploadMiniAppVersionDraftPackage,y as uploadMiniAppVersionDraftSourceCode,v as verifyYAML};
1
+ import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{authorizedFetch as t,getApiUrl as o,configuredFetch as a}from"./2232.js";let n="Doubao Agentic Service",i="doubao-agentic-service-development",r="doubao-agentic-service",p="doubao-agentic-service.zip";class s extends Error{operation;serviceCode;serviceMessage;httpStatus;logId;constructor(e){var t;super(void 0!==(t=e).httpStatus?`${t.operation}失败: HTTP ${t.httpStatus} ${t.httpStatusText??""}`.trim():void 0!==t.serviceCode?`${t.operation}失败: [${t.serviceCode}] ${t.serviceMessage??"未知错误"}`:`${t.operation}失败: ${t.serviceMessage??"未知错误"}`),this.name="GatewayResponseError",this.operation=e.operation,this.serviceCode=e.serviceCode,this.serviceMessage=e.serviceMessage,this.httpStatus=e.httpStatus,this.logId=e.logId}}async function d(e,t){let o=e.headers.get("x-tt-logid")??void 0;if(!e.ok)throw new s({operation:t,httpStatus:e.status,httpStatusText:e.statusText,logId:o});let a=await e.json();if("number"!=typeof a.code)throw new s({operation:t,serviceMessage:"网关响应无效:缺少数字类型的 code",logId:a.log_id??o});if(0!==a.code)throw new s({operation:t,serviceCode:a.code,serviceMessage:a.message??"未知错误",logId:a.log_id??o});return a}let c=/^\d+\.\d+\.\d+$/;function u(e){let t=e?.trim();if(t){if(!c.test(t))throw Error(`--app-version-tag 的值 ${JSON.stringify(t)} 格式不正确。请使用三段由点分隔的纯数字,例如 1.2.3;不要添加 v 前缀或 -beta 等预发布后缀。`);return t}}async function l(e){return d(await t(o(`/app_developer/api/sandbox/app/get?sandbox_project_id=${encodeURIComponent(e)}`),{method:"GET"}),"获取 Sandbox 应用")}async function h(e,a,n="manifest"){return d(await t(o("/app_developer/api/yaml/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({yaml:e,mode:a,yaml_type:n})}),"校验 YAML")}async function _(e,a,n){let i=a?`?page=${a.page}&page_size=${a.page_size}`:"",r=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions${i}`);return d(await t(r,{method:"GET",...n?{signal:n}:{}}),"获取应用版本列表")}async function y(e,a){return d(await t(o("/app_developer/resource_api/package/qrcode_short"),{method:"POST",...a?{signal:a}:{},headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e})}),"获取预览短链")}async function m(a){let{readFile:n}=await import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),i=await n(a.filePath),r=o(`/app_developer/api/apps/${encodeURIComponent(a.appKey)}/draft/upload?source_type=${a.sourceType}`);return d(await t(r,{method:"POST",headers:{"Content-Type":a.contentType??"application/zip","Content-Length":String(i.byteLength)},body:new Blob([i],{type:a.contentType??"application/zip"})}),"上传智能服务版本草稿包")}async function f(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/start`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sha256:e.sha256})}),"发起智能服务版本草稿源码上传")}async function v(e){let a=o(`/app_developer/api/apps/${encodeURIComponent(e.appKey)}/draft/source_code/upload/finish`);return d(await t(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({upload_token:e.uploadToken,size:e.size,sha256:e.sha256})}),"完成智能服务版本草稿源码上传")}async function g(t){let[{readFile:o},{createHash:n}]=await Promise.all([import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:fs/promises"),22)}),import("node:module").then(function(t){return e.t(t.createRequire(import.meta.url)("node:crypto"),22)})]),i=await o(t.filePath),r=n("sha256").update(i).digest("hex"),p=(await f({appKey:t.appKey,sha256:r})).data;if(!p?.upload_url||!p.upload_token)throw Error("发起智能服务版本草稿源码上传失败:缺少上传会话");let s=await a(p.upload_url,{method:"PUT",headers:p.upload_headers??{},body:new Blob([i])});if(!s.ok)throw Error(`上传智能服务版本草稿源码到 TOS 失败:HTTP ${s.status} ${s.statusText}`);return v({appKey:t.appKey,uploadToken:p.upload_token,size:i.byteLength,sha256:r})}async function T(e,a={}){let n=u(a.appVersionTag),i=o(`/app_developer/api/apps/${encodeURIComponent(e)}/draft/submit`);return d(await t(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_config_version:process.env.PROJECT_CONFIG_VERSION,version_type:a.release?"release":void 0,app_version_tag:n,dbx_version:"miniapp-version-v2",...a.variables?.length?{variables:a.variables}:{}})}),"提交智能服务版本草稿")}async function S(e,a){let n=o(`/app_developer/api/apps/${encodeURIComponent(e)}/app_versions/${encodeURIComponent(a)}/artifact`);return d(await t(n,{method:"GET"}),"获取智能服务版本产物")}export{n as AGENTIC_SERVICE_DISPLAY_NAME,i as AGENTIC_SERVICE_SKILL_NAME,r as DEFAULT_FRONTEND_DIRECTORY,p as FRONTEND_ARCHIVE_FILENAME,s as GatewayResponseError,y as createPreviewShortLink,S as getMiniAppVersionArtifact,l as getSandboxApp,_ as listMiniAppVersions,u as normalizeAppVersionTag,d as readGatewayJson,T as submitMiniAppVersionDraft,m as uploadMiniAppVersionDraftPackage,g as uploadMiniAppVersionDraftSourceCode,h as verifyYAML};
@@ -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){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};
1
+ let runtimeBridgeController;function utils_isRecord(e){return"object"==typeof e&&null!==e}function readAppTheme(e){let t=utils_isRecord(e)?e.appTheme:void 0;return"light"===t||"dark"===t?t:void 0}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(e=runtimeBridgeController){var t;return null!=(t=null==e?void 0:e.getCurrentPages())?t:[]}function page_stack_getRuntimePackageInfo(e=runtimeBridgeController){return null==e?void 0:e.getPackageInfo()}async function navigateRuntimeTo(e,t=runtimeBridgeController){return await (null==t?void 0:t.navigateTo(e)),!!t}async function redirectRuntimeTo(e,t=runtimeBridgeController){return await (null==t?void 0:t.redirectTo(e)),!!t}async function reLaunchRuntime(e,t=runtimeBridgeController){return await (null==t?void 0:t.reLaunch(e)),!!t}function navigateRuntimeBack(e,t=runtimeBridgeController){var r;return null!=(r=null==t?void 0:t.navigateBack(e))&&r}function exitRuntimeApp(e=runtimeBridgeController){return null==e||e.exitApp(),!!e}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),a="function"==typeof t?{source:t}:t;return this.stopEventSource(e),this.eventSources.set(e,a),(null!=(n=this.eventSourceRetainCounts.get(e))?n:0)>0&&this.startEventSource(e,a),()=>{if(this.eventSources.get(e)===a){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={},r){if(!isBridgeCallMessage(e))return;let n={...t,apiRegistry:this};if(this.canIUse(e.name,n))return dispatchBridgeAPI(e,this.handlers,n);if(!r)return createFailedCallback(e,`API ${e.name} is not implemented in Doubao Web SDK`);try{let t=r(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)}isSubscribed(e){return this.subscribedEventNames.has(e)}emit(e,t){return!!this.isSubscribed(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,a=null==i?void 0:i.find(({brand:e})=>!/not.a.brand/i.test(e));if(null==a?void 0:a.version)return a.version;let o=null!=(e=navigator.userAgent)?e:"";return null!=(t=null==(n=/(?:edg|chrome|crios|firefox|fxios|version)\/([\d.]+)/i.exec(o))?void 0:n[1])?t:void 0}function getPlatformInfo(){var e,t,r,n,i;let a=null!=(e=navigator.userAgent)?e:"",o=null!=(t=navigator.platform)?t:"",s=null!=(r=null==(i=getUserAgentData())?void 0:i.platform)?r:"",l=`${s} ${o} ${a}`,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(o)&&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,a,o;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==(a=window.screen)?void 0:a.height)?r:l),d=Math.round(null!=(n=null==(o=window.visualViewport)?void 0:o.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,a;let o=null!=(e=navigator.userAgent)?e:"",s=getPlatform();return"android"===s?null==(t=/android\s+([\d.]+)/i.exec(o))?void 0:t[1]:"ios"===s?null==(n=/(?:iphone os|cpu os)\s+([\d_]+)/i.exec(o))||null==(r=n[1])?void 0:r.replace(/_/g,"."):"mac"===s?null==(a=/mac os x\s+([\d_]+)/i.exec(o))||null==(i=a[1])?void 0:i.replace(/_/g,"."):void 0}function getSystemName(e=getPlatform()){return"android"===e?"Android":"ios"===e?"iOS":"mac"===e?"macOS":"windows"===e?"Windows":"linux"===e?"Linux":"Web"}function getSystemNameAndVersion(){let e=getPlatform(),t=getSystemVersion();if("web"!==e){let r=getSystemName(e);return t?`${r} ${t}`:r}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:getSystemName(e.platform),platform: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,n){return(null!=t?t:defaultBridgeAPIRegistry).getSyncResults({globalProps:r,navigation:n,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 getWebFileSystemNamespace(e){var t;let r=(null==e||null==(t=e.packageInfo)?void 0:t.appId)||(null==e?void 0:e.appName)||"unknown-app",n=(null==e?void 0:e.userId)||(null==e?void 0:e.userID)||"anonymous";return`${encodeURIComponent(r)}:${encodeURIComponent(n)}`}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),n){let i=getSupportedWebBridgeAPINames(t);return{fileSystemNamespace:r,fileSystemSnapshot:getFileSystemSnapshot(r),apiResults:getSystemSyncBridgeAPIResults(null==e?void 0:e.packageInfo,t,e,n),storageSnapshot:getStorageSnapshot(),supportedAPIs:i}}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 a=Date.now(),o=e.entries[i];if((null==o?void 0:o.type)==="directory")throw Error(`path is a directory: ${i}`);e.entries[i]={type:"file",data:bytesToBase64(r),createTime:null!=(n=null==o?void 0:o.createTime)?n:a,lastModifiedTime:a}}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"),a=normalizePath(i),o=n.entries[a];if((null==o?void 0:o.type)==="directory")throw Error(`path is a directory: ${a}`);let s=(null==o?void 0:o.type)==="file"?base64ToBytes(o.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"),a=normalizePath(i),o=Date.now(),s=n.entries[a];if((null==s?void 0:s.type)==="directory")return{};if(s)throw Error(`path is not a directory: ${a}`);if(!0===t.recursive){let e="";for(let t of a.split("/").filter(Boolean))if(e+=`/${t}`,n.entries[e]||(n.entries[e]={type:"directory",createTime:o,lastModifiedTime:o}),"directory"!==n.entries[e].type)throw Error(`path is not a directory: ${e}`)}else assertParentDirectory(n,i),n.entries[a]={type:"directory",createTime:o,lastModifiedTime:o};return r(),{}}function rmdir(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"dirPath"),a=normalizePath(i);if("/temp"===a||"/user"===a)throw Error("cannot remove root directory");assertDirectory(n,i);let o=`${a}/`,s=Object.keys(n.entries).filter(e=>e.startsWith(o));if(!0!==t.recursive&&s.length>0)throw Error(`directory is not empty: ${a}`);for(let e of s)delete n.entries[e];return delete n.entries[a],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"),a=normalizePath(i);return assertFile(n,i),delete n.entries[a],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"),a=getStringParam(t,"newPath"),o=normalizePath(i),s=normalizePath(a);if(!n.entries[o])throw Error(`path not found: ${o}`);if("/temp"===o||"/user"===o)throw Error("cannot rename root directory");for(let e of(createParentDirectories(n,a),Object.keys(n.entries)))if(e===o||e.startsWith(`${o}/`)){let t=s+e.slice(o.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"),a=assertFile(n,i),o="number"==typeof t.length?t.length:0,s=base64ToBytes(a.data),l=new Uint8Array(o);return l.set(s.slice(0,o)),writeFileEntry(n,i,l),r(),{}}function saveFile(e,t,r){let n=sync_file_system_getFileSystemSnapshot(e),i=getStringParam(t,"tempFilePath"),a=assertFile(n,i),o=getOptionalStringParam(t,"filePath"),s=o&&o.length>0?o:toAppletFilePath(`/user/${Date.now()}_${getBaseName(i)}`);return writeFileEntry(n,s,base64ToBytes(a.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 getPackageInfoFromGlobalProps(e){var t,r,n,i,a,o,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!=(a=l.name)?a:e.appName)?i:"",versionName:null!=(o=null!=(s=l.versionName)?s:e.appVersion)?o:""}}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=getPackageInfoFromGlobalProps(e),i=createFallbackWindowInfo(),a=createFallbackDeviceInfo(),o=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:o,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:a.brand,model:a.model,language:o,version:l,system:a.system,platform:a.platform,SDKVersion:u,theme:s,benchmarkLevel:-1,enableDebug:!0,deviceOrientation:"portrait",abi:a.abi},"doubao.getSystemSetting":{bluetoothEnabled:!1,locationEnabled:!0,wifiEnabled:!0,deviceOrientation:"portrait"},"doubao.getWindowInfo":i,"doubao.getDeviceInfo":a,"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),a=validateWebStorageWrite(n,t.key,i);return setLocalStorageItem(a,i),n[a]=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 a=localBridgeHandlers[e.name];if(a)try{let r=utils_isRecord(e.params)?e.params:{};return bridge_api_createSuccessCallback(e,a(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.9f626ba3a2.js"></script><link href="/static/css/index.7c65607402.css" rel="stylesheet"></head>
8
+ <link rel="icon" href="/favicon.svg" type="image/svg+xml"><script type="module" src="/static/js/lib-polyfill.c91181f230.js"></script><script type="module" src="/static/js/lib-react.6b5c1c8899.js"></script><script type="module" src="/static/js/426.53c43a8594.js"></script><script type="module" src="/static/js/479.26e0b1d922.js"></script><script type="module" src="/static/js/index.b6e5c76345.js"></script><link href="/static/css/index.ef5d8bc5ad.css" rel="stylesheet"></head>
9
9
  <body>
10
10
  <main id="app"></main>
11
11
  </body>
@@ -8653,6 +8653,10 @@ function getHookState(vnode, index, type) {
8653
8653
  const { type } = vnode;
8654
8654
  if (type === config.Fragment) return "Fragment";
8655
8655
  else if (typeof type === "function") {
8656
+ if (type.Provider === type) {
8657
+ const name = type.displayName;
8658
+ return `${name ? `${name}.` : ""}Provider`;
8659
+ }
8656
8660
  // Context is a special case :((
8657
8661
  // See: https://reactjs.org/docs/context.html#contextdisplayname
8658
8662
  const c = bindings_getComponent(vnode);
@@ -8748,7 +8752,6 @@ function isElement(vnode) {
8748
8752
  }
8749
8753
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8750
8754
  function isPortal(vnode) {
8751
- // TODO: Find a way to detect portals
8752
8755
  return false;
8753
8756
  }
8754
8757
  const bindingsV10 = (/* unused pure expression or super */ null && ({