@withbuddi/buddi 0.1.0-pre.43 → 0.1.0-pre.44

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 (479) hide show
  1. package/examples/agents/agent-father/agent.md +12 -5
  2. package/examples/agents/concierge/agent.md +11 -3
  3. package/extension/icons/128.png +0 -0
  4. package/extension/icons/16.png +0 -0
  5. package/extension/icons/32.png +0 -0
  6. package/extension/icons/48.png +0 -0
  7. package/extension/manifest.json +7 -3
  8. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  9. package/node_modules/@buddi/cli/dist/access-cmd.d.ts +2 -1
  10. package/node_modules/@buddi/cli/dist/access-cmd.d.ts.map +1 -1
  11. package/node_modules/@buddi/cli/dist/access-cmd.js +40 -7
  12. package/node_modules/@buddi/cli/dist/access-cmd.js.map +1 -1
  13. package/node_modules/@buddi/cli/dist/args.d.ts +2 -1
  14. package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
  15. package/node_modules/@buddi/cli/dist/args.js +7 -3
  16. package/node_modules/@buddi/cli/dist/args.js.map +1 -1
  17. package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
  18. package/node_modules/@buddi/cli/dist/commands.js +3 -2
  19. package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
  20. package/node_modules/@buddi/cli/dist/main.js +1 -1
  21. package/node_modules/@buddi/cli/dist/main.js.map +1 -1
  22. package/node_modules/@buddi/cli/dist/mcp/server.js +1 -1
  23. package/node_modules/@buddi/cli/dist/mcp/server.js.map +1 -1
  24. package/node_modules/@buddi/cli/dist/mcp/tools.d.ts.map +1 -1
  25. package/node_modules/@buddi/cli/dist/mcp/tools.js +60 -0
  26. package/node_modules/@buddi/cli/dist/mcp/tools.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  28. package/node_modules/@buddi/core/dist/lock.d.ts +15 -1
  29. package/node_modules/@buddi/core/dist/lock.d.ts.map +1 -1
  30. package/node_modules/@buddi/core/dist/lock.js +15 -1
  31. package/node_modules/@buddi/core/dist/lock.js.map +1 -1
  32. package/node_modules/@buddi/core/dist/pages.d.ts +75 -0
  33. package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
  34. package/node_modules/@buddi/core/dist/pages.js +14 -0
  35. package/node_modules/@buddi/core/dist/pages.js.map +1 -1
  36. package/node_modules/@buddi/core/dist/plugin/index.d.ts +2 -2
  37. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  38. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  39. package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
  40. package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
  41. package/node_modules/@buddi/core/dist/provider-accounts.d.ts +32 -0
  42. package/node_modules/@buddi/core/dist/provider-accounts.d.ts.map +1 -1
  43. package/node_modules/@buddi/core/dist/provider-accounts.js +22 -0
  44. package/node_modules/@buddi/core/dist/provider-accounts.js.map +1 -1
  45. package/node_modules/@buddi/core/migrations/077_lock_background_portrait.sql +5 -0
  46. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  47. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts +21 -8
  48. package/node_modules/@buddi/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  49. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js +201 -36
  50. package/node_modules/@buddi/gateway/dist/agents/owner-tools.js.map +1 -1
  51. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts +5 -0
  52. package/node_modules/@buddi/gateway/dist/evals/golden.d.ts.map +1 -1
  53. package/node_modules/@buddi/gateway/dist/evals/golden.js +48 -0
  54. package/node_modules/@buddi/gateway/dist/evals/golden.js.map +1 -1
  55. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts +8 -2
  56. package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts.map +1 -1
  57. package/node_modules/@buddi/gateway/dist/mcp/requests.js +74 -1
  58. package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
  59. package/node_modules/@buddi/gateway/dist/owner-profile-edit.d.ts +160 -0
  60. package/node_modules/@buddi/gateway/dist/owner-profile-edit.d.ts.map +1 -0
  61. package/node_modules/@buddi/gateway/dist/owner-profile-edit.js +296 -0
  62. package/node_modules/@buddi/gateway/dist/owner-profile-edit.js.map +1 -0
  63. package/node_modules/@buddi/gateway/dist/provider-accounts.d.ts.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/provider-accounts.js +2 -1
  65. package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
  66. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.d.ts +63 -0
  67. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.d.ts.map +1 -0
  68. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.js +87 -0
  69. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-connector.js.map +1 -0
  70. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts +39 -4
  71. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -1
  72. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js +99 -11
  73. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-setup.js.map +1 -1
  74. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js +1 -1
  75. package/node_modules/@buddi/gateway/dist/web/access/cloudflare-token.js.map +1 -1
  76. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts +1 -0
  77. package/node_modules/@buddi/gateway/dist/web/access/index.d.ts.map +1 -1
  78. package/node_modules/@buddi/gateway/dist/web/access/index.js +1 -0
  79. package/node_modules/@buddi/gateway/dist/web/access/index.js.map +1 -1
  80. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  81. package/node_modules/@buddi/gateway/dist/web/api-routes.js +18 -2
  82. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  83. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.d.ts +9 -0
  84. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.d.ts.map +1 -0
  85. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.js +60 -0
  86. package/node_modules/@buddi/gateway/dist/web/lock-backgrounds.js.map +1 -0
  87. package/node_modules/@buddi/gateway/dist/web/lock.d.ts +13 -1
  88. package/node_modules/@buddi/gateway/dist/web/lock.d.ts.map +1 -1
  89. package/node_modules/@buddi/gateway/dist/web/lock.js +84 -23
  90. package/node_modules/@buddi/gateway/dist/web/lock.js.map +1 -1
  91. package/node_modules/@buddi/gateway/dist/web/places.d.ts +5 -0
  92. package/node_modules/@buddi/gateway/dist/web/places.d.ts.map +1 -1
  93. package/node_modules/@buddi/gateway/dist/web/places.js +11 -4
  94. package/node_modules/@buddi/gateway/dist/web/places.js.map +1 -1
  95. package/node_modules/@buddi/gateway/dist/web/server.d.ts +3 -0
  96. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  97. package/node_modules/@buddi/gateway/dist/web/server.js +33 -45
  98. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  99. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  100. package/node_modules/@buddi/install/dist/cloudflared.d.ts +121 -0
  101. package/node_modules/@buddi/install/dist/cloudflared.d.ts.map +1 -0
  102. package/node_modules/@buddi/install/dist/cloudflared.js +451 -0
  103. package/node_modules/@buddi/install/dist/cloudflared.js.map +1 -0
  104. package/node_modules/@buddi/install/dist/index.d.ts +1 -0
  105. package/node_modules/@buddi/install/dist/index.d.ts.map +1 -1
  106. package/node_modules/@buddi/install/dist/index.js +1 -0
  107. package/node_modules/@buddi/install/dist/index.js.map +1 -1
  108. package/node_modules/@buddi/install/dist/supervisor.d.ts +6 -1
  109. package/node_modules/@buddi/install/dist/supervisor.d.ts.map +1 -1
  110. package/node_modules/@buddi/install/dist/supervisor.js +51 -5
  111. package/node_modules/@buddi/install/dist/supervisor.js.map +1 -1
  112. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  113. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  114. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  115. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  116. package/node_modules/@buddi/tool-email/dist/html.d.ts +16 -0
  117. package/node_modules/@buddi/tool-email/dist/html.d.ts.map +1 -0
  118. package/node_modules/@buddi/tool-email/dist/html.js +273 -0
  119. package/node_modules/@buddi/tool-email/dist/html.js.map +1 -0
  120. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts +7 -0
  121. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
  122. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +53 -0
  123. package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
  124. package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
  125. package/node_modules/@buddi/tool-email/dist/mail.js +4 -0
  126. package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
  127. package/node_modules/@buddi/tool-email/dist/pages/descriptors.d.ts.map +1 -1
  128. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js +208 -176
  129. package/node_modules/@buddi/tool-email/dist/pages/descriptors.js.map +1 -1
  130. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +1 -0
  131. package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
  132. package/node_modules/@buddi/tool-email/dist/pages/index.js +3 -0
  133. package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
  134. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +14 -1
  135. package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
  136. package/node_modules/@buddi/tool-email/dist/pages/queries.js +267 -58
  137. package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
  138. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.d.ts +25 -0
  139. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.d.ts.map +1 -0
  140. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.js +33 -0
  141. package/node_modules/@buddi/tool-email/dist/pages/thread-tools.js.map +1 -0
  142. package/node_modules/@buddi/tool-email/dist/ports.d.ts +10 -0
  143. package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
  144. package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
  145. package/node_modules/@buddi/tool-email/dist/retention.d.ts.map +1 -1
  146. package/node_modules/@buddi/tool-email/dist/retention.js +1 -0
  147. package/node_modules/@buddi/tool-email/dist/retention.js.map +1 -1
  148. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
  149. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +4 -2
  150. package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
  151. package/node_modules/@buddi/tool-email/migrations/028_reading.sql +20 -0
  152. package/node_modules/@buddi/tool-email/package.json +1 -0
  153. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  154. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  155. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  156. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  157. package/node_modules/entities/LICENSE +11 -0
  158. package/node_modules/entities/decode.d.ts +1 -0
  159. package/node_modules/entities/decode.js +3 -0
  160. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts +19 -0
  161. package/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map +1 -0
  162. package/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  163. package/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  164. package/node_modules/entities/dist/commonjs/decode.d.ts +209 -0
  165. package/node_modules/entities/dist/commonjs/decode.d.ts.map +1 -0
  166. package/node_modules/entities/dist/commonjs/decode.js +511 -0
  167. package/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  168. package/node_modules/entities/dist/commonjs/encode.d.ts +22 -0
  169. package/node_modules/entities/dist/commonjs/encode.d.ts.map +1 -0
  170. package/node_modules/entities/dist/commonjs/encode.js +73 -0
  171. package/node_modules/entities/dist/commonjs/encode.js.map +1 -0
  172. package/node_modules/entities/dist/commonjs/escape.d.ts +43 -0
  173. package/node_modules/entities/dist/commonjs/escape.d.ts.map +1 -0
  174. package/node_modules/entities/dist/commonjs/escape.js +121 -0
  175. package/node_modules/entities/dist/commonjs/escape.js.map +1 -0
  176. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts +2 -0
  177. package/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map +1 -0
  178. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js +10 -0
  179. package/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  180. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts +2 -0
  181. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map +1 -0
  182. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +10 -0
  183. package/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  184. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts +8 -0
  185. package/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map +1 -0
  186. package/node_modules/entities/dist/commonjs/generated/encode-html.js +13 -0
  187. package/node_modules/entities/dist/commonjs/generated/encode-html.js.map +1 -0
  188. package/node_modules/entities/dist/commonjs/index.d.ts +96 -0
  189. package/node_modules/entities/dist/commonjs/index.d.ts.map +1 -0
  190. package/node_modules/entities/dist/commonjs/index.js +131 -0
  191. package/node_modules/entities/dist/commonjs/index.js.map +1 -0
  192. package/node_modules/entities/dist/commonjs/package.json +3 -0
  193. package/node_modules/entities/dist/esm/decode-codepoint.d.ts +19 -0
  194. package/node_modules/entities/dist/esm/decode-codepoint.d.ts.map +1 -0
  195. package/node_modules/entities/dist/esm/decode-codepoint.js +72 -0
  196. package/node_modules/entities/dist/esm/decode-codepoint.js.map +1 -0
  197. package/node_modules/entities/dist/esm/decode.d.ts +209 -0
  198. package/node_modules/entities/dist/esm/decode.d.ts.map +1 -0
  199. package/node_modules/entities/dist/esm/decode.js +497 -0
  200. package/node_modules/entities/dist/esm/decode.js.map +1 -0
  201. package/node_modules/entities/dist/esm/encode.d.ts +22 -0
  202. package/node_modules/entities/dist/esm/encode.d.ts.map +1 -0
  203. package/node_modules/entities/dist/esm/encode.js +69 -0
  204. package/node_modules/entities/dist/esm/encode.js.map +1 -0
  205. package/node_modules/entities/dist/esm/escape.d.ts +43 -0
  206. package/node_modules/entities/dist/esm/escape.d.ts.map +1 -0
  207. package/node_modules/entities/dist/esm/escape.js +117 -0
  208. package/node_modules/entities/dist/esm/escape.js.map +1 -0
  209. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts +2 -0
  210. package/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map +1 -0
  211. package/node_modules/entities/dist/esm/generated/decode-data-html.js +7 -0
  212. package/node_modules/entities/dist/esm/generated/decode-data-html.js.map +1 -0
  213. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts +2 -0
  214. package/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map +1 -0
  215. package/node_modules/entities/dist/esm/generated/decode-data-xml.js +7 -0
  216. package/node_modules/entities/dist/esm/generated/decode-data-xml.js.map +1 -0
  217. package/node_modules/entities/dist/esm/generated/encode-html.d.ts +8 -0
  218. package/node_modules/entities/dist/esm/generated/encode-html.d.ts.map +1 -0
  219. package/node_modules/entities/dist/esm/generated/encode-html.js +10 -0
  220. package/node_modules/entities/dist/esm/generated/encode-html.js.map +1 -0
  221. package/node_modules/entities/dist/esm/index.d.ts +96 -0
  222. package/node_modules/entities/dist/esm/index.d.ts.map +1 -0
  223. package/node_modules/entities/dist/esm/index.js +107 -0
  224. package/node_modules/entities/dist/esm/index.js.map +1 -0
  225. package/node_modules/entities/dist/esm/package.json +3 -0
  226. package/node_modules/entities/escape.d.ts +1 -0
  227. package/node_modules/entities/escape.js +3 -0
  228. package/node_modules/entities/package.json +118 -0
  229. package/node_modules/entities/readme.md +122 -0
  230. package/node_modules/entities/src/decode-codepoint.ts +81 -0
  231. package/node_modules/entities/src/decode.spec.ts +320 -0
  232. package/node_modules/entities/src/decode.ts +620 -0
  233. package/node_modules/entities/src/encode.spec.ts +78 -0
  234. package/node_modules/entities/src/encode.ts +77 -0
  235. package/node_modules/entities/src/escape.spec.ts +14 -0
  236. package/node_modules/entities/src/escape.ts +148 -0
  237. package/node_modules/entities/src/generated/.eslintrc.json +10 -0
  238. package/node_modules/entities/src/generated/decode-data-html.ts +8 -0
  239. package/node_modules/entities/src/generated/decode-data-xml.ts +8 -0
  240. package/node_modules/entities/src/generated/encode-html.ts +17 -0
  241. package/node_modules/entities/src/index.spec.ts +125 -0
  242. package/node_modules/entities/src/index.ts +188 -0
  243. package/node_modules/parse5/LICENSE +19 -0
  244. package/node_modules/parse5/README.md +38 -0
  245. package/node_modules/parse5/dist/cjs/common/doctype.d.ts +4 -0
  246. package/node_modules/parse5/dist/cjs/common/doctype.js +118 -0
  247. package/node_modules/parse5/dist/cjs/common/error-codes.d.ts +67 -0
  248. package/node_modules/parse5/dist/cjs/common/error-codes.js +66 -0
  249. package/node_modules/parse5/dist/cjs/common/foreign-content.d.ts +9 -0
  250. package/node_modules/parse5/dist/cjs/common/foreign-content.js +237 -0
  251. package/node_modules/parse5/dist/cjs/common/html.d.ts +289 -0
  252. package/node_modules/parse5/dist/cjs/common/html.js +528 -0
  253. package/node_modules/parse5/dist/cjs/common/token.d.ts +84 -0
  254. package/node_modules/parse5/dist/cjs/common/token.js +24 -0
  255. package/node_modules/parse5/dist/cjs/common/unicode.d.ts +42 -0
  256. package/node_modules/parse5/dist/cjs/common/unicode.js +70 -0
  257. package/node_modules/parse5/dist/cjs/index.d.ts +71 -0
  258. package/node_modules/parse5/dist/cjs/index.js +54 -0
  259. package/node_modules/parse5/dist/cjs/package.json +1 -0
  260. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.d.ts +36 -0
  261. package/node_modules/parse5/dist/cjs/parser/formatting-element-list.js +114 -0
  262. package/node_modules/parse5/dist/cjs/parser/index.d.ts +221 -0
  263. package/node_modules/parse5/dist/cjs/parser/index.js +3240 -0
  264. package/node_modules/parse5/dist/cjs/parser/open-element-stack.d.ts +53 -0
  265. package/node_modules/parse5/dist/cjs/parser/open-element-stack.js +328 -0
  266. package/node_modules/parse5/dist/cjs/serializer/index.d.ts +60 -0
  267. package/node_modules/parse5/dist/cjs/serializer/index.js +172 -0
  268. package/node_modules/parse5/dist/cjs/tokenizer/index.d.ts +247 -0
  269. package/node_modules/parse5/dist/cjs/tokenizer/index.js +2714 -0
  270. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.d.ts +36 -0
  271. package/node_modules/parse5/dist/cjs/tokenizer/preprocessor.js +200 -0
  272. package/node_modules/parse5/dist/cjs/tree-adapters/default.d.ts +84 -0
  273. package/node_modules/parse5/dist/cjs/tree-adapters/default.js +176 -0
  274. package/node_modules/parse5/dist/cjs/tree-adapters/interface.d.ts +255 -0
  275. package/node_modules/parse5/dist/cjs/tree-adapters/interface.js +2 -0
  276. package/node_modules/parse5/dist/common/doctype.d.ts +4 -0
  277. package/node_modules/parse5/dist/common/doctype.js +114 -0
  278. package/node_modules/parse5/dist/common/error-codes.d.ts +67 -0
  279. package/node_modules/parse5/dist/common/error-codes.js +63 -0
  280. package/node_modules/parse5/dist/common/foreign-content.d.ts +9 -0
  281. package/node_modules/parse5/dist/common/foreign-content.js +228 -0
  282. package/node_modules/parse5/dist/common/html.d.ts +289 -0
  283. package/node_modules/parse5/dist/common/html.js +523 -0
  284. package/node_modules/parse5/dist/common/token.d.ts +84 -0
  285. package/node_modules/parse5/dist/common/token.js +20 -0
  286. package/node_modules/parse5/dist/common/unicode.d.ts +42 -0
  287. package/node_modules/parse5/dist/common/unicode.js +62 -0
  288. package/node_modules/parse5/dist/index.d.ts +71 -0
  289. package/node_modules/parse5/dist/index.js +42 -0
  290. package/node_modules/parse5/dist/parser/formatting-element-list.d.ts +36 -0
  291. package/node_modules/parse5/dist/parser/formatting-element-list.js +110 -0
  292. package/node_modules/parse5/dist/parser/index.d.ts +221 -0
  293. package/node_modules/parse5/dist/parser/index.js +3245 -0
  294. package/node_modules/parse5/dist/parser/open-element-stack.d.ts +53 -0
  295. package/node_modules/parse5/dist/parser/open-element-stack.js +324 -0
  296. package/node_modules/parse5/dist/serializer/index.d.ts +60 -0
  297. package/node_modules/parse5/dist/serializer/index.js +168 -0
  298. package/node_modules/parse5/dist/tokenizer/index.d.ts +247 -0
  299. package/node_modules/parse5/dist/tokenizer/index.js +2710 -0
  300. package/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +36 -0
  301. package/node_modules/parse5/dist/tokenizer/preprocessor.js +196 -0
  302. package/node_modules/parse5/dist/tree-adapters/default.d.ts +84 -0
  303. package/node_modules/parse5/dist/tree-adapters/default.js +173 -0
  304. package/node_modules/parse5/dist/tree-adapters/interface.d.ts +255 -0
  305. package/node_modules/parse5/dist/tree-adapters/interface.js +1 -0
  306. package/node_modules/parse5/package.json +50 -0
  307. package/package.json +2 -2
  308. package/packages/cli/dist/.tsbuildinfo +1 -1
  309. package/packages/cli/dist/access-cmd.d.ts +2 -1
  310. package/packages/cli/dist/access-cmd.d.ts.map +1 -1
  311. package/packages/cli/dist/access-cmd.js +40 -7
  312. package/packages/cli/dist/access-cmd.js.map +1 -1
  313. package/packages/cli/dist/args.d.ts +2 -1
  314. package/packages/cli/dist/args.d.ts.map +1 -1
  315. package/packages/cli/dist/args.js +7 -3
  316. package/packages/cli/dist/args.js.map +1 -1
  317. package/packages/cli/dist/commands.d.ts.map +1 -1
  318. package/packages/cli/dist/commands.js +3 -2
  319. package/packages/cli/dist/commands.js.map +1 -1
  320. package/packages/cli/dist/main.js +1 -1
  321. package/packages/cli/dist/main.js.map +1 -1
  322. package/packages/cli/dist/mcp/server.js +1 -1
  323. package/packages/cli/dist/mcp/server.js.map +1 -1
  324. package/packages/cli/dist/mcp/tools.d.ts.map +1 -1
  325. package/packages/cli/dist/mcp/tools.js +60 -0
  326. package/packages/cli/dist/mcp/tools.js.map +1 -1
  327. package/packages/core/dist/.tsbuildinfo +1 -1
  328. package/packages/core/dist/lock.d.ts +15 -1
  329. package/packages/core/dist/lock.d.ts.map +1 -1
  330. package/packages/core/dist/lock.js +15 -1
  331. package/packages/core/dist/lock.js.map +1 -1
  332. package/packages/core/dist/pages.d.ts +75 -0
  333. package/packages/core/dist/pages.d.ts.map +1 -1
  334. package/packages/core/dist/pages.js +14 -0
  335. package/packages/core/dist/pages.js.map +1 -1
  336. package/packages/core/dist/plugin/index.d.ts +2 -2
  337. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  338. package/packages/core/dist/plugin/index.js.map +1 -1
  339. package/packages/core/dist/plugin/version.d.ts +1 -1
  340. package/packages/core/dist/plugin/version.js +1 -1
  341. package/packages/core/dist/provider-accounts.d.ts +32 -0
  342. package/packages/core/dist/provider-accounts.d.ts.map +1 -1
  343. package/packages/core/dist/provider-accounts.js +22 -0
  344. package/packages/core/dist/provider-accounts.js.map +1 -1
  345. package/packages/core/migrations/077_lock_background_portrait.sql +5 -0
  346. package/packages/gateway/dist/.tsbuildinfo +1 -1
  347. package/packages/gateway/dist/agents/owner-tools.d.ts +21 -8
  348. package/packages/gateway/dist/agents/owner-tools.d.ts.map +1 -1
  349. package/packages/gateway/dist/agents/owner-tools.js +201 -36
  350. package/packages/gateway/dist/agents/owner-tools.js.map +1 -1
  351. package/packages/gateway/dist/evals/golden.d.ts +5 -0
  352. package/packages/gateway/dist/evals/golden.d.ts.map +1 -1
  353. package/packages/gateway/dist/evals/golden.js +48 -0
  354. package/packages/gateway/dist/evals/golden.js.map +1 -1
  355. package/packages/gateway/dist/mcp/requests.d.ts +8 -2
  356. package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
  357. package/packages/gateway/dist/mcp/requests.js +74 -1
  358. package/packages/gateway/dist/mcp/requests.js.map +1 -1
  359. package/packages/gateway/dist/owner-profile-edit.d.ts +160 -0
  360. package/packages/gateway/dist/owner-profile-edit.d.ts.map +1 -0
  361. package/packages/gateway/dist/owner-profile-edit.js +296 -0
  362. package/packages/gateway/dist/owner-profile-edit.js.map +1 -0
  363. package/packages/gateway/dist/provider-accounts.d.ts.map +1 -1
  364. package/packages/gateway/dist/provider-accounts.js +2 -1
  365. package/packages/gateway/dist/provider-accounts.js.map +1 -1
  366. package/packages/gateway/dist/web/access/cloudflare-connector.d.ts +63 -0
  367. package/packages/gateway/dist/web/access/cloudflare-connector.d.ts.map +1 -0
  368. package/packages/gateway/dist/web/access/cloudflare-connector.js +87 -0
  369. package/packages/gateway/dist/web/access/cloudflare-connector.js.map +1 -0
  370. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts +39 -4
  371. package/packages/gateway/dist/web/access/cloudflare-setup.d.ts.map +1 -1
  372. package/packages/gateway/dist/web/access/cloudflare-setup.js +99 -11
  373. package/packages/gateway/dist/web/access/cloudflare-setup.js.map +1 -1
  374. package/packages/gateway/dist/web/access/cloudflare-token.js +1 -1
  375. package/packages/gateway/dist/web/access/cloudflare-token.js.map +1 -1
  376. package/packages/gateway/dist/web/access/index.d.ts +1 -0
  377. package/packages/gateway/dist/web/access/index.d.ts.map +1 -1
  378. package/packages/gateway/dist/web/access/index.js +1 -0
  379. package/packages/gateway/dist/web/access/index.js.map +1 -1
  380. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  381. package/packages/gateway/dist/web/api-routes.js +18 -2
  382. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  383. package/packages/gateway/dist/web/lock-backgrounds.d.ts +9 -0
  384. package/packages/gateway/dist/web/lock-backgrounds.d.ts.map +1 -0
  385. package/packages/gateway/dist/web/lock-backgrounds.js +60 -0
  386. package/packages/gateway/dist/web/lock-backgrounds.js.map +1 -0
  387. package/packages/gateway/dist/web/lock.d.ts +13 -1
  388. package/packages/gateway/dist/web/lock.d.ts.map +1 -1
  389. package/packages/gateway/dist/web/lock.js +84 -23
  390. package/packages/gateway/dist/web/lock.js.map +1 -1
  391. package/packages/gateway/dist/web/places.d.ts +5 -0
  392. package/packages/gateway/dist/web/places.d.ts.map +1 -1
  393. package/packages/gateway/dist/web/places.js +11 -4
  394. package/packages/gateway/dist/web/places.js.map +1 -1
  395. package/packages/gateway/dist/web/server.d.ts +3 -0
  396. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  397. package/packages/gateway/dist/web/server.js +33 -45
  398. package/packages/gateway/dist/web/server.js.map +1 -1
  399. package/packages/install/dist/.tsbuildinfo +1 -1
  400. package/packages/install/dist/cloudflared.d.ts +121 -0
  401. package/packages/install/dist/cloudflared.d.ts.map +1 -0
  402. package/packages/install/dist/cloudflared.js +451 -0
  403. package/packages/install/dist/cloudflared.js.map +1 -0
  404. package/packages/install/dist/index.d.ts +1 -0
  405. package/packages/install/dist/index.d.ts.map +1 -1
  406. package/packages/install/dist/index.js +1 -0
  407. package/packages/install/dist/index.js.map +1 -1
  408. package/packages/install/dist/supervisor.d.ts +6 -1
  409. package/packages/install/dist/supervisor.d.ts.map +1 -1
  410. package/packages/install/dist/supervisor.js +51 -5
  411. package/packages/install/dist/supervisor.js.map +1 -1
  412. package/packages/runtime/dist/.tsbuildinfo +1 -1
  413. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  414. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  415. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  416. package/packages/tools/email/dist/html.d.ts +16 -0
  417. package/packages/tools/email/dist/html.d.ts.map +1 -0
  418. package/packages/tools/email/dist/html.js +273 -0
  419. package/packages/tools/email/dist/html.js.map +1 -0
  420. package/packages/tools/email/dist/imap/imapflow-client.d.ts +7 -0
  421. package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
  422. package/packages/tools/email/dist/imap/imapflow-client.js +53 -0
  423. package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
  424. package/packages/tools/email/dist/mail.d.ts.map +1 -1
  425. package/packages/tools/email/dist/mail.js +4 -0
  426. package/packages/tools/email/dist/mail.js.map +1 -1
  427. package/packages/tools/email/dist/pages/descriptors.d.ts.map +1 -1
  428. package/packages/tools/email/dist/pages/descriptors.js +208 -176
  429. package/packages/tools/email/dist/pages/descriptors.js.map +1 -1
  430. package/packages/tools/email/dist/pages/index.d.ts +1 -0
  431. package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
  432. package/packages/tools/email/dist/pages/index.js +3 -0
  433. package/packages/tools/email/dist/pages/index.js.map +1 -1
  434. package/packages/tools/email/dist/pages/queries.d.ts +14 -1
  435. package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
  436. package/packages/tools/email/dist/pages/queries.js +267 -58
  437. package/packages/tools/email/dist/pages/queries.js.map +1 -1
  438. package/packages/tools/email/dist/pages/thread-tools.d.ts +25 -0
  439. package/packages/tools/email/dist/pages/thread-tools.d.ts.map +1 -0
  440. package/packages/tools/email/dist/pages/thread-tools.js +33 -0
  441. package/packages/tools/email/dist/pages/thread-tools.js.map +1 -0
  442. package/packages/tools/email/dist/ports.d.ts +10 -0
  443. package/packages/tools/email/dist/ports.d.ts.map +1 -1
  444. package/packages/tools/email/dist/ports.js.map +1 -1
  445. package/packages/tools/email/dist/retention.d.ts.map +1 -1
  446. package/packages/tools/email/dist/retention.js +1 -0
  447. package/packages/tools/email/dist/retention.js.map +1 -1
  448. package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
  449. package/packages/tools/email/dist/sources/inbox-poll.js +4 -2
  450. package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
  451. package/packages/tools/email/migrations/028_reading.sql +20 -0
  452. package/packages/tools/email/package.json +1 -0
  453. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  454. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  455. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  456. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  457. package/packages/web/dist/apple-touch-icon.png +0 -0
  458. package/packages/web/dist/assets/index-C1sRt7zd.js +149 -0
  459. package/packages/web/dist/assets/index-CdZpSJ4_.css +1 -0
  460. package/packages/web/dist/assets/{lottie_light-CHWAvOde.js → lottie_light-DnYl9yaP.js} +1 -1
  461. package/packages/web/dist/backgrounds/golden-streak-portrait.jpg +0 -0
  462. package/packages/web/dist/backgrounds/golden-streak-thumb.jpg +0 -0
  463. package/packages/web/dist/backgrounds/manifest.json +18 -0
  464. package/packages/web/dist/backgrounds/peoria-autumn-waterfront-thumb.jpg +0 -0
  465. package/packages/web/dist/backgrounds/peoria-autumn-waterfront.jpg +0 -0
  466. package/packages/web/dist/build.json +1 -1
  467. package/packages/web/dist/favicon-16.png +0 -0
  468. package/packages/web/dist/favicon-32.png +0 -0
  469. package/packages/web/dist/favicon.ico +0 -0
  470. package/packages/web/dist/icon-192.png +0 -0
  471. package/packages/web/dist/icon-512.png +0 -0
  472. package/packages/web/dist/index.html +6 -3
  473. package/packages/web/dist/manifest.webmanifest +1 -1
  474. package/packages/web/dist/maskable-512.png +0 -0
  475. package/packages/web/dist/precache.json +7 -5
  476. package/packages/web/dist/assets/index-BB52n8Fa.js +0 -146
  477. package/packages/web/dist/assets/index-CY4cPN4I.css +0 -1
  478. package/packages/web/dist/favicon.png +0 -0
  479. package/packages/web/dist/icon-maskable-512.png +0 -0
