3d9b4ce392
First half of the browser-native bus SDK (issue 0001, Phase 1): - crypto.ts: Ed25519 sign/verify (@noble), ChaCha20-Poly1305 AEAD (@noble), endpoint id (sha256+base64url), and the anonymous sealed box for room-key distribution. The sealed-box nonce is BLAKE2b-192 over ephPub||recipientPub, matching Go's nacl/box.SealAnonymous (NOT SHA-512) so a Go-sealed key opens here. - frame.ts: the Frame wire format, reproducing Go encoding/json byte-for-byte — struct field order, omitempty rules, base64-std byte fields, and the default HTML escaping (<, >, &, U+2028/U+2029) — plus sign/verify over canonical bytes. vectors.test.ts checks all of it against the golden vectors generated by unibus cmd/busvectors. 11/11 green: endpoint id, Ed25519 (incl. frame signature), AEAD seal+open, sealed box open + round-trip, and frame signing-bytes + wire marshal. This pins cross-language interop with Go/Kotlin peers. Adds @noble/ciphers, tweetnacl (runtime) and vitest (dev).
36 lines
857 B
JSON
36 lines
857 B
JSON
{
|
|
"name": "unibus-web",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@mantine/core": "^9.3.0",
|
|
"@mantine/hooks": "^9.3.0",
|
|
"@noble/ciphers": "^2.2.0",
|
|
"@noble/curves": "^2.2.0",
|
|
"@noble/hashes": "^2.2.0",
|
|
"@scure/bip39": "^2.2.0",
|
|
"@tabler/icons-react": "^3.36.0",
|
|
"react": "^19.2.0",
|
|
"react-dom": "^19.2.0",
|
|
"tweetnacl": "^1.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.2.0",
|
|
"@types/react-dom": "^19.2.0",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"postcss": "^8.4.49",
|
|
"postcss-preset-mantine": "^1.17.0",
|
|
"postcss-simple-vars": "^7.0.1",
|
|
"typescript": "~5.6.3",
|
|
"vite": "^6.0.3",
|
|
"vitest": "^4.1.8"
|
|
}
|
|
}
|