atproto utils for zig
0
fork

Configure Feed

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

refactor: organize internal/ into domain subdirectories

group modules by AT Protocol domain boundaries (following bluesky-social/indigo):
syntax/ — string primitives (did, handle, nsid, tid, rkey, at_uri)
crypto/ — jwt, multibase, multicodec
identity/ — did_document, did_resolver, handle_resolver
repo/ — cbor, car, mst
xrpc/ — transport, xrpc client, json helpers
streaming/ — firehose, jetstream, sync
testing/ — interop tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

zzstoatzz caff093c 08c5f75f

+50 -50
src/internal/at_uri.zig src/internal/syntax/at_uri.zig
src/internal/car.zig src/internal/repo/car.zig
src/internal/cbor.zig src/internal/repo/cbor.zig
src/internal/did.zig src/internal/syntax/did.zig
+1 -1
src/internal/did_document.zig src/internal/identity/did_document.zig
··· 8 8 //! see: https://atproto.com/specs/did 9 9 10 10 const std = @import("std"); 11 - const Did = @import("did.zig").Did; 11 + const Did = @import("../syntax/did.zig").Did; 12 12 13 13 pub const DidDocument = struct { 14 14 allocator: std.mem.Allocator,
+2 -2
src/internal/did_resolver.zig src/internal/identity/did_resolver.zig
··· 5 5 //! see: https://atproto.com/specs/did 6 6 7 7 const std = @import("std"); 8 - const Did = @import("did.zig").Did; 8 + const Did = @import("../syntax/did.zig").Did; 9 9 const DidDocument = @import("did_document.zig").DidDocument; 10 - const HttpTransport = @import("transport.zig").HttpTransport; 10 + const HttpTransport = @import("../xrpc/transport.zig").HttpTransport; 11 11 12 12 pub const DidResolver = struct { 13 13 allocator: std.mem.Allocator,
+2 -2
src/internal/firehose.zig src/internal/streaming/firehose.zig
··· 11 11 12 12 const std = @import("std"); 13 13 const websocket = @import("websocket"); 14 - const cbor = @import("cbor.zig"); 15 - const car = @import("car.zig"); 14 + const cbor = @import("../repo/cbor.zig"); 15 + const car = @import("../repo/car.zig"); 16 16 const sync = @import("sync.zig"); 17 17 18 18 const mem = std.mem;
src/internal/handle.zig src/internal/syntax/handle.zig
+3 -3
src/internal/handle_resolver.zig src/internal/identity/handle_resolver.zig
··· 9 9 //! see: https://atproto.com/specs/handle 10 10 11 11 const std = @import("std"); 12 - const Handle = @import("handle.zig").Handle; 13 - const Did = @import("did.zig").Did; 14 - const HttpTransport = @import("transport.zig").HttpTransport; 12 + const Handle = @import("../syntax/handle.zig").Handle; 13 + const Did = @import("../syntax/did.zig").Did; 14 + const HttpTransport = @import("../xrpc/transport.zig").HttpTransport; 15 15 16 16 pub const HandleResolver = struct { 17 17 allocator: std.mem.Allocator,
+12 -12
src/internal/interop_tests.zig src/internal/testing/interop_tests.zig
··· 5 5 const std = @import("std"); 6 6 7 7 // types under test 8 - const Tid = @import("tid.zig").Tid; 9 - const Did = @import("did.zig").Did; 10 - const Handle = @import("handle.zig").Handle; 11 - const Nsid = @import("nsid.zig").Nsid; 12 - const Rkey = @import("rkey.zig").Rkey; 13 - const AtUri = @import("at_uri.zig").AtUri; 8 + const Tid = @import("../syntax/tid.zig").Tid; 9 + const Did = @import("../syntax/did.zig").Did; 10 + const Handle = @import("../syntax/handle.zig").Handle; 11 + const Nsid = @import("../syntax/nsid.zig").Nsid; 12 + const Rkey = @import("../syntax/rkey.zig").Rkey; 13 + const AtUri = @import("../syntax/at_uri.zig").AtUri; 14 14 15 15 // crypto 16 - const jwt = @import("jwt.zig"); 17 - const multibase = @import("multibase.zig"); 18 - const multicodec = @import("multicodec.zig"); 16 + const jwt = @import("../crypto/jwt.zig"); 17 + const multibase = @import("../crypto/multibase.zig"); 18 + const multicodec = @import("../crypto/multicodec.zig"); 19 19 20 - // mst 21 - const mst = @import("mst.zig"); 22 - const cbor = @import("cbor.zig"); 20 + // repo 21 + const mst = @import("../repo/mst.zig"); 22 + const cbor = @import("../repo/cbor.zig"); 23 23 24 24 // === helpers === 25 25
+1 -1
src/internal/jetstream.zig src/internal/streaming/jetstream.zig
··· 7 7 8 8 const std = @import("std"); 9 9 const websocket = @import("websocket"); 10 - const json_helpers = @import("json.zig"); 10 + const json_helpers = @import("../xrpc/json.zig"); 11 11 const sync = @import("sync.zig"); 12 12 13 13 const mem = std.mem;
src/internal/json.zig src/internal/xrpc/json.zig
+1 -1
src/internal/jwt.zig src/internal/crypto/jwt.zig
··· 7 7 8 8 const std = @import("std"); 9 9 const crypto = std.crypto; 10 - const json = @import("json.zig"); 10 + const json = @import("../xrpc/json.zig"); 11 11 const multibase = @import("multibase.zig"); 12 12 const multicodec = @import("multicodec.zig"); 13 13
+1 -1
src/internal/mst.zig src/internal/repo/mst.zig
··· 9 9 10 10 const std = @import("std"); 11 11 const cbor = @import("cbor.zig"); 12 - const multibase = @import("multibase.zig"); 12 + const multibase = @import("../crypto/multibase.zig"); 13 13 const Allocator = std.mem.Allocator; 14 14 15 15 /// compute MST tree layer for a key.
src/internal/multibase.zig src/internal/crypto/multibase.zig
src/internal/multicodec.zig src/internal/crypto/multicodec.zig
src/internal/nsid.zig src/internal/syntax/nsid.zig
src/internal/rkey.zig src/internal/syntax/rkey.zig
src/internal/sync.zig src/internal/streaming/sync.zig
src/internal/tid.zig src/internal/syntax/tid.zig
src/internal/transport.zig src/internal/xrpc/transport.zig
+1 -1
src/internal/xrpc.zig src/internal/xrpc/xrpc.zig
··· 6 6 //! see: https://atproto.com/specs/xrpc 7 7 8 8 const std = @import("std"); 9 - const Nsid = @import("nsid.zig").Nsid; 9 + const Nsid = @import("../syntax/nsid.zig").Nsid; 10 10 const HttpTransport = @import("transport.zig").HttpTransport; 11 11 12 12 pub const XrpcClient = struct {
+26 -26
src/root.zig
··· 3 3 //! parsing and validation for AT Protocol string formats. 4 4 //! DID resolution for did:plc and did:web. 5 5 6 - // string primitives 7 - pub const Tid = @import("internal/tid.zig").Tid; 8 - pub const Did = @import("internal/did.zig").Did; 9 - pub const Handle = @import("internal/handle.zig").Handle; 10 - pub const Nsid = @import("internal/nsid.zig").Nsid; 11 - pub const Rkey = @import("internal/rkey.zig").Rkey; 12 - pub const AtUri = @import("internal/at_uri.zig").AtUri; 6 + // syntax primitives 7 + pub const Tid = @import("internal/syntax/tid.zig").Tid; 8 + pub const Did = @import("internal/syntax/did.zig").Did; 9 + pub const Handle = @import("internal/syntax/handle.zig").Handle; 10 + pub const Nsid = @import("internal/syntax/nsid.zig").Nsid; 11 + pub const Rkey = @import("internal/syntax/rkey.zig").Rkey; 12 + pub const AtUri = @import("internal/syntax/at_uri.zig").AtUri; 13 13 14 - // did resolution 15 - pub const DidDocument = @import("internal/did_document.zig").DidDocument; 16 - pub const DidResolver = @import("internal/did_resolver.zig").DidResolver; 17 - pub const HandleResolver = @import("internal/handle_resolver.zig").HandleResolver; 14 + // identity resolution 15 + pub const DidDocument = @import("internal/identity/did_document.zig").DidDocument; 16 + pub const DidResolver = @import("internal/identity/did_resolver.zig").DidResolver; 17 + pub const HandleResolver = @import("internal/identity/handle_resolver.zig").HandleResolver; 18 18 19 19 // xrpc 20 - pub const XrpcClient = @import("internal/xrpc.zig").XrpcClient; 20 + pub const XrpcClient = @import("internal/xrpc/xrpc.zig").XrpcClient; 21 21 22 22 // json helpers 23 - pub const json = @import("internal/json.zig"); 23 + pub const json = @import("internal/xrpc/json.zig"); 24 24 25 - // service auth 26 - pub const Jwt = @import("internal/jwt.zig").Jwt; 27 - pub const multibase = @import("internal/multibase.zig"); 28 - pub const multicodec = @import("internal/multicodec.zig"); 25 + // crypto 26 + pub const Jwt = @import("internal/crypto/jwt.zig").Jwt; 27 + pub const multibase = @import("internal/crypto/multibase.zig"); 28 + pub const multicodec = @import("internal/crypto/multicodec.zig"); 29 29 30 - // mst 31 - pub const mst = @import("internal/mst.zig"); 30 + // repo 31 + pub const mst = @import("internal/repo/mst.zig"); 32 + pub const cbor = @import("internal/repo/cbor.zig"); 33 + pub const car = @import("internal/repo/car.zig"); 32 34 33 - // sync / firehose 34 - const sync = @import("internal/sync.zig"); 35 + // sync / streaming 36 + const sync = @import("internal/streaming/sync.zig"); 35 37 pub const CommitAction = sync.CommitAction; 36 38 pub const EventKind = sync.EventKind; 37 39 pub const AccountStatus = sync.AccountStatus; 38 40 39 41 // jetstream 40 - pub const jetstream = @import("internal/jetstream.zig"); 42 + pub const jetstream = @import("internal/streaming/jetstream.zig"); 41 43 pub const JetstreamClient = jetstream.JetstreamClient; 42 44 pub const JetstreamEvent = jetstream.Event; 43 45 44 46 // firehose (raw CBOR event stream) 45 - pub const cbor = @import("internal/cbor.zig"); 46 - pub const car = @import("internal/car.zig"); 47 - pub const firehose = @import("internal/firehose.zig"); 47 + pub const firehose = @import("internal/streaming/firehose.zig"); 48 48 pub const FirehoseClient = firehose.FirehoseClient; 49 49 pub const FirehoseEvent = firehose.Event; 50 50 51 51 // interop tests (test-only, references resolved by build.zig lazy dependency) 52 52 comptime { 53 53 if (@import("builtin").is_test) { 54 - _ = @import("internal/interop_tests.zig"); 54 + _ = @import("internal/testing/interop_tests.zig"); 55 55 } 56 56 }