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.
- package/.babelrc-cjs +5 -0
- package/.babelrc-esm +5 -0
- package/.gitmodules +4 -0
- package/.prettierrc +6 -0
- package/README.md +90 -0
- package/app/.eslintrc.json +3 -0
- package/app/.mocharc.cjs +6 -0
- package/app/arweave.mjs +87 -0
- package/app/components/Footer.js +76 -0
- package/app/components/Global.js +1128 -0
- package/app/components/Header.js +306 -0
- package/app/components/Left.js +28 -0
- package/app/components/Logo.js +34 -0
- package/app/components/Middle.js +37 -0
- package/app/components/Sidebar.js +93 -0
- package/app/components/Tags.js +42 -0
- package/app/components/editor/Editor.js +322 -0
- package/app/components/editor/FilePath.js +42 -0
- package/app/components/editor/MonacoEditor.js +44 -0
- package/app/components/left/LeftMessages.js +85 -0
- package/app/components/left/LeftModules.js +86 -0
- package/app/components/left/LeftNetworks.js +438 -0
- package/app/components/left/LeftProcesses.js +98 -0
- package/app/components/left/LeftProjects.js +397 -0
- package/app/components/left/LeftTests.js +189 -0
- package/app/components/middle/MiddleBlocks.js +79 -0
- package/app/components/middle/MiddleEntity.js +16 -0
- package/app/components/middle/MiddleEntityAccount.js +264 -0
- package/app/components/middle/MiddleEntityAssignment.js +104 -0
- package/app/components/middle/MiddleEntityBlock.js +148 -0
- package/app/components/middle/MiddleEntityMessage.js +430 -0
- package/app/components/middle/MiddleEntityModule.js +183 -0
- package/app/components/middle/MiddleEntityProcess.js +323 -0
- package/app/components/middle/MiddleEntityTx.js +211 -0
- package/app/components/middle/MiddleMessages.js +87 -0
- package/app/components/middle/MiddleModules.js +89 -0
- package/app/components/middle/MiddleNetworks.js +516 -0
- package/app/components/middle/MiddleProcesses.js +87 -0
- package/app/components/middle/MiddleTests.js +134 -0
- package/app/components/modals/CreateFileModal.js +115 -0
- package/app/components/modals/CreateFolderModal.js +83 -0
- package/app/components/modals/CreateProjectModal.js +63 -0
- package/app/components/modals/FSModal.js +141 -0
- package/app/components/modals/ImportModal.js +105 -0
- package/app/components/modals/LaunchNetworkModal.js +95 -0
- package/app/components/modals/Modal.js +38 -0
- package/app/components/modals/ProxyModal.js +122 -0
- package/app/components/modals/RenameFileModal.js +95 -0
- package/app/components/styles/EditorScrollbarStyle.js +29 -0
- package/app/components/styles/EntityScrollbarStyle.js +29 -0
- package/app/components/styles/GlobalStyle.js +102 -0
- package/app/components/styles/XtermStyle.js +37 -0
- package/app/components/terminal/Terminal.js +132 -0
- package/app/components/terminal/Xterm.js +160 -0
- package/app/components/ui/avatar.jsx +49 -0
- package/app/components/ui/checkbox.jsx +17 -0
- package/app/components/ui/close-button.jsx +20 -0
- package/app/components/ui/color-mode.jsx +61 -0
- package/app/components/ui/dialog.jsx +54 -0
- package/app/components/ui/drawer.jsx +44 -0
- package/app/components/ui/field.jsx +22 -0
- package/app/components/ui/input-group.jsx +39 -0
- package/app/components/ui/popover.jsx +49 -0
- package/app/components/ui/provider.jsx +12 -0
- package/app/components/ui/radio.jsx +17 -0
- package/app/components/ui/slider.jsx +107 -0
- package/app/components/ui/toaster.jsx +69 -0
- package/app/components/ui/tooltip.jsx +35 -0
- package/app/index.js +10 -0
- package/app/jsconfig.json +7 -0
- package/app/lib/GithubCSS.js +1218 -0
- package/app/lib/addon-fit.js +72 -0
- package/app/lib/data.js +31 -0
- package/app/lib/github-markdown.css +1169 -0
- package/app/lib/global.js +1 -0
- package/app/lib/guide.js +82 -0
- package/app/lib/hub.js +109 -0
- package/app/lib/scripts.js +47 -0
- package/app/lib/store.js +34 -0
- package/app/lib/use.js +64 -0
- package/app/lib/utils.js +387 -0
- package/app/lib/webrtc.js +217 -0
- package/app/next.config.js +25 -0
- package/app/package.json +62 -0
- package/app/pages/404.js +9 -0
- package/app/pages/_app.js +10 -0
- package/app/pages/_document.js +14 -0
- package/app/pages/index.js +121 -0
- package/app/playwright.config.mjs +41 -0
- package/app/proxy.mjs +21 -0
- package/app/public/assets/cover.png +0 -0
- package/app/public/blueprints/apm.lua +91 -0
- package/app/public/blueprints/arena.lua +345 -0
- package/app/public/blueprints/arns.lua +318 -0
- package/app/public/blueprints/chat.lua +210 -0
- package/app/public/blueprints/chatroom.lua +56 -0
- package/app/public/blueprints/patch-legacy-reply.lua +13 -0
- package/app/public/blueprints/staking.lua +93 -0
- package/app/public/blueprints/token.lua +298 -0
- package/app/public/blueprints/voting.lua +45 -0
- package/app/public/favicon.ico +0 -0
- package/app/public/logo.png +0 -0
- package/cli-esm.js +55 -0
- package/cli.js +54 -0
- package/devnet/app/api.js +129 -0
- package/devnet/app/components/layout.js +89 -0
- package/devnet/app/components/pagination.js +144 -0
- package/devnet/app/components/search.js +159 -0
- package/devnet/app/components/table.js +124 -0
- package/devnet/app/components/tags.js +89 -0
- package/devnet/app/index.html +14 -0
- package/devnet/app/main.js +215 -0
- package/devnet/app/router.js +59 -0
- package/devnet/app/state.js +19 -0
- package/devnet/app/style.css +1606 -0
- package/devnet/app/utils.js +77 -0
- package/devnet/app/views/blocks.js +75 -0
- package/devnet/app/views/dashboard.js +127 -0
- package/devnet/app/views/entity.js +1473 -0
- package/devnet/app/views/messages.js +90 -0
- package/devnet/app/views/modules.js +165 -0
- package/devnet/app/views/processes.js +90 -0
- package/devnet/app/views/schedulers.js +90 -0
- package/devnet/app/views/transactions.js +88 -0
- package/devnet/migrations/0001_initial.sql +51 -0
- package/devnet/package.json +26 -0
- package/devnet/playwright.config.js +7 -0
- package/devnet/src/cu-worker.js +166 -0
- package/devnet/src/index.js +309 -0
- package/devnet/vite.config.js +17 -0
- package/devnet/vitest.config.js +10 -0
- package/devnet/wrangler-cu.toml +32 -0
- package/devnet/wrangler.toml +38 -0
- package/dhfs-tutorial-app/package.json +15 -0
- package/dist/esm/workspace/dashboard/public/favicon.png +0 -0
- package/dist/esm/workspace/src/counter.lua +14 -0
- package/dist/package.json +82 -0
- package/hb.sh +18 -0
- package/hbsig/.babelrc-cjs +5 -0
- package/hbsig/.babelrc-esm +5 -0
- package/hbsig/README.md +1 -0
- package/hbsig/dist/cjs/bin_to_str.js +44 -0
- package/hbsig/dist/cjs/collect-body-keys.js +470 -0
- package/hbsig/dist/cjs/commit.js +330 -0
- package/hbsig/dist/cjs/encode-array-item.js +110 -0
- package/hbsig/dist/cjs/encode-utils.js +242 -0
- package/hbsig/dist/cjs/encode.js +1365 -0
- package/hbsig/dist/cjs/erl_json.js +326 -0
- package/hbsig/dist/cjs/erl_str.js +1042 -0
- package/hbsig/dist/cjs/flat.js +279 -0
- package/hbsig/dist/cjs/http-message-signatures/httpbis.js +489 -0
- package/hbsig/dist/cjs/http-message-signatures/index.js +25 -0
- package/hbsig/dist/cjs/http-message-signatures/structured-header.js +129 -0
- package/hbsig/dist/cjs/httpsig.js +861 -0
- package/hbsig/dist/cjs/id.js +470 -0
- package/hbsig/dist/cjs/index.js +174 -0
- package/hbsig/dist/cjs/nocrypto.js +51 -0
- package/hbsig/dist/cjs/parser.js +201 -0
- package/hbsig/dist/cjs/send-utils.js +1231 -0
- package/hbsig/dist/cjs/send.js +211 -0
- package/hbsig/dist/cjs/signer-utils.js +494 -0
- package/hbsig/dist/cjs/signer.js +436 -0
- package/hbsig/dist/cjs/structured.js +515 -0
- package/hbsig/dist/cjs/test.js +12 -0
- package/hbsig/dist/cjs/utils.js +44 -0
- package/hbsig/dist/esm/bin_to_str.js +46 -0
- package/hbsig/dist/esm/collect-body-keys.js +436 -0
- package/hbsig/dist/esm/commit.js +219 -0
- package/hbsig/dist/esm/encode-array-item.js +112 -0
- package/hbsig/dist/esm/encode-utils.js +191 -0
- package/hbsig/dist/esm/encode.js +1256 -0
- package/hbsig/dist/esm/erl_json.js +292 -0
- package/hbsig/dist/esm/erl_str.js +1144 -0
- package/hbsig/dist/esm/flat.js +250 -0
- package/hbsig/dist/esm/http-message-signatures/httpbis.js +438 -0
- package/hbsig/dist/esm/http-message-signatures/index.js +4 -0
- package/hbsig/dist/esm/http-message-signatures/structured-header.js +105 -0
- package/hbsig/dist/esm/httpsig.js +866 -0
- package/hbsig/dist/esm/id.js +459 -0
- package/hbsig/dist/esm/index.js +13 -0
- package/hbsig/dist/esm/nocrypto.js +4 -0
- package/hbsig/dist/esm/package.json +3 -0
- package/hbsig/dist/esm/parser.js +171 -0
- package/hbsig/dist/esm/send-utils.js +1132 -0
- package/hbsig/dist/esm/send.js +142 -0
- package/hbsig/dist/esm/signer-utils.js +375 -0
- package/hbsig/dist/esm/signer.js +312 -0
- package/hbsig/dist/esm/structured.js +496 -0
- package/hbsig/dist/esm/test.js +2 -0
- package/hbsig/dist/esm/utils.js +29 -0
- package/hbsig/dist/package.json +39 -0
- package/hbsig/make.js +36 -0
- package/hbsig/package.json +39 -0
- package/hbsig/src/bin_to_str.js +46 -0
- package/hbsig/src/collect-body-keys.js +436 -0
- package/hbsig/src/commit.js +219 -0
- package/hbsig/src/encode-array-item.js +112 -0
- package/hbsig/src/encode-utils.js +191 -0
- package/hbsig/src/encode.js +1256 -0
- package/hbsig/src/erl_json.js +292 -0
- package/hbsig/src/erl_str.js +1144 -0
- package/hbsig/src/flat.js +250 -0
- package/hbsig/src/http-message-signatures/httpbis.js +438 -0
- package/hbsig/src/http-message-signatures/index.js +4 -0
- package/hbsig/src/http-message-signatures/structured-header.js +105 -0
- package/hbsig/src/httpsig.js +866 -0
- package/hbsig/src/id.js +459 -0
- package/hbsig/src/index.js +13 -0
- package/hbsig/src/nocrypto.js +4 -0
- package/hbsig/src/parser.js +171 -0
- package/hbsig/src/send-utils.js +1132 -0
- package/hbsig/src/send.js +142 -0
- package/hbsig/src/signer-utils.js +375 -0
- package/hbsig/src/signer.js +312 -0
- package/hbsig/src/structured.js +496 -0
- package/hbsig/src/test.js +2 -0
- package/hbsig/src/utils.js +29 -0
- package/lp/index.html +25 -0
- package/lp/package.json +19 -0
- package/lp/public/cover.png +0 -0
- package/lp/public/favicon.ico +0 -0
- package/lp/public/favicon.png +0 -0
- package/lp/public/images/book.jpg +0 -0
- package/lp/public/images/dashboard.png +0 -0
- package/lp/public/images/devnet.png +0 -0
- package/lp/public/images/hero-bg.png +0 -0
- package/lp/public/images/hyperadd.png +0 -0
- package/lp/public/images/message-flow.png +0 -0
- package/lp/public/images/mobile.png +0 -0
- package/lp/public/images/og-cover.png +0 -0
- package/lp/public/images/scan.png +0 -0
- package/lp/public/images/wao-hub.png +0 -0
- package/lp/public/images/wao-web.png +0 -0
- package/lp/public/logo.png +0 -0
- package/lp/src/App.jsx +29 -0
- package/lp/src/components/CodeBlock.jsx +37 -0
- package/lp/src/components/CodeBlock.module.css +89 -0
- package/lp/src/components/Footer.jsx +22 -0
- package/lp/src/components/Footer.module.css +60 -0
- package/lp/src/components/Nav.jsx +80 -0
- package/lp/src/components/Nav.module.css +177 -0
- package/lp/src/components/SectionWrapper.jsx +15 -0
- package/lp/src/hooks/useReveal.js +25 -0
- package/lp/src/hooks/useScrolled.js +14 -0
- package/lp/src/main.jsx +10 -0
- package/lp/src/sections/Book.jsx +60 -0
- package/lp/src/sections/Book.module.css +204 -0
- package/lp/src/sections/Browser.jsx +46 -0
- package/lp/src/sections/Browser.module.css +67 -0
- package/lp/src/sections/Devnet.jsx +55 -0
- package/lp/src/sections/Devnet.module.css +136 -0
- package/lp/src/sections/GetStarted.jsx +51 -0
- package/lp/src/sections/GetStarted.module.css +128 -0
- package/lp/src/sections/Hero.jsx +67 -0
- package/lp/src/sections/Hero.module.css +202 -0
- package/lp/src/sections/HyperADD.jsx +46 -0
- package/lp/src/sections/HyperADD.module.css +113 -0
- package/lp/src/sections/SDK.jsx +90 -0
- package/lp/src/sections/SDK.module.css +122 -0
- package/lp/src/sections/Testing.jsx +47 -0
- package/lp/src/sections/Testing.module.css +124 -0
- package/lp/src/sections/Vision.jsx +93 -0
- package/lp/src/sections/Vision.module.css +147 -0
- package/lp/src/styles/globals.css +285 -0
- package/lp/src/utils/scrollTo.js +4 -0
- package/lp/vite.config.js +7 -0
- package/make.js +39 -0
- package/package.json +17 -12
- package/patches/@permaweb+ao-loader+0.0.44.patch +64 -0
- package/plan.md +435 -0
- package/rebar.lock +1 -0
- package/src/accounts-web.js +128 -0
- package/src/accounts.js +124 -0
- package/src/adaptor-base.js +622 -0
- package/src/adaptor-cf.js +11 -0
- package/src/adaptor-web.js +11 -0
- package/src/adaptor.js +10 -0
- package/src/ao-loader.js +30660 -0
- package/src/ao.js +1173 -0
- package/src/aoconnect-base.js +1098 -0
- package/src/aoconnect-cf.js +9 -0
- package/src/aoconnect-web.js +8 -0
- package/src/aoconnect.js +8 -0
- package/src/aos_wamr.js +1 -0
- package/src/ar-remote.js +87 -0
- package/src/ar.js +276 -0
- package/src/armem-base.js +529 -0
- package/src/armem-cf.js +67 -0
- package/src/armem-web.js +19 -0
- package/src/armem.js +26 -0
- package/src/bao.js +141 -0
- package/src/bar.js +366 -0
- package/src/build.js +7 -0
- package/src/bundler.js +119 -0
- package/src/car.js +10 -0
- package/src/cf-env.js +29 -0
- package/src/cf.js +11 -0
- package/src/cli.js +561 -0
- package/src/compress.js +112 -0
- package/src/create.js +415 -0
- package/src/devs.js +86 -0
- package/src/dirname.js +1 -0
- package/src/dodb.js +26 -0
- package/src/erl_json.js +289 -0
- package/src/erl_str.js +1139 -0
- package/src/gql.js +229 -0
- package/src/hb.js +967 -0
- package/src/helpers.js +203 -0
- package/src/http.js +619 -0
- package/src/hub/bundler.js +123 -0
- package/src/hub/cu.js +74 -0
- package/src/hub/fs.js +157 -0
- package/src/hub/index.js +85 -0
- package/src/hub/utils.js +64 -0
- package/src/hub/ws-proxy.js +67 -0
- package/src/hyper-aos.js +1 -0
- package/src/hyperbeam-server.js +21 -0
- package/src/hyperbeam.js +585 -0
- package/src/index.js +5 -0
- package/src/keygen.js +47 -0
- package/src/lfdb.js +67 -0
- package/src/lua/aos.wasm +0 -0
- package/src/lua/aos2_0_1.js +1 -0
- package/src/lua/aos2_0_1.wasm +0 -0
- package/src/lua/aos2_0_3.js +1 -0
- package/src/lua/aos2_0_3.wasm +0 -0
- package/src/lua/aos2_0_4_32.js +1 -0
- package/src/lua/aos2_0_4_32.wasm +0 -0
- package/src/lua/aos2_0_6.wasm +0 -0
- package/src/lua/apm.lua +61 -0
- package/src/lua/llama.wasm +0 -0
- package/src/lua/process.wasm +0 -0
- package/src/lua/sqlite.js +1 -0
- package/src/lua/sqlite.wasm +0 -0
- package/src/lua/weavedb_mock.lua +44 -0
- package/src/lua/weavedrive.lua +53 -0
- package/src/run.js +25 -0
- package/src/server.js +173 -0
- package/src/storage-multi.js +183 -0
- package/src/tao.js +12 -0
- package/src/tar.js +10 -0
- package/src/test.js +42 -0
- package/src/tgql-d1.js +407 -0
- package/src/tgql.js +310 -0
- package/src/toerl.js +162 -0
- package/src/utils.js +777 -0
- package/src/wao.js +29 -0
- package/src/waosm/README.md +81 -0
- package/src/waosm/waosm.d.ts +40 -0
- package/src/waosm/waosm.js +240 -0
- package/src/waosm/waosm_bg.wasm +0 -0
- package/src/waosm/waosm_bg.wasm.d.ts +8 -0
- package/src/waosm-node/README.md +81 -0
- package/src/waosm-node/waosm.d.ts +8 -0
- package/src/waosm-node/waosm.js +4 -0
- package/src/waosm-node/waosm_bg.js +147 -0
- package/src/waosm-node/waosm_bg.wasm +0 -0
- package/src/waosm-node/waosm_bg.wasm.d.ts +8 -0
- package/src/waosm-node/waosm_bg.wasm.js +14 -0
- package/src/waosm-node.js +9 -0
- package/src/war.js +10 -0
- package/src/weavedrive.js +376 -0
- package/src/web.js +11 -0
- package/src/workspace/.mcp.json +8 -0
- package/src/workspace/CLAUDE.md +258 -0
- package/src/workspace/README.md +85 -0
- package/src/workspace/dashboard/index.html +163 -0
- package/src/workspace/dashboard/package.json +18 -0
- package/src/workspace/dashboard/public/favicon.ico +0 -0
- package/src/workspace/dashboard/public/favicon.png +0 -0
- package/src/workspace/dashboard/server.js +224 -0
- package/src/workspace/dashboard/src/App.jsx +2350 -0
- package/{cjs/workspace/frontend → src/workspace/dashboard}/vite.config.js +6 -0
- package/src/workspace/package.json +18 -0
- package/src/workspace/src/counter.lua +14 -0
- package/tsconfig.json +18 -0
- package/types/index.d.ts +329 -0
- package/waollama/.eslintrc.json +3 -0
- package/waollama/README.md +19 -0
- package/waollama/arweave.mjs +87 -0
- package/waollama/components/ui/avatar.jsx +49 -0
- package/waollama/components/ui/checkbox.jsx +17 -0
- package/waollama/components/ui/close-button.jsx +20 -0
- package/waollama/components/ui/color-mode.jsx +61 -0
- package/waollama/components/ui/dialog.jsx +54 -0
- package/waollama/components/ui/drawer.jsx +44 -0
- package/waollama/components/ui/field.jsx +22 -0
- package/waollama/components/ui/input-group.jsx +39 -0
- package/waollama/components/ui/popover.jsx +49 -0
- package/waollama/components/ui/provider.jsx +12 -0
- package/waollama/components/ui/radio.jsx +17 -0
- package/waollama/components/ui/slider.jsx +107 -0
- package/waollama/components/ui/tooltip.jsx +35 -0
- package/waollama/index.js +10 -0
- package/waollama/jsconfig.json +7 -0
- package/waollama/lib/ao-loader.js +30654 -0
- package/waollama/lib/client.js +1 -0
- package/waollama/lib/wasm.js +1 -0
- package/waollama/next.config.js +25 -0
- package/waollama/package.json +43 -0
- package/waollama/pages/404.js +9 -0
- package/waollama/pages/_app.js +9 -0
- package/waollama/pages/_document.js +14 -0
- package/waollama/pages/index.js +212 -0
- package/waollama/playwright.config.js +31 -0
- package/waollama/proxy.mjs +21 -0
- package/waollama/public/favicon.ico +0 -0
- package/waollama/public/human.png +0 -0
- package/waollama/public/llama.png +0 -0
- package/waosm/Cargo.toml +11 -0
- package/waosm/README.md +81 -0
- package/waosm/compress.js +112 -0
- package/waosm/make.js +33 -0
- package/waosm/package.json +10 -0
- package/waosm/src/lib.rs +180 -0
- package/waosm/test.js +16 -0
- package/cjs/workspace/.claude/agents/builder.md +0 -99
- package/cjs/workspace/.claude/agents/device-builder.md +0 -86
- package/cjs/workspace/.claude/agents/tester.md +0 -90
- package/cjs/workspace/.claude/mcp/dashboard/server.js +0 -128
- package/cjs/workspace/.claude/rules/deploy.md +0 -45
- package/cjs/workspace/.claude/rules/frontend.md +0 -69
- package/cjs/workspace/.claude/rules/hyperbeam.md +0 -104
- package/cjs/workspace/.claude/rules/lua.md +0 -108
- package/cjs/workspace/.claude/rules/testing.md +0 -257
- package/cjs/workspace/.claude/settings.json +0 -109
- package/cjs/workspace/.claude/skills/build/SKILL.md +0 -214
- package/cjs/workspace/.claude/skills/build-aos/SKILL.md +0 -129
- package/cjs/workspace/.claude/skills/build-device/SKILL.md +0 -192
- package/cjs/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
- package/cjs/workspace/.claude/skills/build-module/SKILL.md +0 -281
- package/cjs/workspace/.claude/skills/create-aos/SKILL.md +0 -63
- package/cjs/workspace/.claude/skills/create-device/SKILL.md +0 -87
- package/cjs/workspace/.claude/skills/create-module/SKILL.md +0 -162
- package/cjs/workspace/.claude/skills/debug/SKILL.md +0 -57
- package/cjs/workspace/.claude/skills/deploy/SKILL.md +0 -85
- package/cjs/workspace/.claude/skills/dev/SKILL.md +0 -32
- package/cjs/workspace/.claude/skills/plan/SKILL.md +0 -176
- package/cjs/workspace/.claude/skills/readme/SKILL.md +0 -186
- package/cjs/workspace/.claude/skills/report/SKILL.md +0 -49
- package/cjs/workspace/.claude/skills/team/SKILL.md +0 -101
- package/cjs/workspace/.claude/skills/test/SKILL.md +0 -56
- package/cjs/workspace/.claude/skills/test-device/SKILL.md +0 -114
- package/cjs/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
- package/cjs/workspace/.claude/skills/test-hb/SKILL.md +0 -76
- package/cjs/workspace/.claude/skills/validate/SKILL.md +0 -96
- package/cjs/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
- package/cjs/workspace/docs/aos-lua.md +0 -428
- package/cjs/workspace/docs/debug.md +0 -230
- package/cjs/workspace/docs/hyperbeam-dev.md +0 -606
- package/cjs/workspace/docs/hyperbeam-devices.md +0 -618
- package/cjs/workspace/docs/wao-sdk.md +0 -807
- package/cjs/workspace/frontend/e2e/.gitkeep +0 -0
- package/cjs/workspace/frontend/index.html +0 -12
- package/cjs/workspace/frontend/package.json +0 -24
- package/cjs/workspace/frontend/playwright.config.js +0 -10
- package/cjs/workspace/frontend/src/App.jsx +0 -24
- package/cjs/workspace/frontend/test/.gitkeep +0 -0
- package/cjs/workspace/frontend/vitest.config.js +0 -10
- package/cjs/workspace/scripts/deploy.js +0 -140
- package/cjs/workspace/scripts/keygen.js +0 -52
- package/cjs/workspace/test/aos.test.js +0 -98
- package/cjs/workspace/test/hyperbeam.test.js +0 -80
- package/esm/compiler/native +0 -0
- package/esm/workspace/.claude/agents/builder.md +0 -99
- package/esm/workspace/.claude/agents/device-builder.md +0 -86
- package/esm/workspace/.claude/agents/tester.md +0 -90
- package/esm/workspace/.claude/mcp/dashboard/server.js +0 -128
- package/esm/workspace/.claude/rules/deploy.md +0 -45
- package/esm/workspace/.claude/rules/frontend.md +0 -69
- package/esm/workspace/.claude/rules/hyperbeam.md +0 -104
- package/esm/workspace/.claude/rules/lua.md +0 -108
- package/esm/workspace/.claude/rules/testing.md +0 -257
- package/esm/workspace/.claude/settings.json +0 -109
- package/esm/workspace/.claude/skills/build/SKILL.md +0 -214
- package/esm/workspace/.claude/skills/build-aos/SKILL.md +0 -129
- package/esm/workspace/.claude/skills/build-device/SKILL.md +0 -192
- package/esm/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
- package/esm/workspace/.claude/skills/build-module/SKILL.md +0 -281
- package/esm/workspace/.claude/skills/create-aos/SKILL.md +0 -63
- package/esm/workspace/.claude/skills/create-device/SKILL.md +0 -87
- package/esm/workspace/.claude/skills/create-module/SKILL.md +0 -162
- package/esm/workspace/.claude/skills/debug/SKILL.md +0 -57
- package/esm/workspace/.claude/skills/deploy/SKILL.md +0 -85
- package/esm/workspace/.claude/skills/dev/SKILL.md +0 -32
- package/esm/workspace/.claude/skills/plan/SKILL.md +0 -176
- package/esm/workspace/.claude/skills/readme/SKILL.md +0 -186
- package/esm/workspace/.claude/skills/report/SKILL.md +0 -49
- package/esm/workspace/.claude/skills/team/SKILL.md +0 -101
- package/esm/workspace/.claude/skills/test/SKILL.md +0 -56
- package/esm/workspace/.claude/skills/test-device/SKILL.md +0 -114
- package/esm/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
- package/esm/workspace/.claude/skills/test-hb/SKILL.md +0 -76
- package/esm/workspace/.claude/skills/validate/SKILL.md +0 -96
- package/esm/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
- package/esm/workspace/docs/aos-lua.md +0 -428
- package/esm/workspace/docs/debug.md +0 -230
- package/esm/workspace/docs/hyperbeam-dev.md +0 -606
- package/esm/workspace/docs/hyperbeam-devices.md +0 -618
- package/esm/workspace/docs/wao-sdk.md +0 -807
- package/esm/workspace/frontend/e2e/.gitkeep +0 -0
- package/esm/workspace/frontend/index.html +0 -12
- package/esm/workspace/frontend/package.json +0 -24
- package/esm/workspace/frontend/playwright.config.js +0 -10
- package/esm/workspace/frontend/src/App.jsx +0 -24
- package/esm/workspace/frontend/src/main.jsx +0 -9
- package/esm/workspace/frontend/test/.gitkeep +0 -0
- package/esm/workspace/frontend/vite.config.js +0 -6
- package/esm/workspace/frontend/vitest.config.js +0 -10
- package/esm/workspace/scripts/deploy.js +0 -140
- package/esm/workspace/scripts/keygen.js +0 -52
- package/esm/workspace/test/aos.test.js +0 -98
- package/esm/workspace/test/hyperbeam.test.js +0 -80
- /package/{cjs/workspace/dashboard/public → devnet/app}/favicon.ico +0 -0
- /package/{cjs/workspace → dhfs-tutorial-app}/src/counter.lua +0 -0
- /package/{cjs → dist/cjs}/accounts-web.js +0 -0
- /package/{cjs → dist/cjs}/accounts.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-base.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-cf.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-web.js +0 -0
- /package/{cjs → dist/cjs}/adaptor.js +0 -0
- /package/{cjs → dist/cjs}/ao-loader.js +0 -0
- /package/{cjs → dist/cjs}/ao.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-base.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-cf.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-web.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect.js +0 -0
- /package/{cjs → dist/cjs}/aos_wamr.js +0 -0
- /package/{cjs → dist/cjs}/ar-remote.js +0 -0
- /package/{cjs → dist/cjs}/ar.js +0 -0
- /package/{cjs → dist/cjs}/armem-base.js +0 -0
- /package/{cjs → dist/cjs}/armem-cf.js +0 -0
- /package/{cjs → dist/cjs}/armem-web.js +0 -0
- /package/{cjs → dist/cjs}/armem.js +0 -0
- /package/{cjs → dist/cjs}/bao.js +0 -0
- /package/{cjs → dist/cjs}/bar.js +0 -0
- /package/{cjs → dist/cjs}/build.js +0 -0
- /package/{cjs → dist/cjs}/bundler.js +0 -0
- /package/{cjs → dist/cjs}/car.js +0 -0
- /package/{cjs → dist/cjs}/cf-env.js +0 -0
- /package/{cjs → dist/cjs}/cf.js +0 -0
- /package/{cjs → dist/cjs}/cli.js +0 -0
- /package/{cjs → dist/cjs}/compress.js +0 -0
- /package/{cjs → dist/cjs}/create.js +0 -0
- /package/{cjs → dist/cjs}/devs.js +0 -0
- /package/{cjs → dist/cjs}/dirname.js +0 -0
- /package/{cjs → dist/cjs}/dodb.js +0 -0
- /package/{cjs → dist/cjs}/erl_json.js +0 -0
- /package/{cjs → dist/cjs}/erl_str.js +0 -0
- /package/{cjs → dist/cjs}/gql.js +0 -0
- /package/{cjs → dist/cjs}/hb.js +0 -0
- /package/{cjs → dist/cjs}/helpers.js +0 -0
- /package/{cjs → dist/cjs}/http.js +0 -0
- /package/{cjs → dist/cjs}/hub/bundler.js +0 -0
- /package/{cjs → dist/cjs}/hub/cu.js +0 -0
- /package/{cjs → dist/cjs}/hub/fs.js +0 -0
- /package/{cjs → dist/cjs}/hub/index.js +0 -0
- /package/{cjs → dist/cjs}/hub/utils.js +0 -0
- /package/{cjs → dist/cjs}/hub/ws-proxy.js +0 -0
- /package/{cjs → dist/cjs}/hyper-aos.js +0 -0
- /package/{cjs → dist/cjs}/hyperbeam-server.js +0 -0
- /package/{cjs → dist/cjs}/hyperbeam.js +0 -0
- /package/{cjs → dist/cjs}/index.js +0 -0
- /package/{cjs → dist/cjs}/keygen.js +0 -0
- /package/{cjs → dist/cjs}/lfdb.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_1.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_1.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_3.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_3.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_4_32.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_4_32.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_6.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/apm.lua +0 -0
- /package/{cjs → dist/cjs}/lua/llama.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/process.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/sqlite.js +0 -0
- /package/{cjs → dist/cjs}/lua/sqlite.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/weavedb_mock.lua +0 -0
- /package/{cjs → dist/cjs}/lua/weavedrive.lua +0 -0
- /package/{cjs → dist/cjs}/run.js +0 -0
- /package/{cjs → dist/cjs}/server.js +0 -0
- /package/{cjs → dist/cjs}/storage-multi.js +0 -0
- /package/{cjs → dist/cjs}/tao.js +0 -0
- /package/{cjs → dist/cjs}/tar.js +0 -0
- /package/{cjs → dist/cjs}/test.js +0 -0
- /package/{cjs → dist/cjs}/tgql-d1.js +0 -0
- /package/{cjs → dist/cjs}/tgql.js +0 -0
- /package/{cjs → dist/cjs}/toerl.js +0 -0
- /package/{cjs → dist/cjs}/utils.js +0 -0
- /package/{cjs → dist/cjs}/wao.js +0 -0
- /package/{cjs → dist/cjs}/waosm/waosm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node.js +0 -0
- /package/{cjs → dist/cjs}/war.js +0 -0
- /package/{cjs → dist/cjs}/weavedrive.js +0 -0
- /package/{cjs → dist/cjs}/web.js +0 -0
- /package/{cjs → dist/cjs}/workspace/.mcp.json +0 -0
- /package/{cjs → dist/cjs}/workspace/CLAUDE.md +0 -0
- /package/{cjs → dist/cjs}/workspace/README.md +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/index.html +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/package.json +0 -0
- /package/{esm → dist/cjs}/workspace/dashboard/public/favicon.ico +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/public/favicon.png +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/server.js +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/src/App.jsx +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/src/main.jsx +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/vite.config.js +0 -0
- /package/{cjs → dist/cjs}/workspace/package.json +0 -0
- /package/{esm → dist/cjs}/workspace/src/counter.lua +0 -0
- /package/{esm → dist/esm}/accounts-web.js +0 -0
- /package/{esm → dist/esm}/accounts.js +0 -0
- /package/{esm → dist/esm}/adaptor-base.js +0 -0
- /package/{esm → dist/esm}/adaptor-cf.js +0 -0
- /package/{esm → dist/esm}/adaptor-web.js +0 -0
- /package/{esm → dist/esm}/adaptor.js +0 -0
- /package/{esm → dist/esm}/ao-loader.js +0 -0
- /package/{esm → dist/esm}/ao.js +0 -0
- /package/{esm → dist/esm}/aoconnect-base.js +0 -0
- /package/{esm → dist/esm}/aoconnect-cf.js +0 -0
- /package/{esm → dist/esm}/aoconnect-web.js +0 -0
- /package/{esm → dist/esm}/aoconnect.js +0 -0
- /package/{esm → dist/esm}/aos_wamr.js +0 -0
- /package/{esm → dist/esm}/ar-remote.js +0 -0
- /package/{esm → dist/esm}/ar.js +0 -0
- /package/{esm → dist/esm}/armem-base.js +0 -0
- /package/{esm → dist/esm}/armem-cf.js +0 -0
- /package/{esm → dist/esm}/armem-web.js +0 -0
- /package/{esm → dist/esm}/armem.js +0 -0
- /package/{esm → dist/esm}/bao.js +0 -0
- /package/{esm → dist/esm}/bar.js +0 -0
- /package/{esm → dist/esm}/build.js +0 -0
- /package/{esm → dist/esm}/bundler.js +0 -0
- /package/{esm → dist/esm}/car.js +0 -0
- /package/{esm → dist/esm}/cf-env.js +0 -0
- /package/{esm → dist/esm}/cf.js +0 -0
- /package/{esm → dist/esm}/cli.js +0 -0
- /package/{esm → dist/esm}/compress.js +0 -0
- /package/{esm → dist/esm}/create.js +0 -0
- /package/{esm → dist/esm}/devs.js +0 -0
- /package/{esm → dist/esm}/dirname.js +0 -0
- /package/{esm → dist/esm}/dodb.js +0 -0
- /package/{esm → dist/esm}/erl_json.js +0 -0
- /package/{esm → dist/esm}/erl_str.js +0 -0
- /package/{esm → dist/esm}/gql.js +0 -0
- /package/{esm → dist/esm}/hb.js +0 -0
- /package/{esm → dist/esm}/helpers.js +0 -0
- /package/{esm → dist/esm}/http.js +0 -0
- /package/{esm → dist/esm}/hub/bundler.js +0 -0
- /package/{esm → dist/esm}/hub/cu.js +0 -0
- /package/{esm → dist/esm}/hub/fs.js +0 -0
- /package/{esm → dist/esm}/hub/index.js +0 -0
- /package/{esm → dist/esm}/hub/utils.js +0 -0
- /package/{esm → dist/esm}/hub/ws-proxy.js +0 -0
- /package/{esm → dist/esm}/hyper-aos.js +0 -0
- /package/{esm → dist/esm}/hyperbeam-server.js +0 -0
- /package/{esm → dist/esm}/hyperbeam.js +0 -0
- /package/{esm → dist/esm}/index.js +0 -0
- /package/{esm → dist/esm}/keygen.js +0 -0
- /package/{esm → dist/esm}/lfdb.js +0 -0
- /package/{esm → dist/esm}/lua/aos.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_1.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_1.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_3.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_3.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_4_32.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_4_32.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_6.wasm +0 -0
- /package/{esm → dist/esm}/lua/apm.lua +0 -0
- /package/{esm → dist/esm}/lua/llama.wasm +0 -0
- /package/{esm → dist/esm}/lua/process.wasm +0 -0
- /package/{esm → dist/esm}/lua/sqlite.js +0 -0
- /package/{esm → dist/esm}/lua/sqlite.wasm +0 -0
- /package/{esm → dist/esm}/lua/weavedb_mock.lua +0 -0
- /package/{esm → dist/esm}/lua/weavedrive.lua +0 -0
- /package/{esm → dist/esm}/package.json +0 -0
- /package/{esm → dist/esm}/run.js +0 -0
- /package/{esm → dist/esm}/server.js +0 -0
- /package/{esm → dist/esm}/storage-multi.js +0 -0
- /package/{esm → dist/esm}/tao.js +0 -0
- /package/{esm → dist/esm}/tar.js +0 -0
- /package/{esm → dist/esm}/test.js +0 -0
- /package/{esm → dist/esm}/tgql-d1.js +0 -0
- /package/{esm → dist/esm}/tgql.js +0 -0
- /package/{esm → dist/esm}/toerl.js +0 -0
- /package/{esm → dist/esm}/utils.js +0 -0
- /package/{esm → dist/esm}/wao.js +0 -0
- /package/{esm → dist/esm}/waosm/README.md +0 -0
- /package/{esm → dist/esm}/waosm/waosm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm/waosm.js +0 -0
- /package/{esm → dist/esm}/waosm/waosm_bg.wasm +0 -0
- /package/{esm → dist/esm}/waosm/waosm_bg.wasm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/README.md +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm.js +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.js +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.js +0 -0
- /package/{esm → dist/esm}/waosm-node.js +0 -0
- /package/{esm → dist/esm}/war.js +0 -0
- /package/{esm → dist/esm}/weavedrive.js +0 -0
- /package/{esm → dist/esm}/web.js +0 -0
- /package/{esm → dist/esm}/workspace/.mcp.json +0 -0
- /package/{esm → dist/esm}/workspace/CLAUDE.md +0 -0
- /package/{esm → dist/esm}/workspace/README.md +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/index.html +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/package.json +0 -0
- /package/{esm/workspace/dashboard/public/favicon.png → dist/esm/workspace/dashboard/public/favicon.ico} +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/server.js +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/src/App.jsx +0 -0
- /package/{cjs/workspace/frontend → dist/esm/workspace/dashboard}/src/main.jsx +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/vite.config.js +0 -0
- /package/{esm → dist/esm}/workspace/package.json +0 -0
- /package/{postinstall.cjs → dist/postinstall.cjs} +0 -0
- /package/{esm → src}/workspace/dashboard/src/main.jsx +0 -0
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.structured_from = structured_from;
|
|
7
|
+
exports.structured_to = structured_to;
|
|
8
|
+
var _erl_str = require("./erl_str.js");
|
|
9
|
+
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; } } }; }
|
|
10
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
11
|
+
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."); }
|
|
12
|
+
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; } }
|
|
13
|
+
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; }
|
|
14
|
+
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; } }
|
|
15
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
16
|
+
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); } /**
|
|
17
|
+
* Structured field codec for JavaScript-Erlang interoperability
|
|
18
|
+
* Implements the same behavior as dev_codec_structured.erl
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Convert from structured format (rich message to TABM)
|
|
22
|
+
* Mirrors Erlang's from/1 function
|
|
23
|
+
* @param {*} obj - Rich message object
|
|
24
|
+
* @returns {*} - TABM object
|
|
25
|
+
*/
|
|
26
|
+
function structured_from(obj) {
|
|
27
|
+
// Handle binary input
|
|
28
|
+
if (typeof obj === "string" || obj instanceof Buffer || obj instanceof Uint8Array) {
|
|
29
|
+
return obj;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Handle non-object input
|
|
33
|
+
if (_typeof(obj) !== "object" || obj === null || Array.isArray(obj)) {
|
|
34
|
+
return obj;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Convert rich message to TABM
|
|
38
|
+
return from(obj);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Convert to structured format (TABM to rich message)
|
|
43
|
+
* Mirrors Erlang's to/1 function
|
|
44
|
+
* @param {string|object} input - Erlang term string or TABM object
|
|
45
|
+
* @returns {object} - Rich message object
|
|
46
|
+
*/
|
|
47
|
+
function structured_to(input) {
|
|
48
|
+
// If input is a string (Erlang response), parse it
|
|
49
|
+
if (typeof input === "string") {
|
|
50
|
+
return (0, _erl_str.erl_str_from)(input, false);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Otherwise convert TABM to rich message
|
|
54
|
+
return to(input);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Convert a TABM into a rich message (mirrors Erlang's to/1)
|
|
59
|
+
* @param {*} tabm - Type-Annotated-Binary-Message
|
|
60
|
+
* @returns {*} - Rich message
|
|
61
|
+
*/
|
|
62
|
+
function to(tabm) {
|
|
63
|
+
// Handle binary input
|
|
64
|
+
if (typeof tabm === "string" || tabm instanceof Buffer || tabm instanceof Uint8Array) {
|
|
65
|
+
return tabm;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Handle non-object input
|
|
69
|
+
if (_typeof(tabm) !== "object" || tabm === null || Array.isArray(tabm)) {
|
|
70
|
+
return tabm;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Parse ao-types if present
|
|
74
|
+
var aoTypesStr = tabm["ao-types"] || "";
|
|
75
|
+
var types = parseAoTypes(aoTypesStr);
|
|
76
|
+
|
|
77
|
+
// Build result with empty values first
|
|
78
|
+
var result = {};
|
|
79
|
+
|
|
80
|
+
// Add empty values based on their types (these may be overwritten if data exists)
|
|
81
|
+
for (var _i = 0, _Object$entries = Object.entries(types); _i < _Object$entries.length; _i++) {
|
|
82
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
83
|
+
key = _Object$entries$_i[0],
|
|
84
|
+
type = _Object$entries$_i[1];
|
|
85
|
+
if (type === "empty-binary") {
|
|
86
|
+
result[key] = "";
|
|
87
|
+
} else if (type === "empty-list") {
|
|
88
|
+
result[key] = [];
|
|
89
|
+
} else if (type === "empty-message") {
|
|
90
|
+
result[key] = {};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Process all other key-value pairs
|
|
95
|
+
for (var _i2 = 0, _Object$entries2 = Object.entries(tabm); _i2 < _Object$entries2.length; _i2++) {
|
|
96
|
+
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
|
|
97
|
+
rawKey = _Object$entries2$_i[0],
|
|
98
|
+
value = _Object$entries2$_i[1];
|
|
99
|
+
// Skip ao-types field
|
|
100
|
+
if (rawKey === "ao-types") {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
var normalizedKey = rawKey.toLowerCase();
|
|
104
|
+
if (typeof value === "string" || value instanceof Buffer || value instanceof Uint8Array) {
|
|
105
|
+
var _type = types[normalizedKey];
|
|
106
|
+
if (_type) {
|
|
107
|
+
// Decode according to type
|
|
108
|
+
result[rawKey] = decodeValue(_type, value);
|
|
109
|
+
} else {
|
|
110
|
+
// No type info, keep as binary/string
|
|
111
|
+
result[rawKey] = value;
|
|
112
|
+
}
|
|
113
|
+
} else if (_typeof(value) === "object" && value !== null && !Array.isArray(value)) {
|
|
114
|
+
// Check if the child object itself indicates it's a list via .="list" in its ao-types
|
|
115
|
+
var childAoTypes = value["ao-types"] || "";
|
|
116
|
+
var childTypes = parseAoTypes(childAoTypes);
|
|
117
|
+
var isChildList = childTypes["."] === "list";
|
|
118
|
+
|
|
119
|
+
// Recursively decode child TABM
|
|
120
|
+
var childDecoded = to(value);
|
|
121
|
+
|
|
122
|
+
// Only convert numbered map to array if the child object itself
|
|
123
|
+
// declares it's a list via .="list" in its ao-types.
|
|
124
|
+
// This preserves original keys when the parent declares the type
|
|
125
|
+
// but the child doesn't have the list marker.
|
|
126
|
+
if (isChildList) {
|
|
127
|
+
// Convert numbered map back to ordered list
|
|
128
|
+
result[rawKey] = messageToOrderedList(childDecoded);
|
|
129
|
+
} else {
|
|
130
|
+
result[rawKey] = childDecoded;
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
// Value already has converted type
|
|
134
|
+
result[rawKey] = value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return filterDefaultKeys(result);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Parse ao-types field and return map of keys to types
|
|
142
|
+
* @param {string} aoTypesStr - ao-types field content
|
|
143
|
+
* @returns {object} - Map of normalized keys to types
|
|
144
|
+
*/
|
|
145
|
+
function parseAoTypes(aoTypesStr) {
|
|
146
|
+
if (!aoTypesStr) {
|
|
147
|
+
return {};
|
|
148
|
+
}
|
|
149
|
+
var types = {};
|
|
150
|
+
|
|
151
|
+
// Simple parser for "key1=\"type1\", key2=\"type2\"" format
|
|
152
|
+
var pairs = aoTypesStr.split(", ");
|
|
153
|
+
var _iterator = _createForOfIteratorHelper(pairs),
|
|
154
|
+
_step;
|
|
155
|
+
try {
|
|
156
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
157
|
+
var pair = _step.value;
|
|
158
|
+
var match = pair.match(/^(.+?)="(.+?)"$/);
|
|
159
|
+
if (match) {
|
|
160
|
+
var _match = _slicedToArray(match, 3),
|
|
161
|
+
key = _match[1],
|
|
162
|
+
type = _match[2];
|
|
163
|
+
// Decode escaped key and normalize
|
|
164
|
+
var decodedKey = decodeEscapedKey(key);
|
|
165
|
+
types[decodedKey.toLowerCase()] = type;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
} catch (err) {
|
|
169
|
+
_iterator.e(err);
|
|
170
|
+
} finally {
|
|
171
|
+
_iterator.f();
|
|
172
|
+
}
|
|
173
|
+
return types;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Decode escaped key (simplified version)
|
|
178
|
+
* @param {string} key - Escaped key
|
|
179
|
+
* @returns {string} - Decoded key
|
|
180
|
+
*/
|
|
181
|
+
function decodeEscapedKey(key) {
|
|
182
|
+
// This is a simplified decoder - in practice you'd want more robust escaping
|
|
183
|
+
return key.replace(/\\"/g, '"').replace(/\\\\/g, "\\");
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Convert numbered map back to ordered list
|
|
188
|
+
* @param {object} numberedMap - Map with numeric string keys
|
|
189
|
+
* @returns {Array} - Ordered array
|
|
190
|
+
*/
|
|
191
|
+
function messageToOrderedList(numberedMap) {
|
|
192
|
+
var keys = Object.keys(numberedMap).filter(function (key) {
|
|
193
|
+
return /^\d+$/.test(key);
|
|
194
|
+
}).map(function (key) {
|
|
195
|
+
return parseInt(key, 10);
|
|
196
|
+
}).sort(function (a, b) {
|
|
197
|
+
return a - b;
|
|
198
|
+
});
|
|
199
|
+
return keys.map(function (key) {
|
|
200
|
+
return numberedMap[key.toString()];
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Filter default keys (simplified - removes common defaults)
|
|
206
|
+
* @param {object} message - Message object
|
|
207
|
+
* @returns {object} - Filtered message
|
|
208
|
+
*/
|
|
209
|
+
function filterDefaultKeys(message) {
|
|
210
|
+
// This is a placeholder - implement based on your needs
|
|
211
|
+
return message;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Decode a value based on its type
|
|
216
|
+
* @param {string} type - Type identifier
|
|
217
|
+
* @param {*} value - Encoded value
|
|
218
|
+
* @returns {*} - Decoded value
|
|
219
|
+
*/
|
|
220
|
+
function decodeValue(type, value) {
|
|
221
|
+
switch (type.toLowerCase()) {
|
|
222
|
+
case "integer":
|
|
223
|
+
return parseInt(parseStructuredItem(value), 10);
|
|
224
|
+
case "float":
|
|
225
|
+
return parseFloat(value);
|
|
226
|
+
case "boolean":
|
|
227
|
+
// SF boolean format: ?1 = true, ?0 = false
|
|
228
|
+
// Convert to native boolean, will be encoded as "atom" type
|
|
229
|
+
if (value === "?1") return true;
|
|
230
|
+
if (value === "?0") return false;
|
|
231
|
+
// Fallback for other formats
|
|
232
|
+
return value === "true" || value === "1";
|
|
233
|
+
case "atom":
|
|
234
|
+
var atomItem = parseStructuredItem(value);
|
|
235
|
+
var atomName = atomItem.replace(/^"|"$/g, ""); // Remove quotes
|
|
236
|
+
// Convert to Symbol to preserve atom type through round-trip
|
|
237
|
+
// Special cases for common atoms that JS has native types for
|
|
238
|
+
if (atomName === "true") return true;
|
|
239
|
+
if (atomName === "false") return false;
|
|
240
|
+
if (atomName === "null") return null;
|
|
241
|
+
return Symbol["for"](atomName);
|
|
242
|
+
case "list":
|
|
243
|
+
return parseStructuredList(value).map(function (item) {
|
|
244
|
+
if (typeof item === "string" && item.startsWith("(ao-type-")) {
|
|
245
|
+
var match = item.match(/^\(ao-type-(.+?)\) (.+)$/);
|
|
246
|
+
if (match) {
|
|
247
|
+
var _match2 = _slicedToArray(match, 3),
|
|
248
|
+
itemType = _match2[1],
|
|
249
|
+
itemValue = _match2[2];
|
|
250
|
+
return decodeValue(itemType, itemValue);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return item;
|
|
254
|
+
});
|
|
255
|
+
case "binary":
|
|
256
|
+
return value;
|
|
257
|
+
default:
|
|
258
|
+
return value;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Parse structured field item (simplified)
|
|
264
|
+
* @param {string} value - Structured field value
|
|
265
|
+
* @returns {*} - Parsed value
|
|
266
|
+
*/
|
|
267
|
+
function parseStructuredItem(value) {
|
|
268
|
+
// Handle non-string values (e.g., numbers from HyperBEAM responses)
|
|
269
|
+
if (typeof value !== "string") return String(value);
|
|
270
|
+
if (value.startsWith('"') && value.endsWith('"')) {
|
|
271
|
+
return value.slice(1, -1); // Remove quotes
|
|
272
|
+
}
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Parse structured field list (simplified)
|
|
278
|
+
* @param {string} value - Structured field list
|
|
279
|
+
* @returns {Array} - Parsed list
|
|
280
|
+
*/
|
|
281
|
+
function parseStructuredList(value) {
|
|
282
|
+
if (typeof value !== "string") return [value];
|
|
283
|
+
return value.split(", ").map(function (item) {
|
|
284
|
+
if (item.startsWith('"') && item.endsWith('"')) {
|
|
285
|
+
// Remove quotes and unescape SF string escapes
|
|
286
|
+
// In SF strings: \" = " and \\ = \
|
|
287
|
+
return item.slice(1, -1).replace(/\\"/g, '"') // \" -> "
|
|
288
|
+
.replace(/\\\\/g, '\\'); // \\ -> \
|
|
289
|
+
}
|
|
290
|
+
return item;
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Convert rich message to TABM (mirrors Erlang's from/1)
|
|
296
|
+
* @param {object} msg - Rich message
|
|
297
|
+
* @returns {object} - TABM
|
|
298
|
+
*/
|
|
299
|
+
function from(msg) {
|
|
300
|
+
// Handle binary input - passthrough
|
|
301
|
+
if (msg instanceof Buffer || msg instanceof Uint8Array) {
|
|
302
|
+
return msg;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Handle non-object values - passthrough
|
|
306
|
+
if (_typeof(msg) !== "object" || msg === null) {
|
|
307
|
+
return msg;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Handle arrays - convert to numbered map with .="list" in ao-types
|
|
311
|
+
// Mirrors Erlang: from(List, Req, Opts) when is_list(List)
|
|
312
|
+
if (Array.isArray(msg)) {
|
|
313
|
+
// Convert to numbered map (1-based indexing like Erlang)
|
|
314
|
+
var numberedMap = {};
|
|
315
|
+
msg.forEach(function (item, idx) {
|
|
316
|
+
numberedMap[(idx + 1).toString()] = item;
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
// Recursively process the numbered map
|
|
320
|
+
var _result = from(numberedMap);
|
|
321
|
+
|
|
322
|
+
// Add .="list" to ao-types to indicate this message is a list
|
|
323
|
+
var existingAoTypes = _result["ao-types"] || "";
|
|
324
|
+
if (existingAoTypes) {
|
|
325
|
+
_result["ao-types"] = '.="list", ' + existingAoTypes;
|
|
326
|
+
} else {
|
|
327
|
+
_result["ao-types"] = '.="list"';
|
|
328
|
+
}
|
|
329
|
+
return _result;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Process keys - preserve original case to match Erlang behavior
|
|
333
|
+
// HTTP headers are case-insensitive but JSON/map keys preserve case
|
|
334
|
+
var keysMap = {};
|
|
335
|
+
for (var _i3 = 0, _Object$entries3 = Object.entries(msg); _i3 < _Object$entries3.length; _i3++) {
|
|
336
|
+
var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2),
|
|
337
|
+
key = _Object$entries3$_i[0],
|
|
338
|
+
value = _Object$entries3$_i[1];
|
|
339
|
+
keysMap[key] = value;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Get sorted keys (preserving case)
|
|
343
|
+
var sortedKeys = Object.keys(keysMap).sort();
|
|
344
|
+
var types = [];
|
|
345
|
+
var values = [];
|
|
346
|
+
|
|
347
|
+
// Process each key in sorted order
|
|
348
|
+
var _iterator2 = _createForOfIteratorHelper(sortedKeys),
|
|
349
|
+
_step2;
|
|
350
|
+
try {
|
|
351
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
352
|
+
var _key = _step2.value;
|
|
353
|
+
var _value = keysMap[_key];
|
|
354
|
+
|
|
355
|
+
// Handle empty binaries/strings - just include as-is, no type annotation
|
|
356
|
+
// (Erlang doesn't add empty-binary type, it just keeps the empty binary)
|
|
357
|
+
if (_value === "" || _value instanceof Buffer && _value.length === 0) {
|
|
358
|
+
values.push([_key, _value]);
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Empty arrays - convert to numbered map with .="list" in ao-types
|
|
363
|
+
// (Erlang doesn't add empty-list type, just the list marker)
|
|
364
|
+
if (Array.isArray(_value) && _value.length === 0) {
|
|
365
|
+
values.push([_key, from(_value)]);
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Empty objects - just include as-is, no type annotation
|
|
370
|
+
// (Erlang doesn't add empty-message type, it just keeps the empty map)
|
|
371
|
+
if (_typeof(_value) === "object" && _value !== null && !Array.isArray(_value) && !(_value instanceof Buffer) && Object.keys(_value).length === 0) {
|
|
372
|
+
values.push([_key, _value]);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Handle binary/string values
|
|
377
|
+
if (_value instanceof Buffer || _value instanceof Uint8Array) {
|
|
378
|
+
values.push([_key, _value]);
|
|
379
|
+
continue;
|
|
380
|
+
}
|
|
381
|
+
if (typeof _value === "string") {
|
|
382
|
+
values.push([_key, _value]);
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Handle nested maps
|
|
387
|
+
if (_typeof(_value) === "object" && !Array.isArray(_value) && _value !== null) {
|
|
388
|
+
values.push([_key, from(_value)]);
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// Handle arrays - from() converts to numbered map with .="list" in ao-types
|
|
393
|
+
if (Array.isArray(_value) && _value.length > 0) {
|
|
394
|
+
values.push([_key, from(_value)]);
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// Handle typed values (need encoding)
|
|
399
|
+
if (_typeof(_value) === "symbol" || typeof _value === "number" || typeof _value === "boolean" || _value === null) {
|
|
400
|
+
var _encodeValue = encodeValue(_value),
|
|
401
|
+
_encodeValue2 = _slicedToArray(_encodeValue, 2),
|
|
402
|
+
type = _encodeValue2[0],
|
|
403
|
+
encoded = _encodeValue2[1];
|
|
404
|
+
types.push([_key, type]);
|
|
405
|
+
values.push([_key, encoded]);
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// Build result
|
|
411
|
+
} catch (err) {
|
|
412
|
+
_iterator2.e(err);
|
|
413
|
+
} finally {
|
|
414
|
+
_iterator2.f();
|
|
415
|
+
}
|
|
416
|
+
var result = {};
|
|
417
|
+
|
|
418
|
+
// Add ao-types if present
|
|
419
|
+
if (types.length > 0) {
|
|
420
|
+
result["ao-types"] = types.map(function (_ref) {
|
|
421
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
422
|
+
k = _ref2[0],
|
|
423
|
+
t = _ref2[1];
|
|
424
|
+
return "".concat(k, "=\"").concat(t, "\"");
|
|
425
|
+
}).join(", ");
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Add values (but NOT empty values)
|
|
429
|
+
for (var _i4 = 0, _values = values; _i4 < _values.length; _i4++) {
|
|
430
|
+
var _values$_i = _slicedToArray(_values[_i4], 2),
|
|
431
|
+
k = _values$_i[0],
|
|
432
|
+
v = _values$_i[1];
|
|
433
|
+
result[k] = v;
|
|
434
|
+
}
|
|
435
|
+
return result;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Encode a value with its type
|
|
440
|
+
*/
|
|
441
|
+
function encodeValue(value) {
|
|
442
|
+
// Null (as atom) - use token format (unquoted)
|
|
443
|
+
if (value === null) {
|
|
444
|
+
return ["atom", "null"];
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Integer
|
|
448
|
+
if (typeof value === "number" && Number.isInteger(value)) {
|
|
449
|
+
return ["integer", value.toString()];
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
// Float
|
|
453
|
+
if (typeof value === "number") {
|
|
454
|
+
// Format like Erlang's float_to_binary - scientific notation with full precision
|
|
455
|
+
// Erlang's float_to_binary/1 uses ~20 decimal digits and keeps trailing zeros
|
|
456
|
+
var str = value.toExponential(20);
|
|
457
|
+
// Ensure 2-digit exponent with sign
|
|
458
|
+
str = str.replace(/e([+-])(\d)$/, "e$10$2");
|
|
459
|
+
return ["float", str];
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Boolean (as atom) - use token format (unquoted)
|
|
463
|
+
if (typeof value === "boolean") {
|
|
464
|
+
return ["atom", value.toString()];
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Symbol (as atom) - use token format (unquoted)
|
|
468
|
+
if (_typeof(value) === "symbol") {
|
|
469
|
+
var name = Symbol.keyFor(value) || value.description || "";
|
|
470
|
+
return ["atom", name];
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// List
|
|
474
|
+
if (Array.isArray(value)) {
|
|
475
|
+
var parts = [];
|
|
476
|
+
var _iterator3 = _createForOfIteratorHelper(value),
|
|
477
|
+
_step3;
|
|
478
|
+
try {
|
|
479
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
480
|
+
var item = _step3.value;
|
|
481
|
+
if (item instanceof Buffer) {
|
|
482
|
+
// Empty buffer => empty string
|
|
483
|
+
parts.push(item.length === 0 ? '""' : "\"".concat(item.toString(), "\""));
|
|
484
|
+
} else if (typeof item === "string") {
|
|
485
|
+
parts.push("\"".concat(item, "\""));
|
|
486
|
+
} else {
|
|
487
|
+
var _encodeValue3 = encodeValue(item),
|
|
488
|
+
_encodeValue4 = _slicedToArray(_encodeValue3, 2),
|
|
489
|
+
itemType = _encodeValue4[0],
|
|
490
|
+
itemEncoded = _encodeValue4[1];
|
|
491
|
+
if (itemType === "list") {
|
|
492
|
+
// Escape nested list quotes
|
|
493
|
+
var escaped = itemEncoded.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
494
|
+
parts.push("\"(ao-type-list) ".concat(escaped, "\""));
|
|
495
|
+
} else if (itemType === "atom") {
|
|
496
|
+
// Escape atom quotes
|
|
497
|
+
var _escaped = itemEncoded.replace(/"/g, '\\"');
|
|
498
|
+
parts.push("\"(ao-type-atom) ".concat(_escaped, "\""));
|
|
499
|
+
} else {
|
|
500
|
+
parts.push("\"(ao-type-".concat(itemType, ") ").concat(itemEncoded, "\""));
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
} catch (err) {
|
|
505
|
+
_iterator3.e(err);
|
|
506
|
+
} finally {
|
|
507
|
+
_iterator3.f();
|
|
508
|
+
}
|
|
509
|
+
return ["list", parts.join(", ")];
|
|
510
|
+
}
|
|
511
|
+
if (value instanceof Buffer) {
|
|
512
|
+
return ["binary", value];
|
|
513
|
+
}
|
|
514
|
+
return ["unknown", String(value)];
|
|
515
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.toAddr = toAddr;
|
|
7
|
+
var _fastSha = _interopRequireDefault(require("fast-sha256"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
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); }
|
|
10
|
+
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; } } }; }
|
|
11
|
+
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; } }
|
|
12
|
+
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; }
|
|
13
|
+
function base64urlDecode(str) {
|
|
14
|
+
str = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
15
|
+
var pad = str.length % 4;
|
|
16
|
+
if (pad === 2) str += "==";else if (pad === 3) str += "=";else if (pad !== 0) throw new Error("Invalid base64url string");
|
|
17
|
+
var bin = atob(str);
|
|
18
|
+
var bytes = new Uint8Array(bin.length);
|
|
19
|
+
for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);
|
|
20
|
+
return bytes;
|
|
21
|
+
}
|
|
22
|
+
function base64urlEncode(bytes) {
|
|
23
|
+
var bin = "";
|
|
24
|
+
var _iterator = _createForOfIteratorHelper(bytes),
|
|
25
|
+
_step;
|
|
26
|
+
try {
|
|
27
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
28
|
+
var b = _step.value;
|
|
29
|
+
bin += String.fromCharCode(b);
|
|
30
|
+
}
|
|
31
|
+
} catch (err) {
|
|
32
|
+
_iterator.e(err);
|
|
33
|
+
} finally {
|
|
34
|
+
_iterator.f();
|
|
35
|
+
}
|
|
36
|
+
var b64 = btoa(bin);
|
|
37
|
+
return b64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
38
|
+
}
|
|
39
|
+
function toAddr(n) {
|
|
40
|
+
if (_typeof(n) === "object" && typeof n.n === "string") n = n.n;
|
|
41
|
+
var pubBytes = base64urlDecode(n);
|
|
42
|
+
var hash = (0, _fastSha["default"])(pubBytes);
|
|
43
|
+
return base64urlEncode(hash);
|
|
44
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a Buffer to string if it contains valid UTF-8 text
|
|
3
|
+
* @param {Buffer} buffer - Buffer to check and potentially convert
|
|
4
|
+
* @returns {string|Buffer} - String if valid UTF-8, otherwise original Buffer
|
|
5
|
+
*/
|
|
6
|
+
export default function bin_to_str(buffer) {
|
|
7
|
+
if (!Buffer.isBuffer(buffer)) {
|
|
8
|
+
return buffer
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Empty buffer stays as buffer
|
|
12
|
+
if (buffer.length === 0) {
|
|
13
|
+
return buffer
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
const str = buffer.toString("utf8")
|
|
18
|
+
// Check if it's valid UTF-8 by seeing if it round-trips correctly
|
|
19
|
+
if (Buffer.from(str, "utf8").equals(buffer)) {
|
|
20
|
+
// Additional check: ensure all characters are printable or common whitespace
|
|
21
|
+
// This prevents converting binary data that happens to be valid UTF-8
|
|
22
|
+
let isPrintable = true
|
|
23
|
+
for (let i = 0; i < str.length; i++) {
|
|
24
|
+
const code = str.charCodeAt(i)
|
|
25
|
+
// Allow printable ASCII (32-126) and common whitespace (tab, newline, carriage return)
|
|
26
|
+
if (
|
|
27
|
+
!(code >= 32 && code <= 126) &&
|
|
28
|
+
code !== 9 &&
|
|
29
|
+
code !== 10 &&
|
|
30
|
+
code !== 13
|
|
31
|
+
) {
|
|
32
|
+
isPrintable = false
|
|
33
|
+
break
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (isPrintable) {
|
|
38
|
+
return str
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
// Not valid UTF-8, return original buffer
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return buffer
|
|
46
|
+
}
|