wao 0.41.3 → 0.41.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 (719) hide show
  1. package/.babelrc-cjs +5 -0
  2. package/.babelrc-esm +5 -0
  3. package/.gitmodules +4 -0
  4. package/.prettierrc +6 -0
  5. package/README.md +90 -0
  6. package/app/.eslintrc.json +3 -0
  7. package/app/.mocharc.cjs +6 -0
  8. package/app/arweave.mjs +87 -0
  9. package/app/components/Footer.js +76 -0
  10. package/app/components/Global.js +1128 -0
  11. package/app/components/Header.js +306 -0
  12. package/app/components/Left.js +28 -0
  13. package/app/components/Logo.js +34 -0
  14. package/app/components/Middle.js +37 -0
  15. package/app/components/Sidebar.js +93 -0
  16. package/app/components/Tags.js +42 -0
  17. package/app/components/editor/Editor.js +322 -0
  18. package/app/components/editor/FilePath.js +42 -0
  19. package/app/components/editor/MonacoEditor.js +44 -0
  20. package/app/components/left/LeftMessages.js +85 -0
  21. package/app/components/left/LeftModules.js +86 -0
  22. package/app/components/left/LeftNetworks.js +438 -0
  23. package/app/components/left/LeftProcesses.js +98 -0
  24. package/app/components/left/LeftProjects.js +397 -0
  25. package/app/components/left/LeftTests.js +189 -0
  26. package/app/components/middle/MiddleBlocks.js +79 -0
  27. package/app/components/middle/MiddleEntity.js +16 -0
  28. package/app/components/middle/MiddleEntityAccount.js +264 -0
  29. package/app/components/middle/MiddleEntityAssignment.js +104 -0
  30. package/app/components/middle/MiddleEntityBlock.js +148 -0
  31. package/app/components/middle/MiddleEntityMessage.js +430 -0
  32. package/app/components/middle/MiddleEntityModule.js +183 -0
  33. package/app/components/middle/MiddleEntityProcess.js +323 -0
  34. package/app/components/middle/MiddleEntityTx.js +211 -0
  35. package/app/components/middle/MiddleMessages.js +87 -0
  36. package/app/components/middle/MiddleModules.js +89 -0
  37. package/app/components/middle/MiddleNetworks.js +516 -0
  38. package/app/components/middle/MiddleProcesses.js +87 -0
  39. package/app/components/middle/MiddleTests.js +134 -0
  40. package/app/components/modals/CreateFileModal.js +115 -0
  41. package/app/components/modals/CreateFolderModal.js +83 -0
  42. package/app/components/modals/CreateProjectModal.js +63 -0
  43. package/app/components/modals/FSModal.js +141 -0
  44. package/app/components/modals/ImportModal.js +105 -0
  45. package/app/components/modals/LaunchNetworkModal.js +95 -0
  46. package/app/components/modals/Modal.js +38 -0
  47. package/app/components/modals/ProxyModal.js +122 -0
  48. package/app/components/modals/RenameFileModal.js +95 -0
  49. package/app/components/styles/EditorScrollbarStyle.js +29 -0
  50. package/app/components/styles/EntityScrollbarStyle.js +29 -0
  51. package/app/components/styles/GlobalStyle.js +102 -0
  52. package/app/components/styles/XtermStyle.js +37 -0
  53. package/app/components/terminal/Terminal.js +132 -0
  54. package/app/components/terminal/Xterm.js +160 -0
  55. package/app/components/ui/avatar.jsx +49 -0
  56. package/app/components/ui/checkbox.jsx +17 -0
  57. package/app/components/ui/close-button.jsx +20 -0
  58. package/app/components/ui/color-mode.jsx +61 -0
  59. package/app/components/ui/dialog.jsx +54 -0
  60. package/app/components/ui/drawer.jsx +44 -0
  61. package/app/components/ui/field.jsx +22 -0
  62. package/app/components/ui/input-group.jsx +39 -0
  63. package/app/components/ui/popover.jsx +49 -0
  64. package/app/components/ui/provider.jsx +12 -0
  65. package/app/components/ui/radio.jsx +17 -0
  66. package/app/components/ui/slider.jsx +107 -0
  67. package/app/components/ui/toaster.jsx +69 -0
  68. package/app/components/ui/tooltip.jsx +35 -0
  69. package/app/index.js +10 -0
  70. package/app/jsconfig.json +7 -0
  71. package/app/lib/GithubCSS.js +1218 -0
  72. package/app/lib/addon-fit.js +72 -0
  73. package/app/lib/data.js +31 -0
  74. package/app/lib/github-markdown.css +1169 -0
  75. package/app/lib/global.js +1 -0
  76. package/app/lib/guide.js +82 -0
  77. package/app/lib/hub.js +109 -0
  78. package/app/lib/scripts.js +47 -0
  79. package/app/lib/store.js +34 -0
  80. package/app/lib/use.js +64 -0
  81. package/app/lib/utils.js +387 -0
  82. package/app/lib/webrtc.js +217 -0
  83. package/app/next.config.js +25 -0
  84. package/app/package.json +62 -0
  85. package/app/pages/404.js +9 -0
  86. package/app/pages/_app.js +10 -0
  87. package/app/pages/_document.js +14 -0
  88. package/app/pages/index.js +121 -0
  89. package/app/playwright.config.mjs +41 -0
  90. package/app/proxy.mjs +21 -0
  91. package/app/public/assets/cover.png +0 -0
  92. package/app/public/blueprints/apm.lua +91 -0
  93. package/app/public/blueprints/arena.lua +345 -0
  94. package/app/public/blueprints/arns.lua +318 -0
  95. package/app/public/blueprints/chat.lua +210 -0
  96. package/app/public/blueprints/chatroom.lua +56 -0
  97. package/app/public/blueprints/patch-legacy-reply.lua +13 -0
  98. package/app/public/blueprints/staking.lua +93 -0
  99. package/app/public/blueprints/token.lua +298 -0
  100. package/app/public/blueprints/voting.lua +45 -0
  101. package/app/public/favicon.ico +0 -0
  102. package/app/public/logo.png +0 -0
  103. package/cli-esm.js +55 -0
  104. package/cli.js +54 -0
  105. package/devnet/app/api.js +129 -0
  106. package/devnet/app/components/layout.js +89 -0
  107. package/devnet/app/components/pagination.js +144 -0
  108. package/devnet/app/components/search.js +159 -0
  109. package/devnet/app/components/table.js +124 -0
  110. package/devnet/app/components/tags.js +89 -0
  111. package/devnet/app/index.html +14 -0
  112. package/devnet/app/main.js +215 -0
  113. package/devnet/app/router.js +59 -0
  114. package/devnet/app/state.js +19 -0
  115. package/devnet/app/style.css +1606 -0
  116. package/devnet/app/utils.js +77 -0
  117. package/devnet/app/views/blocks.js +75 -0
  118. package/devnet/app/views/dashboard.js +127 -0
  119. package/devnet/app/views/entity.js +1473 -0
  120. package/devnet/app/views/messages.js +90 -0
  121. package/devnet/app/views/modules.js +165 -0
  122. package/devnet/app/views/processes.js +90 -0
  123. package/devnet/app/views/schedulers.js +90 -0
  124. package/devnet/app/views/transactions.js +88 -0
  125. package/devnet/migrations/0001_initial.sql +51 -0
  126. package/devnet/package.json +26 -0
  127. package/devnet/playwright.config.js +7 -0
  128. package/devnet/src/cu-worker.js +166 -0
  129. package/devnet/src/index.js +309 -0
  130. package/devnet/vite.config.js +17 -0
  131. package/devnet/vitest.config.js +10 -0
  132. package/devnet/wrangler-cu.toml +32 -0
  133. package/devnet/wrangler.toml +38 -0
  134. package/dhfs-tutorial-app/package.json +15 -0
  135. package/dist/esm/workspace/dashboard/public/favicon.png +0 -0
  136. package/dist/esm/workspace/src/counter.lua +14 -0
  137. package/dist/package.json +82 -0
  138. package/hb.sh +18 -0
  139. package/hbsig/.babelrc-cjs +5 -0
  140. package/hbsig/.babelrc-esm +5 -0
  141. package/hbsig/README.md +1 -0
  142. package/hbsig/dist/cjs/bin_to_str.js +44 -0
  143. package/hbsig/dist/cjs/collect-body-keys.js +470 -0
  144. package/hbsig/dist/cjs/commit.js +330 -0
  145. package/hbsig/dist/cjs/encode-array-item.js +110 -0
  146. package/hbsig/dist/cjs/encode-utils.js +242 -0
  147. package/hbsig/dist/cjs/encode.js +1365 -0
  148. package/hbsig/dist/cjs/erl_json.js +326 -0
  149. package/hbsig/dist/cjs/erl_str.js +1042 -0
  150. package/hbsig/dist/cjs/flat.js +279 -0
  151. package/hbsig/dist/cjs/http-message-signatures/httpbis.js +489 -0
  152. package/hbsig/dist/cjs/http-message-signatures/index.js +25 -0
  153. package/hbsig/dist/cjs/http-message-signatures/structured-header.js +129 -0
  154. package/hbsig/dist/cjs/httpsig.js +861 -0
  155. package/hbsig/dist/cjs/id.js +470 -0
  156. package/hbsig/dist/cjs/index.js +174 -0
  157. package/hbsig/dist/cjs/nocrypto.js +51 -0
  158. package/hbsig/dist/cjs/parser.js +201 -0
  159. package/hbsig/dist/cjs/send-utils.js +1231 -0
  160. package/hbsig/dist/cjs/send.js +211 -0
  161. package/hbsig/dist/cjs/signer-utils.js +494 -0
  162. package/hbsig/dist/cjs/signer.js +436 -0
  163. package/hbsig/dist/cjs/structured.js +515 -0
  164. package/hbsig/dist/cjs/test.js +12 -0
  165. package/hbsig/dist/cjs/utils.js +44 -0
  166. package/hbsig/dist/esm/bin_to_str.js +46 -0
  167. package/hbsig/dist/esm/collect-body-keys.js +436 -0
  168. package/hbsig/dist/esm/commit.js +219 -0
  169. package/hbsig/dist/esm/encode-array-item.js +112 -0
  170. package/hbsig/dist/esm/encode-utils.js +191 -0
  171. package/hbsig/dist/esm/encode.js +1256 -0
  172. package/hbsig/dist/esm/erl_json.js +292 -0
  173. package/hbsig/dist/esm/erl_str.js +1144 -0
  174. package/hbsig/dist/esm/flat.js +250 -0
  175. package/hbsig/dist/esm/http-message-signatures/httpbis.js +438 -0
  176. package/hbsig/dist/esm/http-message-signatures/index.js +4 -0
  177. package/hbsig/dist/esm/http-message-signatures/structured-header.js +105 -0
  178. package/hbsig/dist/esm/httpsig.js +866 -0
  179. package/hbsig/dist/esm/id.js +459 -0
  180. package/hbsig/dist/esm/index.js +13 -0
  181. package/hbsig/dist/esm/nocrypto.js +4 -0
  182. package/hbsig/dist/esm/package.json +3 -0
  183. package/hbsig/dist/esm/parser.js +171 -0
  184. package/hbsig/dist/esm/send-utils.js +1132 -0
  185. package/hbsig/dist/esm/send.js +142 -0
  186. package/hbsig/dist/esm/signer-utils.js +375 -0
  187. package/hbsig/dist/esm/signer.js +312 -0
  188. package/hbsig/dist/esm/structured.js +496 -0
  189. package/hbsig/dist/esm/test.js +2 -0
  190. package/hbsig/dist/esm/utils.js +29 -0
  191. package/hbsig/dist/package.json +39 -0
  192. package/hbsig/make.js +36 -0
  193. package/hbsig/package.json +39 -0
  194. package/hbsig/src/bin_to_str.js +46 -0
  195. package/hbsig/src/collect-body-keys.js +436 -0
  196. package/hbsig/src/commit.js +219 -0
  197. package/hbsig/src/encode-array-item.js +112 -0
  198. package/hbsig/src/encode-utils.js +191 -0
  199. package/hbsig/src/encode.js +1256 -0
  200. package/hbsig/src/erl_json.js +292 -0
  201. package/hbsig/src/erl_str.js +1144 -0
  202. package/hbsig/src/flat.js +250 -0
  203. package/hbsig/src/http-message-signatures/httpbis.js +438 -0
  204. package/hbsig/src/http-message-signatures/index.js +4 -0
  205. package/hbsig/src/http-message-signatures/structured-header.js +105 -0
  206. package/hbsig/src/httpsig.js +866 -0
  207. package/hbsig/src/id.js +459 -0
  208. package/hbsig/src/index.js +13 -0
  209. package/hbsig/src/nocrypto.js +4 -0
  210. package/hbsig/src/parser.js +171 -0
  211. package/hbsig/src/send-utils.js +1132 -0
  212. package/hbsig/src/send.js +142 -0
  213. package/hbsig/src/signer-utils.js +375 -0
  214. package/hbsig/src/signer.js +312 -0
  215. package/hbsig/src/structured.js +496 -0
  216. package/hbsig/src/test.js +2 -0
  217. package/hbsig/src/utils.js +29 -0
  218. package/lp/index.html +25 -0
  219. package/lp/package.json +19 -0
  220. package/lp/public/cover.png +0 -0
  221. package/lp/public/favicon.ico +0 -0
  222. package/lp/public/favicon.png +0 -0
  223. package/lp/public/images/book.jpg +0 -0
  224. package/lp/public/images/dashboard.png +0 -0
  225. package/lp/public/images/devnet.png +0 -0
  226. package/lp/public/images/hero-bg.png +0 -0
  227. package/lp/public/images/hyperadd.png +0 -0
  228. package/lp/public/images/message-flow.png +0 -0
  229. package/lp/public/images/mobile.png +0 -0
  230. package/lp/public/images/og-cover.png +0 -0
  231. package/lp/public/images/scan.png +0 -0
  232. package/lp/public/images/wao-hub.png +0 -0
  233. package/lp/public/images/wao-web.png +0 -0
  234. package/lp/public/logo.png +0 -0
  235. package/lp/src/App.jsx +29 -0
  236. package/lp/src/components/CodeBlock.jsx +37 -0
  237. package/lp/src/components/CodeBlock.module.css +89 -0
  238. package/lp/src/components/Footer.jsx +22 -0
  239. package/lp/src/components/Footer.module.css +60 -0
  240. package/lp/src/components/Nav.jsx +80 -0
  241. package/lp/src/components/Nav.module.css +177 -0
  242. package/lp/src/components/SectionWrapper.jsx +15 -0
  243. package/lp/src/hooks/useReveal.js +25 -0
  244. package/lp/src/hooks/useScrolled.js +14 -0
  245. package/lp/src/main.jsx +10 -0
  246. package/lp/src/sections/Book.jsx +60 -0
  247. package/lp/src/sections/Book.module.css +204 -0
  248. package/lp/src/sections/Browser.jsx +46 -0
  249. package/lp/src/sections/Browser.module.css +67 -0
  250. package/lp/src/sections/Devnet.jsx +55 -0
  251. package/lp/src/sections/Devnet.module.css +136 -0
  252. package/lp/src/sections/GetStarted.jsx +51 -0
  253. package/lp/src/sections/GetStarted.module.css +128 -0
  254. package/lp/src/sections/Hero.jsx +67 -0
  255. package/lp/src/sections/Hero.module.css +202 -0
  256. package/lp/src/sections/HyperADD.jsx +46 -0
  257. package/lp/src/sections/HyperADD.module.css +113 -0
  258. package/lp/src/sections/SDK.jsx +90 -0
  259. package/lp/src/sections/SDK.module.css +122 -0
  260. package/lp/src/sections/Testing.jsx +47 -0
  261. package/lp/src/sections/Testing.module.css +124 -0
  262. package/lp/src/sections/Vision.jsx +93 -0
  263. package/lp/src/sections/Vision.module.css +147 -0
  264. package/lp/src/styles/globals.css +285 -0
  265. package/lp/src/utils/scrollTo.js +4 -0
  266. package/lp/vite.config.js +7 -0
  267. package/make.js +39 -0
  268. package/package.json +17 -12
  269. package/patches/@permaweb+ao-loader+0.0.44.patch +64 -0
  270. package/plan.md +435 -0
  271. package/rebar.lock +1 -0
  272. package/src/accounts-web.js +128 -0
  273. package/src/accounts.js +124 -0
  274. package/src/adaptor-base.js +622 -0
  275. package/src/adaptor-cf.js +11 -0
  276. package/src/adaptor-web.js +11 -0
  277. package/src/adaptor.js +10 -0
  278. package/src/ao-loader.js +30660 -0
  279. package/src/ao.js +1173 -0
  280. package/src/aoconnect-base.js +1098 -0
  281. package/src/aoconnect-cf.js +9 -0
  282. package/src/aoconnect-web.js +8 -0
  283. package/src/aoconnect.js +8 -0
  284. package/src/aos_wamr.js +1 -0
  285. package/src/ar-remote.js +87 -0
  286. package/src/ar.js +276 -0
  287. package/src/armem-base.js +529 -0
  288. package/src/armem-cf.js +67 -0
  289. package/src/armem-web.js +19 -0
  290. package/src/armem.js +26 -0
  291. package/src/bao.js +141 -0
  292. package/src/bar.js +366 -0
  293. package/src/build.js +7 -0
  294. package/src/bundler.js +119 -0
  295. package/src/car.js +10 -0
  296. package/src/cf-env.js +29 -0
  297. package/src/cf.js +11 -0
  298. package/src/cli.js +561 -0
  299. package/src/compress.js +112 -0
  300. package/src/create.js +415 -0
  301. package/src/devs.js +86 -0
  302. package/src/dirname.js +1 -0
  303. package/src/dodb.js +26 -0
  304. package/src/erl_json.js +289 -0
  305. package/src/erl_str.js +1139 -0
  306. package/src/gql.js +229 -0
  307. package/src/hb.js +967 -0
  308. package/src/helpers.js +203 -0
  309. package/src/http.js +619 -0
  310. package/src/hub/bundler.js +123 -0
  311. package/src/hub/cu.js +74 -0
  312. package/src/hub/fs.js +157 -0
  313. package/src/hub/index.js +85 -0
  314. package/src/hub/utils.js +64 -0
  315. package/src/hub/ws-proxy.js +67 -0
  316. package/src/hyper-aos.js +1 -0
  317. package/src/hyperbeam-server.js +21 -0
  318. package/src/hyperbeam.js +585 -0
  319. package/src/index.js +5 -0
  320. package/src/keygen.js +47 -0
  321. package/src/lfdb.js +67 -0
  322. package/src/lua/aos.wasm +0 -0
  323. package/src/lua/aos2_0_1.js +1 -0
  324. package/src/lua/aos2_0_1.wasm +0 -0
  325. package/src/lua/aos2_0_3.js +1 -0
  326. package/src/lua/aos2_0_3.wasm +0 -0
  327. package/src/lua/aos2_0_4_32.js +1 -0
  328. package/src/lua/aos2_0_4_32.wasm +0 -0
  329. package/src/lua/aos2_0_6.wasm +0 -0
  330. package/src/lua/apm.lua +61 -0
  331. package/src/lua/llama.wasm +0 -0
  332. package/src/lua/process.wasm +0 -0
  333. package/src/lua/sqlite.js +1 -0
  334. package/src/lua/sqlite.wasm +0 -0
  335. package/src/lua/weavedb_mock.lua +44 -0
  336. package/src/lua/weavedrive.lua +53 -0
  337. package/src/run.js +25 -0
  338. package/src/server.js +173 -0
  339. package/src/storage-multi.js +183 -0
  340. package/src/tao.js +12 -0
  341. package/src/tar.js +10 -0
  342. package/src/test.js +42 -0
  343. package/src/tgql-d1.js +407 -0
  344. package/src/tgql.js +310 -0
  345. package/src/toerl.js +162 -0
  346. package/src/utils.js +777 -0
  347. package/src/wao.js +29 -0
  348. package/src/waosm/README.md +81 -0
  349. package/src/waosm/waosm.d.ts +40 -0
  350. package/src/waosm/waosm.js +240 -0
  351. package/src/waosm/waosm_bg.wasm +0 -0
  352. package/src/waosm/waosm_bg.wasm.d.ts +8 -0
  353. package/src/waosm-node/README.md +81 -0
  354. package/src/waosm-node/waosm.d.ts +8 -0
  355. package/src/waosm-node/waosm.js +4 -0
  356. package/src/waosm-node/waosm_bg.js +147 -0
  357. package/src/waosm-node/waosm_bg.wasm +0 -0
  358. package/src/waosm-node/waosm_bg.wasm.d.ts +8 -0
  359. package/src/waosm-node/waosm_bg.wasm.js +14 -0
  360. package/src/waosm-node.js +9 -0
  361. package/src/war.js +10 -0
  362. package/src/weavedrive.js +376 -0
  363. package/src/web.js +11 -0
  364. package/src/workspace/.mcp.json +8 -0
  365. package/src/workspace/CLAUDE.md +258 -0
  366. package/src/workspace/README.md +85 -0
  367. package/src/workspace/dashboard/index.html +163 -0
  368. package/src/workspace/dashboard/package.json +18 -0
  369. package/src/workspace/dashboard/public/favicon.ico +0 -0
  370. package/src/workspace/dashboard/public/favicon.png +0 -0
  371. package/src/workspace/dashboard/server.js +224 -0
  372. package/src/workspace/dashboard/src/App.jsx +2350 -0
  373. package/{cjs/workspace/frontend → src/workspace/dashboard}/vite.config.js +6 -0
  374. package/src/workspace/package.json +18 -0
  375. package/src/workspace/src/counter.lua +14 -0
  376. package/tsconfig.json +18 -0
  377. package/types/index.d.ts +329 -0
  378. package/waollama/.eslintrc.json +3 -0
  379. package/waollama/README.md +19 -0
  380. package/waollama/arweave.mjs +87 -0
  381. package/waollama/components/ui/avatar.jsx +49 -0
  382. package/waollama/components/ui/checkbox.jsx +17 -0
  383. package/waollama/components/ui/close-button.jsx +20 -0
  384. package/waollama/components/ui/color-mode.jsx +61 -0
  385. package/waollama/components/ui/dialog.jsx +54 -0
  386. package/waollama/components/ui/drawer.jsx +44 -0
  387. package/waollama/components/ui/field.jsx +22 -0
  388. package/waollama/components/ui/input-group.jsx +39 -0
  389. package/waollama/components/ui/popover.jsx +49 -0
  390. package/waollama/components/ui/provider.jsx +12 -0
  391. package/waollama/components/ui/radio.jsx +17 -0
  392. package/waollama/components/ui/slider.jsx +107 -0
  393. package/waollama/components/ui/tooltip.jsx +35 -0
  394. package/waollama/index.js +10 -0
  395. package/waollama/jsconfig.json +7 -0
  396. package/waollama/lib/ao-loader.js +30654 -0
  397. package/waollama/lib/client.js +1 -0
  398. package/waollama/lib/wasm.js +1 -0
  399. package/waollama/next.config.js +25 -0
  400. package/waollama/package.json +43 -0
  401. package/waollama/pages/404.js +9 -0
  402. package/waollama/pages/_app.js +9 -0
  403. package/waollama/pages/_document.js +14 -0
  404. package/waollama/pages/index.js +212 -0
  405. package/waollama/playwright.config.js +31 -0
  406. package/waollama/proxy.mjs +21 -0
  407. package/waollama/public/favicon.ico +0 -0
  408. package/waollama/public/human.png +0 -0
  409. package/waollama/public/llama.png +0 -0
  410. package/waosm/Cargo.toml +11 -0
  411. package/waosm/README.md +81 -0
  412. package/waosm/compress.js +112 -0
  413. package/waosm/make.js +33 -0
  414. package/waosm/package.json +10 -0
  415. package/waosm/src/lib.rs +180 -0
  416. package/waosm/test.js +16 -0
  417. package/cjs/workspace/.claude/agents/builder.md +0 -99
  418. package/cjs/workspace/.claude/agents/device-builder.md +0 -86
  419. package/cjs/workspace/.claude/agents/tester.md +0 -90
  420. package/cjs/workspace/.claude/mcp/dashboard/server.js +0 -128
  421. package/cjs/workspace/.claude/rules/deploy.md +0 -45
  422. package/cjs/workspace/.claude/rules/frontend.md +0 -69
  423. package/cjs/workspace/.claude/rules/hyperbeam.md +0 -104
  424. package/cjs/workspace/.claude/rules/lua.md +0 -108
  425. package/cjs/workspace/.claude/rules/testing.md +0 -257
  426. package/cjs/workspace/.claude/settings.json +0 -109
  427. package/cjs/workspace/.claude/skills/build/SKILL.md +0 -214
  428. package/cjs/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  429. package/cjs/workspace/.claude/skills/build-device/SKILL.md +0 -192
  430. package/cjs/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  431. package/cjs/workspace/.claude/skills/build-module/SKILL.md +0 -281
  432. package/cjs/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  433. package/cjs/workspace/.claude/skills/create-device/SKILL.md +0 -87
  434. package/cjs/workspace/.claude/skills/create-module/SKILL.md +0 -162
  435. package/cjs/workspace/.claude/skills/debug/SKILL.md +0 -57
  436. package/cjs/workspace/.claude/skills/deploy/SKILL.md +0 -85
  437. package/cjs/workspace/.claude/skills/dev/SKILL.md +0 -32
  438. package/cjs/workspace/.claude/skills/plan/SKILL.md +0 -176
  439. package/cjs/workspace/.claude/skills/readme/SKILL.md +0 -186
  440. package/cjs/workspace/.claude/skills/report/SKILL.md +0 -49
  441. package/cjs/workspace/.claude/skills/team/SKILL.md +0 -101
  442. package/cjs/workspace/.claude/skills/test/SKILL.md +0 -56
  443. package/cjs/workspace/.claude/skills/test-device/SKILL.md +0 -114
  444. package/cjs/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  445. package/cjs/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  446. package/cjs/workspace/.claude/skills/validate/SKILL.md +0 -96
  447. package/cjs/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  448. package/cjs/workspace/docs/aos-lua.md +0 -428
  449. package/cjs/workspace/docs/debug.md +0 -230
  450. package/cjs/workspace/docs/hyperbeam-dev.md +0 -606
  451. package/cjs/workspace/docs/hyperbeam-devices.md +0 -618
  452. package/cjs/workspace/docs/wao-sdk.md +0 -807
  453. package/cjs/workspace/frontend/e2e/.gitkeep +0 -0
  454. package/cjs/workspace/frontend/index.html +0 -12
  455. package/cjs/workspace/frontend/package.json +0 -24
  456. package/cjs/workspace/frontend/playwright.config.js +0 -10
  457. package/cjs/workspace/frontend/src/App.jsx +0 -24
  458. package/cjs/workspace/frontend/test/.gitkeep +0 -0
  459. package/cjs/workspace/frontend/vitest.config.js +0 -10
  460. package/cjs/workspace/scripts/deploy.js +0 -140
  461. package/cjs/workspace/scripts/keygen.js +0 -52
  462. package/cjs/workspace/test/aos.test.js +0 -98
  463. package/cjs/workspace/test/hyperbeam.test.js +0 -80
  464. package/esm/compiler/native +0 -0
  465. package/esm/workspace/.claude/agents/builder.md +0 -99
  466. package/esm/workspace/.claude/agents/device-builder.md +0 -86
  467. package/esm/workspace/.claude/agents/tester.md +0 -90
  468. package/esm/workspace/.claude/mcp/dashboard/server.js +0 -128
  469. package/esm/workspace/.claude/rules/deploy.md +0 -45
  470. package/esm/workspace/.claude/rules/frontend.md +0 -69
  471. package/esm/workspace/.claude/rules/hyperbeam.md +0 -104
  472. package/esm/workspace/.claude/rules/lua.md +0 -108
  473. package/esm/workspace/.claude/rules/testing.md +0 -257
  474. package/esm/workspace/.claude/settings.json +0 -109
  475. package/esm/workspace/.claude/skills/build/SKILL.md +0 -214
  476. package/esm/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  477. package/esm/workspace/.claude/skills/build-device/SKILL.md +0 -192
  478. package/esm/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  479. package/esm/workspace/.claude/skills/build-module/SKILL.md +0 -281
  480. package/esm/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  481. package/esm/workspace/.claude/skills/create-device/SKILL.md +0 -87
  482. package/esm/workspace/.claude/skills/create-module/SKILL.md +0 -162
  483. package/esm/workspace/.claude/skills/debug/SKILL.md +0 -57
  484. package/esm/workspace/.claude/skills/deploy/SKILL.md +0 -85
  485. package/esm/workspace/.claude/skills/dev/SKILL.md +0 -32
  486. package/esm/workspace/.claude/skills/plan/SKILL.md +0 -176
  487. package/esm/workspace/.claude/skills/readme/SKILL.md +0 -186
  488. package/esm/workspace/.claude/skills/report/SKILL.md +0 -49
  489. package/esm/workspace/.claude/skills/team/SKILL.md +0 -101
  490. package/esm/workspace/.claude/skills/test/SKILL.md +0 -56
  491. package/esm/workspace/.claude/skills/test-device/SKILL.md +0 -114
  492. package/esm/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  493. package/esm/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  494. package/esm/workspace/.claude/skills/validate/SKILL.md +0 -96
  495. package/esm/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  496. package/esm/workspace/docs/aos-lua.md +0 -428
  497. package/esm/workspace/docs/debug.md +0 -230
  498. package/esm/workspace/docs/hyperbeam-dev.md +0 -606
  499. package/esm/workspace/docs/hyperbeam-devices.md +0 -618
  500. package/esm/workspace/docs/wao-sdk.md +0 -807
  501. package/esm/workspace/frontend/e2e/.gitkeep +0 -0
  502. package/esm/workspace/frontend/index.html +0 -12
  503. package/esm/workspace/frontend/package.json +0 -24
  504. package/esm/workspace/frontend/playwright.config.js +0 -10
  505. package/esm/workspace/frontend/src/App.jsx +0 -24
  506. package/esm/workspace/frontend/src/main.jsx +0 -9
  507. package/esm/workspace/frontend/test/.gitkeep +0 -0
  508. package/esm/workspace/frontend/vite.config.js +0 -6
  509. package/esm/workspace/frontend/vitest.config.js +0 -10
  510. package/esm/workspace/scripts/deploy.js +0 -140
  511. package/esm/workspace/scripts/keygen.js +0 -52
  512. package/esm/workspace/test/aos.test.js +0 -98
  513. package/esm/workspace/test/hyperbeam.test.js +0 -80
  514. /package/{cjs/workspace/dashboard/public → devnet/app}/favicon.ico +0 -0
  515. /package/{cjs/workspace → dhfs-tutorial-app}/src/counter.lua +0 -0
  516. /package/{cjs → dist/cjs}/accounts-web.js +0 -0
  517. /package/{cjs → dist/cjs}/accounts.js +0 -0
  518. /package/{cjs → dist/cjs}/adaptor-base.js +0 -0
  519. /package/{cjs → dist/cjs}/adaptor-cf.js +0 -0
  520. /package/{cjs → dist/cjs}/adaptor-web.js +0 -0
  521. /package/{cjs → dist/cjs}/adaptor.js +0 -0
  522. /package/{cjs → dist/cjs}/ao-loader.js +0 -0
  523. /package/{cjs → dist/cjs}/ao.js +0 -0
  524. /package/{cjs → dist/cjs}/aoconnect-base.js +0 -0
  525. /package/{cjs → dist/cjs}/aoconnect-cf.js +0 -0
  526. /package/{cjs → dist/cjs}/aoconnect-web.js +0 -0
  527. /package/{cjs → dist/cjs}/aoconnect.js +0 -0
  528. /package/{cjs → dist/cjs}/aos_wamr.js +0 -0
  529. /package/{cjs → dist/cjs}/ar-remote.js +0 -0
  530. /package/{cjs → dist/cjs}/ar.js +0 -0
  531. /package/{cjs → dist/cjs}/armem-base.js +0 -0
  532. /package/{cjs → dist/cjs}/armem-cf.js +0 -0
  533. /package/{cjs → dist/cjs}/armem-web.js +0 -0
  534. /package/{cjs → dist/cjs}/armem.js +0 -0
  535. /package/{cjs → dist/cjs}/bao.js +0 -0
  536. /package/{cjs → dist/cjs}/bar.js +0 -0
  537. /package/{cjs → dist/cjs}/build.js +0 -0
  538. /package/{cjs → dist/cjs}/bundler.js +0 -0
  539. /package/{cjs → dist/cjs}/car.js +0 -0
  540. /package/{cjs → dist/cjs}/cf-env.js +0 -0
  541. /package/{cjs → dist/cjs}/cf.js +0 -0
  542. /package/{cjs → dist/cjs}/cli.js +0 -0
  543. /package/{cjs → dist/cjs}/compress.js +0 -0
  544. /package/{cjs → dist/cjs}/create.js +0 -0
  545. /package/{cjs → dist/cjs}/devs.js +0 -0
  546. /package/{cjs → dist/cjs}/dirname.js +0 -0
  547. /package/{cjs → dist/cjs}/dodb.js +0 -0
  548. /package/{cjs → dist/cjs}/erl_json.js +0 -0
  549. /package/{cjs → dist/cjs}/erl_str.js +0 -0
  550. /package/{cjs → dist/cjs}/gql.js +0 -0
  551. /package/{cjs → dist/cjs}/hb.js +0 -0
  552. /package/{cjs → dist/cjs}/helpers.js +0 -0
  553. /package/{cjs → dist/cjs}/http.js +0 -0
  554. /package/{cjs → dist/cjs}/hub/bundler.js +0 -0
  555. /package/{cjs → dist/cjs}/hub/cu.js +0 -0
  556. /package/{cjs → dist/cjs}/hub/fs.js +0 -0
  557. /package/{cjs → dist/cjs}/hub/index.js +0 -0
  558. /package/{cjs → dist/cjs}/hub/utils.js +0 -0
  559. /package/{cjs → dist/cjs}/hub/ws-proxy.js +0 -0
  560. /package/{cjs → dist/cjs}/hyper-aos.js +0 -0
  561. /package/{cjs → dist/cjs}/hyperbeam-server.js +0 -0
  562. /package/{cjs → dist/cjs}/hyperbeam.js +0 -0
  563. /package/{cjs → dist/cjs}/index.js +0 -0
  564. /package/{cjs → dist/cjs}/keygen.js +0 -0
  565. /package/{cjs → dist/cjs}/lfdb.js +0 -0
  566. /package/{cjs → dist/cjs}/lua/aos.wasm +0 -0
  567. /package/{cjs → dist/cjs}/lua/aos2_0_1.js +0 -0
  568. /package/{cjs → dist/cjs}/lua/aos2_0_1.wasm +0 -0
  569. /package/{cjs → dist/cjs}/lua/aos2_0_3.js +0 -0
  570. /package/{cjs → dist/cjs}/lua/aos2_0_3.wasm +0 -0
  571. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.js +0 -0
  572. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.wasm +0 -0
  573. /package/{cjs → dist/cjs}/lua/aos2_0_6.wasm +0 -0
  574. /package/{cjs → dist/cjs}/lua/apm.lua +0 -0
  575. /package/{cjs → dist/cjs}/lua/llama.wasm +0 -0
  576. /package/{cjs → dist/cjs}/lua/process.wasm +0 -0
  577. /package/{cjs → dist/cjs}/lua/sqlite.js +0 -0
  578. /package/{cjs → dist/cjs}/lua/sqlite.wasm +0 -0
  579. /package/{cjs → dist/cjs}/lua/weavedb_mock.lua +0 -0
  580. /package/{cjs → dist/cjs}/lua/weavedrive.lua +0 -0
  581. /package/{cjs → dist/cjs}/run.js +0 -0
  582. /package/{cjs → dist/cjs}/server.js +0 -0
  583. /package/{cjs → dist/cjs}/storage-multi.js +0 -0
  584. /package/{cjs → dist/cjs}/tao.js +0 -0
  585. /package/{cjs → dist/cjs}/tar.js +0 -0
  586. /package/{cjs → dist/cjs}/test.js +0 -0
  587. /package/{cjs → dist/cjs}/tgql-d1.js +0 -0
  588. /package/{cjs → dist/cjs}/tgql.js +0 -0
  589. /package/{cjs → dist/cjs}/toerl.js +0 -0
  590. /package/{cjs → dist/cjs}/utils.js +0 -0
  591. /package/{cjs → dist/cjs}/wao.js +0 -0
  592. /package/{cjs → dist/cjs}/waosm/waosm.js +0 -0
  593. /package/{cjs → dist/cjs}/waosm-node/waosm.js +0 -0
  594. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.js +0 -0
  595. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm +0 -0
  596. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm.js +0 -0
  597. /package/{cjs → dist/cjs}/waosm-node.js +0 -0
  598. /package/{cjs → dist/cjs}/war.js +0 -0
  599. /package/{cjs → dist/cjs}/weavedrive.js +0 -0
  600. /package/{cjs → dist/cjs}/web.js +0 -0
  601. /package/{cjs → dist/cjs}/workspace/.mcp.json +0 -0
  602. /package/{cjs → dist/cjs}/workspace/CLAUDE.md +0 -0
  603. /package/{cjs → dist/cjs}/workspace/README.md +0 -0
  604. /package/{cjs → dist/cjs}/workspace/dashboard/index.html +0 -0
  605. /package/{cjs → dist/cjs}/workspace/dashboard/package.json +0 -0
  606. /package/{esm → dist/cjs}/workspace/dashboard/public/favicon.ico +0 -0
  607. /package/{cjs → dist/cjs}/workspace/dashboard/public/favicon.png +0 -0
  608. /package/{cjs → dist/cjs}/workspace/dashboard/server.js +0 -0
  609. /package/{cjs → dist/cjs}/workspace/dashboard/src/App.jsx +0 -0
  610. /package/{cjs → dist/cjs}/workspace/dashboard/src/main.jsx +0 -0
  611. /package/{cjs → dist/cjs}/workspace/dashboard/vite.config.js +0 -0
  612. /package/{cjs → dist/cjs}/workspace/package.json +0 -0
  613. /package/{esm → dist/cjs}/workspace/src/counter.lua +0 -0
  614. /package/{esm → dist/esm}/accounts-web.js +0 -0
  615. /package/{esm → dist/esm}/accounts.js +0 -0
  616. /package/{esm → dist/esm}/adaptor-base.js +0 -0
  617. /package/{esm → dist/esm}/adaptor-cf.js +0 -0
  618. /package/{esm → dist/esm}/adaptor-web.js +0 -0
  619. /package/{esm → dist/esm}/adaptor.js +0 -0
  620. /package/{esm → dist/esm}/ao-loader.js +0 -0
  621. /package/{esm → dist/esm}/ao.js +0 -0
  622. /package/{esm → dist/esm}/aoconnect-base.js +0 -0
  623. /package/{esm → dist/esm}/aoconnect-cf.js +0 -0
  624. /package/{esm → dist/esm}/aoconnect-web.js +0 -0
  625. /package/{esm → dist/esm}/aoconnect.js +0 -0
  626. /package/{esm → dist/esm}/aos_wamr.js +0 -0
  627. /package/{esm → dist/esm}/ar-remote.js +0 -0
  628. /package/{esm → dist/esm}/ar.js +0 -0
  629. /package/{esm → dist/esm}/armem-base.js +0 -0
  630. /package/{esm → dist/esm}/armem-cf.js +0 -0
  631. /package/{esm → dist/esm}/armem-web.js +0 -0
  632. /package/{esm → dist/esm}/armem.js +0 -0
  633. /package/{esm → dist/esm}/bao.js +0 -0
  634. /package/{esm → dist/esm}/bar.js +0 -0
  635. /package/{esm → dist/esm}/build.js +0 -0
  636. /package/{esm → dist/esm}/bundler.js +0 -0
  637. /package/{esm → dist/esm}/car.js +0 -0
  638. /package/{esm → dist/esm}/cf-env.js +0 -0
  639. /package/{esm → dist/esm}/cf.js +0 -0
  640. /package/{esm → dist/esm}/cli.js +0 -0
  641. /package/{esm → dist/esm}/compress.js +0 -0
  642. /package/{esm → dist/esm}/create.js +0 -0
  643. /package/{esm → dist/esm}/devs.js +0 -0
  644. /package/{esm → dist/esm}/dirname.js +0 -0
  645. /package/{esm → dist/esm}/dodb.js +0 -0
  646. /package/{esm → dist/esm}/erl_json.js +0 -0
  647. /package/{esm → dist/esm}/erl_str.js +0 -0
  648. /package/{esm → dist/esm}/gql.js +0 -0
  649. /package/{esm → dist/esm}/hb.js +0 -0
  650. /package/{esm → dist/esm}/helpers.js +0 -0
  651. /package/{esm → dist/esm}/http.js +0 -0
  652. /package/{esm → dist/esm}/hub/bundler.js +0 -0
  653. /package/{esm → dist/esm}/hub/cu.js +0 -0
  654. /package/{esm → dist/esm}/hub/fs.js +0 -0
  655. /package/{esm → dist/esm}/hub/index.js +0 -0
  656. /package/{esm → dist/esm}/hub/utils.js +0 -0
  657. /package/{esm → dist/esm}/hub/ws-proxy.js +0 -0
  658. /package/{esm → dist/esm}/hyper-aos.js +0 -0
  659. /package/{esm → dist/esm}/hyperbeam-server.js +0 -0
  660. /package/{esm → dist/esm}/hyperbeam.js +0 -0
  661. /package/{esm → dist/esm}/index.js +0 -0
  662. /package/{esm → dist/esm}/keygen.js +0 -0
  663. /package/{esm → dist/esm}/lfdb.js +0 -0
  664. /package/{esm → dist/esm}/lua/aos.wasm +0 -0
  665. /package/{esm → dist/esm}/lua/aos2_0_1.js +0 -0
  666. /package/{esm → dist/esm}/lua/aos2_0_1.wasm +0 -0
  667. /package/{esm → dist/esm}/lua/aos2_0_3.js +0 -0
  668. /package/{esm → dist/esm}/lua/aos2_0_3.wasm +0 -0
  669. /package/{esm → dist/esm}/lua/aos2_0_4_32.js +0 -0
  670. /package/{esm → dist/esm}/lua/aos2_0_4_32.wasm +0 -0
  671. /package/{esm → dist/esm}/lua/aos2_0_6.wasm +0 -0
  672. /package/{esm → dist/esm}/lua/apm.lua +0 -0
  673. /package/{esm → dist/esm}/lua/llama.wasm +0 -0
  674. /package/{esm → dist/esm}/lua/process.wasm +0 -0
  675. /package/{esm → dist/esm}/lua/sqlite.js +0 -0
  676. /package/{esm → dist/esm}/lua/sqlite.wasm +0 -0
  677. /package/{esm → dist/esm}/lua/weavedb_mock.lua +0 -0
  678. /package/{esm → dist/esm}/lua/weavedrive.lua +0 -0
  679. /package/{esm → dist/esm}/package.json +0 -0
  680. /package/{esm → dist/esm}/run.js +0 -0
  681. /package/{esm → dist/esm}/server.js +0 -0
  682. /package/{esm → dist/esm}/storage-multi.js +0 -0
  683. /package/{esm → dist/esm}/tao.js +0 -0
  684. /package/{esm → dist/esm}/tar.js +0 -0
  685. /package/{esm → dist/esm}/test.js +0 -0
  686. /package/{esm → dist/esm}/tgql-d1.js +0 -0
  687. /package/{esm → dist/esm}/tgql.js +0 -0
  688. /package/{esm → dist/esm}/toerl.js +0 -0
  689. /package/{esm → dist/esm}/utils.js +0 -0
  690. /package/{esm → dist/esm}/wao.js +0 -0
  691. /package/{esm → dist/esm}/waosm/README.md +0 -0
  692. /package/{esm → dist/esm}/waosm/waosm.d.ts +0 -0
  693. /package/{esm → dist/esm}/waosm/waosm.js +0 -0
  694. /package/{esm → dist/esm}/waosm/waosm_bg.wasm +0 -0
  695. /package/{esm → dist/esm}/waosm/waosm_bg.wasm.d.ts +0 -0
  696. /package/{esm → dist/esm}/waosm-node/README.md +0 -0
  697. /package/{esm → dist/esm}/waosm-node/waosm.d.ts +0 -0
  698. /package/{esm → dist/esm}/waosm-node/waosm.js +0 -0
  699. /package/{esm → dist/esm}/waosm-node/waosm_bg.js +0 -0
  700. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm +0 -0
  701. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.d.ts +0 -0
  702. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.js +0 -0
  703. /package/{esm → dist/esm}/waosm-node.js +0 -0
  704. /package/{esm → dist/esm}/war.js +0 -0
  705. /package/{esm → dist/esm}/weavedrive.js +0 -0
  706. /package/{esm → dist/esm}/web.js +0 -0
  707. /package/{esm → dist/esm}/workspace/.mcp.json +0 -0
  708. /package/{esm → dist/esm}/workspace/CLAUDE.md +0 -0
  709. /package/{esm → dist/esm}/workspace/README.md +0 -0
  710. /package/{esm → dist/esm}/workspace/dashboard/index.html +0 -0
  711. /package/{esm → dist/esm}/workspace/dashboard/package.json +0 -0
  712. /package/{esm/workspace/dashboard/public/favicon.png → dist/esm/workspace/dashboard/public/favicon.ico} +0 -0
  713. /package/{esm → dist/esm}/workspace/dashboard/server.js +0 -0
  714. /package/{esm → dist/esm}/workspace/dashboard/src/App.jsx +0 -0
  715. /package/{cjs/workspace/frontend → dist/esm/workspace/dashboard}/src/main.jsx +0 -0
  716. /package/{esm → dist/esm}/workspace/dashboard/vite.config.js +0 -0
  717. /package/{esm → dist/esm}/workspace/package.json +0 -0
  718. /package/{postinstall.cjs → dist/postinstall.cjs} +0 -0
  719. /package/{esm → src}/workspace/dashboard/src/main.jsx +0 -0
