tinymist_package/
registry.rs1use std::num::NonZeroUsize;
4use std::{path::Path, sync::Arc};
5
6use ecow::EcoString;
7pub use typst::diag::PackageError;
8pub use typst::syntax::package::PackageSpec;
9
10mod dummy;
11pub use dummy::*;
12
13mod memory;
14pub use memory::*;
15
16#[cfg(feature = "browser")]
17mod browser;
18#[cfg(feature = "browser")]
19pub use browser::*;
20
21#[cfg(feature = "http-registry")]
22mod http;
23#[cfg(feature = "http-registry")]
24pub use http::*;
25
26pub const DEFAULT_REGISTRY: &str = "https://packages.typst.org";
28
29pub trait PackageRegistry {
31 fn reset(&mut self) {}
33
34 fn revision(&self) -> Option<NonZeroUsize> {
38 None
39 }
40
41 fn resolve(&self, spec: &PackageSpec) -> Result<Arc<Path>, PackageError>;
43
44 fn packages(&self) -> &[(PackageSpec, Option<EcoString>)] {
51 &[]
52 }
53}
54
55pub trait Notifier {
57 fn downloading(&self, _spec: &PackageSpec) {}
59}
60
61#[derive(Debug, Default, Clone, Copy, Hash)]
63pub struct DummyNotifier;
64
65impl Notifier for DummyNotifier {}