Skip to main content

postproject_core/
lib.rs

1//! Application-neutral domain types and service contracts for `PostProject`.
2//!
3//! This crate deliberately has no persistence, FFI, or application-framework
4//! dependencies. Backends and adapters depend on this crate, never the reverse.
5
6#![forbid(unsafe_code)]
7
8mod content;
9mod error;
10mod id;
11mod identifier;
12mod identifier_registry;
13mod metadata;
14mod metadata_registry;
15mod model;
16mod provenance;
17mod resolution;
18mod resource;
19mod revision;
20mod storage;
21mod time;
22mod transaction;
23mod uri;
24
25pub use content::{
26    ContentStructure, ContentStructureKind, FrameRange, ImageSequenceDescriptor,
27    ImageSequencePattern, MAX_CONTENT_MEMBERS, MAX_FRAME_PADDING, MAX_RESOURCE_ROLE_BYTES,
28    MAX_SEQUENCE_EXCEPTIONS, MAX_SEQUENCE_PATTERN_BYTES, ResourceMember, ResourceRole,
29};
30pub use error::{Error, ErrorKind, Result};
31pub use id::{
32    ActivityId, AssetId, HostObjectBinding, LocatorId, MediaRootId, ObjectRef, ProductionId,
33    RepresentationId, ResourceId, RevisionId, TransactionId,
34};
35pub use identifier::{
36    ExternalIdentifier, IdentifierScheme, MAX_IDENTIFIER_QUALIFIER_BYTES,
37    MAX_IDENTIFIER_SCHEME_BYTES, MAX_IDENTIFIER_VALUE_BYTES,
38};
39pub use identifier_registry::{
40    EIDR_SCHEME, IDENTIFIER_SCHEMES, ISAN_SCHEME, IdentifierSchemeDefinition,
41    IdentifierValidationKind, POSTPROJECT_APPLICATION_SCHEME, SMPTE_UMID_SCHEME,
42    identifier_scheme_definition, validate_known_identifier,
43};
44pub use metadata::{
45    DecimalValue, MAX_LANGUAGE_TAG_BYTES, MAX_METADATA_BINARY_BYTES, MAX_METADATA_COLLECTION_ITEMS,
46    MAX_METADATA_DECIMAL_SCALE, MAX_METADATA_NESTING_DEPTH, MAX_METADATA_TEXT_BYTES,
47    MAX_METADATA_TOTAL_BYTES, MAX_METADATA_URI_BYTES, MAX_PROPERTY_ID_BYTES,
48    MAX_VOCABULARY_ID_BYTES, MetadataAssertion, MetadataField, MetadataMatch, MetadataProperty,
49    MetadataValue, MetadataValueKind, PropertyId, RationalValue, VocabularyId,
50};
51pub use metadata_registry::{
52    DUBLIN_CORE_ELEMENTS_VOCABULARY, EBUCORE_VOCABULARY, IPTC_VMH_JSON_VOCABULARY,
53    METADATA_VOCABULARIES, MetadataCardinality, MetadataPropertyAlias, MetadataPropertyDefinition,
54    MetadataVocabularyDefinition, POSTPROJECT_METADATA_VOCABULARY, XMP_BASIC_VOCABULARY,
55    metadata_property_definition, metadata_vocabulary_definition,
56};
57pub use model::{
58    Asset, MediaRoot, OriginalMediaImport, Production, Representation, RepresentationImport,
59    RepresentationKind, Timestamp,
60};
61pub use provenance::{
62    Activity, ActivityInput, ActivityKind, ActivityOutput, ActivityRole, AgentIdentity,
63    MAX_ACTIVITY_EDGES, MAX_ACTIVITY_KIND_BYTES, MAX_ACTIVITY_ROLE_BYTES,
64    MAX_PROVENANCE_NAME_BYTES, MAX_PROVENANCE_URI_BYTES, MAX_TOOL_VERSION_BYTES, ToolIdentity,
65};
66pub use resolution::{
67    AvailabilityIssue, AvailabilityIssueKind, Confidence, EvidenceKind, RepresentationAvailability,
68    RepresentationResolution, ResolutionCandidate, ResolutionEvidence, ResourceResolution,
69    ResourceResolutionState,
70};
71pub use resource::{
72    FileFacts, Locator, LocatorAvailability, RepresentationFingerprint, Resource,
73    ResourceFingerprint,
74};
75pub use revision::{
76    MAX_REVISION_MESSAGE_BYTES, MAX_REVISION_PAGE_SIZE, OriginIdentity, Revision, RevisionContext,
77    RevisionEvent, RevisionEventKind,
78};
79pub use storage::{ProductionRead, ProductionStore, ProductionStoreTransaction};
80pub use time::{RationalRate, RationalTime, TimeRange};
81pub use transaction::{TransactionLifecycle, TransactionState};