@openclaw/matrix 2026.9.4 → 2026.9.5

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 (938) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{account-selection-Bbtc483D.js → .setup/account-selection-5koohRSQ.mjs} +2 -2
  4. package/dist/{accounts-GwSAk9vY.js → .setup/accounts-BF5hyc-1.mjs} +3 -3
  5. package/dist/{approval-handler.runtime-6I3IpyeX.js → .setup/approval-handler.runtime-CoZCYGUH.mjs} +14 -13
  6. package/dist/{approval-ids-C4NdeXNz.js → .setup/approval-ids-CZOcdJ-5.mjs} +1 -1
  7. package/dist/{approval-reaction-auth-cbltZAUQ.js → .setup/approval-reaction-auth-B51E4ZDa.mjs} +2 -2
  8. package/dist/{approval-reactions-1fwEhoK9.js → .setup/approval-reactions-B0hfA6qz.mjs} +6 -6
  9. package/dist/{channel-Cg97H4c1.js → .setup/channel-q6TBKEiG.mjs} +25 -17
  10. package/dist/{channel.runtime-Bhpfa1qc.js → .setup/channel.runtime-DcDBdxe6.mjs} +6 -6
  11. package/dist/{channel.setup-DmS7m7aT.js → .setup/channel.setup-DZQ5rf9k.mjs} +9 -5
  12. package/dist/{cli-CLexRrQw.js → .setup/cli-Cx_cNaXN.mjs} +16 -16
  13. package/dist/{cli-metadata-zRyVmUOL.js → .setup/cli-metadata-DHU1H-Vr.mjs} +1 -1
  14. package/dist/{client-C0nZFCTj.js → .setup/client-By2B3Wz4.mjs} +5 -3
  15. package/dist/{client-CPcRv6ab.js → .setup/client-DsJUnWlV.mjs} +95 -93
  16. package/dist/{client-bootstrap-DLN-K8Xb.js → .setup/client-bootstrap-DGX0f-4x.mjs} +17 -8
  17. package/dist/{client-support-DLj4vDeu.js → .setup/client-support-Bn9Bk0-H.mjs} +1 -1
  18. package/dist/{config-update-BnX26jCO.js → .setup/config-update-B_4qZ5bV.mjs} +3 -3
  19. package/dist/.setup/create-client-DQXAZjTw.mjs +61 -0
  20. package/dist/{credentials-DysXbkv2.js → .setup/credentials-CeRipapZ.mjs} +40 -17
  21. package/dist/{credentials-read-WWpqi88V.js → .setup/credentials-read-Dp7BoEdm.mjs} +22 -9
  22. package/dist/{credentials-write.runtime-D22lPwRO.js → .setup/credentials-write.runtime-M_bUf3rL.mjs} +1 -1
  23. package/dist/{crypto-runtime-DiyH4R3D.js → .setup/crypto-runtime-9oxuU30y.mjs} +5 -6
  24. package/dist/{crypto-snapshot-doctor.runtime-DxgUMXUy.js → .setup/crypto-snapshot-doctor.runtime-DXpLbQ7y.mjs} +3 -3
  25. package/dist/{device-health-B4-YXtJR.js → .setup/device-health-CWOuIirq.mjs} +1 -1
  26. package/dist/.setup/direct-management-B2Bno2xL.mjs +346 -0
  27. package/dist/{directory-live-B8-GAVcc.js → .setup/directory-live-CatwztQc.mjs} +8 -6
  28. package/dist/{doctor-CJE8wO6y.js → .setup/doctor-BLCvdOFo.mjs} +1 -1
  29. package/dist/{draft-stream--NdEtnZ8.js → .setup/draft-stream-DIFZDNrb.mjs} +2 -2
  30. package/dist/{encryption-guidance-mDyxJV9U.js → .setup/encryption-guidance-DYEbeYj-.mjs} +2 -2
  31. package/dist/{http-client-BfPeF4CE.js → .setup/http-client-BJjo-iw5.mjs} +75 -9
  32. package/dist/{idb-persistence-DBdwHSWg.js → .setup/idb-persistence-CIfFUjP3.mjs} +12 -8
  33. package/dist/{inbound-dedupe-Ch33GU06.js → .setup/inbound-dedupe-BSlv35xl.mjs} +1 -1
  34. package/dist/.setup/joined-room-encryption-BCtxQ3hR.mjs +67 -0
  35. package/dist/{logger-B_71hN6W.js → .setup/logger-xBjiRIp1.mjs} +1 -1
  36. package/dist/{logging-DRjvUOIh.js → .setup/logging-rgm8ep9H.mjs} +2 -2
  37. package/dist/{messages-CpZfiQO0.js → .setup/messages-SW0NPYnR.mjs} +4 -4
  38. package/dist/{monitor-BUek91SW.js → .setup/monitor-DQfYX5rA.mjs} +118 -264
  39. package/dist/{outbound-D91JinYa.js → .setup/outbound-DRWtSUe-.mjs} +12 -4
  40. package/dist/.setup/probe.runtime-qPRZE3Yf.mjs +2 -0
  41. package/dist/{profile-vmjsmhh4.js → .setup/profile-ClrB3IgR.mjs} +1 -1
  42. package/dist/{profile-update-vnhxwjEt.js → .setup/profile-update-DPttQz3-.mjs} +4 -4
  43. package/dist/{reaction-events-2WM2nJe_.js → .setup/reaction-events-CdAk_rh_.mjs} +7 -7
  44. package/dist/{resolve-targets-K8D0HWPX.js → .setup/resolve-targets-drjgAdIe.mjs} +3 -3
  45. package/dist/{resolver.runtime-C88GwQCx.js → .setup/resolver.runtime-Ci6ddcPh.mjs} +1 -1
  46. package/dist/{room-info-BPVJkXnp.js → .setup/room-info-DHd1j3qM.mjs} +4 -4
  47. package/dist/.setup/runtime-1kn1P6io.mjs +29 -0
  48. package/dist/.setup/runtime-setter-api-DtxDAM-x.mjs +3 -0
  49. package/dist/{sdk-B4By16Bt.js → .setup/sdk-BkKE4ANj.mjs} +524 -285
  50. package/dist/{secret-contract-CufozuyJ.js → .setup/secret-contract-JlB6VmI3.mjs} +1 -1
  51. package/dist/.setup/secret-contract-api-B-iJoQEv.mjs +3 -0
  52. package/dist/{reaction-common-DkrQdBSZ.js → .setup/send-currentness-BrGXL7b8.mjs} +20 -1
  53. package/dist/{send-UWLIQ0bG.js → .setup/send-h0gZ_-qk.mjs} +197 -415
  54. package/dist/{setup-bootstrap-sVqkwtSY.js → .setup/setup-bootstrap-BYgBD504.mjs} +3 -3
  55. package/dist/{setup-core-8keb-Yre.js → .setup/setup-core-BUcDAM7q.mjs} +7 -7
  56. package/dist/.setup/setup-plugin-api-DoTm4v2q.mjs +3 -0
  57. package/dist/{setup-surface-bcluelBI.js → .setup/setup-surface-V_Q-enq-.mjs} +12 -12
  58. package/dist/{startup-verification-BTSf31hS.js → .setup/startup-verification-Bq5qeEGn.mjs} +3 -3
  59. package/dist/{storage-CV-pfV_2.js → .setup/storage-DJ-oUgmX.mjs} +42 -27
  60. package/dist/{storage-metadata-DYArLcq1.js → .setup/storage-metadata-BQJjHC_i.mjs} +58 -51
  61. package/dist/{subagent-hooks-DeICLbU5.js → .setup/subagent-hooks-jFgft_Mr.mjs} +1 -1
  62. package/dist/{sync-cache-state-C-mhj3xb.js → .setup/sync-cache-state-CFiZIPhA.mjs} +2 -2
  63. package/dist/{thread-binding-api-CzkeLZCU.js → .setup/thread-binding-api-DRMC62cs.mjs} +1 -1
  64. package/dist/{thread-bindings-Bwv87Gve.js → .setup/thread-bindings-Hy96ujd3.mjs} +6 -6
  65. package/dist/{tool-actions.runtime-Bf98Juk6.js → .setup/tool-actions.runtime-Dckttu43.mjs} +21 -14
  66. package/dist/{verification-BbG-VC9S.js → .setup/verification-CKqBZ9mI.mjs} +4 -3
  67. package/dist/api.js +8 -8
  68. package/dist/auth-presence.js +1 -1
  69. package/dist/channel-plugin-api.js +1 -1
  70. package/dist/cli-metadata.js +1 -1
  71. package/dist/contract-api.js +2 -2
  72. package/dist/doctor-contract-api.js +8 -8
  73. package/dist/helper-api.js +3 -3
  74. package/dist/index.js +4 -1
  75. package/dist/plugin-entry.handlers.runtime.js +1 -1
  76. package/dist/runtime-api.js +6 -6
  77. package/dist/runtime-setter-api.js +2 -2
  78. package/dist/secret-contract-api.js +1 -1
  79. package/dist/session-binding-contract-api.js +2 -2
  80. package/dist/setup-entry.js +4 -3
  81. package/dist/setup-plugin-api.js +1 -1
  82. package/dist/subagent-hooks-api.js +1 -1
  83. package/dist/thread-binding-api.js +1 -1
  84. package/dist/thread-bindings-runtime.js +1 -1
  85. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
  86. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +17 -17
  87. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +17 -17
  88. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
  89. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +5 -5
  90. package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs +442 -434
  91. package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs.map +1 -1
  92. package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js +2 -2
  93. package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js.map +1 -1
  94. package/node_modules/markdown-it/dist/markdown-it.cjs.js +32 -16
  95. package/node_modules/markdown-it/dist/markdown-it.cjs.js.map +1 -1
  96. package/node_modules/markdown-it/dist/markdown-it.mjs +32 -16
  97. package/node_modules/markdown-it/dist/markdown-it.mjs.map +1 -1
  98. package/node_modules/markdown-it/node_modules/argparse/LICENSE +1 -208
  99. package/node_modules/markdown-it/node_modules/argparse/package.json +2 -2
  100. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts +23 -3
  101. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -1
  102. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js +52 -37
  103. package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js.map +1 -1
  104. package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts +61 -28
  105. package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts.map +1 -1
  106. package/node_modules/markdown-it/node_modules/entities/dist/decode.js +789 -201
  107. package/node_modules/markdown-it/node_modules/entities/dist/decode.js.map +1 -1
  108. package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts +4 -2
  109. package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts.map +1 -1
  110. package/node_modules/markdown-it/node_modules/entities/dist/encode.js +249 -44
  111. package/node_modules/markdown-it/node_modules/entities/dist/encode.js.map +1 -1
  112. package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts +19 -7
  113. package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts.map +1 -1
  114. package/node_modules/markdown-it/node_modules/entities/dist/escape.js +104 -64
  115. package/node_modules/markdown-it/node_modules/entities/dist/escape.js.map +1 -1
  116. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -1
  117. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js +2 -2
  118. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js.map +1 -1
  119. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -1
  120. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js +4 -2
  121. package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -1
  122. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts +2 -4
  123. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -1
  124. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js +1 -10
  125. package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js.map +1 -1
  126. package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts +2 -2
  127. package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts.map +1 -1
  128. package/node_modules/markdown-it/node_modules/entities/dist/index.js +2 -6
  129. package/node_modules/markdown-it/node_modules/entities/dist/index.js.map +1 -1
  130. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts +39 -8
  131. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -1
  132. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js +37 -6
  133. package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -1
  134. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts +35 -4
  135. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -1
  136. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js +189 -11
  137. package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js.map +1 -1
  138. package/node_modules/markdown-it/node_modules/entities/package.json +14 -14
  139. package/node_modules/markdown-it/node_modules/entities/src/decode-codepoint.ts +58 -39
  140. package/node_modules/markdown-it/node_modules/entities/src/decode.ts +942 -245
  141. package/node_modules/markdown-it/node_modules/entities/src/encode.ts +289 -47
  142. package/node_modules/markdown-it/node_modules/entities/src/escape.ts +110 -83
  143. package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-html.ts +8 -3
  144. package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-xml.ts +4 -4
  145. package/node_modules/markdown-it/node_modules/entities/src/generated/encode-html.ts +1 -16
  146. package/node_modules/markdown-it/node_modules/entities/src/index.ts +6 -8
  147. package/node_modules/markdown-it/node_modules/entities/src/internal/bin-trie-flags.ts +38 -7
  148. package/node_modules/markdown-it/node_modules/entities/src/internal/decode-shared.ts +203 -12
  149. package/node_modules/markdown-it/package.json +1 -1
  150. package/node_modules/matrix-js-sdk/CHANGELOG.md +15 -0
  151. package/node_modules/matrix-js-sdk/lib/client.d.ts +1 -2
  152. package/node_modules/matrix-js-sdk/lib/client.d.ts.map +1 -1
  153. package/node_modules/matrix-js-sdk/lib/client.js +16 -8
  154. package/node_modules/matrix-js-sdk/lib/client.js.map +1 -1
  155. package/node_modules/matrix-js-sdk/lib/http-api/errors.d.ts +8 -0
  156. package/node_modules/matrix-js-sdk/lib/http-api/errors.d.ts.map +1 -1
  157. package/node_modules/matrix-js-sdk/lib/http-api/errors.js +12 -0
  158. package/node_modules/matrix-js-sdk/lib/http-api/errors.js.map +1 -1
  159. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.d.ts +5 -0
  160. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
  161. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js +2 -1
  162. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  163. package/node_modules/matrix-js-sdk/lib/oauth/authorize.d.ts +2 -4
  164. package/node_modules/matrix-js-sdk/lib/oauth/authorize.d.ts.map +1 -1
  165. package/node_modules/matrix-js-sdk/lib/oauth/authorize.js.map +1 -1
  166. package/node_modules/matrix-js-sdk/lib/oauth/error.d.ts +44 -0
  167. package/node_modules/matrix-js-sdk/lib/oauth/error.d.ts.map +1 -1
  168. package/node_modules/matrix-js-sdk/lib/oauth/error.js +53 -0
  169. package/node_modules/matrix-js-sdk/lib/oauth/error.js.map +1 -1
  170. package/node_modules/matrix-js-sdk/lib/oauth/index.d.ts.map +1 -1
  171. package/node_modules/matrix-js-sdk/lib/oauth/index.js +19 -2
  172. package/node_modules/matrix-js-sdk/lib/oauth/index.js.map +1 -1
  173. package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.d.ts.map +1 -1
  174. package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.js +4 -2
  175. package/node_modules/matrix-js-sdk/lib/oauth/tokenRefresher.js.map +1 -1
  176. package/node_modules/matrix-js-sdk/lib/secret-storage.d.ts +1 -1
  177. package/node_modules/matrix-js-sdk/lib/secret-storage.d.ts.map +1 -1
  178. package/node_modules/matrix-js-sdk/lib/secret-storage.js +9 -32
  179. package/node_modules/matrix-js-sdk/lib/secret-storage.js.map +1 -1
  180. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.d.ts.map +1 -1
  181. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js +54 -1
  182. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js.map +1 -1
  183. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/dist/api.js +556 -311
  184. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/dist/api.min.js +1 -1
  185. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.d.ts +2 -0
  186. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.js +221 -129
  187. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/ClientWidgetApi.js.map +1 -1
  188. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/Symbols.js.map +1 -1
  189. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.d.ts +37 -0
  190. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.js +182 -63
  191. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/WidgetApi.js.map +1 -1
  192. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.d.ts +20 -1
  193. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.js +49 -20
  194. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/driver/WidgetDriver.js.map +1 -1
  195. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/index.d.ts +1 -0
  196. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/index.js.map +1 -1
  197. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.d.ts +2 -1
  198. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.js +3 -2
  199. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ApiVersion.js.map +1 -1
  200. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.d.ts +9 -1
  201. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.js +2 -0
  202. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/Capabilities.js.map +1 -1
  203. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/CapabilitiesAction.js.map +1 -1
  204. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ContentLoadedAction.js.map +1 -1
  205. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/DownloadFileAction.js.map +1 -1
  206. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/GetMediaConfigAction.js.map +1 -1
  207. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/GetOpenIDAction.js.map +1 -1
  208. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ICustomWidgetData.js.map +1 -1
  209. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IJitsiWidgetData.js.map +1 -1
  210. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IRoomAccountData.js.map +1 -1
  211. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IRoomEvent.js.map +1 -1
  212. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IStickerpickerWidgetData.js.map +1 -1
  213. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IToDeviceMessage.js.map +1 -1
  214. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidget.js.map +1 -1
  215. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiErrorResponse.js +1 -1
  216. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiErrorResponse.js.map +1 -1
  217. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiRequest.js.map +1 -1
  218. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/IWidgetApiResponse.js.map +1 -1
  219. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/LanguageChangeAction.js.map +1 -1
  220. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ModalButtonKind.js.map +1 -1
  221. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ModalWidgetActions.js.map +1 -1
  222. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/NavigateAction.js.map +1 -1
  223. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/OpenIDCredentialsAction.js.map +1 -1
  224. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadEventAction.js.map +1 -1
  225. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadRelationsAction.js.map +1 -1
  226. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ReadRoomAccountDataAction.js.map +1 -1
  227. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.d.ts +53 -0
  228. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.js +6 -0
  229. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcLivekitActions.js.map +1 -0
  230. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/RtcTransportsAction.js.map +1 -1
  231. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ScreenshotAction.js.map +1 -1
  232. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SendEventAction.js.map +1 -1
  233. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SendToDeviceAction.js.map +1 -1
  234. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SetModalButtonEnabledAction.js.map +1 -1
  235. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/StickerAction.js.map +1 -1
  236. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/StickyAction.js.map +1 -1
  237. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/SupportedVersionsAction.js.map +1 -1
  238. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/ThemeChangeAction.js.map +1 -1
  239. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/TurnServerActions.js.map +1 -1
  240. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UpdateDelayedEventAction.js.map +1 -1
  241. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UpdateStateAction.js.map +1 -1
  242. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UploadFileAction.js.map +1 -1
  243. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/UserDirectorySearchAction.js.map +1 -1
  244. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/VisibilityAction.js.map +1 -1
  245. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.d.ts +9 -1
  246. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.js +2 -0
  247. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiAction.js.map +1 -1
  248. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetApiDirection.js.map +1 -1
  249. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetConfigAction.js.map +1 -1
  250. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetKind.js.map +1 -1
  251. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/interfaces/WidgetType.js.map +1 -1
  252. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/Widget.js +20 -20
  253. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/Widget.js.map +1 -1
  254. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetEventCapability.js +9 -9
  255. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetEventCapability.js.map +1 -1
  256. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetParser.js +23 -23
  257. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/WidgetParser.js.map +1 -1
  258. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/validation/url.js.map +1 -1
  259. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/models/validation/utils.js.map +1 -1
  260. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/templating/url-template.js.map +1 -1
  261. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/ITransport.js.map +1 -1
  262. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/PostmessageTransport.js +32 -32
  263. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/transport/PostmessageTransport.js.map +1 -1
  264. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/util/SimpleObservable.js +10 -10
  265. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/lib/util/SimpleObservable.js.map +1 -1
  266. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/package.json +2 -2
  267. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/ClientWidgetApi.ts +48 -0
  268. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/WidgetApi.ts +75 -1
  269. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts +33 -0
  270. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/index.ts +1 -0
  271. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/ApiVersion.ts +2 -0
  272. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/Capabilities.ts +8 -0
  273. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/RtcLivekitActions.ts +80 -0
  274. package/node_modules/matrix-js-sdk/node_modules/matrix-widget-api/src/interfaces/WidgetApiAction.ts +10 -0
  275. package/node_modules/matrix-js-sdk/node_modules/p-retry/index.d.ts +1 -1
  276. package/node_modules/matrix-js-sdk/node_modules/p-retry/index.js +4 -0
  277. package/node_modules/matrix-js-sdk/node_modules/p-retry/package.json +1 -1
  278. package/node_modules/matrix-js-sdk/node_modules/p-retry/readme.md +1 -1
  279. package/node_modules/matrix-js-sdk/package.json +2 -2
  280. package/node_modules/matrix-js-sdk/src/client.ts +19 -11
  281. package/node_modules/matrix-js-sdk/src/http-api/errors.ts +16 -0
  282. package/node_modules/matrix-js-sdk/src/matrixrtc/MatrixRTCSession.ts +8 -1
  283. package/node_modules/matrix-js-sdk/src/oauth/authorize.ts +2 -5
  284. package/node_modules/matrix-js-sdk/src/oauth/error.ts +69 -0
  285. package/node_modules/matrix-js-sdk/src/oauth/index.ts +19 -2
  286. package/node_modules/matrix-js-sdk/src/oauth/tokenRefresher.ts +9 -2
  287. package/node_modules/matrix-js-sdk/src/secret-storage.ts +8 -31
  288. package/node_modules/matrix-js-sdk/src/sliding-sync-sdk.ts +74 -0
  289. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  290. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  291. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
  292. package/node_modules/typebox/build/format/iri.mjs +5 -1
  293. package/node_modules/typebox/build/guard/emit.mjs +2 -4
  294. package/node_modules/typebox/build/guard/guard.mjs +6 -18
  295. package/node_modules/typebox/build/guard/string.mjs +16 -24
  296. package/node_modules/typebox/build/schema/build.mjs +2 -2
  297. package/node_modules/typebox/build/schema/check.mjs +1 -1
  298. package/node_modules/typebox/build/schema/compile.d.mts +3 -2
  299. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  300. package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
  301. package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
  302. package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
  303. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  304. package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
  305. package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
  306. package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
  307. package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
  308. package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
  309. package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
  310. package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
  311. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
  312. package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
  313. package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
  314. package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
  315. package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
  316. package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
  317. package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
  318. package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
  319. package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
  320. package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
  321. package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
  322. package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
  323. package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
  324. package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
  325. package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
  326. package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
  327. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
  328. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
  329. package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
  330. package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
  331. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
  332. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
  333. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
  334. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
  335. package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
  336. package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
  337. package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
  338. package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
  339. package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
  340. package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
  341. package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
  342. package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
  343. package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
  344. package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
  345. package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
  346. package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
  347. package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
  348. package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
  349. package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
  350. package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
  351. package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
  352. package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
  353. package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
  354. package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
  355. package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
  356. package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
  357. package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
  358. package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
  359. package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
  360. package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
  361. package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
  362. package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
  363. package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
  364. package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
  365. package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
  366. package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
  367. package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
  368. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
  369. package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
  370. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
  371. package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
  372. package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
  373. package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
  374. package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
  375. package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
  376. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
  377. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
  378. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
  379. package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
  380. package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
  381. package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
  382. package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
  383. package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
  384. package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
  385. package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
  386. package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
  387. package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
  388. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
  389. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
  390. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
  391. package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
  392. package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
  393. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  394. package/node_modules/typebox/build/schema/errors.mjs +8 -14
  395. package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
  396. package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
  397. package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
  398. package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
  399. package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
  400. package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
  401. package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
  402. package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
  403. package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
  404. package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
  405. package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
  406. package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
  407. package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
  408. package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
  409. package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
  410. package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
  411. package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
  412. package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
  413. package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
  414. package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
  415. package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
  416. package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
  417. package/node_modules/typebox/build/schema/parse.d.mts +1 -0
  418. package/node_modules/typebox/build/schema/parse.mjs +10 -5
  419. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
  420. package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
  421. package/node_modules/typebox/build/schema/schema.d.mts +2 -0
  422. package/node_modules/typebox/build/schema/schema.mjs +2 -0
  423. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
  424. package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
  425. package/node_modules/typebox/package.json +1 -1
  426. package/node_modules/typebox/readme.md +59 -89
  427. package/node_modules/zod/README.md +27 -0
  428. package/node_modules/zod/compile.cjs +77 -0
  429. package/node_modules/zod/compile.d.cts +1 -0
  430. package/node_modules/zod/compile.d.ts +1 -0
  431. package/node_modules/zod/compile.js +52 -0
  432. package/node_modules/zod/index.cjs +2 -2
  433. package/node_modules/zod/index.d.cts +1 -2
  434. package/node_modules/zod/index.d.ts +1 -2
  435. package/node_modules/zod/index.js +5 -2
  436. package/node_modules/zod/package.json +13 -2
  437. package/node_modules/zod/src/compile.ts +56 -0
  438. package/node_modules/zod/src/index.ts +5 -2
  439. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  440. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  441. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  442. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  443. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  444. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  445. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  446. package/node_modules/zod/src/v3/types.ts +5 -5
  447. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  448. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  449. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  450. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  451. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  452. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  453. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  454. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  455. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  456. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  457. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  458. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  459. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  460. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  461. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  462. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  463. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  464. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  465. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  466. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  467. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  468. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  469. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  470. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  471. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  472. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  473. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  474. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  475. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  476. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  477. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  478. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  479. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  480. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  481. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  482. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  483. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  484. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  485. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  486. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  487. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  488. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  489. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  490. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  491. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  492. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  493. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  494. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  495. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  496. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  497. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  498. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  499. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  500. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  501. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  502. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  503. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  504. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  505. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  506. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  507. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  508. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  509. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  510. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  511. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  512. package/node_modules/zod/src/v4/core/api.ts +48 -12
  513. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  514. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  515. package/node_modules/zod/src/v4/core/core.ts +98 -19
  516. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  517. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  518. package/node_modules/zod/src/v4/core/index.ts +3 -0
  519. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  520. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  521. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  522. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  523. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  524. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  525. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  526. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  527. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  528. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  529. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  530. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  531. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  532. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  533. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  534. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  535. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  536. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  537. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  538. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  539. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  540. package/node_modules/zod/src/v4/core/util.ts +268 -42
  541. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  542. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  543. package/node_modules/zod/src/v4/index.ts +3 -3
  544. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  545. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  546. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  547. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  548. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  549. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  550. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  551. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  552. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  553. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  554. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  555. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  556. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  557. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  558. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  559. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  560. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  561. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  562. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  563. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  564. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  565. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  566. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  567. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  568. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  569. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  570. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  571. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  572. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  573. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  574. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  575. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  576. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  577. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  578. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  579. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  580. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  581. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  582. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  583. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  584. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  585. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  586. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  587. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  588. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  589. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  590. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  591. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  592. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  593. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  594. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  595. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  596. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  597. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  598. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  599. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  600. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  601. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  602. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  603. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  604. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  605. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  606. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  607. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  608. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  609. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  610. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  611. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  612. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  613. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  614. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  615. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  616. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  617. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  618. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  619. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  620. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  621. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  622. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  623. package/node_modules/zod/v3/ZodError.cjs +22 -12
  624. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  625. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  626. package/node_modules/zod/v3/ZodError.js +22 -12
  627. package/node_modules/zod/v3/types.cjs +7 -5
  628. package/node_modules/zod/v3/types.js +7 -5
  629. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  630. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  631. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  632. package/node_modules/zod/v4/classic/checks.js +1 -1
  633. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  634. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  635. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  636. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  637. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  638. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  639. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  640. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  641. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  642. package/node_modules/zod/v4/classic/errors.js +43 -34
  643. package/node_modules/zod/v4/classic/external.cjs +30 -27
  644. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  645. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  646. package/node_modules/zod/v4/classic/external.js +5 -8
  647. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  648. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  649. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  650. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  651. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  652. package/node_modules/zod/v4/classic/in-out.js +36 -0
  653. package/node_modules/zod/v4/classic/index.cjs +2 -2
  654. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  655. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  656. package/node_modules/zod/v4/classic/index.js +2 -2
  657. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  658. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  659. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  660. package/node_modules/zod/v4/classic/iso.js +2 -17
  661. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  662. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  663. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  664. package/node_modules/zod/v4/classic/parse.js +1 -0
  665. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  666. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  667. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  668. package/node_modules/zod/v4/classic/schemas.js +492 -396
  669. package/node_modules/zod/v4/core/api.cjs +23 -4
  670. package/node_modules/zod/v4/core/api.d.cts +13 -9
  671. package/node_modules/zod/v4/core/api.d.ts +13 -9
  672. package/node_modules/zod/v4/core/api.js +21 -4
  673. package/node_modules/zod/v4/core/checks.cjs +37 -31
  674. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  675. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  676. package/node_modules/zod/v4/core/checks.js +37 -31
  677. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  678. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  679. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  680. package/node_modules/zod/v4/core/compile.js +1783 -0
  681. package/node_modules/zod/v4/core/core.cjs +81 -18
  682. package/node_modules/zod/v4/core/core.d.cts +16 -4
  683. package/node_modules/zod/v4/core/core.d.ts +16 -4
  684. package/node_modules/zod/v4/core/core.js +82 -19
  685. package/node_modules/zod/v4/core/doc.cjs +5 -7
  686. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  687. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  688. package/node_modules/zod/v4/core/doc.js +5 -7
  689. package/node_modules/zod/v4/core/errors.cjs +110 -25
  690. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  691. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  692. package/node_modules/zod/v4/core/errors.js +110 -25
  693. package/node_modules/zod/v4/core/index.cjs +5 -1
  694. package/node_modules/zod/v4/core/index.d.cts +3 -0
  695. package/node_modules/zod/v4/core/index.d.ts +3 -0
  696. package/node_modules/zod/v4/core/index.js +3 -0
  697. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  698. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  699. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  700. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  701. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  702. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  703. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  704. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  705. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  706. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  707. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  708. package/node_modules/zod/v4/core/memoizer.js +265 -0
  709. package/node_modules/zod/v4/core/parse.cjs +96 -34
  710. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  711. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  712. package/node_modules/zod/v4/core/parse.js +94 -33
  713. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  714. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  715. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  716. package/node_modules/zod/v4/core/regexes.js +24 -13
  717. package/node_modules/zod/v4/core/registries.js +2 -2
  718. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  719. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  720. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  721. package/node_modules/zod/v4/core/schemas.js +526 -325
  722. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  723. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  724. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  725. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  726. package/node_modules/zod/v4/core/util.cjs +212 -31
  727. package/node_modules/zod/v4/core/util.d.cts +58 -1
  728. package/node_modules/zod/v4/core/util.d.ts +58 -1
  729. package/node_modules/zod/v4/core/util.js +202 -30
  730. package/node_modules/zod/v4/core/versions.cjs +2 -2
  731. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  732. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  733. package/node_modules/zod/v4/core/versions.js +2 -2
  734. package/node_modules/zod/v4/core/visit.cjs +195 -0
  735. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  736. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  737. package/node_modules/zod/v4/core/visit.js +169 -0
  738. package/node_modules/zod/v4/index.cjs +15 -5
  739. package/node_modules/zod/v4/index.d.cts +2 -2
  740. package/node_modules/zod/v4/index.d.ts +2 -2
  741. package/node_modules/zod/v4/index.js +3 -2
  742. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  743. package/node_modules/zod/v4/locales/ar.js +3 -0
  744. package/node_modules/zod/v4/locales/az.cjs +3 -0
  745. package/node_modules/zod/v4/locales/az.js +3 -0
  746. package/node_modules/zod/v4/locales/be.cjs +10 -0
  747. package/node_modules/zod/v4/locales/be.js +10 -0
  748. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  749. package/node_modules/zod/v4/locales/bg.js +3 -0
  750. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  751. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  752. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  753. package/node_modules/zod/v4/locales/bn.js +111 -0
  754. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  755. package/node_modules/zod/v4/locales/ca.js +3 -0
  756. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  757. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  758. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  759. package/node_modules/zod/v4/locales/ckb.js +131 -0
  760. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  761. package/node_modules/zod/v4/locales/cs.js +3 -0
  762. package/node_modules/zod/v4/locales/da.cjs +5 -2
  763. package/node_modules/zod/v4/locales/da.js +5 -2
  764. package/node_modules/zod/v4/locales/de.cjs +3 -0
  765. package/node_modules/zod/v4/locales/de.js +3 -0
  766. package/node_modules/zod/v4/locales/el.cjs +1 -0
  767. package/node_modules/zod/v4/locales/el.js +1 -0
  768. package/node_modules/zod/v4/locales/en.cjs +14 -4
  769. package/node_modules/zod/v4/locales/en.js +14 -4
  770. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  771. package/node_modules/zod/v4/locales/eo.js +3 -0
  772. package/node_modules/zod/v4/locales/es.cjs +2 -0
  773. package/node_modules/zod/v4/locales/es.js +2 -0
  774. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  775. package/node_modules/zod/v4/locales/fa.js +3 -0
  776. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  777. package/node_modules/zod/v4/locales/fi.js +3 -0
  778. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  779. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  780. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  781. package/node_modules/zod/v4/locales/fr.js +16 -14
  782. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  783. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  784. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  785. package/node_modules/zod/v4/locales/gu.js +111 -0
  786. package/node_modules/zod/v4/locales/he.cjs +5 -0
  787. package/node_modules/zod/v4/locales/he.js +5 -0
  788. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  789. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  790. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  791. package/node_modules/zod/v4/locales/hi.js +109 -0
  792. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  793. package/node_modules/zod/v4/locales/hr.js +2 -0
  794. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  795. package/node_modules/zod/v4/locales/hu.js +3 -0
  796. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  797. package/node_modules/zod/v4/locales/hy.js +9 -0
  798. package/node_modules/zod/v4/locales/id.cjs +3 -0
  799. package/node_modules/zod/v4/locales/id.js +3 -0
  800. package/node_modules/zod/v4/locales/index.cjs +22 -2
  801. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  802. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  803. package/node_modules/zod/v4/locales/index.js +10 -0
  804. package/node_modules/zod/v4/locales/is.cjs +3 -0
  805. package/node_modules/zod/v4/locales/is.js +3 -0
  806. package/node_modules/zod/v4/locales/it.cjs +3 -0
  807. package/node_modules/zod/v4/locales/it.js +3 -0
  808. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  809. package/node_modules/zod/v4/locales/ja.js +3 -0
  810. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  811. package/node_modules/zod/v4/locales/ka.js +3 -0
  812. package/node_modules/zod/v4/locales/km.cjs +3 -0
  813. package/node_modules/zod/v4/locales/km.js +3 -0
  814. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  815. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  816. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  817. package/node_modules/zod/v4/locales/kn.js +114 -0
  818. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  819. package/node_modules/zod/v4/locales/ko.js +3 -0
  820. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  821. package/node_modules/zod/v4/locales/lt.js +2 -0
  822. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  823. package/node_modules/zod/v4/locales/mk.js +3 -0
  824. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  825. package/node_modules/zod/v4/locales/ms.js +3 -0
  826. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  827. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  828. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  829. package/node_modules/zod/v4/locales/ne.js +109 -0
  830. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  831. package/node_modules/zod/v4/locales/nl.js +3 -0
  832. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  833. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  834. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  835. package/node_modules/zod/v4/locales/nn.js +111 -0
  836. package/node_modules/zod/v4/locales/no.cjs +5 -2
  837. package/node_modules/zod/v4/locales/no.js +5 -2
  838. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  839. package/node_modules/zod/v4/locales/ota.js +3 -0
  840. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  841. package/node_modules/zod/v4/locales/pl.js +3 -0
  842. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  843. package/node_modules/zod/v4/locales/ps.js +3 -0
  844. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  845. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  846. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  847. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  848. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  849. package/node_modules/zod/v4/locales/pt.js +87 -55
  850. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  851. package/node_modules/zod/v4/locales/ro.js +1 -0
  852. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  853. package/node_modules/zod/v4/locales/ru.js +10 -0
  854. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  855. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  856. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  857. package/node_modules/zod/v4/locales/sk.js +114 -0
  858. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  859. package/node_modules/zod/v4/locales/sl.js +3 -0
  860. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  861. package/node_modules/zod/v4/locales/sv.js +5 -2
  862. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  863. package/node_modules/zod/v4/locales/ta.js +3 -0
  864. package/node_modules/zod/v4/locales/th.cjs +3 -0
  865. package/node_modules/zod/v4/locales/th.js +3 -0
  866. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  867. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  868. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  869. package/node_modules/zod/v4/locales/tk.js +105 -0
  870. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  871. package/node_modules/zod/v4/locales/tr.js +3 -0
  872. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  873. package/node_modules/zod/v4/locales/uk.js +3 -0
  874. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  875. package/node_modules/zod/v4/locales/ur.js +3 -0
  876. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  877. package/node_modules/zod/v4/locales/uz.js +1 -0
  878. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  879. package/node_modules/zod/v4/locales/vi.js +3 -0
  880. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  881. package/node_modules/zod/v4/locales/yo.js +3 -0
  882. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  883. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  884. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  885. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  886. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  887. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  888. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  889. package/node_modules/zod/v4/mini/checks.js +1 -1
  890. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  891. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  892. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  893. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  894. package/node_modules/zod/v4/mini/external.cjs +12 -1
  895. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  896. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  897. package/node_modules/zod/v4/mini/external.js +3 -1
  898. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  899. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  900. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  901. package/node_modules/zod/v4/mini/in-out.js +36 -0
  902. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  903. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  904. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  905. package/node_modules/zod/v4/mini/parse.js +1 -1
  906. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  907. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  908. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  909. package/node_modules/zod/v4/mini/schemas.js +71 -45
  910. package/openclaw.plugin.json +222 -45
  911. package/package.json +12 -10
  912. package/dist/direct-room-RinHjtqX.js +0 -71
  913. package/dist/probe.runtime-DWdw74_H.js +0 -2
  914. package/dist/runtime-6S3DNFNv.js +0 -8
  915. package/dist/types-DzSc7Sqm.js +0 -32
  916. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts +0 -33
  917. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts.map +0 -1
  918. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js +0 -93
  919. package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js.map +0 -1
  920. package/node_modules/markdown-it/node_modules/entities/src/internal/encode-shared.ts +0 -123
  921. package/node_modules/zod/src/v4/core/config.ts +0 -15
  922. /package/dist/{account-config-CRsKoMqJ.js → .setup/account-config-CRsKoMqJ.mjs} +0 -0
  923. /package/dist/{backup-health-Dm_YMVFT.js → .setup/backup-health-Dm_YMVFT.mjs} +0 -0
  924. /package/dist/{config-paths-CnREYb1Y.js → .setup/config-paths-CnREYb1Y.mjs} +0 -0
  925. /package/dist/{config-secret-input.runtime-CwsP3--c.js → .setup/config-secret-input.runtime-CwsP3--c.mjs} +0 -0
  926. /package/dist/{credentials-state-B3cuUFwZ.js → .setup/credentials-state-B3cuUFwZ.mjs} +0 -0
  927. /package/dist/{crypto-node.runtime-6Aj_ltHQ.js → .setup/crypto-node.runtime-6Aj_ltHQ.mjs} +0 -0
  928. /package/dist/{deps-mtxF2mHI.js → .setup/deps-mtxF2mHI.mjs} +0 -0
  929. /package/dist/{doctor-contract-HyWFZQVG.js → .setup/doctor-contract-HyWFZQVG.mjs} +0 -0
  930. /package/dist/{env-vars-dGqak9dN.js → .setup/env-vars-dGqak9dN.mjs} +0 -0
  931. /package/dist/{errors-DKVS3_DO.js → .setup/errors-DKVS3_DO.mjs} +0 -0
  932. /package/dist/{event-helpers-CspuhE9k.js → .setup/event-helpers-CspuhE9k.mjs} +0 -0
  933. /package/dist/{idb-persistence-lock-B3fZXyF_.js → .setup/idb-persistence-lock-B3fZXyF_.mjs} +0 -0
  934. /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
  935. /package/dist/{storage-paths-DVCANXTc.js → .setup/storage-paths-DVCANXTc.mjs} +0 -0
  936. /package/dist/{target-ids-Nwx7cMVE.js → .setup/target-ids-Nwx7cMVE.mjs} +0 -0
  937. /package/dist/{thread-bindings-shared-oNPiyMWY.js → .setup/thread-bindings-shared-oNPiyMWY.mjs} +0 -0
  938. /package/dist/{url-validation-GRHde6lq.js → .setup/url-validation-GRHde6lq.mjs} +0 -0
