<# .SYNOPSIS Builds the DjVu module (djvu-rs plus this folder's crate) to WebAssembly in Docker and copies it, with the worker that runs it, to frontend/vendor/local/djvu@2/, where the site serves it from /vendor/. Keeps the Cargo.lock the build used beside this script, so later builds use the same crates. Bump the @N (and DJVU_WORKER in src/app/djvu/djvu.ts) before rebuilding once a version has shipped. Nothing is installed on this machine; Docker Desktop must be running. #> $ErrorActionPreference = 'Continue' Set-Location $PSScriptRoot $dist = Join-Path $PSScriptRoot 'dist' if (Test-Path $dist) { Remove-Item -Recurse -Force $dist } & docker build --target export --output "type=local,dest=$dist" . if ($LASTEXITCODE -ne 0) { throw 'docker build failed' } $dest = Join-Path $PSScriptRoot '..\..\vendor\local\djvu@2' New-Item -ItemType Directory -Force $dest | Out-Null foreach ($f in 'djvu.js', 'djvu_bg.wasm', 'LICENSE') { Copy-Item (Join-Path $dist $f) $dest -Force } Copy-Item (Join-Path $PSScriptRoot 'src\worker.mjs') $dest -Force Copy-Item (Join-Path $dist 'Cargo.lock') $PSScriptRoot -Force Get-ChildItem $dest | Format-Table Name, Length