@@ -0,0 +1,320 @@
1
+ import { describe, it, expect, vitest } from "vitest";
2
+ import * as entities from "./decode.js";
3
+
4
+ describe("Decode test", () => {
5
+ const testcases = [
6
+ { input: "&", output: "&" },
7
+ { input: "&", output: "&" },
8
+ { input: "&", output: "&" },
9
+ { input: "&", output: "&" },
10
+ { input: "&", output: "&" },
11
+ { input: "&", output: "&" },
12
+ { input: "&", output: "&" },
13
+ { input: ":", output: ":" },
14
+ { input: ":", output: ":" },
15
+ { input: ":", output: ":" },
16
+ { input: ":", output: ":" },
17
+ { input: "&#", output: "&#" },
18
+ { input: "&>", output: "&>" },
19
+ { input: "id=770&#anchor", output: "id=770&#anchor" },
20
+ ];
21
+
22
+ for (const { input, output } of testcases) {
23
+ it(`should XML decode ${input}`, () =>
24
+ expect(entities.decodeXML(input)).toBe(output));
25
+ it(`should HTML decode ${input}`, () =>
26
+ expect(entities.decodeHTML(input)).toBe(output));
27
+ }
28
+
29
+ it("should HTML decode partial legacy entity", () => {
30
+ expect(entities.decodeHTMLStrict("&timesbar")).toBe("&timesbar");
31
+ expect(entities.decodeHTML("&timesbar")).toBe("×bar");
32
+ });
33
+
34
+ it("should HTML decode legacy entities according to spec", () =>
35
+ expect(entities.decodeHTML("?&image_uri=1&ℑ=2&image=3")).toBe(
36
+ "?&image_uri=1&ℑ=2&image=3",
37
+ ));
38
+
39
+ it("should back out of legacy entities", () =>
40
+ expect(entities.decodeHTML("&ampa")).toBe("&a"));
41
+
42
+ it("should not parse numeric entities in strict mode", () =>
43
+ expect(entities.decodeHTMLStrict("&#55")).toBe("&#55"));
44
+
45
+ it("should parse &nbsp followed by < (#852)", () =>
46
+ expect(entities.decodeHTML("&nbsp<")).toBe("\u00A0<"));
47
+
48
+ it("should decode trailing legacy entities", () => {
49
+ expect(entities.decodeHTML("&timesbar;&timesbar")).toBe("⨱×bar");
50
+ });
51
+
52
+ it("should decode multi-byte entities", () => {
53
+ expect(entities.decodeHTML("&NotGreaterFullEqual;")).toBe("≧̸");
54
+ });
55
+
56
+ it("should not decode legacy entities followed by text in attribute mode", () => {
57
+ expect(
58
+ entities.decodeHTML("&not", entities.DecodingMode.Attribute),
59
+ ).toBe("¬");
60
+
61
+ expect(
62
+ entities.decodeHTML("&noti", entities.DecodingMode.Attribute),
63
+ ).toBe("&noti");
64
+
65
+ expect(
66
+ entities.decodeHTML("&not=", entities.DecodingMode.Attribute),
67
+ ).toBe("&not=");
68
+
69
+ expect(entities.decodeHTMLAttribute("&notp")).toBe("&notp");
70
+ expect(entities.decodeHTMLAttribute("&notP")).toBe("&notP");
71
+ expect(entities.decodeHTMLAttribute("&not3")).toBe("&not3");
72
+ });
73
+ });
74
+
75
+ describe("EntityDecoder", () => {
76
+ it("should decode decimal entities", () => {
77
+ const callback = vitest.fn();
78
+ const decoder = new entities.EntityDecoder(
79
+ entities.htmlDecodeTree,
80
+ callback,
81
+ );
82
+
83
+ expect(decoder.write("&#5", 1)).toBe(-1);
84
+ expect(decoder.write("8;", 0)).toBe(5);
85
+
86
+ expect(callback).toHaveBeenCalledTimes(1);
87
+ expect(callback).toHaveBeenCalledWith(":".charCodeAt(0), 5);
88
+ });
89
+
90
+ it("should decode hex entities", () => {
91
+ const callback = vitest.fn();
92
+ const decoder = new entities.EntityDecoder(
93
+ entities.htmlDecodeTree,
94
+ callback,
95
+ );
96
+
97
+ expect(decoder.write("&#x3a;", 1)).toBe(6);
98
+
99
+ expect(callback).toHaveBeenCalledTimes(1);
100
+ expect(callback).toHaveBeenCalledWith(":".charCodeAt(0), 6);
101
+ });
102
+
103
+ it("should decode named entities", () => {
104
+ const callback = vitest.fn();
105
+ const decoder = new entities.EntityDecoder(
106
+ entities.htmlDecodeTree,
107
+ callback,
108
+ );
109
+
110
+ expect(decoder.write("&amp;", 1)).toBe(5);
111
+
112
+ expect(callback).toHaveBeenCalledTimes(1);
113
+ expect(callback).toHaveBeenCalledWith("&".charCodeAt(0), 5);
114
+ });
115
+
116
+ it("should decode legacy entities", () => {
117
+ const callback = vitest.fn();
118
+ const decoder = new entities.EntityDecoder(
119
+ entities.htmlDecodeTree,
120
+ callback,
121
+ );
122
+ decoder.startEntity(entities.DecodingMode.Legacy);
123
+
124
+ expect(decoder.write("&amp", 1)).toBe(-1);
125
+
126
+ expect(callback).toHaveBeenCalledTimes(0);
127
+
128
+ expect(decoder.end()).toBe(4);
129
+
130
+ expect(callback).toHaveBeenCalledTimes(1);
131
+ expect(callback).toHaveBeenCalledWith("&".charCodeAt(0), 4);
132
+ });
133
+
134
+ it("should decode named entity written character by character", () => {
135
+ const callback = vitest.fn();
136
+ const decoder = new entities.EntityDecoder(
137
+ entities.htmlDecodeTree,
138
+ callback,
139
+ );
140
+
141
+ for (const c of "amp") {
142
+ expect(decoder.write(c, 0)).toBe(-1);
143
+ }
144
+ expect(decoder.write(";", 0)).toBe(5);
145
+
146
+ expect(callback).toHaveBeenCalledTimes(1);
147
+ expect(callback).toHaveBeenCalledWith("&".charCodeAt(0), 5);
148
+ });
149
+
150
+ it("should decode numeric entity written character by character", () => {
151
+ const callback = vitest.fn();
152
+ const decoder = new entities.EntityDecoder(
153
+ entities.htmlDecodeTree,
154
+ callback,
155
+ );
156
+
157
+ for (const c of "#x3a") {
158
+ expect(decoder.write(c, 0)).toBe(-1);
159
+ }
160
+ expect(decoder.write(";", 0)).toBe(6);
161
+
162
+ expect(callback).toHaveBeenCalledTimes(1);
163
+ expect(callback).toHaveBeenCalledWith(":".charCodeAt(0), 6);
164
+ });
165
+
166
+ it("should decode hex entities across several chunks", () => {
167
+ const callback = vitest.fn();
168
+ const decoder = new entities.EntityDecoder(
169
+ entities.htmlDecodeTree,
170
+ callback,
171
+ );
172
+
173
+ for (const chunk of ["#x", "cf", "ff", "d"]) {
174
+ expect(decoder.write(chunk, 0)).toBe(-1);
175
+ }
176
+
177
+ expect(decoder.write(";", 0)).toBe(9);
178
+ expect(callback).toHaveBeenCalledTimes(1);
179
+ expect(callback).toHaveBeenCalledWith(0xc_ff_fd, 9);
180
+ });
181
+
182
+ it("should not fail if nothing is written", () => {
183
+ const callback = vitest.fn();
184
+ const decoder = new entities.EntityDecoder(
185
+ entities.htmlDecodeTree,
186
+ callback,
187
+ );
188
+
189
+ expect(decoder.end()).toBe(0);
190
+ expect(callback).toHaveBeenCalledTimes(0);
191
+ });
192
+
193
+ describe("errors", () => {
194
+ it("should produce an error for a named entity without a semicolon", () => {
195
+ const errorHandlers = {
196
+ missingSemicolonAfterCharacterReference: vitest.fn(),
197
+ absenceOfDigitsInNumericCharacterReference: vitest.fn(),
198
+ validateNumericCharacterReference: vitest.fn(),
199
+ };
200
+ const callback = vitest.fn();
201
+ const decoder = new entities.EntityDecoder(
202
+ entities.htmlDecodeTree,
203
+ callback,
204
+ errorHandlers,
205
+ );
206
+
207
+ decoder.startEntity(entities.DecodingMode.Legacy);
208
+ expect(decoder.write("&amp;", 1)).toBe(5);
209
+ expect(callback).toHaveBeenCalledTimes(1);
210
+ expect(callback).toHaveBeenCalledWith("&".charCodeAt(0), 5);
211
+ expect(
212
+ errorHandlers.missingSemicolonAfterCharacterReference,
213
+ ).toHaveBeenCalledTimes(0);
214
+
215
+ decoder.startEntity(entities.DecodingMode.Legacy);
216
+ expect(decoder.write("&amp", 1)).toBe(-1);
217
+ expect(decoder.end()).toBe(4);
218
+
219
+ expect(callback).toHaveBeenCalledTimes(2);
220
+ expect(callback).toHaveBeenLastCalledWith("&".charCodeAt(0), 4);
221
+ expect(
222
+ errorHandlers.missingSemicolonAfterCharacterReference,
223
+ ).toHaveBeenCalledTimes(1);
224
+ });
225
+
226
+ it("should produce an error for a numeric entity without a semicolon", () => {
227
+ const errorHandlers = {
228
+ missingSemicolonAfterCharacterReference: vitest.fn(),
229
+ absenceOfDigitsInNumericCharacterReference: vitest.fn(),
230
+ validateNumericCharacterReference: vitest.fn(),
231
+ };
232
+ const callback = vitest.fn();
233
+ const decoder = new entities.EntityDecoder(
234
+ entities.htmlDecodeTree,
235
+ callback,
236
+ errorHandlers,
237
+ );
238
+
239
+ decoder.startEntity(entities.DecodingMode.Legacy);
240
+ expect(decoder.write("&#x3a", 1)).toBe(-1);
241
+ expect(decoder.end()).toBe(5);
242
+
243
+ expect(callback).toHaveBeenCalledTimes(1);
244
+ expect(callback).toHaveBeenCalledWith(0x3a, 5);
245
+ expect(
246
+ errorHandlers.missingSemicolonAfterCharacterReference,
247
+ ).toHaveBeenCalledTimes(1);
248
+ expect(
249
+ errorHandlers.absenceOfDigitsInNumericCharacterReference,
250
+ ).toHaveBeenCalledTimes(0);
251
+ expect(
252
+ errorHandlers.validateNumericCharacterReference,
253
+ ).toHaveBeenCalledTimes(1);
254
+ expect(
255
+ errorHandlers.validateNumericCharacterReference,
256
+ ).toHaveBeenCalledWith(0x3a);
257
+ });
258
+
259
+ it("should produce an error for numeric entities without digits", () => {
260
+ const errorHandlers = {
261
+ missingSemicolonAfterCharacterReference: vitest.fn(),
262
+ absenceOfDigitsInNumericCharacterReference: vitest.fn(),
263
+ validateNumericCharacterReference: vitest.fn(),
264
+ };
265
+ const callback = vitest.fn();
266
+ const decoder = new entities.EntityDecoder(
267
+ entities.htmlDecodeTree,
268
+ callback,
269
+ errorHandlers,
270
+ );
271
+
272
+ decoder.startEntity(entities.DecodingMode.Legacy);
273
+ expect(decoder.write("&#", 1)).toBe(-1);
274
+ expect(decoder.end()).toBe(0);
275
+
276
+ expect(callback).toHaveBeenCalledTimes(0);
277
+ expect(
278
+ errorHandlers.missingSemicolonAfterCharacterReference,
279
+ ).toHaveBeenCalledTimes(0);
280
+ expect(
281
+ errorHandlers.absenceOfDigitsInNumericCharacterReference,
282
+ ).toHaveBeenCalledTimes(1);
283
+ expect(
284
+ errorHandlers.absenceOfDigitsInNumericCharacterReference,
285
+ ).toHaveBeenCalledWith(2);
286
+ expect(
287
+ errorHandlers.validateNumericCharacterReference,
288
+ ).toHaveBeenCalledTimes(0);
289
+ });
290
+
291
+ it("should produce an error for hex entities without digits", () => {
292
+ const errorHandlers = {
293
+ missingSemicolonAfterCharacterReference: vitest.fn(),
294
+ absenceOfDigitsInNumericCharacterReference: vitest.fn(),
295
+ validateNumericCharacterReference: vitest.fn(),
296
+ };
297
+ const callback = vitest.fn();
298
+ const decoder = new entities.EntityDecoder(
299
+ entities.htmlDecodeTree,
300
+ callback,
301
+ errorHandlers,
302
+ );
303
+
304
+ decoder.startEntity(entities.DecodingMode.Legacy);
305
+ expect(decoder.write("&#x", 1)).toBe(-1);
306
+ expect(decoder.end()).toBe(0);
307
+
308
+ expect(callback).toHaveBeenCalledTimes(0);
309
+ expect(
310
+ errorHandlers.missingSemicolonAfterCharacterReference,
311
+ ).toHaveBeenCalledTimes(0);
312
+ expect(
313
+ errorHandlers.absenceOfDigitsInNumericCharacterReference,
314
+ ).toHaveBeenCalledTimes(1);
315
+ expect(
316
+ errorHandlers.validateNumericCharacterReference,
317
+ ).toHaveBeenCalledTimes(0);
318
+ });
319
+ });
320
+ });