@@ -1,45 +1,78 @@
1
- import { replaceCodePoint } from "./decode-codepoint.js";
1
+ import { codePointToString, replaceCodePoint, replaceCodePointXML, } from "./decode-codepoint.js";
2
2
  import { htmlDecodeTree } from "./generated/decode-data-html.js";
3
3
  import { xmlDecodeTree } from "./generated/decode-data-xml.js";
4
4
  import { BinTrieFlags } from "./internal/bin-trie-flags.js";
5
5
  var CharCodes;
6
6
  (function (CharCodes) {
7
+ CharCodes[CharCodes["AMP"] = 38] = "AMP";
7
8
  CharCodes[CharCodes["NUM"] = 35] = "NUM";
8
9
  CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
9
10
  CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
10
11
  CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
11
12
  CharCodes[CharCodes["NINE"] = 57] = "NINE";
12
13
  CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
13
- CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
14
14
  CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
15
- CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
16
- CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
17
- CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
18
- CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
19
15
  })(CharCodes || (CharCodes = {}));
20
16
  /** Bit that needs to be set to convert an upper case ASCII character to lower case */
21
17
  const TO_LOWER_BIT = 0b10_0000;
18
+ /*
19
+ * `parseNumericEntity` packs its two results into one 32-bit integer:
20
+ * `(consumed << CONSUMED_SHIFT) | codePoint`. The 21-bit code point field
21
+ * fits any valid Unicode value (max 0x10FFFF, clamped before packing); the
22
+ * consumed count excludes `&` and gets the remaining 11 bits. Extract it
23
+ * with `>>>` so the topmost bit isn't treated as a sign.
24
+ *
25
+ * Plain consts rather than a `const enum`: with `isolatedModules`, enum
26
+ * member reads compile to runtime property loads.
27
+ */
28
+ const CONSUMED_SHIFT = 21;
29
+ const CODE_POINT_MASK = 0x1f_ff_ff;
30
+ /**
31
+ * Reserved consumed field for counts of at least 2047 characters after `&`.
32
+ * The true count is in `longNumericConsumed`.
33
+ */
34
+ const CONSUMED_OVERFLOW = 0x7_ff;
35
+ /**
36
+ * Side channel for numeric entities of at least 2048 characters including
37
+ * `&`. Set by `parseNumericEntity` when its consumed count reaches the
38
+ * reserved value `CONSUMED_OVERFLOW`; callers read the true count from here.
39
+ * A module-level slot avoids a tuple allocation on the hot path.
40
+ */
41
+ let longNumericConsumed = 0;
42
+ /**
43
+ * Extract the consumed count from a `parseNumericEntity` packed result,
44
+ * recovering the true length from `longNumericConsumed` when the packed
45
+ * field contains the sentinel. Read it before the next `parseNumericEntity`
46
+ * call, which may overwrite the side channel. This helper owns that protocol.
47
+ * @param packed Packed result of `parseNumericEntity`.
48
+ */
49
+ function unpackConsumed(packed) {
50
+ const consumed = packed >>> CONSUMED_SHIFT;
51
+ return consumed === CONSUMED_OVERFLOW ? longNumericConsumed : consumed;
52
+ }
53
+ /**
54
+ * Unsigned subtraction trick: (code - lo) >>> 0 wraps negatives to large
55
+ * values, so a single `<=` covers the entire [lo..hi] range check.
56
+ * @param code Code point to check.
57
+ */
22
58
  function isNumber(code) {
23
- return code >= CharCodes.ZERO && code <= CharCodes.NINE;
59
+ return (code - CharCodes.ZERO) >>> 0 <= 9;
24
60
  }
