Skip to content

Commit d7bb495

Browse files
build: update artifacts
1 parent 933f608 commit d7bb495

File tree

5 files changed

+83
-65
lines changed

5 files changed

+83
-65
lines changed

Cargo.lock

Lines changed: 48 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ typst-svg = "0.13.1"
1818

1919
serde_json = "1"
2020

21-
reflexo-typst = { git = "https://github.com/Myriad-Dreamin/typst.ts", rev = "5cdaded77bfd667818d1b8e95f29e3dd5e493089", default-features = false }
21+
reflexo-typst = { version = "0.6.0-rc1", default-features = false }
2222

2323
[profile.release]
2424
# to satisfy stubber

crates/embedded-typst/src/lib.rs

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use std::{
1212
};
1313

1414
use reflexo_typst::{
15-
font::{pure::MemoryFontBuilder, FontResolverImpl},
16-
package::{dummy::DummyRegistry, PackageRegistry, PackageSpec, RegistryPathMapper},
15+
font::{pure::MemoryFontSearcher, FontResolverImpl},
16+
package::{PackageRegistry, PackageSpec, RegistryPathMapper},
1717
typst::prelude::EcoVec,
1818
vfs::{dummy::DummyAccessModel, FileSnapshot},
1919
CompilerUniverse, EntryReader, EntryState, ShadowApi, TaskInputs, TypstDocument,
@@ -188,22 +188,34 @@ fn create_world() -> StrResult<WorldRepr> {
188188

189189
/// Creates a world based on the context.
190190
fn resolve_world_inner() -> StrResult<WorldRepr> {
191-
// Adds embedded fonts.
192-
let mut fb = MemoryFontBuilder::new();
193-
let mut pb = MemoryPackageBuilder::default();
191+
let data_guard = DATA.lock().unwrap();
194192

195-
let registry = Arc::new(DummyRegistry);
196-
let resolver = Arc::new(RegistryPathMapper::new(registry.clone()));
197-
let mut vfs = reflexo_typst::vfs::Vfs::new(resolver, DummyAccessModel);
193+
// Adds embedded fonts.
194+
let mut fb = MemoryFontSearcher::new();
195+
let mut pb = MemoryRegistry::default();
198196

199-
for data in &DATA.lock().unwrap().data {
197+
for data in &data_guard.data {
200198
match data {
201199
DataRef::Font { data, .. } => {
202200
fb.add_memory_font(data.clone().unwrap().0);
203201
}
202+
DataRef::Package { spec, .. } => {
203+
let spec = PackageSpec::from_str(spec).map_err(|e| e.to_string())?;
204+
pb.add_memory_package(spec);
205+
}
206+
DataRef::File { .. } => {}
207+
}
208+
}
209+
210+
let registry = Arc::new(pb);
211+
let resolver = Arc::new(RegistryPathMapper::new(registry.clone()));
212+
let mut vfs = reflexo_typst::vfs::Vfs::new(resolver, DummyAccessModel);
213+
214+
for data in &data_guard.data {
215+
match data {
204216
DataRef::Package { data, spec, .. } => {
205217
let spec = PackageSpec::from_str(spec).map_err(|e| e.to_string())?;
206-
let path = pb.add_memory_package(spec);
218+
let path = registry.resolve(&spec).map_err(|e| e.to_string())?;
207219

208220
let data = data.clone().unwrap().0;
209221
extract_package(&data, |key, value, _mtime| {
@@ -215,7 +227,7 @@ fn create_world() -> StrResult<WorldRepr> {
215227
.map_err(|e| e.to_string())
216228
})?;
217229
}
218-
DataRef::File { .. } => {}
230+
DataRef::Font { .. } | DataRef::File { .. } => {}
219231
}
220232
}
221233

@@ -230,7 +242,7 @@ fn create_world() -> StrResult<WorldRepr> {
230242
None,
231243
vfs,
232244
registry,
233-
Arc::new(fb.into()),
245+
Arc::new(fb.build()),
234246
);
235247

236248
Ok(world)
@@ -335,7 +347,7 @@ impl reflexo_typst::world::CompilerFeat for WasmCompilerFeat {
335347
/// It accesses no file system.
336348
type AccessModel = DummyAccessModel;
337349
/// It cannot load any package.
338-
type Registry = DummyRegistry;
350+
type Registry = MemoryRegistry;
339351
}
340352

341353
type WorldRepr = reflexo_typst::world::CompilerUniverse<WasmCompilerFeat>;
@@ -354,12 +366,12 @@ impl TypstWasmWorld {
354366
/// Create a new [`TypstWasmWorld`].
355367
pub fn new() -> Self {
356368
// Creates a virtual file system.
357-
let registry = Arc::new(DummyRegistry);
369+
let registry = Arc::new(MemoryRegistry::default());
358370
let resolver = Arc::new(RegistryPathMapper::new(registry.clone()));
359371
let vfs = reflexo_typst::vfs::Vfs::new(resolver, DummyAccessModel);
360372

361373
// Adds embedded fonts.
362-
let mut fb = MemoryFontBuilder::new();
374+
let mut fb = MemoryFontSearcher::new();
363375

364376
for data in EMBEDDED_FONT {
365377
fb.add_memory_font(Bytes::new(data));
@@ -372,18 +384,18 @@ impl TypstWasmWorld {
372384
None,
373385
vfs,
374386
registry,
375-
Arc::new(fb.into()),
387+
Arc::new(fb.build()),
376388
))
377389
}
378390
}
379391

380392
pub static EMBEDDED_FONT: &[&[u8]] = &[];
381393

382-
/// A builder of memory package.
394+
/// Creates a memory package registry from the builder.
383395
#[derive(Default, Debug)]
384-
pub struct MemoryPackageBuilder(HashMap<PackageSpec, Arc<Path>>);
396+
pub struct MemoryRegistry(HashMap<PackageSpec, Arc<Path>>);
385397

386-
impl MemoryPackageBuilder {
398+
impl MemoryRegistry {
387399
/// Adds a memory package.
388400
pub fn add_memory_package(&mut self, spec: PackageSpec) -> Arc<Path> {
389401
let package_root: Arc<Path> = PathBuf::from("/internal-packages")
@@ -397,10 +409,7 @@ impl MemoryPackageBuilder {
397409
}
398410
}
399411

400-
#[derive(Default, Debug)]
401-
pub struct MemoryPackageRegistry(HashMap<PackageSpec, Arc<Path>>);
402-
403-
impl PackageRegistry for MemoryPackageRegistry {
412+
impl PackageRegistry for MemoryRegistry {
404413
/// Resolves a package.
405414
fn resolve(&self, spec: &PackageSpec) -> Result<Arc<Path>, PackageError> {
406415
self.0

typ/embedded-typst/example.typ

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@
2020
The selected element is:
2121
#query-result.func#[[#[#query-result.body.text]]]
2222

23-
#grid(columns: (1fr, 1fr), column-gutter: 0.6em, row-gutter: 1em, ..doc.pages.map(data => image.decode(data)).map(rect))
23+
#grid(columns: (1fr, 1fr), column-gutter: 0.6em, row-gutter: 1em, ..doc.pages.map(data => image(bytes(data))).map(rect))

0 commit comments

Comments
 (0)