Skip to main content

loonfs_api/
lib.rs

1//! Wire types and durable-format codecs for LoonFS.
2//!
3//! The crate defines validated identifiers and paths, HTTP protocol shapes in
4//! [`v0`], durable storage formats in [`wire`], and shared operation options in
5//! [`options`].
6
7#![warn(missing_docs)]
8
9mod access;
10mod actor;
11mod attributes;
12mod base64_bytes;
13mod capability;
14mod commit_identity;
15mod content;
16mod control;
17mod digest;
18pub mod env;
19mod envelope;
20mod error;
21mod hex;
22mod ids;
23mod manifest;
24mod name_policy;
25pub mod options;
26mod pagination;
27mod path;
28pub mod public_inode_id;
29mod retry;
30mod secret;
31mod sst_blocks;
32pub mod v0;
33mod wal;
34
35pub mod wire {
36    //! Durable wire formats grouped by their owning format family.
37
38    pub mod hex {
39        //! Lowercase hexadecimal primitives shared by durable codecs.
40
41        pub use crate::hex::*;
42    }
43
44    pub mod manifest {
45        //! Namespace-manifest envelopes, rows, and key constructors.
46
47        pub use crate::manifest::*;
48    }
49
50    pub mod control {
51        //! Mutable namespace control-object envelopes and payloads.
52
53        pub use crate::control::*;
54    }
55
56    pub mod envelope {
57        //! Shared durable envelope codec and validation errors.
58
59        pub use crate::envelope::*;
60    }
61
62    pub mod sst_blocks {
63        //! Block handles, builders, and codecs for metadata and index segments.
64
65        pub use crate::sst_blocks::*;
66    }
67
68    pub mod wal {
69        //! WAL segment envelopes, records, and codecs.
70
71        pub use crate::wal::*;
72    }
73}
74
75pub use access::{
76    AccessGrants, AccessGrantsError, AccessRevisionNo, AccessRight, AccessRights, PrincipalId,
77    PrincipalIdValidationError, PrincipalScope, PrincipalScopeValidationError, PrincipalSet,
78    PrincipalSetError, Subject, SubjectId, SubjectIdValidationError,
79    MAX_ACCESS_GRANTS_PRINCIPAL_BYTES, MAX_ACCESS_GRANT_ENTRIES, MAX_SUBJECT_PRINCIPALS,
80};
81pub use actor::{ActorId, ActorIdValidationError};
82pub use attributes::{
83    AttributeKey, AttributeKeyValidationError, AttributeRevisionNo, AttributeValue,
84    AttributeValueValidationError, Attributes, AttributesError, MAX_ATTRIBUTES_TOTAL_BYTES,
85    MAX_ATTRIBUTE_ENTRIES, MAX_ATTRIBUTE_KEY_BYTES, MAX_ATTRIBUTE_VALUE_BYTES,
86    RESERVED_ATTRIBUTE_KEY_PREFIX,
87};
88pub use capability::{
89    CapabilityDocument, CapabilityDocumentError, ALL_LIMIT_KEYS, API_GROUP_FILESYSTEM_V0,
90    API_GROUP_MAINTENANCE_V0, API_GROUP_QUERY_V0, FEATURE_ATTRIBUTES,
91    FEATURE_COMMIT_INLINE_CONTENT, FEATURE_DOWNLOADS_DIRECT_GET, FEATURE_INODES_LIST_CHILDREN,
92    FEATURE_MAINTENANCE_GREP_INDEX, FEATURE_NAMESPACES_CREATE, FEATURE_NAMESPACES_DELETE,
93    FEATURE_NAMESPACES_FORK, FEATURE_QUERY_GREP, FEATURE_SNAPSHOTS,
94    FEATURE_UPLOADS_DIRECT_MULTIPART, FEATURE_UPLOADS_DIRECT_PUT, LIMIT_ACCESS_MAX_PRINCIPALS,
95    LIMIT_COMMIT_MAX_CONTENT_TOKENS, LIMIT_COMMIT_MAX_EXTERNAL_CONTENT_REFS,
96    LIMIT_COMMIT_MAX_INLINE_CONTENT_BYTES, LIMIT_COMMIT_MAX_MESSAGE_BYTES,
97    LIMIT_COMMIT_MAX_OPERATIONS, LIMIT_COMMIT_MAX_PRECONDITIONS, LIMIT_DOWNLOAD_MAX_CONCURRENT,
98    LIMIT_DOWNLOAD_MAX_CONTENT_BYTES, LIMIT_GC_MIN_GRACE_WINDOW_MS, LIMIT_PAGINATION_DEFAULT,
99    LIMIT_PAGINATION_MAX, LIMIT_QUERY_GREP_DEFAULT, LIMIT_QUERY_GREP_MAX,
100    LIMIT_QUERY_GREP_SCAN_BUDGET_FILES, LIMIT_QUERY_GREP_TAIL_BUDGET_FILES,
101    LIMIT_SNAPSHOT_MAX_LIFETIME_MS, LIMIT_SNAPSHOT_MAX_LIVE_PER_NAMESPACE,
102    LIMIT_SNAPSHOT_MAX_TTL_MS, LIMIT_UPLOAD_COMPLETION_MAX_BODY_BYTES,
103    LIMIT_UPLOAD_DIRECT_PUT_MAX_CONTENT_BYTES, LIMIT_UPLOAD_MAX_CONCURRENT,
104    LIMIT_UPLOAD_MAX_CONTENT_BYTES, PROTOCOL_VERSION,
105};
106pub use commit_identity::{
107    semantic_commit_fingerprint, CommitFingerprint, SemanticFingerprintError,
108};
109pub use content::{
110    Checksum, ChecksumAlgorithm, ChecksumValidationError, ContentRef, ContentRefKind,
111    ContentRefValidationError, Crc32c, Crc64Nvme, Sha256, StreamingChecksum,
112};
113pub use digest::sha256_digest;
114pub use error::{ErrorCode, ErrorKind};
115pub use ids::{
116    generated_id, next_public_ordinal, BindingGeneration, BindingGenerationValidationError,
117    ChangeSeq, CheckpointId, CommitId, CommitIdValidationError, ContentId, ContentStoreId,
118    GeneratedIdValidationError, IndexSegmentId, InodeId, InodeKind, ManifestNo,
119    MetadataCompactionId, MetadataSegmentId, NameKey, NameKeyValidationError, NamespaceId,
120    NamespaceIdValidationError, PublicOrdinalRangeError, RevisionNo, RunNo, SnapshotId,
121    SnapshotIdValidationError, UploadId, WalNo, WriterEpoch, WriterId, WriterIdValidationError,
122    FIRST_ALLOCATABLE_INODE_ID, MAX_ID_BYTES, MAX_NAME_KEY_BYTES, MAX_PUBLIC_INTEGER,
123    ROOT_INODE_ID,
124};
125pub use manifest::{MetadataFamilyGroup, NamespaceAccess};
126pub use name_policy::name_key_for_display_name;
127pub use options::AttributeInclusion;
128pub use pagination::{
129    decode_cursor, decode_namespace_cursor, decode_token, encode_cursor, encode_token,
130    DirectoryPageCursor, EffectiveLimit, FileRevisionsPageCursor, GrepPageCursor, LimitError,
131    NamespaceCursor, NamespaceCursorError, OpaqueToken, OpaqueTokenError, Page, PageCursor,
132    PageCursorError, PageRequest, PagedResponse, Pager, PaginationPolicy, TrashPageCursor,
133    DEFAULT_MAX_PAGE_LIMIT, DEFAULT_PAGE_LIMIT, PAGE_CURSOR_FORMAT_VERSION,
134};
135pub use path::{
136    AbsolutePath, DisplayName, PathComponent, PathError, MAX_DISPLAY_NAME_BYTES, MAX_PATH_BYTES,
137    MAX_PATH_DEPTH,
138};
139pub use retry::{
140    transport_retry_backoff, MonotonicTimer, OperationDeadline, StdMonotonicTimer,
141    TransportRetryPolicy,
142};
143pub use secret::SecretString;
144
145// Curated root re-exports of the common v0 HTTP surface. v0 HTTP shapes live
146// in `v0`; add here only what most consumers touch.
147pub use v0::{
148    AdvanceRetentionRequest, AdvanceRetentionResponse, ApiError, AttributesProjection, Checkpoint,
149    CheckpointOwnerSummary, Commit, CommitPrecondition, CommitRequest, CreateCheckpointRequest,
150    CreateNamespaceRequest, CreateSnapshotRequest, DeleteCheckpointResponse,
151    DeleteDirectoryBehavior, DeleteNamespaceResponse, DeleteSnapshotResponse,
152    DeletedCheckpointsByOwner, DeletedObjectCounts, DestinationBehavior, DestinationPrecondition,
153    DestinationPreconditionError, ErrorDetails, ExpectedFileState, ExtendSnapshotRequest,
154    FileBytes, FileRevision, FilesystemOperation, FlushWalOutcome, FlushWalResponse,
155    ForkNamespaceRequest, GcRequest, GcResponse, GrepMatch, GrepRequest, GrepResponse,
156    ListCheckpointsResponse, ListFileRevisionsResponse, ListInodeChildrenResponse,
157    ListPathEntriesResponse, ListSnapshotsResponse, ListTrashResponse, MetadataCompactionOutcome,
158    MetadataCompactionRequest, MetadataCompactionResponse, MetadataMaintenanceRequest,
159    MetadataMaintenanceResponse, Namespace, NamespaceAccessMode, NamespaceDiagnostics,
160    NamespaceForkBasis, PathEntry, PathEntryKind, PreconditionFields, RecoverAdministratorRequest,
161    RecoverAdministratorResponse, ReorganizeStepOutcome, RetainedCandidates, RetainedReason,
162    RunMaintenanceRequest, RunMaintenanceResponse, SnapshotSummary, TrashEntry,
163    WalFlushStepOutcome,
164};