Suite of AT Protocol TypeScript libraries built on web standards
20
fork

Configure Feed

Select the types of activity you want to include in your feed.

THE RAPTURE

+104 -129
+32
.github/workflows/publish.yml
··· 1 + name: workspace publish 2 + 3 + on: 4 + push: 5 + branches: 6 + - main 7 + 8 + jobs: 9 + publish: 10 + runs-on: ubuntu-latest 11 + 12 + permissions: 13 + contents: read 14 + id-token: write 15 + 16 + steps: 17 + - name: Clone repository 18 + uses: actions/checkout@v5 19 + 20 + - name: Set up Deno 21 + uses: denoland/setup-deno@v2 22 + with: 23 + cache: true 24 + 25 + - name: Format 26 + run: deno fmt --check 27 + 28 + - name: Test 29 + run: deno test -A 30 + 31 + - name: Publish to JSR 32 + run: deno publish
+4 -6
common/deno.json
··· 5 5 "license": "MIT", 6 6 "imports": { 7 7 "@ipld/dag-cbor": "npm:@ipld/dag-cbor@^9.2.5", 8 - "@logtape/file": "jsr:@logtape/file@^1.0.4", 9 - "@logtape/logtape": "jsr:@logtape/logtape@^1.0.4", 8 + "@logtape/file": "jsr:@logtape/file@^1.2.0-dev.344+834f24a9", 9 + "@logtape/logtape": "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9", 10 10 "@std/assert": "jsr:@std/assert@^1.0.14", 11 - "@std/bytes": "jsr:@std/bytes@^1.0.6", 12 11 "@std/cbor": "jsr:@std/cbor@^0.1.8", 13 12 "@std/crypto": "jsr:@std/crypto@^1.0.5", 14 13 "@std/encoding": "jsr:@std/encoding@^1.0.10", 15 14 "@std/fs": "jsr:@std/fs@^1.0.19", 16 15 "@std/io": "jsr:@std/io@^0.225.2", 17 16 "@std/streams": "jsr:@std/streams@^1.0.12", 18 - "multiformats": "npm:multiformats@^13.4.0", 19 - "uint8arrays": "npm:uint8arrays@^5.1.0", 20 - "zod": "jsr:@zod/zod@^4.1.5" 17 + "multiformats": "npm:multiformats@^13.4.1", 18 + "zod": "jsr:@zod/zod@^4.1.11" 21 19 } 22 20 }
+1 -1
common/ipld.ts
··· 7 7 import { schema } from "./types.ts"; 8 8 import * as check from "./check.ts"; 9 9 import { crypto } from "@std/crypto"; 10 - import { concat, equals, fromString, toString } from "@atp/ui8"; 10 + import { concat, equals, fromString, toString } from "@atp/bytes"; 11 11 12 12 export const cborEncode = cborCodec.encode; 13 13 export const cborDecode = cborCodec.decode;
+1 -1
common/streams.ts
··· 1 - import { concat } from "@std/bytes"; 1 + import { concat } from "@atp/bytes"; 2 2 import { Buffer } from "@std/io"; 3 3 4 4 export const forwardStreamErrors = (..._streams: ReadableStream[]) => {
+1 -1
common/tests/ipld-multi_test.ts
··· 1 1 import { CID } from "multiformats/cid"; 2 - import * as ui8 from "uint8arrays"; 2 + import * as ui8 from "@atp/bytes"; 3 3 import { cborDecodeMulti, cborEncode, type CborObject } from "../mod.ts"; 4 4 import { assert, assertEquals } from "@std/assert"; 5 5
+1 -1
common/tests/ipld_test.ts
··· 1 - import * as ui8 from "uint8arrays"; 1 + import * as ui8 from "@atp/bytes"; 2 2 import { 3 3 cborDecode, 4 4 cborEncode,
+1 -2
crypto/deno.json
··· 7 7 "@noble/curves": "jsr:@noble/curves@^2.0.1", 8 8 "@noble/hashes": "jsr:@noble/hashes@^2.0.1", 9 9 "@std/assert": "jsr:@std/assert@^1.0.14", 10 - "multiformats": "npm:multiformats@^13.4.1", 11 - "uint8arrays": "npm:uint8arrays@^5.1.0" 10 + "multiformats": "npm:multiformats@^13.4.1" 12 11 } 13 12 }
+1 -1
crypto/did.ts
··· 1 - import * as uint8arrays from "@atp/ui8"; 1 + import * as uint8arrays from "@atp/bytes"; 2 2 import { BASE58_MULTIBASE_PREFIX, DID_KEY_PREFIX } from "./const.ts"; 3 3 import { plugins } from "./plugins.ts"; 4 4 import { extractMultikey, extractPrefixedBytes, hasPrefix } from "./utils.ts";
+1 -1
crypto/multibase.ts
··· 1 - import { fromString, type SupportedEncodings, toString } from "@atp/ui8"; 1 + import { fromString, type SupportedEncodings, toString } from "@atp/bytes"; 2 2 3 3 export const multibaseToBytes = (mb: string): Uint8Array => { 4 4 const base = mb[0];
+1 -1
crypto/p256/encoding.ts
··· 1 1 import { p256 } from "@noble/curves/nist.js"; 2 - import { toString } from "@atp/ui8"; 2 + import { toString } from "@atp/bytes"; 3 3 4 4 export const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => { 5 5 // Check if key is already compressed (33 bytes starting with 0x02 or 0x03)
+5 -2
crypto/p256/keypair.ts
··· 1 1 import { p256 } from "@noble/curves/nist.js"; 2 2 import { sha256 } from "@noble/hashes/sha2.js"; 3 - import { fromString as ui8FromString, toString as ui8ToString } from "@atp/ui8"; 4 - import type { SupportedEncodings } from "uint8arrays/to-string"; 3 + import { 4 + fromString as ui8FromString, 5 + type SupportedEncodings, 6 + toString as ui8ToString, 7 + } from "@atp/bytes"; 5 8 import { P256_JWT_ALG } from "../const.ts"; 6 9 import * as did from "../did.ts"; 7 10 import type { Keypair } from "../types.ts";
+1 -1
crypto/p256/operations.ts
··· 1 1 import { p256 } from "@noble/curves/nist.js"; 2 2 import { sha256 } from "@noble/hashes/sha2.js"; 3 - import { equals as ui8equals } from "@atp/ui8"; 3 + import { equals as ui8equals } from "@atp/bytes"; 4 4 import { P256_DID_PREFIX } from "../const.ts"; 5 5 import type { VerifyOptions } from "../types.ts"; 6 6 import { extractMultikey, extractPrefixedBytes, hasPrefix } from "../utils.ts";
+1 -1
crypto/random.ts
··· 1 1 import * as noble from "@noble/hashes/utils.js"; 2 - import { type SupportedEncodings, toString } from "@atp/ui8"; 2 + import { type SupportedEncodings, toString } from "@atp/bytes"; 3 3 import { sha256 } from "./sha.ts"; 4 4 5 5 export const randomBytes = noble.randomBytes;
+1 -1
crypto/secp256k1/encoding.ts
··· 1 1 import { secp256k1 as k256 } from "@noble/curves/secp256k1.js"; 2 - import { toString } from "@atp/ui8"; 2 + import { toString } from "@atp/bytes"; 3 3 4 4 export const compressPubkey = (pubkeyBytes: Uint8Array): Uint8Array => { 5 5 // Check if key is already compressed (33 bytes starting with 0x02 or 0x03)
+1 -1
crypto/secp256k1/keypair.ts
··· 4 4 fromString as ui8FromString, 5 5 type SupportedEncodings, 6 6 toString as ui8ToString, 7 - } from "@atp/ui8"; 7 + } from "@atp/bytes"; 8 8 import { SECP256K1_JWT_ALG } from "../const.ts"; 9 9 import * as did from "../did.ts"; 10 10 import type { Keypair } from "../types.ts";
+1 -1
crypto/secp256k1/operations.ts
··· 1 1 import { secp256k1 as k256 } from "@noble/curves/secp256k1.js"; 2 2 import { sha256 } from "@noble/hashes/sha2.js"; 3 - import { equals } from "@atp/ui8"; 3 + import { equals } from "@atp/bytes"; 4 4 import { SECP256K1_DID_PREFIX } from "../const.ts"; 5 5 import type { VerifyOptions } from "../types.ts"; 6 6 import { extractMultikey, extractPrefixedBytes, hasPrefix } from "../utils.ts";
+1 -1
crypto/sha.ts
··· 1 1 import * as noble from "@noble/hashes/sha2.js"; 2 - import * as uint8arrays from "@atp/ui8"; 2 + import * as uint8arrays from "@atp/bytes"; 3 3 4 4 // takes either bytes of utf8 input 5 5 // @TODO this can be sync
+1 -1
crypto/tests/did_test.ts
··· 1 - import { equals, fromString } from "@atp/ui8"; 1 + import { equals, fromString } from "@atp/bytes"; 2 2 import { P256Keypair, Secp256k1Keypair } from "../mod.ts"; 3 3 import * as did from "../did.ts"; 4 4 import { assert, assertEquals } from "@std/assert";
+1 -1
crypto/tests/generate-vectors.ts
··· 1 1 import { writeFileSync } from "node:fs"; 2 2 import { dirname, join } from "node:path"; 3 3 import { fileURLToPath } from "node:url"; 4 - import { equals, fromString, toString } from "@atp/ui8"; 4 + import { equals, fromString, toString } from "@atp/bytes"; 5 5 import { cborEncode } from "@atp/common"; 6 6 import { 7 7 bytesToMultibase,
+1 -1
crypto/tests/signatures_test.ts
··· 1 1 import fs from "node:fs"; 2 - import * as uint8arrays from "@atp/ui8"; 2 + import * as uint8arrays from "@atp/bytes"; 3 3 import { 4 4 multibaseToBytes, 5 5 P256_JWT_ALG,
+1 -1
crypto/utils.ts
··· 1 - import { equals, fromString } from "@atp/ui8"; 1 + import { equals, fromString } from "@atp/bytes"; 2 2 import { BASE58_MULTIBASE_PREFIX, DID_KEY_PREFIX } from "./const.ts"; 3 3 4 4 export const extractMultikey = (did: string): string => {
+1 -1
crypto/verify.ts
··· 1 - import { fromString } from "@atp/ui8"; 1 + import { fromString } from "@atp/bytes"; 2 2 import { parseDidKey } from "./did.ts"; 3 3 import { plugins } from "./plugins.ts"; 4 4 import type { VerifyOptions } from "./types.ts";
+1 -1
deno.json
··· 1 1 { 2 2 "workspace": [ 3 3 "common", 4 - "ui8", 4 + "bytes", 5 5 "syntax", 6 6 "crypto", 7 7 "lexicon",
+30 -85
deno.lock
··· 7 7 "jsr:@cliffy/internal@1.0.0-rc.8": "1.0.0-rc.8", 8 8 "jsr:@cliffy/table@1.0.0-rc.8": "1.0.0-rc.8", 9 9 "jsr:@david/code-block-writer@13": "13.0.3", 10 - "jsr:@hono/hono@^4.7.10": "4.9.6", 11 - "jsr:@logtape/file@*": "1.0.4", 12 - "jsr:@logtape/file@^1.0.4": "1.0.4", 13 - "jsr:@logtape/logtape@*": "1.0.4", 14 - "jsr:@logtape/logtape@^1.0.4": "1.0.4", 10 + "jsr:@hono/hono@^4.9.8": "4.9.8", 11 + "jsr:@logtape/file@^1.2.0-dev.344+834f24a9": "1.2.0-dev.344+834f24a9", 12 + "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9": "1.2.0-dev.344+834f24a9", 15 13 "jsr:@noble/curves@^2.0.1": "2.0.1", 16 14 "jsr:@noble/hashes@2": "2.0.1", 17 15 "jsr:@noble/hashes@^2.0.1": "2.0.1", 18 16 "jsr:@std/assert@*": "1.0.14", 19 17 "jsr:@std/assert@^1.0.14": "1.0.14", 20 - "jsr:@std/bytes@*": "1.0.6", 21 - "jsr:@std/bytes@^1.0.2": "1.0.6", 22 18 "jsr:@std/bytes@^1.0.5": "1.0.6", 23 19 "jsr:@std/bytes@^1.0.6": "1.0.6", 24 20 "jsr:@std/cbor@~0.1.8": "0.1.8", ··· 31 27 "jsr:@std/fs@^1.0.19": "1.0.19", 32 28 "jsr:@std/internal@^1.0.10": "1.0.10", 33 29 "jsr:@std/internal@^1.0.9": "1.0.10", 34 - "jsr:@std/io@*": "0.224.9", 35 30 "jsr:@std/io@~0.224.9": "0.224.9", 36 31 "jsr:@std/io@~0.225.2": "0.225.2", 37 32 "jsr:@std/path@1": "1.1.2", ··· 42 37 "jsr:@std/text@~1.0.7": "1.0.16", 43 38 "jsr:@ts-morph/common@0.27": "0.27.0", 44 39 "jsr:@ts-morph/ts-morph@26": "26.0.0", 45 - "jsr:@zod/zod@^4.0.17": "4.1.11", 46 40 "jsr:@zod/zod@^4.1.11": "4.1.11", 47 - "jsr:@zod/zod@^4.1.5": "4.1.11", 48 - "npm:@atproto/crypto@~0.4.4": "0.4.4", 49 41 "npm:@ipld/dag-cbor@^9.2.5": "9.2.5", 50 42 "npm:@types/node@*": "24.2.0", 51 43 "npm:cbor-x@*": "1.6.0", 52 44 "npm:get-port@^7.1.0": "7.1.0", 53 45 "npm:http-errors@2": "2.0.0", 54 46 "npm:key-encoder@^2.0.3": "2.0.3", 55 - "npm:multiformats@*": "13.4.0", 56 - "npm:multiformats@^13.4.0": "13.4.0", 57 47 "npm:multiformats@^13.4.1": "13.4.1", 58 48 "npm:prettier@^3.6.2": "3.6.2", 59 - "npm:rate-limiter-flexible@^2.4.1": "2.4.2", 60 - "npm:uint8arrays@3.0.0": "3.0.0", 61 - "npm:uint8arrays@^5.1.0": "5.1.0", 62 - "npm:ws@^8.12.0": "8.18.3", 49 + "npm:rate-limiter-flexible@^2.4.2": "2.4.2", 50 + "npm:ws@^8.18.3": "8.18.3", 63 51 "npm:zod@^4.1.11": "4.1.11" 64 52 }, 65 53 "jsr": { ··· 100 88 "@david/code-block-writer@13.0.3": { 101 89 "integrity": "f98c77d320f5957899a61bfb7a9bead7c6d83ad1515daee92dbacc861e13bb7f" 102 90 }, 103 - "@hono/hono@4.9.6": { 104 - "integrity": "b85abb0013d167a290b1808d1d4d542dee269df31d4f47122023259fdd7e184b" 91 + "@hono/hono@4.9.8": { 92 + "integrity": "908150f13e90181a051a3af3bf15203aff00190682afedfd38824d0cb9299a95" 105 93 }, 106 - "@logtape/file@1.0.4": { 107 - "integrity": "80f49feb4826fa748ae3ebd1eaf2fa7f23f1820c84d5402a1f7de76f529464e4", 94 + "@logtape/file@1.2.0-dev.344+834f24a9": { 95 + "integrity": "4d674c368f8130dc1403c5c93a316726a65d6b17e36b094780f1b2ed301f5e1b", 108 96 "dependencies": [ 109 - "jsr:@logtape/logtape@^1.0.4" 97 + "jsr:@logtape/logtape" 110 98 ] 111 99 }, 112 - "@logtape/logtape@1.0.4": { 113 - "integrity": "6ada87764d995b1033c352a17fd9e20b217f3672083bc2d8debe356eac03fe10" 100 + "@logtape/logtape@1.2.0-dev.344+834f24a9": { 101 + "integrity": "204222be0f94cd1b64a500e2dcdea22a1618a086fc531b054351e3cfa079c435" 114 102 }, 115 103 "@noble/curves@2.0.1": { 116 104 "integrity": "21ef41d207a203f60ba37a4fdcbc4f4a545b10c5dab7f293889f18292f81ab23", ··· 157 145 "integrity": "e3be62ce42cab0e177c27698e5d9800122f67b766a0bea6ca4867886cbde8cf7" 158 146 }, 159 147 "@std/io@0.224.9": { 160 - "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3", 161 - "dependencies": [ 162 - "jsr:@std/bytes@^1.0.2" 163 - ] 148 + "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3" 164 149 }, 165 150 "@std/io@0.225.2": { 166 151 "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7", ··· 208 193 } 209 194 }, 210 195 "npm": { 211 - "@atproto/crypto@0.4.4": { 212 - "integrity": "sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==", 213 - "dependencies": [ 214 - "@noble/curves", 215 - "@noble/hashes", 216 - "uint8arrays@3.0.0" 217 - ] 218 - }, 219 196 "@cbor-extract/cbor-extract-darwin-arm64@2.2.0": { 220 197 "integrity": "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==", 221 198 "os": ["darwin"], ··· 250 227 "integrity": "sha512-84wSr4jv30biui7endhobYhXBQzQE4c/wdoWlFrKcfiwH+ofaPg8fwsM8okX9cOzkkrsAsNdDyH3ou+kiLquwQ==", 251 228 "dependencies": [ 252 229 "cborg", 253 - "multiformats@13.4.0" 230 + "multiformats" 254 231 ] 255 232 }, 256 - "@noble/curves@1.9.7": { 257 - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", 258 - "dependencies": [ 259 - "@noble/hashes" 260 - ] 261 - }, 262 - "@noble/hashes@1.8.0": { 263 - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==" 264 - }, 265 233 "@types/bn.js@5.2.0": { 266 234 "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", 267 235 "dependencies": [ ··· 385 353 "minimalistic-crypto-utils@1.0.1": { 386 354 "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" 387 355 }, 388 - "multiformats@13.4.0": { 389 - "integrity": "sha512-Mkb/QcclrJxKC+vrcIFl297h52QcKh2Az/9A5vbWytbQt4225UWWWmIuSsKksdww9NkIeYcA7DkfftyLuC/JSg==" 390 - }, 391 356 "multiformats@13.4.1": { 392 357 "integrity": "sha512-VqO6OSvLrFVAYYjgsr8tyv62/rCQhPgsZUXLTqoFLSgdkgiUYKYeArbt1uWLlEpkjxQe+P0+sHlbPEte1Bi06Q==" 393 - }, 394 - "multiformats@9.9.0": { 395 - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" 396 358 }, 397 359 "node-gyp-build-optional-packages@5.1.1": { 398 360 "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", ··· 420 382 "toidentifier@1.0.1": { 421 383 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 422 384 }, 423 - "uint8arrays@3.0.0": { 424 - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", 425 - "dependencies": [ 426 - "multiformats@9.9.0" 427 - ] 428 - }, 429 - "uint8arrays@5.1.0": { 430 - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", 431 - "dependencies": [ 432 - "multiformats@13.4.0" 433 - ] 434 - }, 435 385 "undici-types@7.10.0": { 436 386 "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==" 437 387 }, ··· 454 404 }, 455 405 "workspace": { 456 406 "members": { 407 + "bytes": { 408 + "dependencies": [ 409 + "jsr:@std/assert@^1.0.14", 410 + "npm:multiformats@^13.4.1" 411 + ] 412 + }, 457 413 "common": { 458 414 "dependencies": [ 459 - "jsr:@logtape/file@^1.0.4", 460 - "jsr:@logtape/logtape@^1.0.4", 415 + "jsr:@logtape/file@^1.2.0-dev.344+834f24a9", 416 + "jsr:@logtape/logtape@^1.2.0-dev.344+834f24a9", 461 417 "jsr:@std/assert@^1.0.14", 462 - "jsr:@std/bytes@^1.0.6", 463 418 "jsr:@std/cbor@~0.1.8", 464 419 "jsr:@std/crypto@^1.0.5", 465 420 "jsr:@std/encoding@^1.0.10", 466 421 "jsr:@std/fs@^1.0.19", 467 422 "jsr:@std/io@~0.225.2", 468 423 "jsr:@std/streams@^1.0.12", 469 - "jsr:@zod/zod@^4.1.5", 424 + "jsr:@zod/zod@^4.1.11", 470 425 "npm:@ipld/dag-cbor@^9.2.5", 471 - "npm:multiformats@^13.4.0", 472 - "npm:uint8arrays@^5.1.0" 426 + "npm:multiformats@^13.4.1" 473 427 ] 474 428 }, 475 429 "crypto": { ··· 477 431 "jsr:@noble/curves@^2.0.1", 478 432 "jsr:@noble/hashes@^2.0.1", 479 433 "jsr:@std/assert@^1.0.14", 480 - "npm:multiformats@^13.4.1", 481 - "npm:uint8arrays@^5.1.0" 434 + "npm:multiformats@^13.4.1" 482 435 ] 483 436 }, 484 437 "lex-cli": { ··· 488 441 "jsr:@std/fs@^1.0.19", 489 442 "jsr:@std/path@^1.1.2", 490 443 "jsr:@ts-morph/ts-morph@26", 491 - "jsr:@zod/zod@^4.1.5", 444 + "jsr:@zod/zod@^4.1.11", 492 445 "npm:prettier@^3.6.2" 493 446 ] 494 447 }, ··· 504 457 "jsr:@std/assert@^1.0.14" 505 458 ] 506 459 }, 507 - "ui8": { 508 - "dependencies": [ 509 - "jsr:@std/assert@^1.0.14", 510 - "npm:multiformats@^13.4.1" 511 - ] 512 - }, 513 460 "xrpc": { 514 461 "dependencies": [ 515 462 "jsr:@zod/zod@^4.1.11" ··· 517 464 }, 518 465 "xrpc-server": { 519 466 "dependencies": [ 520 - "jsr:@hono/hono@^4.7.10", 467 + "jsr:@hono/hono@^4.9.8", 521 468 "jsr:@std/assert@^1.0.14", 522 469 "jsr:@std/cbor@~0.1.8", 523 470 "jsr:@std/encoding@^1.0.10", 524 - "jsr:@zod/zod@^4.0.17", 525 - "npm:@atproto/crypto@~0.4.4", 471 + "jsr:@zod/zod@^4.1.11", 526 472 "npm:get-port@^7.1.0", 527 473 "npm:http-errors@2", 528 474 "npm:key-encoder@^2.0.3", 529 475 "npm:multiformats@^13.4.1", 530 - "npm:rate-limiter-flexible@^2.4.1", 531 - "npm:uint8arrays@3.0.0", 532 - "npm:ws@^8.12.0" 476 + "npm:rate-limiter-flexible@^2.4.2", 477 + "npm:ws@^8.18.3" 533 478 ] 534 479 } 535 480 }
+1 -1
lex-cli/deno.json
··· 10 10 "@std/path": "jsr:@std/path@^1.1.2", 11 11 "prettier": "npm:prettier@^3.6.2", 12 12 "ts-morph": "jsr:@ts-morph/ts-morph@^26.0.0", 13 - "zod": "jsr:@zod/zod@^4.1.5" 13 + "zod": "jsr:@zod/zod@^4.1.11" 14 14 } 15 15 }
ui8/alloc.ts bytes/alloc.ts
ui8/compare.ts bytes/compare.ts
ui8/concat.ts bytes/concat.ts
+1 -1
ui8/deno.json bytes/deno.json
··· 1 1 { 2 - "name": "@atp/ui8", 2 + "name": "@atp/bytes", 3 3 "version": "0.1.0-alpha.1", 4 4 "exports": "./mod.ts", 5 5 "license": "MIT",
ui8/mod.ts bytes/mod.ts
ui8/string.ts bytes/string.ts
ui8/tests/alloc_test.ts bytes/tests/alloc_test.ts
ui8/tests/compare_test.ts bytes/tests/compare_test.ts
ui8/tests/concat_test.ts bytes/tests/concat_test.ts
ui8/tests/string_test.ts bytes/tests/string_test.ts
ui8/util.ts bytes/util.ts
ui8/xor.ts bytes/xor.ts
+4 -4
xrpc-server/auth.ts
··· 1 - import * as ui8 from "uint8arrays"; 1 + import * as ui8 from "@atp/bytes"; 2 2 import * as common from "@atp/common"; 3 3 import { MINUTE } from "@atp/common"; 4 - import * as crypto from "@atproto/crypto"; 4 + import * as crypto from "@atp/crypto"; 5 5 import { AuthRequiredError } from "./errors.ts"; 6 6 7 7 type ServiceJwtParams = { ··· 86 86 msgBytes: Uint8Array, 87 87 sigBytes: Uint8Array, 88 88 alg: string, 89 - ) => Promise<boolean>; 89 + ) => boolean; 90 90 91 91 export const verifyJwt = async ( 92 92 jwtStr: string, ··· 112 112 // service tokens are not OAuth 2.0 access tokens 113 113 // https://datatracker.ietf.org/doc/html/rfc9068 114 114 header["typ"] === "at+jwt" || 115 - // "refresh+jwt" is a non-standard type used by the @atproto packages 115 + // "refresh+jwt" is a non-standard type used by atproto packages 116 116 header["typ"] === "refresh+jwt" || 117 117 // "DPoP" proofs are not meant to be used as service tokens 118 118 // https://datatracker.ietf.org/doc/html/rfc9449
+4 -6
xrpc-server/deno.json
··· 4 4 "exports": "./mod.ts", 5 5 "license": "MIT", 6 6 "imports": { 7 - "@atproto/crypto": "npm:@atproto/crypto@^0.4.4", 8 7 "@std/assert": "jsr:@std/assert@^1.0.14", 9 8 "@std/cbor": "jsr:@std/cbor@^0.1.8", 10 9 "@std/encoding": "jsr:@std/encoding@^1.0.10", ··· 12 11 "http-errors": "npm:http-errors@^2.0.0", 13 12 "key-encoder": "npm:key-encoder@^2.0.3", 14 13 "multiformats": "npm:multiformats@^13.4.1", 15 - "zod": "jsr:@zod/zod@^4.0.17", 16 - "hono": "jsr:@hono/hono@^4.7.10", 17 - "rate-limiter-flexible": "npm:rate-limiter-flexible@^2.4.1", 18 - "uint8arrays": "npm:uint8arrays@3.0.0", 19 - "ws": "npm:ws@^8.12.0" 14 + "zod": "jsr:@zod/zod@^4.1.11", 15 + "hono": "jsr:@hono/hono@^4.9.8", 16 + "rate-limiter-flexible": "npm:rate-limiter-flexible@^2.4.2", 17 + "ws": "npm:ws@^8.18.3" 20 18 } 21 19 }
+1 -1
xrpc-server/tests/auth_test.ts
··· 1 1 import { MINUTE } from "@atp/common"; 2 - import { Secp256k1Keypair } from "@atproto/crypto"; 2 + import { Secp256k1Keypair } from "@atp/crypto"; 3 3 import type { LexiconDoc } from "@atp/lexicon"; 4 4 import { XrpcClient, XRPCError } from "@atp/xrpc"; 5 5 import * as xrpcServer from "../mod.ts";
+1 -1
xrpc-server/tests/bodies_test.ts
··· 1 1 import { cidForCbor } from "@atp/common"; 2 - import { randomBytes } from "@atproto/crypto"; 2 + import { randomBytes } from "@atp/crypto"; 3 3 import type { LexiconDoc } from "@atp/lexicon"; 4 4 import { ResponseType, XrpcClient, XRPCError } from "@atp/xrpc"; 5 5 import * as xrpcServer from "../mod.ts";
+1 -1
xrpc-server/tests/frames_test.ts
··· 1 1 import { encodeCbor } from "@std/cbor"; 2 - import * as uint8arrays from "uint8arrays"; 2 + import * as uint8arrays from "@atp/bytes"; 3 3 import { ErrorFrame, Frame, FrameType, MessageFrame } from "../mod.ts"; 4 4 import { assertEquals, assertThrows } from "@std/assert"; 5 5