25
61
  function isHexadecimalCharacter(code) {
26
- return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||
27
- (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));
62
+ return ((code | TO_LOWER_BIT) - CharCodes.LOWER_A) >>> 0 <= 5; // F - a
28
63
  }
29
- function isAsciiAlphaNumeric(code) {
30
- return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||
31
- (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||
32
- isNumber(code));
64
+ function isAlpha(code) {
65
+ return ((code | TO_LOWER_BIT) - CharCodes.LOWER_A) >>> 0 <= 25; // Z - a
33
66
  }
34
67
  /**
35
68
  * Checks if the given character is a valid end character for an entity in an attribute.
36
69
  *
37
70
  * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
38
71
  * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
39
- * @param code Code point to decode.
72
+ * @param code Code point to check.
40
73
  */
41
74
  function isEntityInAttributeInvalidEnd(code) {
42
- return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
75
+ return code === CharCodes.EQUALS || isAlpha(code) || isNumber(code);
43
76
  }
44
77
  var EntityDecoderState;
45
78
  (function (EntityDecoderState) {
@@ -68,25 +101,6 @@ export class EntityDecoder {
68
101
  decodeTree;
69
102
  emitCodePoint;
70
103
  errors;
71
- constructor(
72
- /** The tree used to decode entities. */
73
- // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
74
- decodeTree,
75
- /**
76
- * The function that is called when a codepoint is decoded.
77
- *
78
- * For multi-byte named entities, this will be called multiple times,
79
- * with the second codepoint, and the same `consumed` value.
80
- * @param codepoint The decoded codepoint.
81
- * @param consumed The number of bytes consumed by the decoder.
82
- */
83
- emitCodePoint,
84
- /** An object that is used to produce errors. */
85
- errors) {
86
- this.decodeTree = decodeTree;
87
- this.emitCodePoint = emitCodePoint;
88
- this.errors = errors;
89
- }
90
104
  /** The current state of the decoder. */
91
105
  state = EntityDecoderState.EntityStart;
92
106
  /** Characters that were consumed while parsing an entity. */
@@ -94,18 +108,43 @@ export class EntityDecoder {
94
108
  /**
95
109
  * The result of the entity.
96
110
  *
97
- * Either the result index of a numeric entity, or the codepoint of a
98
- * numeric entity.
111
+ * For named entities: the trie index of the best legacy match so far
112
+ * (0 = none). For numeric entities: the accumulated code point.
99
113
  */
100
114
  result = 0;
101
115
  /** The current index in the decode tree. */
102
116
  treeIndex = 0;
103
- /** The number of characters that were consumed in excess. */
117
+ /**
118
+ * Characters consumed since the last recorded legacy match, plus one.
119
+ * Invariant at the top of the `stateNamedEntity` loop: `excess` equals
120
+ * the number of unrecorded consumed characters + 1.
121
+ */
122
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive (read via destructuring)
104
123
  excess = 1;
105
124
  /** The mode in which the decoder is operating. */
106
125
  decodeMode = DecodingMode.Strict;
107
126
  /** The number of characters that have been consumed in the current run. */
127
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
108
128
  runConsumed = 0;
129
+ constructor(
130
+ /** The predefined HTML or XML decode tree. */
131
+ decodeTree,
132
+ /**
133
+ * The function that is called when a codepoint is decoded.
134
+ *
135
+ * For named entities that decode to multiple code points, this will
136
+ * be called multiple times, with the second codepoint, and the same
137
+ * `consumed` value.
138
+ * @param codepoint The decoded codepoint.
139
+ * @param consumed The number of characters consumed by the decoder.
140
+ */
141
+ emitCodePoint,
142
+ /** An object that is used to produce errors. */
143
+ errors) {
144
+ this.decodeTree = decodeTree;
145
+ this.emitCodePoint = emitCodePoint;
146
+ this.errors = errors;
147
+ }
109
148
  /**
110
149
  * Resets the instance to make it reusable.
111
150
  * @param decodeMode Entity decoding mode to use.
@@ -123,7 +162,7 @@ export class EntityDecoder {
123
162
  * Write an entity to the decoder. This can be called multiple times with partial entities.
124
163
  * If the entity is incomplete, the decoder will return -1.
125
164
  *
126
- * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
165
+ * Mirrors the non-streaming `decodeWithTrie`, but with the ability to stop decoding if the
127
166
  * entity is incomplete, and resume when the next string is written.
128
167
  * @param input The string containing the entity (or a continuation of the entity).
129
168
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
@@ -149,7 +188,8 @@ export class EntityDecoder {
149
188
  case EntityDecoderState.NumericHex: {
150
189
  return this.stateNumericHex(input, offset);
151
190
  }
152
- case EntityDecoderState.NamedEntity: {
191
+ default: {
192
+ // NamedEntity — the only remaining state.
153
193
  return this.stateNamedEntity(input, offset);
154
194
  }
155
195
  }
@@ -162,6 +202,7 @@ export class EntityDecoder {
162
202
  * @param offset The current offset.
163
203
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
164
204
  */
205
+ // eslint-disable-next-line unicorn/consistent-class-member-order
165
206
  stateNumericStart(input, offset) {
166
207
  if (offset >= input.length) {
167
208
  return -1;
@@ -177,49 +218,67 @@ export class EntityDecoder {
177
218
  /**
178
219
  * Parses a hexadecimal numeric entity.
179
220
  *
180
- * Equivalent to the `Hexademical character reference state` in the HTML spec.
221
+ * Equivalent to the `Hexademical character reference state` in the HTML
222
+ * spec. Digit parsing matches the hex loop in `parseNumericEntity`.
223
+ * The accumulated value is preserved for numeric validation callbacks.
181
224
  * @param input The string containing the entity (or a continuation of the entity).
182
225
  * @param offset The current offset.
183
226
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
184
227
  */
185
228
  stateNumericHex(input, offset) {
186
- while (offset < input.length) {
229
+ const inputLength = input.length;
230
+ // Local accumulators; flushed before any exit (see stateNamedEntity).
231
+ let { result } = this;
232
+ let { consumed } = this;
233
+ while (offset < inputLength) {
187
234
  const char = input.charCodeAt(offset);
188
235
  if (isNumber(char) || isHexadecimalCharacter(char)) {
189
236
  // Convert hex digit to value (0-15); 'a'/'A' -> 10.
190
237
  const digit = char <= CharCodes.NINE
191
238
  ? char - CharCodes.ZERO
192
239
  : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
193
- this.result = this.result * 16 + digit;
194
- this.consumed++;
195
- offset++;
240
+ result = result * 16 + digit;
241
+ consumed += 1;
242
+ offset += 1;
196
243
  }
197
244
  else {
245
+ this.result = result;
246
+ this.consumed = consumed;
198
247
  return this.emitNumericEntity(char, 3);
199
248
  }
200
249
  }
250
+ this.result = result;
251
+ this.consumed = consumed;
201
252
  return -1; // Incomplete entity
202
253
  }
203
254
  /**
204
255
  * Parses a decimal numeric entity.
205
256
  *
206
- * Equivalent to the `Decimal character reference state` in the HTML spec.
257
+ * Equivalent to the `Decimal character reference state` in the HTML
258
+ * spec. Digit parsing matches the decimal loop in `parseNumericEntity`.
259
+ * The accumulated value is preserved for numeric validation callbacks.
207
260
  * @param input The string containing the entity (or a continuation of the entity).
208
261
  * @param offset The current offset.
209
262
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
210
263
  */
211
264
  stateNumericDecimal(input, offset) {
212
- while (offset < input.length) {
213
- const char = input.charCodeAt(offset);
214
- if (isNumber(char)) {
215
- this.result = this.result * 10 + (char - CharCodes.ZERO);
216
- this.consumed++;
217
- offset++;
218
- }
219
- else {
220
- return this.emitNumericEntity(char, 2);
265
+ const inputLength = input.length;
266
+ // Local accumulators; flushed before any exit (see stateNamedEntity).
267
+ let { result } = this;
268
+ let { consumed } = this;
269
+ while (offset < inputLength) {
270
+ const digit = input.charCodeAt(offset) - CharCodes.ZERO;
271
+ if (digit >>> 0 > 9) {
272
+ this.result = result;
273
+ this.consumed = consumed;
274
+ return this.emitNumericEntity(digit + CharCodes.ZERO, 2);
221
275
  }
276
+ result = result * 10 + digit;
277
+ consumed += 1;
278
+ offset += 1;
222
279
  }
280
+ this.result = result;
281
+ this.consumed = consumed;
223
282
  return -1; // Incomplete entity
224
283
  }
225
284
  /**
@@ -247,7 +306,9 @@ export class EntityDecoder {
247
306
  else if (this.decodeMode === DecodingMode.Strict) {
248
307
  return 0;
249
308
  }
250
- this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
309
+ this.emitCodePoint((this.decodeTree === xmlDecodeTree
310
+ ? replaceCodePointXML
311
+ : replaceCodePoint)(this.result), this.consumed);
251
312
  if (this.errors) {
252
313
  if (lastCp !== CharCodes.SEMI) {
253
314
  this.errors.missingSemicolonAfterCharacterReference();
@@ -256,6 +317,29 @@ export class EntityDecoder {
256
317
  }
257
318
  return this.consumed;
258
319
  }
320
+ /**
321
+ * Flush locally-tracked walk state back to the fields, then emit the
322
+ * recorded legacy match or reject (cold path — at most once per
323
+ * entity). Called after failed navigation (leaf node, branch miss, or
324
+ * compact-run mismatch). In attribute mode, reject if no legacy was
325
+ * recorded at the current node, if we descended past it, or if the
326
+ * pending input character is an invalid attribute terminator.
327
+ * @param consumed Locally-tracked consumed count.
328
+ * @param excess Locally-tracked excess count.
329
+ * @param char Pending input character (may be the mismatching char).
330
+ * @param valueLength Value length at the current trie node.
331
+ */
332
+ flushAndEmitLegacyOrReject(consumed, excess, char, valueLength) {
333
+ this.consumed = consumed;
334
+ this.excess = excess;
335
+ return this.result === 0 ||
336
+ (this.decodeMode === DecodingMode.Attribute &&
337
+ (valueLength === 0 ||
338
+ excess > 1 ||
339
+ isEntityInAttributeInvalidEnd(char)))
340
+ ? 0
341
+ : this.emitNotTerminatedNamedEntity();
342
+ }
259
343
  /**
260
344
  * Parses a named entity.
261
345
  *
@@ -266,97 +350,167 @@ export class EntityDecoder {
266
350
  */
267
351
  stateNamedEntity(input, offset) {
268
352
  const { decodeTree } = this;
269
- let current = decodeTree[this.treeIndex];
270
- // The length is the number of bytes of the value, including the current byte.
271
- let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
272
- while (offset < input.length) {
273
- // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
274
- if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
275
- const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
353
+ const inputLength = input.length;
354
+ const isStrict = this.decodeMode === DecodingMode.Strict;
355
+ /*
356
+ * Local copies of the resumable walk state avoid per-character
357
+ * field writes. They are flushed back to the fields
358
+ * on every exit (chunk end, and before any emit helper that reads
359
+ * them). `this.result` is only written at the (rare) record points,
360
+ * so it stays a direct field write.
361
+ *
362
+ * Legacy-match recording happens in two idempotent places: at the
363
+ * loop top when sitting on a value node, and in the chunk-end
364
+ * epilogue (so `end()` sees matches that land exactly on a chunk
365
+ * boundary). Recording applies `consumed += excess - 1; excess = 1`,
366
+ * which is a no-op when repeated — the loop-top invariant is
367
+ * `excess` = unrecorded consumed characters + 1.
368
+ */
369
+ let { treeIndex } = this;
370
+ let { excess } = this;
371
+ let { consumed } = this;
372
+ let current = decodeTree[treeIndex];
373
+ while (offset < inputLength) {
374
+ /*
375
+ * Descend through value-less jump-table nodes (including the
376
+ * single-branch encoding) inline, mirroring `decodeWithTrie`:
377
+ * this avoids a `determineBranch` call per level for the
378
+ * dominant node shape — including the root on the first write.
379
+ */
380
+ while ((current &
381
+ (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===
382
+ 0 &&
383
+ (current & BinTrieFlags.JUMP_TABLE) !== 0) {
384
+ const char = input.charCodeAt(offset);
385
+ const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
386
+ const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
387
+ if (branchCount === 0) {
388
+ // Single branch encoded inline in the jump offset bits.
389
+ if (char !== jumpOffset) {
390
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);
391
+ }
392
+ treeIndex += 1;
393
+ }
394
+ else {
395
+ const slot = char - jumpOffset;
396
+ if (slot >>> 0 >= branchCount) {
397
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);
398
+ }
399
+ const stored = decodeTree[treeIndex + 1 + slot];
400
+ if (stored === 0) {
401
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);
402
+ }
403
+ // End-relative: branch data ends at treeIndex+1+branchCount.
404
+ treeIndex = (treeIndex + branchCount + stored) & 0xff_ff;
405
+ }
406
+ current = decodeTree[treeIndex];
407
+ offset += 1;
408
+ excess += 1;
409
+ /*
410
+ * `charCodeAt` past the end returns NaN, which would alias
411
+ * to slot 0 after `>>> 0` — bail out explicitly.
412
+ */
413
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
414
+ if (offset >= inputLength)
415
+ break;
416
+ }
417
+ if (offset >= inputLength)
418
+ break;
419
+ // Handle compact runs (resumable across chunks).
420
+ if ((current &
421
+ (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===
422
+ BinTrieFlags.FLAG13) {
423
+ const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 3..63 */
424
+ let { runConsumed } = this;
276
425
  // If we are starting a run, check the first char.
277
- if (this.runConsumed === 0) {
278
- const firstChar = current & BinTrieFlags.JUMP_TABLE;
279
- if (input.charCodeAt(offset) !== firstChar) {
280
- return this.result === 0
281
- ? 0
282
- : this.emitNotTerminatedNamedEntity();
426
+ if (runConsumed === 0) {
427
+ const char = input.charCodeAt(offset);
428
+ if (char !== (current & BinTrieFlags.JUMP_TABLE)) {
429
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);
283
430
  }
284
- offset++;
285
- this.excess++;
286
- this.runConsumed++;
431
+ offset += 1;
432
+ excess += 1;
433
+ runConsumed = 1;
287
434
  }
288
- // Check remaining characters in the run.
289
- while (this.runConsumed < runLength) {
290
- if (offset >= input.length) {
435
+ // Check remaining characters in the run (packed two per uint16 word).
436
+ while (runConsumed < runLength) {
437
+ if (offset >= inputLength) {
438
+ this.treeIndex = treeIndex;
439
+ this.excess = excess;
440
+ this.consumed = consumed;
441
+ this.runConsumed = runConsumed;
291
442
  return -1;
292
443
  }
293
- const charIndexInPacked = this.runConsumed - 1;
294
- const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
295
- const expectedChar = charIndexInPacked % 2 === 0
296
- ? packedWord & 0xff
297
- : (packedWord >> 8) & 0xff;
298
- if (input.charCodeAt(offset) !== expectedChar) {
444
+ const charIndexInPacked = runConsumed - 1;
445
+ const packedWord = decodeTree[treeIndex + 1 + (charIndexInPacked >> 1)];
446
+ const expectedChar = (packedWord >> ((charIndexInPacked & 1) << 3)) & 0xff;
447
+ const char = input.charCodeAt(offset);
448
+ if (char !== expectedChar) {
299
449
  this.runConsumed = 0;
300
- return this.result === 0
301
- ? 0
302
- : this.emitNotTerminatedNamedEntity();
450
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, 0);
303
451
  }
304
- offset++;
305
- this.excess++;
306
- this.runConsumed++;
452
+ offset += 1;
453
+ excess += 1;
454
+ runConsumed += 1;
307
455
  }
308
456
  this.runConsumed = 0;
309
- this.treeIndex += 1 + (runLength >> 1);
310
- current = decodeTree[this.treeIndex];
311
- valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
457
+ treeIndex += 1 + (runLength >> 1);
458
+ current = decodeTree[treeIndex];
459
+ // Loop top handles the landed-on node (record/emit/branch).
460
+ continue;
312
461
  }
313
- if (offset >= input.length)
314
- break;
462
+ // Header plus out-of-line value words; 0 means no value.
463
+ const valueLength = current >>> 14;
315
464
  const char = input.charCodeAt(offset);
316
- /*
317
- * Implicit semicolon handling for nodes that require a semicolon but
318
- * don't have an explicit ';' branch stored in the trie. If we have
319
- * a value on the current node, it requires a semicolon, and the
320
- * current input character is a semicolon, emit the entity using the
321
- * current node (without descending further).
322
- */
323
- if (char === CharCodes.SEMI &&
324
- valueLength !== 0 &&
325
- (current & BinTrieFlags.FLAG13) !== 0) {
326
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
327
- }
328
- this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
329
- if (this.treeIndex < 0) {
330
- return this.result === 0 ||
331
- // If we are parsing an attribute
332
- (this.decodeMode === DecodingMode.Attribute &&
333
- // We shouldn't have consumed any characters after the entity,
334
- (valueLength === 0 ||
335
- // And there should be no invalid characters.
336
- isEntityInAttributeInvalidEnd(char)))
337
- ? 0
338
- : this.emitNotTerminatedNamedEntity();
339
- }
340
- current = decodeTree[this.treeIndex];
341
- valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
342
- // If the branch is a value, store it and continue
343
465
  if (valueLength !== 0) {
344
- // If the entity is terminated by a semicolon, we are done.
466
+ // Record a legacy match (FLAG13 clear = semicolon optional).
467
+ if (!isStrict && (current & BinTrieFlags.FLAG13) === 0) {
468
+ this.result = treeIndex;
469
+ consumed += excess - 1;
470
+ excess = 1;
471
+ }
472
+ /*
473
+ * Implicit semicolon handling: emit immediately. Covers both
474
+ * strict (FLAG13 set) and legacy entities — neither stores
475
+ * an explicit `;` branch in the trie.
476
+ */
345
477
  if (char === CharCodes.SEMI) {
346
- return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
478
+ return this.emitNamedEntityData(treeIndex, valueLength, consumed + excess);
347
479
  }
348
- // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
349
- if (this.decodeMode !== DecodingMode.Strict &&
350
- (current & BinTrieFlags.FLAG13) === 0) {
351
- this.result = this.treeIndex;
352
- this.consumed += this.excess;
353
- this.excess = 0;
480
+ /*
481
+ * `valueLength === 1` packs the codepoint into the header
482
+ * word's low 13 bits, where branch metadata also lives. Skip
483
+ * the branch lookup on leaves so those value bits aren't
484
+ * reinterpreted as branch offsets.
485
+ */
486
+ if (valueLength === 1) {
487
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, valueLength);
354
488
  }
355
489
  }
356
- // Increment offset & excess for next iteration
357
- offset++;
358
- this.excess++;
490
+ // Value-bearing or dictionary node: dispatch through determineBranch.
491
+ const next = determineBranch(decodeTree, current, treeIndex + (valueLength || 1), char);
492
+ if (next < 0) {
493
+ return this.flushAndEmitLegacyOrReject(consumed, excess, char, valueLength);
494
+ }
495
+ treeIndex = next;
496
+ current = decodeTree[treeIndex];
497
+ offset += 1;
498
+ excess += 1;
499
+ }
500
+ /*
501
+ * Chunk exhausted. Record a legacy match we may be sitting on, so a
502
+ * subsequent `end()` emits it, then persist the walk state.
503
+ */
504
+ if (!isStrict &&
505
+ current >>> 14 !== 0 &&
506
+ (current & BinTrieFlags.FLAG13) === 0) {
507
+ this.result = treeIndex;
508
+ consumed += excess - 1;
509
+ excess = 1;
359
510
  }
511
+ this.treeIndex = treeIndex;
512
+ this.excess = excess;
513
+ this.consumed = consumed;
360
514
  return -1;
361
515
  }
362
516
  /**
@@ -365,7 +519,7 @@ export class EntityDecoder {
365
519
  */
366
520
  emitNotTerminatedNamedEntity() {
367
521
  const { result, decodeTree } = this;
368
- const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
522
+ const valueLength = decodeTree[result] >>> 14;
369
523
  this.emitNamedEntityData(result, valueLength, this.consumed);
370
524
  this.errors?.missingSemicolonAfterCharacterReference();
371
525
  return this.consumed;
@@ -373,18 +527,17 @@ export class EntityDecoder {
373
527
  /**
374
528
  * Emit a named entity.
375
529
  * @param result The index of the entity in the decode tree.
376
- * @param valueLength The number of bytes in the entity.
530
+ * @param valueLength Encoded value length (header plus any value words).
377
531
  * @param consumed The number of characters consumed.
378
532
  * @returns The number of characters consumed.
379
533
  */
380
534
  emitNamedEntityData(result, valueLength, consumed) {
381
535
  const { decodeTree } = this;
382
536
  this.emitCodePoint(valueLength === 1
383
- ? decodeTree[result] &
384
- ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
537
+ ? decodeTree[result] & BinTrieFlags.VALUE_MASK
385
538
  : decodeTree[result + 1], consumed);
386
539
  if (valueLength === 3) {
387
- // For multi-byte values, we need to emit the second byte.
540
+ // Emit the second UTF-16 code unit.
388
541
  this.emitCodePoint(decodeTree[result + 2], consumed);
389
542
  }
390
543
  return consumed;
@@ -416,94 +569,435 @@ export class EntityDecoder {
416
569
  this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);
417
570
  return 0;
418
571
  }
419
- case EntityDecoderState.EntityStart: {
420
- // Return 0 if we have no entity.
572
+ default: {
573
+ // EntityStart or unknown — return 0.
421
574
  return 0;
422
575
  }
423
576
  }
424
577
  }
425
578
  }
426
- /**
427
- * Creates a function that decodes entities in a string.
428
- * @param decodeTree The decode tree.
429
- * @returns A function that decodes entities in a string.
430
- */
431
- function getDecoder(decodeTree) {
432
- let returnValue = "";
433
- const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += String.fromCodePoint(data)));
434
- return function decodeWithTrie(input, decodeMode) {
435
- let lastIndex = 0;
436
- let offset = 0;
437
- while ((offset = input.indexOf("&", offset)) >= 0) {
438
- returnValue += input.slice(lastIndex, offset);
439
- decoder.startEntity(decodeMode);
440
- const length = decoder.write(input,
441
- // Skip the "&"
442
- offset + 1);
443
- if (length < 0) {
444
- lastIndex = offset + decoder.end();
445
- break;
446
- }
447
- lastIndex = offset + length;
448
- // If `length` is 0, skip the current `&` and continue.
449
- offset = length === 0 ? lastIndex + 1 : lastIndex;
450
- }
451
- const result = returnValue + input.slice(lastIndex);
452
- // Make sure we don't keep a reference to the final string.
453
- returnValue = "";
454
- return result;
455
- };
456
- }
457
579
  /**
458
580
  * Determines the branch of the current node that is taken given the current
459
581
  * character. This function is used to traverse the trie.
582
+ *
583
+ * See `BinTrieFlags` for the branch-data layouts handled here.
460
584
  * @param decodeTree The trie.
461
- * @param current The current node.
462
- * @param nodeIndex Index immediately after the current node header.
585
+ * @param current The current node's header word.
586
+ * @param nodeIndex Index of the node's first branch-data word (the header
587
+ * plus any value words have been skipped by the caller).
463
588
  * @param char The current character.
464
589
  * @returns The index of the next node, or -1 if no branch is taken.
465
590
  */
466
591
  export function determineBranch(decodeTree, current, nodeIndex, char) {
467
592
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
468
593
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
469
- // Case 1: Single branch encoded in jump offset
470
- if (branchCount === 0) {
471
- return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
472
- }
473
- // Case 2: Multiple branches encoded in jump table
594
+ // Case 1: Single branch or jump table (jumpOffset encodes the first/only char code).
474
595
  if (jumpOffset) {
475
- const value = char - jumpOffset;
476
- return value < 0 || value >= branchCount
596
+ if (branchCount === 0) {
597
+ // Single branch encoded inline in the jump offset bits.
598
+ return char === jumpOffset ? nodeIndex : -1;
599
+ }
600
+ /*
601
+ * Jump table: branchCount consecutive slots starting at jumpOffset.
602
+ * Unsigned comparison handles both < 0 and >= branchCount in one check.
603
+ */
604
+ const slot = char - jumpOffset;
605
+ if (slot >>> 0 >= branchCount)
606
+ return -1;
607
+ const stored = decodeTree[nodeIndex + slot];
608
+ /*
609
+ * 0 = empty slot (no branch); otherwise the child's offset from the
610
+ * end of the branch array, +1 (end-relative pointers compress
611
+ * better). `& 0xff_ff` mirrors the encoder's uint16 wrap for
612
+ * backreferences to already-encoded nodes.
613
+ */
614
+ return stored === 0
477
615
  ? -1
478
- : decodeTree[nodeIndex + value] - 1;
616
+ : (nodeIndex + branchCount + stored - 1) & 0xff_ff;
479
617
  }
480
- // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
618
+ /*
619
+ * Case 2: Packed dictionary. Linear scan — over 90% of dict nodes have
620
+ * <= 4 branches in the HTML trie, where the constant-factor savings
621
+ * dominate over binary search's asymptotic edge.
622
+ */
623
+ if (branchCount === 0)
624
+ return -1;
481
625
  const packedKeySlots = (branchCount + 1) >> 1;
626
+ const branchEnd = nodeIndex + packedKeySlots + branchCount;
627
+ for (let index = 0; index < branchCount; index++) {
628
+ const packed = decodeTree[nodeIndex + (index >> 1)];
629
+ const key = (packed >> ((index & 1) << 3)) & 0xff;
630
+ if (key === char) {
631
+ const pointerIndex = nodeIndex + packedKeySlots + index;
632
+ // Pointers are relative to the end of the branch data.
633
+ return (branchEnd + decodeTree[pointerIndex]) & 0xff_ff;
634
+ }
635
+ // Keys are sorted; if we've passed `char`, no match is possible.
636
+ if (key > char)
637
+ return -1;
638
+ }
639
+ return -1;
640
+ }
641
+ /**
642
+ * Read the decoded value from a trie node.
643
+ * @param decodeTree The trie.
644
+ * @param nodeIndex The index of the node.
645
+ * @param valueLength The length of the value (1, 2, or 3).
646
+ * @returns The decoded string.
647
+ */
648
+ function readTrieValue(decodeTree, nodeIndex, valueLength) {
649
+ if (valueLength === 1) {
650
+ return String.fromCharCode(decodeTree[nodeIndex] & BinTrieFlags.VALUE_MASK);
651
+ }
652
+ if (valueLength === 2) {
653
+ return String.fromCharCode(decodeTree[nodeIndex + 1]);
654
+ }
655
+ return String.fromCharCode(decodeTree[nodeIndex + 1], decodeTree[nodeIndex + 2]);
656
+ }
657
+ /**
658
+ * Parse a numeric entity (`&#DDD;` or `&#xHHH;`).
659
+ *
660
+ * Encodes the result as `(consumed << CONSUMED_SHIFT) | codepoint` (see
661
+ * the packing comment at the top of the file; overlong entities spill
662
+ * their length into `longNumericConsumed`). Returns 0 when no digits were
663
+ * found.
664
+ *
665
+ * This is the sync counterpart of the streaming
666
+ * `EntityDecoder#stateNumericDecimal` / `#stateNumericHex`. Digit parsing
667
+ * matches those methods; only this packed result needs a value clamp.
668
+ * @param input The input string.
669
+ * @param numberStart Index of the `#` character.
670
+ * @param inputLength Cached `input.length`.
671
+ */
672
+ function parseNumericEntity(input, numberStart, inputLength) {
673
+ let offset = numberStart + 1; // Skip "#"
674
+ let cp = 0;
675
+ let digitStart = offset;
676
+ /*
677
+ * Separate decimal and hexadecimal loops: each multiplies by a constant
678
+ * and runs a single digit test, instead of a per-character base check.
679
+ */
680
+ if (offset < inputLength &&
681
+ (input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
682
+ offset += 1;
683
+ digitStart = offset;
684
+ while (offset < inputLength) {
685
+ const char = input.charCodeAt(offset);
686
+ if (isNumber(char)) {
687
+ cp = cp * 16 + (char - CharCodes.ZERO);
688
+ }
689
+ else if (isHexadecimalCharacter(char)) {
690
+ cp = cp * 16 + ((char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10);
691
+ }
692
+ else {
693
+ break;
694
+ }
695
+ offset += 1;
696
+ }
697
+ }
698
+ else {
699
+ while (offset < inputLength) {
700
+ const digit = input.charCodeAt(offset) - CharCodes.ZERO;
701
+ if (digit >>> 0 > 9)
702
+ break;
703
+ cp = cp * 10 + digit;
704
+ offset += 1;
705
+ }
706
+ }
707
+ if (offset === digitStart)
708
+ return 0;
709
+ // Include the semicolon in consumed when present.
710
+ if (offset < inputLength && input.charCodeAt(offset) === CharCodes.SEMI) {
711
+ offset += 1;
712
+ }
713
+ /*
714
+ * Clamp out-of-range values to 0x110000 so they fit the 21-bit field
715
+ * and decode to U+FFFD. Lengths at or above CONSUMED_OVERFLOW use the
716
+ * side channel described with the packing constants.
717
+ */
718
+ if (cp > 0x10_ff_ff)
719
+ cp = 0x11_00_00;
720
+ let consumed = offset - numberStart;
721
+ if (consumed >= CONSUMED_OVERFLOW) {
722
+ // eslint-disable-next-line unicorn/no-top-level-assignment-in-function -- deliberate side channel, see `longNumericConsumed`
723
+ longNumericConsumed = consumed;
724
+ consumed = CONSUMED_OVERFLOW;
725
+ }
726
+ return (consumed << CONSUMED_SHIFT) | cp;
727
+ }
728
+ /**
729
+ * Decode all entities in `input` using the HTML trie.
730
+ *
731
+ * Hard-wired to `htmlDecodeTree`: the inline root navigation below assumes
732
+ * the HTML root's jump-table shape, so this must not be generalized to
733
+ * other tries (the XML trie's dictionary root would silently match no
734
+ * entities — `decodeXML` has its own hand-coded fast path instead).
735
+ * @param input The string to decode.
736
+ * @param isStrict Only match semicolon-terminated entities.
737
+ * @param isAttribute Whether to apply attribute-specific parsing rules (disallowing certain non-semicolon terminators).
738
+ * @returns The decoded string.
739
+ */
740
+ function decodeWithTrie(input, isStrict, isAttribute) {
741
+ const decodeTree = htmlDecodeTree;
742
+ // Fast path: no entities at all — return input without any allocation.
743
+ let offset = input.indexOf("&");
744
+ if (offset < 0)
745
+ return input;
746
+ const inputLength = input.length;
747
+ /*
748
+ * `chunkStart` marks the start of the next pending slice. Rejected
749
+ * entities don't advance it, so consecutive rejections are stitched
750
+ * into a single `slice` once a real match (or end of input) is hit.
751
+ */
752
+ let chunkStart = 0;
753
+ let result = "";
482
754
  /*
483
- * Treat packed keys as a virtual sorted array of length `branchCount`.
484
- * Key(i) = low byte for even i, high byte for odd i in slot i>>1.
755
+ * Root navigation fields, hoisted out of the per-entity loop. The HTML
756
+ * root is a multi-branch jump-table covering [A-Za-z]; see the inline
757
+ * first-iteration comment below.
485
758
  */
486
- let lo = 0;
487
- let hi = branchCount - 1;
488
- while (lo <= hi) {
489
- const mid = (lo + hi) >>> 1;
490
- const slot = mid >> 1;
491
- const packed = decodeTree[nodeIndex + slot];
492
- const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
493
- if (midKey < char) {
494
- lo = mid + 1;
759
+ const root = decodeTree[0];
760
+ const rootJumpOffset = root & BinTrieFlags.JUMP_TABLE;
761
+ const rootBranchCount = (root & BinTrieFlags.BRANCH_LENGTH) >> 7;
762
+ do {
763
+ const entityStart = offset + 1;
764
+ // Quick check: entity names must start with [A-Za-z], numeric with #.
765
+ const firstChar = input.charCodeAt(entityStart);
766
+ let consumed;
767
+ let value;
768
+ if (firstChar === CharCodes.NUM) {
769
+ const packed = parseNumericEntity(input, entityStart, inputLength);
770
+ consumed = unpackConsumed(packed);
771
+ // In strict mode, require semicolon termination.
772
+ if (isStrict &&
773
+ consumed > 0 &&
774
+ input.charCodeAt(entityStart + consumed - 1) !== CharCodes.SEMI) {
775
+ consumed = 0;
776
+ }
777
+ value =
778
+ consumed === 0
779
+ ? ""
780
+ : codePointToString(packed & CODE_POINT_MASK);
781
+ }
782
+ else if (isAlpha(firstChar)) {
783
+ consumed = 0;
784
+ value = "";
785
+ /*
786
+ * The generator guarantees a jump-table root. Consume the first
787
+ * character directly, then walk from its child.
788
+ */
789
+ const rootSlotIndex = firstChar - rootJumpOffset;
790
+ let nodeIndex;
791
+ if (rootSlotIndex >>> 0 < rootBranchCount) {
792
+ const stored = decodeTree[1 + rootSlotIndex];
793
+ nodeIndex =
794
+ stored === 0 ? -1 : (rootBranchCount + stored) & 0xff_ff;
795
+ }
796
+ else {
797
+ nodeIndex = -1;
798
+ }
799
+ /*
800
+ * Best legacy (no-semicolon) match so far, as trie coordinates.
801
+ * Deferring `readTrieValue` to the end avoids allocating a
802
+ * string for matches that longer matches supersede.
803
+ */
804
+ let bestNodeIndex = 0;
805
+ let bestValueLength = 0;
806
+ let current = nodeIndex < 0 ? 0 : decodeTree[nodeIndex];
807
+ let index = entityStart + 1;
808
+ /*
809
+ * Walk the trie from the root child. The `trie` label lets the
810
+ * inner descent and compact-run loops abandon the entity (and
811
+ * fall through to the legacy/reject handling) directly.
812
+ */
813
+ trie: while (index < inputLength) {
814
+ /*
815
+ * Inline value-less jump tables and single branches. A miss
816
+ * falls through to the recorded legacy match or rejection.
817
+ */
818
+ while (
819
+ // Value-less, non-run node with a nonzero jump offset.
820
+ (current &
821
+ (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===
822
+ 0 &&
823
+ (current & BinTrieFlags.JUMP_TABLE) !== 0) {
824
+ const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
825
+ const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
826
+ if (branchCount === 0) {
827
+ // Single branch encoded inline in the jump offset bits.
828
+ if (input.charCodeAt(index) !== jumpOffset)
829
+ break trie;
830
+ nodeIndex += 1;
831
+ }
832
+ else {
833
+ const slot = input.charCodeAt(index) - jumpOffset;
834
+ if (slot >>> 0 >= branchCount)
835
+ break trie;
836
+ const stored = decodeTree[nodeIndex + 1 + slot];
837
+ if (stored === 0)
838
+ break trie;
839
+ // End-relative: branch data ends at nodeIndex+1+branchCount.
840
+ nodeIndex =
841
+ (nodeIndex + branchCount + stored) & 0xff_ff;
842
+ }
843
+ current = decodeTree[nodeIndex];
844
+ index += 1;
845
+ /*
846
+ * `charCodeAt` past the end returns NaN, which would
847
+ * alias to slot 0 after `>>> 0` — bail out explicitly.
848
+ */
849
+ if (index >= inputLength)
850
+ break trie;
851
+ }
852
+ // FLAG13 without a value marks a compact run.
853
+ if ((current &
854
+ (BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)) ===
855
+ BinTrieFlags.FLAG13) {
856
+ const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
857
+ // Check first char (stored in JUMP_TABLE bits).
858
+ if (input.charCodeAt(index) !==
859
+ (current & BinTrieFlags.JUMP_TABLE)) {
860
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
861
+ break;
862
+ }
863
+ index += 1;
864
+ // Check remaining characters (packed two per uint16 word).
865
+ const remaining = runLength - 1;
866
+ let wordIndex = nodeIndex + 1;
867
+ let charIndexInPacked = 0;
868
+ /*
869
+ * Process pairs: read one packed word, compare low byte then high byte.
870
+ * No explicit bounds check needed — charCodeAt returns NaN for OOB,
871
+ * which never equals an integer, so the mismatch break fires naturally.
872
+ */
873
+ for (; charIndexInPacked + 1 < remaining; charIndexInPacked += 2) {
874
+ const packed = decodeTree[wordIndex];
875
+ if (input.charCodeAt(index) !== (packed & 0xff))
876
+ break trie;
877
+ index += 1;
878
+ if (input.charCodeAt(index) !== ((packed >> 8) & 0xff))
879
+ break trie;
880
+ index += 1;
881
+ wordIndex += 1;
882
+ }
883
+ // Handle odd trailing char.
884
+ if (charIndexInPacked < remaining) {
885
+ if (input.charCodeAt(index) !==
886
+ (decodeTree[wordIndex] & 0xff))
887
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
888
+ break;
889
+ index += 1;
890
+ }
891
+ nodeIndex += 1 + (runLength >> 1);
892
+ current = decodeTree[nodeIndex];
893
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
894
+ continue;
895
+ }
896
+ // Header plus out-of-line value words; 0 means no value.
897
+ const valueLength = current >>> 14;
898
+ const char = input.charCodeAt(index);
899
+ /*
900
+ * Check current node for a value before navigating.
901
+ * This handles both: (a) values reached via compact runs on the
902
+ * previous iteration, and (b) values at regular branch targets.
903
+ */
904
+ if (valueLength !== 0) {
905
+ // If char is `;`, emit immediately.
906
+ if (char === CharCodes.SEMI) {
907
+ consumed = index - entityStart + 1;
908
+ // Inline leaves carry the value in the low 13 bits.
909
+ value =
910
+ valueLength === 1
911
+ ? String.fromCharCode(current & BinTrieFlags.VALUE_MASK)
912
+ : readTrieValue(decodeTree, nodeIndex, valueLength);
913
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
914
+ break;
915
+ }
916
+ // Record non-terminated (legacy) match (FLAG13 clear = semicolon optional).
917
+ if (!isStrict && (current & BinTrieFlags.FLAG13) === 0) {
918
+ consumed = index - entityStart;
919
+ bestNodeIndex = nodeIndex;
920
+ bestValueLength = valueLength;
921
+ }
922
+ /*
923
+ * A valueLength of 1 means the value is packed inline in the header
924
+ * word — these are always leaf nodes with no branches, so we can
925
+ * stop walking the trie.
926
+ */
927
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
928
+ if (valueLength === 1)
929
+ break;
930
+ }
931
+ // Navigate to the next node (valueLength || 1: skip past value words, minimum 1 for header).
932
+ const next = determineBranch(decodeTree, current, nodeIndex + (valueLength || 1), char);
933
+ // eslint-disable-next-line unicorn/no-break-in-nested-loop
934
+ if (next < 0)
935
+ break;
936
+ nodeIndex = next;
937
+ current = decodeTree[nodeIndex];
938
+ index += 1;
939
+ }
940
+ /*
941
+ * Post-loop: if the semicolon path didn't set value,
942
+ * check for a final legacy match. The last navigation may
943
+ * have landed on a legacy node whose value hasn't been
944
+ * recorded yet (loop exited before the top-of-loop check
945
+ * could run).
946
+ */
947
+ if (value === "") {
948
+ const finalVL = current >>> 14;
949
+ if (finalVL !== 0 &&
950
+ !isStrict &&
951
+ (current & BinTrieFlags.FLAG13) === 0) {
952
+ consumed = index - entityStart;
953
+ bestNodeIndex = nodeIndex;
954
+ bestValueLength = finalVL;
955
+ }
956
+ if (consumed > 0) {
957
+ value = readTrieValue(decodeTree, bestNodeIndex, bestValueLength);
958
+ }
959
+ }
960
+ }
961
+ else {
962
+ consumed = 0;
963
+ value = "";
495
964
  }
496
- else if (midKey > char) {
497
- hi = mid - 1;
965
+ /*
966
+ * The attribute end-char rule (HTML spec §13.2.5.73) only applies to
967
+ * unterminated *named* references. Semicolon-terminated entities and
968
+ * numeric entities are always accepted, matching EntityDecoder behavior.
969
+ *
970
+ * When `attribute` is false (the common case), short-circuit skips all
971
+ * the unterminated-named checks entirely.
972
+ */
973
+ if (consumed === 0 ||
974
+ (isAttribute &&
975
+ firstChar !== CharCodes.NUM &&
976
+ input.charCodeAt(entityStart + consumed - 1) !==
977
+ CharCodes.SEMI &&
978
+ entityStart + consumed < inputLength &&
979
+ isEntityInAttributeInvalidEnd(input.charCodeAt(entityStart + consumed)))) {
980
+ // Rejected: leave `&` in the pending chunk, scan past it.
981
+ offset = entityStart;
498
982
  }
499
983
  else {
500
- return decodeTree[nodeIndex + packedKeySlots + mid];
984
+ if (chunkStart < offset) {
985
+ result += input.slice(chunkStart, offset);
986
+ }
987
+ result += value;
988
+ offset = chunkStart = entityStart + consumed;
501
989
  }
502
- }
503
- return -1;
990
+ /*
991
+ * Adjacent entities (`&x;&y;`) are common in entity-dense input;
992
+ * checking the single character at `offset` first skips the
993
+ * `indexOf` call (and its per-call overhead) for that case.
994
+ */
995
+ if (input.charCodeAt(offset) !== CharCodes.AMP) {
996
+ offset = input.indexOf("&", offset);
997
+ }
998
+ } while (offset >= 0);
999
+ return result + input.slice(chunkStart);
504
1000
  }
505
- const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);
506
- const xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);
507
1001
  /**
508
1002
  * Decodes an HTML string.
509
1003
  * @param htmlString The string to decode.
@@ -511,7 +1005,7 @@ const xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);
511
1005
  * @returns The decoded string.
512
1006
  */
513
1007
  export function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
514
- return htmlDecoder(htmlString, mode);
1008
+ return decodeWithTrie(htmlString, mode === DecodingMode.Strict, mode === DecodingMode.Attribute);
515
1009
  }
516
1010
  /**
517
1011
  * Decodes an HTML string in an attribute.
@@ -519,7 +1013,7 @@ export function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
519
1013
  * @returns The decoded string.
520
1014
  */
521
1015
  export function decodeHTMLAttribute(htmlAttribute) {
522
- return htmlDecoder(htmlAttribute, DecodingMode.Attribute);
1016
+ return decodeWithTrie(htmlAttribute, false, true);
523
1017
  }
524
1018
  /**
525
1019
  * Decodes an HTML string, requiring all entities to be terminated by a semicolon.
@@ -527,17 +1021,111 @@ export function decodeHTMLAttribute(htmlAttribute) {
527
1021
  * @returns The decoded string.
528
1022
  */
529
1023
  export function decodeHTMLStrict(htmlString) {
530
- return htmlDecoder(htmlString, DecodingMode.Strict);
1024
+ return decodeWithTrie(htmlString, true, false);
531
1025
  }
532
1026
  /**
533
1027
  * Decodes an XML string, requiring all entities to be terminated by a semicolon.
1028
+ *
1029
+ * Uses a hand-coded fast path for the 5 XML named entities (amp, lt, gt,
1030
+ * quot, apos) plus numeric entities, bypassing the trie entirely.
534
1031
  * @param xmlString The string to decode.
535
1032
  * @returns The decoded string.
536
1033
  */
537
1034
  export function decodeXML(xmlString) {
538
- return xmlDecoder(xmlString, DecodingMode.Strict);
1035
+ let offset = xmlString.indexOf("&");
1036
+ if (offset < 0)
1037
+ return xmlString;
1038
+ let lastIndex = 0;
1039
+ let result = "";
1040
+ do {
1041
+ const start = offset + 1;
1042
+ let consumed = 0;
1043
+ let value = "";
1044
+ const c1 = xmlString.charCodeAt(start);
1045
+ if (c1 === CharCodes.NUM) {
1046
+ const packed = parseNumericEntity(xmlString, start, xmlString.length);
1047
+ consumed = unpackConsumed(packed);
1048
+ // XML is always strict — require semicolon.
1049
+ if (consumed === 0 ||
1050
+ xmlString.charCodeAt(start + consumed - 1) !== CharCodes.SEMI) {
1051
+ consumed = 0;
1052
+ }
1053
+ else {
1054
+ const codePoint = packed & CODE_POINT_MASK;
1055
+ // Nonzero BMP values below the surrogate range need no replacement.
1056
+ value =
1057
+ (codePoint - 1) >>> 0 < 0xd7_ff
1058
+ ? String.fromCharCode(codePoint)
1059
+ : String.fromCodePoint(replaceCodePointXML(codePoint));
1060
+ }
1061
+ }
1062
+ else {
1063
+ /* eslint-disable unicorn/no-break-in-nested-loop -- Keep XML name dispatch inline with the decode loop. */
1064
+ switch (c1) {
1065
+ // &lt; / &gt;
1066
+ case 0x6c:
1067
+ case 0x67: {
1068
+ if (xmlString.charCodeAt(start + 1) === 0x74 &&
1069
+ xmlString.charCodeAt(start + 2) === CharCodes.SEMI) {
1070
+ consumed = 3;
1071
+ value = c1 === 0x6c ? "<" : ">";
1072
+ }
1073
+ break;
1074
+ }
1075
+ // &amp; / &apos;
1076
+ case 0x61: {
1077
+ const c2 = xmlString.charCodeAt(start + 1);
1078
+ if (c2 === 0x6d &&
1079
+ xmlString.charCodeAt(start + 2) === 0x70 &&
1080
+ xmlString.charCodeAt(start + 3) === CharCodes.SEMI) {
1081
+ consumed = 4;
1082
+ value = "&";
1083
+ }
1084
+ else if (c2 === 0x70 &&
1085
+ xmlString.charCodeAt(start + 2) === 0x6f &&
1086
+ xmlString.charCodeAt(start + 3) === 0x73 &&
1087
+ xmlString.charCodeAt(start + 4) === CharCodes.SEMI) {
1088
+ consumed = 5;
1089
+ value = "'";
1090
+ }
1091
+ break;
1092
+ }
1093
+ // &quot;
1094
+ case 0x71: {
1095
+ if (xmlString.charCodeAt(start + 1) === 0x75 &&
1096
+ xmlString.charCodeAt(start + 2) === 0x6f &&
1097
+ xmlString.charCodeAt(start + 3) === 0x74 &&
1098
+ xmlString.charCodeAt(start + 4) === CharCodes.SEMI) {
1099
+ consumed = 5;
1100
+ value = '"';
1101
+ }
1102
+ break;
1103
+ }
1104
+ }
1105
+ /* eslint-enable unicorn/no-break-in-nested-loop */
1106
+ }
1107
+ if (consumed > 0) {
1108
+ if (lastIndex < offset)
1109
+ result += xmlString.slice(lastIndex, offset);
1110
+ result += value;
1111
+ offset = lastIndex = start + consumed;
1112
+ }
1113
+ else {
1114
+ offset = start;
1115
+ }
1116
+ /*
1117
+ * Adjacent entities (`&x;&y;`) are common in entity-dense input;
1118
+ * checking the single character at `lastIndex` first skips the
1119
+ * `indexOf` call (and its per-call overhead) for that case.
1120
+ */
1121
+ offset =
1122
+ xmlString.charCodeAt(offset) === CharCodes.AMP
1123
+ ? offset
1124
+ : xmlString.indexOf("&", offset);
1125
+ } while (offset >= 0);
1126
+ return result + xmlString.slice(lastIndex);
539
1127
  }
540
- export { replaceCodePoint } from "./decode-codepoint.js";
1128
+ export { replaceCodePoint, replaceCodePointXML, } from "./decode-codepoint.js";
541
1129
  // Re-export for use by eg. htmlparser2
542
1130
  export { htmlDecodeTree } from "./generated/decode-data-html.js";
543
1131
  export { xmlDecodeTree } from "./generated/decode-data-xml.js";