tinymist_package/pack/
universe.rs1use super::*;
2use crate::registry::DEFAULT_REGISTRY;
3
4#[derive(Debug, Clone)]
6pub struct UniversePack {
7    pub specifier: PackageSpec,
9}
10
11impl UniversePack {
12    pub fn new(specifier: PackageSpec) -> Self {
14        Self { specifier }
15    }
16}
17
18impl PackFs for UniversePack {
19    fn read_all(
20        &mut self,
21        f: &mut (dyn FnMut(&str, PackFile) -> PackageResult<()> + Send + Sync),
22    ) -> PackageResult<()> {
23        let spec = &self.specifier;
24        assert_eq!(spec.namespace, "preview");
25
26        let url = format!(
27            "{DEFAULT_REGISTRY}/preview/{}-{}.tar.gz",
28            spec.name, spec.version
29        );
30
31        HttpPack::new(self.specifier.clone(), url).read_all(f)
32    }
33}
34
35impl Pack for UniversePack {}
36impl PackExt for UniversePack {}