@@ -0,0 +1,861 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.httpsig_from = httpsig_from;
7
+ exports.httpsig_to = httpsig_to;
8
+ exports.structured_from = structured_from;
9
+ exports.structured_to = structured_to;
10
+ var _fastSha = require("fast-sha256");
11
+ var _flat = require("./flat.js");
12
+ var _structured = require("./structured.js");
13
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
20
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
21
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
23
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
25
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // httpsig.js - JavaScript implementation of HTTP Signature codec
26
+ var CRLF = "\r\n";
27
+ var DOUBLE_CRLF = CRLF + CRLF;
28
+ var MAX_HEADER_LENGTH = 4096;
29
+
30
+ // Helper to convert string to Uint8Array
31
+ function stringToBytes(str) {
32
+ var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "utf8";
33
+ if (encoding === "binary") {
34
+ var bytes = new Uint8Array(str.length);
35
+ for (var i = 0; i < str.length; i++) {
36
+ bytes[i] = str.charCodeAt(i) & 0xff;
37
+ }
38
+ return bytes;
39
+ }
40
+ return new TextEncoder().encode(str);
41
+ }
42
+
43
+ // Helper to convert bytes to base64url
44
+ function bytesToBase64url(bytes) {
45
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
46
+ var result = "";
47
+ for (var i = 0; i < bytes.length; i += 3) {
48
+ var a = bytes[i];
49
+ var b = i + 1 < bytes.length ? bytes[i + 1] : 0;
50
+ var c = i + 2 < bytes.length ? bytes[i + 2] : 0;
51
+ var combined = a << 16 | b << 8 | c;
52
+ result += chars[combined >> 18 & 0x3f];
53
+ result += chars[combined >> 12 & 0x3f];
54
+ if (i + 1 < bytes.length) result += chars[combined >> 6 & 0x3f];
55
+ if (i + 2 < bytes.length) result += chars[combined & 0x3f];
56
+ }
57
+ return result;
58
+ }
59
+
60
+ // Helper to convert bytes to base64
61
+ function bytesToBase64(bytes) {
62
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
63
+ var result = "";
64
+ for (var i = 0; i < bytes.length; i += 3) {
65
+ var a = bytes[i];
66
+ var b = i + 1 < bytes.length ? bytes[i + 1] : 0;
67
+ var c = i + 2 < bytes.length ? bytes[i + 2] : 0;
68
+ var combined = a << 16 | b << 8 | c;
69
+ result += chars[combined >> 18 & 0x3f];
70
+ result += chars[combined >> 12 & 0x3f];
71
+ result += i + 1 < bytes.length ? chars[combined >> 6 & 0x3f] : "=";
72
+ result += i + 2 < bytes.length ? chars[combined & 0x3f] : "=";
73
+ }
74
+ return result;
75
+ }
76
+
77
+ // Helper to normalize keys (lowercase only, no underscore conversion)
78
+ function normalizeKey(key) {
79
+ if (typeof key === "string") {
80
+ return key.toLowerCase();
81
+ }
82
+ return String(key).toLowerCase();
83
+ }
84
+
85
+ // Helper to check if a value is an ID (43 character base64url string)
86
+ function isId(value) {
87
+ return typeof value === "string" && value.length === 43 && /^[A-Za-z0-9_-]+$/.test(value);
88
+ }
89
+
90
+ // Helper to encode structured field dictionary
91
+ function encodeSfDict(dict) {
92
+ var items = [];
93
+ for (var _i = 0, _Object$entries = Object.entries(dict); _i < _Object$entries.length; _i++) {
94
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
95
+ key = _Object$entries$_i[0],
96
+ value = _Object$entries$_i[1];
97
+ if (typeof value === "string") {
98
+ items.push("".concat(key, "=\"").concat(value, "\""));
99
+ } else {
100
+ items.push("".concat(key, "=").concat(value));
101
+ }
102
+ }
103
+ return items.join(", ");
104
+ }
105
+
106
+ // Helper to parse structured field dictionary
107
+ function parseSfDict(str) {
108
+ var dict = {};
109
+ if (!str) return dict;
110
+ var parts = str.split(/,\s*/);
111
+ var _iterator = _createForOfIteratorHelper(parts),
112
+ _step;
113
+ try {
114
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
115
+ var part = _step.value;
116
+ var match = part.match(/^([^=]+)=(.+)$/);
117
+ if (match) {
118
+ var key = match[1].trim();
119
+ var value = match[2].trim();
120
+ if (value.startsWith('"') && value.endsWith('"')) {
121
+ value = value.slice(1, -1);
122
+ }
123
+ dict[key] = value;
124
+ }
125
+ }
126
+ } catch (err) {
127
+ _iterator.e(err);
128
+ } finally {
129
+ _iterator.f();
130
+ }
131
+ return dict;
132
+ }
133
+
134
+ // Helper to generate boundary from parts using fast-sha256
135
+ function boundaryFromParts(parts) {
136
+ var bodyBin = parts.map(function (p) {
137
+ return p.body;
138
+ }).join(CRLF);
139
+ var hashBytes = (0, _fastSha.hash)(stringToBytes(bodyBin, "binary"));
140
+ return bytesToBase64url(hashBytes);
141
+ }
142
+
143
+ // Helper to determine inline key - matches Erlang's inline_key/2
144
+ function inlineKey(msg) {
145
+ // Check for ao-body-key (Erlang uses ao-body-key, not inline-body-key)
146
+ var aoBodyKey = msg["ao-body-key"];
147
+ if (aoBodyKey) {
148
+ return [{}, aoBodyKey];
149
+ }
150
+ if ("body" in msg) {
151
+ return [{}, "body"];
152
+ }
153
+ if ("data" in msg) {
154
+ return [{
155
+ "ao-body-key": "data"
156
+ }, "data"];
157
+ }
158
+ return [{}, "body"];
159
+ }
160
+
161
+ // Group IDs into ao-ids field
162
+ function groupIds(map) {
163
+ var idDict = {};
164
+ var stripped = {};
165
+ for (var _i2 = 0, _Object$entries2 = Object.entries(map); _i2 < _Object$entries2.length; _i2++) {
166
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
167
+ key = _Object$entries2$_i[0],
168
+ value = _Object$entries2$_i[1];
169
+ if (isId(key) && typeof value === "string") {
170
+ // Store with lowercase key as in Erlang
171
+ idDict[key.toLowerCase()] = value;
172
+ } else {
173
+ stripped[key] = value;
174
+ }
175
+ }
176
+ if (Object.keys(idDict).length > 0) {
177
+ var items = [];
178
+ for (var _i3 = 0, _Object$entries3 = Object.entries(idDict); _i3 < _Object$entries3.length; _i3++) {
179
+ var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2),
180
+ k = _Object$entries3$_i[0],
181
+ v = _Object$entries3$_i[1];
182
+ items.push("".concat(k, "=\"").concat(v, "\""));
183
+ }
184
+ stripped["ao-ids"] = items.join(", ");
185
+ }
186
+
187
+ // Return IDs as lowercase in the result since they will be normalized
188
+ // when processed as headers
189
+ for (var _i4 = 0, _Object$entries4 = Object.entries(idDict); _i4 < _Object$entries4.length; _i4++) {
190
+ var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i4], 2),
191
+ _k = _Object$entries4$_i[0],
192
+ _v = _Object$entries4$_i[1];
193
+ stripped[_k] = _v;
194
+ }
195
+ return stripped;
196
+ }
197
+
198
+ // Ungroup IDs from ao-ids field
199
+ function ungroupIds(msg) {
200
+ if (!msg["ao-ids"]) return msg;
201
+ var result = _objectSpread({}, msg);
202
+ delete result["ao-ids"];
203
+ var dict = parseSfDict(msg["ao-ids"]);
204
+ for (var _i5 = 0, _Object$entries5 = Object.entries(dict); _i5 < _Object$entries5.length; _i5++) {
205
+ var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i5], 2),
206
+ key = _Object$entries5$_i[0],
207
+ value = _Object$entries5$_i[1];
208
+ // ao-ids keys are lowercase, use them as-is
209
+ result[key] = value;
210
+ }
211
+ return result;
212
+ }
213
+
214
+ // Get the size of a map (matches Erlang's maps:size behavior)
215
+ // This counts ALL keys including ao-types - empty means literally {}
216
+ function mapSize(obj) {
217
+ if (_typeof(obj) !== "object" || obj === null) return 0;
218
+ return Object.keys(obj).length;
219
+ }
220
+
221
+ // Group maps for body encoding - following Erlang logic exactly
222
+ function groupMaps(map) {
223
+ var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
224
+ var top = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
225
+ if (_typeof(map) !== "object" || map === null || Array.isArray(map) || Buffer.isBuffer(map)) {
226
+ return top;
227
+ }
228
+ var flattened = {};
229
+ var newTop = _objectSpread({}, top);
230
+
231
+ // Process entries in sorted order for consistency
232
+ var entries = Object.entries(map).sort(function (_ref, _ref2) {
233
+ var _ref3 = _slicedToArray(_ref, 1),
234
+ a = _ref3[0];
235
+ var _ref4 = _slicedToArray(_ref2, 1),
236
+ b = _ref4[0];
237
+ return a.localeCompare(b);
238
+ });
239
+ var _iterator2 = _createForOfIteratorHelper(entries),
240
+ _step2;
241
+ try {
242
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
243
+ var _step2$value = _slicedToArray(_step2.value, 2),
244
+ key = _step2$value[0],
245
+ value = _step2$value[1];
246
+ // Normalize keys to lowercase
247
+ var normKey = normalizeKey(key);
248
+ var flatK = parent ? "".concat(parent, "/").concat(normKey) : normKey;
249
+ if (_typeof(value) === "object" && value !== null && !Array.isArray(value) && !Buffer.isBuffer(value)) {
250
+ // Check size of the nested object (including metadata keys like ao-types)
251
+ // Empty means literally {} - a map with only ao-types is NOT empty
252
+ var size = mapSize(value);
253
+ if (size === 0) {
254
+ // Empty map (no data keys) - add empty-message marker
255
+ // This matches Erlang's group_maps behavior for empty maps
256
+ newTop[flatK] = {
257
+ "ao-types": "empty-message"
258
+ };
259
+ } else {
260
+ // Recursively process nested objects
261
+ newTop = groupMaps(value, flatK, newTop);
262
+ }
263
+ } else if (typeof value === "string" && value.length > MAX_HEADER_LENGTH) {
264
+ // Value too large for header, lift to top level
265
+ newTop[flatK] = value;
266
+ } else if (Buffer.isBuffer(value) && value.length > MAX_HEADER_LENGTH) {
267
+ // Large buffers also get lifted to top level
268
+ newTop[flatK] = value;
269
+ } else {
270
+ // Keep in current flattened map
271
+ flattened[normKey] = value;
272
+ }
273
+ }
274
+ } catch (err) {
275
+ _iterator2.e(err);
276
+ } finally {
277
+ _iterator2.f();
278
+ }
279
+ if (Object.keys(flattened).length === 0) {
280
+ return newTop;
281
+ } else if (parent) {
282
+ // Add flattened map under parent key
283
+ return _objectSpread(_objectSpread({}, newTop), {}, _defineProperty({}, parent, flattened));
284
+ } else {
285
+ // Merge flattened with top level
286
+ return _objectSpread(_objectSpread({}, newTop), flattened);
287
+ }
288
+ }
289
+
290
+ // Helper to compute content-digest for a body value
291
+ function computePartDigest(bodyValue) {
292
+ var bodyBytes;
293
+ if (Buffer.isBuffer(bodyValue)) {
294
+ bodyBytes = new Uint8Array(bodyValue);
295
+ } else if (typeof bodyValue === "string") {
296
+ bodyBytes = stringToBytes(bodyValue, "binary");
297
+ } else {
298
+ bodyBytes = stringToBytes(String(bodyValue), "binary");
299
+ }
300
+ var hashBytes = (0, _fastSha.hash)(bodyBytes);
301
+ return "sha-256=:".concat(bytesToBase64(hashBytes), ":");
302
+ }
303
+
304
+ // Encode multipart body part
305
+ // NOTE: This matches Erlang's encode_body_part/4 which does NOT apply inline_key
306
+ // logic to nested parts. For nested maps, ALL fields become headers (except 'body'
307
+ // which becomes the part body). The inline_key logic is only for top-level messages.
308
+ function encodeBodyPart(partName, bodyPart, inlineKey) {
309
+ var disposition = partName === inlineKey ? "inline" : "form-data;name=\"".concat(partName, "\"");
310
+ if (_typeof(bodyPart) === "object" && bodyPart !== null && !Array.isArray(bodyPart) && !Buffer.isBuffer(bodyPart)) {
311
+ // Collect all headers (everything except 'body' and 'priv')
312
+ var allEntries = [];
313
+ for (var _i6 = 0, _Object$entries6 = Object.entries(bodyPart); _i6 < _Object$entries6.length; _i6++) {
314
+ var _Object$entries6$_i = _slicedToArray(_Object$entries6[_i6], 2),
315
+ key = _Object$entries6$_i[0],
316
+ value = _Object$entries6$_i[1];
317
+ if (key === "body" || key === "priv") continue;
318
+
319
+ // Handle Buffer values properly
320
+ var valueStr = value;
321
+ if (Buffer.isBuffer(value)) {
322
+ // Use binary/latin1 encoding to preserve all byte values 0-255
323
+ valueStr = value.toString("binary");
324
+ }
325
+ allEntries.push({
326
+ key: key,
327
+ line: "".concat(key, ": ").concat(valueStr)
328
+ });
329
+ }
330
+
331
+ // Add content-disposition
332
+ allEntries.push({
333
+ key: "content-disposition",
334
+ line: "content-disposition: ".concat(disposition)
335
+ });
336
+
337
+ // Sort all entries by key alphabetically - matches Erlang behavior
338
+ allEntries.sort(function (a, b) {
339
+ return a.key.localeCompare(b.key);
340
+ });
341
+
342
+ // Build the lines
343
+ var lines = allEntries.map(function (entry) {
344
+ return entry.line;
345
+ });
346
+
347
+ // Only the 'body' field (if present) becomes the part body
348
+ var body = bodyPart.body;
349
+ if (body !== "" && body !== undefined && body !== null) {
350
+ lines.push(""); // Always add empty line before body
351
+ lines.push(Buffer.isBuffer(body) ? body.toString("binary") : String(body));
352
+ }
353
+ return lines.join(CRLF);
354
+ } else if (typeof bodyPart === "string" || Buffer.isBuffer(bodyPart)) {
355
+ // Use binary/latin1 encoding to preserve byte values 0-255
356
+ var bodyStr = Buffer.isBuffer(bodyPart) ? bodyPart.toString("binary") : bodyPart;
357
+ return "content-disposition: ".concat(disposition).concat(DOUBLE_CRLF).concat(bodyStr);
358
+ }
359
+ return "";
360
+ }
361
+
362
+ // Helper to detect if a Buffer contains binary data
363
+ function isBinaryData(buf) {
364
+ // Check first 512 bytes for binary indicators
365
+ var checkLength = Math.min(buf.length, 512);
366
+
367
+ // Any null byte means binary
368
+ for (var i = 0; i < checkLength; i++) {
369
+ if (buf[i] === 0) return true;
370
+ }
371
+
372
+ // Count non-text bytes
373
+ var controlCount = 0;
374
+ var highByteCount = 0;
375
+ for (var _i7 = 0; _i7 < checkLength; _i7++) {
376
+ var _byte = buf[_i7];
377
+ // Non-printable chars (except CR/LF/TAB)
378
+ if (_byte < 32 && _byte !== 9 && _byte !== 10 && _byte !== 13) {
379
+ controlCount++;
380
+ }
381
+ // High byte range
382
+ if (_byte > 127) {
383
+ highByteCount++;
384
+ }
385
+ }
386
+
387
+ // If more than 5% are control chars, likely binary
388
+ if (controlCount / checkLength > 0.05) return true;
389
+
390
+ // If more than 20% are high bytes, likely binary
391
+ if (highByteCount / checkLength > 0.2) return true;
392
+ return false;
393
+ }
394
+
395
+ // Parse multipart body - handles binary data in headers
396
+ function parseMultipart(contentType, body) {
397
+ var boundaryMatch = contentType.match(/boundary="?([^";\s]+)"?/);
398
+ if (!boundaryMatch) return {};
399
+ var boundary = boundaryMatch[1];
400
+ var boundaryDelim = "--".concat(boundary);
401
+ var endBoundary = "--".concat(boundary, "--");
402
+
403
+ // Use binary encoding to preserve all bytes as character codes 0-255
404
+ var bodyContent = typeof body === "string" ? body : body.toString("binary");
405
+ if (bodyContent.endsWith(endBoundary)) {
406
+ bodyContent = bodyContent.substring(0, bodyContent.lastIndexOf(endBoundary));
407
+ }
408
+ var parts = bodyContent.split(new RegExp("\\r?\\n?".concat(boundaryDelim, "\\r?\\n"))).filter(function (p) {
409
+ return p && p.trim() && !p.startsWith("--");
410
+ });
411
+ var result = {};
412
+ var bodyKeysList = [];
413
+ var _iterator3 = _createForOfIteratorHelper(parts),
414
+ _step3;
415
+ try {
416
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
417
+ var part = _step3.value;
418
+ // First split to find the headers/body boundary (double CRLF)
419
+ var headerBodySplit = part.indexOf(DOUBLE_CRLF);
420
+ var headerBlock = void 0,
421
+ partBody = void 0;
422
+ if (headerBodySplit !== -1) {
423
+ headerBlock = part.substring(0, headerBodySplit);
424
+ partBody = part.substring(headerBodySplit + DOUBLE_CRLF.length);
425
+ // Remove trailing CRLF from body
426
+ partBody = partBody.replace(/\r?\n?$/, "");
427
+ } else {
428
+ headerBlock = part;
429
+ partBody = "";
430
+ }
431
+ var headers = {};
432
+
433
+ // Parse headers more carefully to handle binary data
434
+ var currentPos = 0;
435
+ while (currentPos < headerBlock.length) {
436
+ // Find the next colon to identify a potential header
437
+ var colonPos = headerBlock.indexOf(": ", currentPos);
438
+ if (colonPos === -1) {
439
+ // No more headers
440
+ break;
441
+ }
442
+
443
+ // Look backwards from colon to find the start of this line
444
+ var lineStart = currentPos;
445
+ var searchBack = colonPos - 1;
446
+ while (searchBack >= currentPos) {
447
+ if (headerBlock[searchBack] === "\n") {
448
+ lineStart = searchBack + 1;
449
+ break;
450
+ }
451
+ searchBack--;
452
+ }
453
+
454
+ // Extract the header name
455
+ var name = headerBlock.substring(lineStart, colonPos).trim().toLowerCase();
456
+
457
+ // Check if this looks like a valid header name
458
+ if (!/^[a-zA-Z0-9-]+$/.test(name) || name.length > 50) {
459
+ // Not a valid header, skip past this colon
460
+ currentPos = colonPos + 2;
461
+ continue;
462
+ }
463
+
464
+ // Start of value is after ": "
465
+ var valueStart = colonPos + 2;
466
+
467
+ // Find the end of this header's value by looking for the next valid header
468
+ var valueEnd = headerBlock.length;
469
+ var searchPos = valueStart;
470
+ while (searchPos < headerBlock.length) {
471
+ var nextNewline = headerBlock.indexOf("\n", searchPos);
472
+ if (nextNewline === -1) break;
473
+ var nextLineStart = nextNewline + 1;
474
+ if (nextLineStart >= headerBlock.length) break;
475
+
476
+ // Check if next line starts with a header pattern
477
+ var nextColon = headerBlock.indexOf(": ", nextLineStart);
478
+ if (nextColon > nextLineStart && nextColon < nextLineStart + 50) {
479
+ var possibleHeaderName = headerBlock.substring(nextLineStart, nextColon).trim();
480
+
481
+ // Must be valid header name format
482
+ if (/^[a-zA-Z0-9-]+$/.test(possibleHeaderName)) {
483
+ valueEnd = nextNewline;
484
+ break;
485
+ }
486
+ }
487
+ searchPos = nextNewline + 1;
488
+ }
489
+
490
+ // Extract the value - valueEnd points to \n which is NOT part of the value
491
+ var value = headerBlock.substring(valueStart, valueEnd);
492
+
493
+ // Determine if this is binary data FIRST (before trimming)
494
+ var isBinary = value.length > 0 && isBinaryData(Buffer.from(value, "binary"));
495
+ if (isBinary) {
496
+ // Binary data: only remove trailing \r if it's part of CRLF separator
497
+ // (when valueEnd points to \n and value ends with \r)
498
+ if (valueEnd < headerBlock.length && headerBlock[valueEnd] === "\n" && value.endsWith("\r")) {
499
+ value = value.substring(0, value.length - 1);
500
+ }
501
+ headers[name] = Buffer.from(value, "binary");
502
+ } else {
503
+ // Text data: remove all trailing CRLF/LF (these are line separators, not data)
504
+ value = value.replace(/[\r\n]+$/, "");
505
+ headers[name] = value;
506
+ }
507
+
508
+ // Move to the end of this header's value
509
+ currentPos = valueEnd;
510
+ if (currentPos < headerBlock.length && headerBlock[currentPos] === "\n") {
511
+ currentPos++;
512
+ }
513
+ if (currentPos < headerBlock.length && headerBlock[currentPos] === "\r") {
514
+ currentPos++;
515
+ }
516
+ }
517
+ var disposition = headers["content-disposition"];
518
+ if (!disposition) continue;
519
+ var partName = void 0;
520
+ if (disposition === "inline") {
521
+ // This is the inline part
522
+ partName = "body";
523
+ bodyKeysList.push("body");
524
+
525
+ // Extract all headers from inline part as top-level fields
526
+ var restHeaders = _objectSpread({}, headers);
527
+ delete restHeaders["content-disposition"];
528
+
529
+ // Add each header from the inline part to the top level of result
530
+ for (var _i8 = 0, _Object$entries7 = Object.entries(restHeaders); _i8 < _Object$entries7.length; _i8++) {
531
+ var _Object$entries7$_i = _slicedToArray(_Object$entries7[_i8], 2),
532
+ key = _Object$entries7$_i[0],
533
+ _value = _Object$entries7$_i[1];
534
+ result[key] = _value;
535
+ }
536
+
537
+ // If there's body content in the inline part, add it as 'body'
538
+ if (partBody) {
539
+ // Keep as string unless it's binary data
540
+ result[partName] = isBinaryData(Buffer.from(partBody, "binary")) ? Buffer.from(partBody, "binary") : partBody;
541
+ }
542
+ } else {
543
+ // Handle named form-data parts
544
+ var nameMatch = disposition.match(/name="([^"]+)"/);
545
+ partName = nameMatch ? nameMatch[1] : null;
546
+ if (partName) {
547
+ var topLevelKey = partName.split("/")[0];
548
+ bodyKeysList.push(topLevelKey);
549
+ }
550
+ if (!partName) continue;
551
+ var _restHeaders = _objectSpread({}, headers);
552
+ delete _restHeaders["content-disposition"];
553
+ if (Object.keys(_restHeaders).length === 0) {
554
+ // Keep as string unless it's binary data
555
+ result[partName] = isBinaryData(Buffer.from(partBody, "binary")) ? Buffer.from(partBody, "binary") : partBody;
556
+ } else if (!partBody) {
557
+ // ao-types should stay with this part, not be extracted
558
+ result[partName] = _restHeaders;
559
+ } else {
560
+ // Keep as string unless it's binary data
561
+ result[partName] = _objectSpread(_objectSpread({}, _restHeaders), {}, {
562
+ body: isBinaryData(Buffer.from(partBody, "binary")) ? Buffer.from(partBody, "binary") : partBody
563
+ });
564
+ }
565
+ }
566
+ }
567
+ } catch (err) {
568
+ _iterator3.e(err);
569
+ } finally {
570
+ _iterator3.f();
571
+ }
572
+ if (bodyKeysList.length > 0) {
573
+ result["body-keys"] = bodyKeysList.map(function (k) {
574
+ return "\"".concat(k, "\"");
575
+ }).join(", ");
576
+ }
577
+ return result;
578
+ }
579
+
580
+ // Add content-digest header using fast-sha256
581
+ function addContentDigest(msg) {
582
+ if (!msg.body) return msg;
583
+ var bodyBytes;
584
+ // Handle both string and Buffer bodies
585
+ if (Buffer.isBuffer(msg.body)) {
586
+ bodyBytes = new Uint8Array(msg.body);
587
+ } else {
588
+ // For strings, use binary encoding to match how the multipart body is encoded
589
+ bodyBytes = stringToBytes(msg.body, "binary");
590
+ }
591
+ var hashBytes = (0, _fastSha.hash)(bodyBytes);
592
+ var digest = bytesToBase64(hashBytes);
593
+ return _objectSpread(_objectSpread({}, msg), {}, {
594
+ "content-digest": "sha-256=:".concat(digest, ":")
595
+ });
596
+ }
597
+
598
+ /**
599
+ * Convert HTTP message to TABM
600
+ */
601
+ function httpsig_from(http) {
602
+ if (typeof http === "string") return http;
603
+ var body = http.body || "";
604
+ var _inlineKey = inlineKey(http),
605
+ _inlineKey2 = _slicedToArray(_inlineKey, 2),
606
+ inlinedFieldHdrs = _inlineKey2[0],
607
+ inlinedKey = _inlineKey2[1];
608
+ var headers = _objectSpread({}, http);
609
+ delete headers.body;
610
+ delete headers["body-keys"];
611
+ var contentType = headers["content-type"];
612
+ var withBodyKeys = headers;
613
+
614
+ // Parse multipart body if present
615
+ if (body && contentType && contentType.includes("multipart")) {
616
+ var parsed = parseMultipart(contentType, body);
617
+
618
+ // Handle the body-keys from the original HTTP message
619
+ if (http["body-keys"]) {
620
+ // Parse the existing body-keys and ensure they're in quoted format
621
+ var bodyKeys = http["body-keys"];
622
+ if (typeof bodyKeys === "string") {
623
+ if (!bodyKeys.includes('"')) {
624
+ // Convert unquoted format to quoted format
625
+ parsed["body-keys"] = bodyKeys.split(/,\s*/).map(function (k) {
626
+ return "\"".concat(k.trim(), "\"");
627
+ }).join(", ");
628
+ } else {
629
+ // Already quoted, use as-is
630
+ parsed["body-keys"] = bodyKeys;
631
+ }
632
+ }
633
+ }
634
+ withBodyKeys = _objectSpread(_objectSpread({}, headers), parsed);
635
+
636
+ // Convert flat structure to nested using flat.js
637
+ var flat = {};
638
+ var nonFlat = {};
639
+ for (var _i9 = 0, _Object$entries8 = Object.entries(withBodyKeys); _i9 < _Object$entries8.length; _i9++) {
640
+ var _Object$entries8$_i = _slicedToArray(_Object$entries8[_i9], 2),
641
+ key = _Object$entries8$_i[0],
642
+ value = _Object$entries8$_i[1];
643
+ if (key.includes("/")) {
644
+ flat[key] = value;
645
+ } else {
646
+ nonFlat[key] = value;
647
+ }
648
+ }
649
+ if (Object.keys(flat).length > 0) {
650
+ // Merge non-flat keys into flat for processing
651
+ // This ensures flat_from can see existing objects like results: { "ao-types": "..." }
652
+ var combined = _objectSpread(_objectSpread({}, nonFlat), flat);
653
+
654
+ // Use flat_from to convert flat structure to nested
655
+ var nested = (0, _flat.flat_from)(combined);
656
+
657
+ // The nested result already has everything merged
658
+ withBodyKeys = nested;
659
+ }
660
+ } else if (body) {
661
+ withBodyKeys[inlinedKey] = body;
662
+ }
663
+
664
+ // Ungroup IDs
665
+ var withIds = ungroupIds(withBodyKeys);
666
+
667
+ // Remove signature-related headers and content-digest
668
+ var result = _objectSpread({}, withIds);
669
+ delete result.signature;
670
+ delete result["signature-input"];
671
+ delete result.commitments;
672
+ delete result["content-digest"];
673
+
674
+ // Extract hashpaths if any
675
+ for (var _i0 = 0, _Object$keys = Object.keys(result); _i0 < _Object$keys.length; _i0++) {
676
+ var _key = _Object$keys[_i0];
677
+ if (_key.startsWith("hashpath")) {
678
+ delete result[_key];
679
+ }
680
+ }
681
+ return result;
682
+ }
683
+
684
+ /**
685
+ * Convert TABM to HTTP message
686
+ * Implements bundle mode like Erlang's dev_codec_httpsig_conv:to/3 with bundle=true
687
+ */
688
+ function httpsig_to(tabm) {
689
+ if (typeof tabm === "string") return tabm;
690
+
691
+ // Bundle logic: TABM → structured → TABM
692
+ // This matches Erlang's behavior when bundle=true:
693
+ // 1. Convert TABM to structured@1.0 (interprets ao-types, decodes to native types)
694
+ // 2. Convert back to TABM (re-encodes with ao-types)
695
+ var structured = (0, _structured.structured_to)(tabm);
696
+ var bundledTabm = (0, _structured.structured_from)(structured);
697
+
698
+ // Group IDs
699
+ var withGroupedIds = groupIds(bundledTabm);
700
+
701
+ // Remove private and signature-related keys
702
+ var stripped = _objectSpread({}, withGroupedIds);
703
+ delete stripped.commitments;
704
+ delete stripped.signature;
705
+ delete stripped["signature-input"];
706
+ delete stripped.priv;
707
+ var _inlineKey3 = inlineKey(tabm),
708
+ _inlineKey4 = _slicedToArray(_inlineKey3, 2),
709
+ inlineFieldHdrs = _inlineKey4[0],
710
+ inlineKeyVal = _inlineKey4[1];
711
+
712
+ // Check if this is a flat structure that should stay as headers
713
+ // A flat structure has no nested objects (maps), excluding:
714
+ // - Arrays (JS arrays, not numbered maps)
715
+ // - Buffers
716
+ // Note: List-encoded maps (numbered maps with .="list") ARE nested maps
717
+ // and should trigger multipart encoding, matching Erlang's behavior
718
+ var hasNestedMaps = Object.values(stripped).some(function (value) {
719
+ // Not an object
720
+ if (_typeof(value) !== "object" || value === null) return false;
721
+ // Arrays and Buffers are not nested maps
722
+ if (Array.isArray(value) || Buffer.isBuffer(value)) return false;
723
+ // Any other object (including list-encoded maps) is a nested map
724
+ return true;
725
+ });
726
+
727
+ // If it's just a flat map with strings/primitives, keep as headers
728
+ // This matches Erlang's behavior where flat maps don't become multipart
729
+ if (!hasNestedMaps) {
730
+ // For flat structures, just return with normalized keys
731
+ var result = _objectSpread(_objectSpread({}, inlineFieldHdrs), stripped);
732
+
733
+ // Handle inline body key - move data from inline key to body
734
+ if (inlineKeyVal && inlineKeyVal !== "body" && result[inlineKeyVal]) {
735
+ result.body = result[inlineKeyVal];
736
+ delete result[inlineKeyVal];
737
+ }
738
+
739
+ // If the only field is ao-types (no actual data), return empty object
740
+ // This matches Erlang's behavior where ao-types-only messages become empty
741
+ var dataKeys = Object.keys(result).filter(function (k) {
742
+ return k !== "ao-types" && k !== "ao-ids" && k !== "inline-body-key" && k !== "ao-body-key";
743
+ });
744
+ if (dataKeys.length === 0) {
745
+ return {};
746
+ }
747
+
748
+ // If there's a non-empty body, add content-digest
749
+ // Erlang doesn't add content-digest for empty bodies (<<>>)
750
+ if (result.body) {
751
+ var bodyIsEmpty = Buffer.isBuffer(result.body) ? result.body.length === 0 : typeof result.body === "string" && result.body.length === 0;
752
+ if (!bodyIsEmpty) {
753
+ return addContentDigest(result);
754
+ }
755
+ }
756
+ return result;
757
+ }
758
+
759
+ // Original multipart logic for nested structures
760
+ var bodyMap = {};
761
+ var headers = _objectSpread({}, inlineFieldHdrs);
762
+
763
+ // Process each field - ao-types at top level should go to headers
764
+ for (var _i1 = 0, _Object$entries9 = Object.entries(stripped); _i1 < _Object$entries9.length; _i1++) {
765
+ var _Object$entries9$_i = _slicedToArray(_Object$entries9[_i1], 2),
766
+ key = _Object$entries9$_i[0],
767
+ value = _Object$entries9$_i[1];
768
+ if (key === "ao-types") {
769
+ // Top-level ao-types goes to headers only
770
+ // Keep as Buffer if it's a Buffer, otherwise use as-is
771
+ headers[key] = value;
772
+ } else if (key === "body" || key === inlineKeyVal) {
773
+ bodyMap[key === inlineKeyVal ? inlineKeyVal : "body"] = value;
774
+ } else if (_typeof(value) === "object" && value !== null && !Array.isArray(value) && !Buffer.isBuffer(value)) {
775
+ bodyMap[key] = value;
776
+ } else if (typeof value === "string" && value.length <= MAX_HEADER_LENGTH && key !== "ao-types") {
777
+ headers[normalizeKey(key)] = value;
778
+ } else if (Buffer.isBuffer(value) && value.length <= MAX_HEADER_LENGTH && key !== "ao-types") {
779
+ // Keep buffers as buffers for headers
780
+ headers[normalizeKey(key)] = value;
781
+ } else if (key !== "ao-types") {
782
+ // Only add to bodyMap if it's not ao-types
783
+ bodyMap[key] = value;
784
+ }
785
+ }
786
+
787
+ // Handle body encoding
788
+ var groupedBodyMap = groupMaps(bodyMap);
789
+ if (Object.keys(groupedBodyMap).length === 0) {
790
+ return headers;
791
+ } else if (Object.keys(groupedBodyMap).length === 1 && groupedBodyMap[inlineKeyVal] && typeof groupedBodyMap[inlineKeyVal] === "string") {
792
+ var _result = _objectSpread(_objectSpread({}, headers), {}, {
793
+ body: groupedBodyMap[inlineKeyVal]
794
+ });
795
+ return addContentDigest(_result);
796
+ } else {
797
+ // Multipart body
798
+ var parts = [];
799
+ var bodyKeysList = [];
800
+ var sortedEntries = Object.entries(groupedBodyMap).sort(function (_ref5, _ref6) {
801
+ var _ref7 = _slicedToArray(_ref5, 1),
802
+ a = _ref7[0];
803
+ var _ref8 = _slicedToArray(_ref6, 1),
804
+ b = _ref8[0];
805
+ return a.localeCompare(b);
806
+ });
807
+ var _iterator4 = _createForOfIteratorHelper(sortedEntries),
808
+ _step4;
809
+ try {
810
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
811
+ var _step4$value = _slicedToArray(_step4.value, 2),
812
+ _key2 = _step4$value[0],
813
+ _value2 = _step4$value[1];
814
+ if (_typeof(_value2) === "object" && _value2 !== null && Object.keys(_value2).length === 1 && "body" in _value2) {
815
+ var encoded = encodeBodyPart("".concat(_key2, "/body"), _value2, "body");
816
+ parts.push({
817
+ name: "".concat(_key2, "/body"),
818
+ body: encoded
819
+ });
820
+ bodyKeysList.push(_key2);
821
+ } else {
822
+ var _encoded = encodeBodyPart(_key2, _value2, inlineKeyVal);
823
+ parts.push({
824
+ name: _key2,
825
+ body: _encoded
826
+ });
827
+ bodyKeysList.push(_key2);
828
+ }
829
+ }
830
+ } catch (err) {
831
+ _iterator4.e(err);
832
+ } finally {
833
+ _iterator4.f();
834
+ }
835
+ var boundary = boundaryFromParts(parts);
836
+ var bodyParts = parts.map(function (p) {
837
+ return "--".concat(boundary).concat(CRLF).concat(p.body);
838
+ });
839
+ var finalBody = bodyParts.join(CRLF) + "".concat(CRLF, "--").concat(boundary, "--");
840
+ var _result2 = _objectSpread(_objectSpread({}, headers), {}, {
841
+ // Note: body-keys is NOT included in httpsig output - it's only used for parsing
842
+ "content-type": "multipart/form-data; boundary=\"".concat(boundary, "\""),
843
+ body: finalBody
844
+ });
845
+ return addContentDigest(_result2);
846
+ }
847
+ }
848
+
849
+ /**
850
+ * Convert structured message to flat format
851
+ */
852
+ function structured_to(msg) {
853
+ return msg;
854
+ }
855
+
856
+ /**
857
+ * Convert flat format to structured message
858
+ */
859
+ function structured_from(msg) {
860
+ return msg;
861
+ }