1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! Read-only parser for IBM / HCL Lotus Notes Storage Facility (NSF)
//! databases. Pure Rust, no FFI, no Notes client required.
//!
//! Current capability surface:
//!
//! - File-shape identification ([`detect`])
//! - Database header parsing ([`header::DbHeader`]) - ODS version,
//! database id, encryption flag, template flag, BDB position
//! - Database information extension block 2 parsing
//! ([`info2::Information2`]) - 4 superblock positions + 2 BDB positions
//! + bucket-size knobs
//! - Superblock header parsing ([`superblock::Superblock`]) plus
//! freshest-of-4-copies selection ([`superblock::select_freshest`])
//! - Bucket header parsing ([`bucket::BucketHeader`]) + RRV bucket header
//! + per-entry decoder ([`rrv::RrvIter`])
//! - Note record header parsing ([`note::NoteHeader`]) with class
//! catalogue + UNID composition
//! - High-level [`database::Database`] handle with data-RRV walking
//! - Bucket Descriptor Block parsing ([`bdb::BucketDescriptorBlock`]) - the
//! master index of every RRV bucket
//! - Multi-page summary bucket-descriptor map + bucket-slot resolution
//! ([`database::Database::resolve_bucket_slot`]) and identity-gated
//! full-database note enumeration
//! ([`database::Database::enumerate_notes`]) (Slice 2.6 Phase B.2)
//! - Per-note item parsing with real field names + authoritative typing
//! ([`item::NoteItem`], [`item::FieldKind`]) sourced from the BDB Unique
//! Name Key table
//! - CD-record stream walking for rich-text bodies + OBJECT-item attachment
//! extraction ([`cd::NoteContent`], [`database::Database::note_content`])
//! - TIMEDATE timestamp parsing ([`time::Timedate`])
//! - ODS version mapping ([`ods::Ods`])
//!
//! Coming in subsequent slices:
//!
//! - Form-based dispatch (Memo / Person / Appointment / ...)
//! - Item-level encryption decryption (detected + flagged today)
//!
//! See the project README for current capability status and the
//! companion `priorart_nsf_format.md` for the design rationale and
//! format reference.
//!
//! # Versioning
//!
//! This crate is pre-1.0 and under active development. Public API may
//! break between 0.x releases as format coverage grows.
pub use ;
pub use ;
pub use BucketDescriptorTable;
pub use ;
pub use ;
pub use ;
pub use NsfError;
pub use DbHeader;
pub use ;
pub use ;
pub use NoteHeader;
pub use Ods;
pub use ;
pub use ;
pub use ;