Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at main 84 lines 2.8 kB view raw
1#!/bin/bash 2 3set -euo pipefail 4 5SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" 6PROJECT_DIR="$(dirname "$SCRIPT_DIR")" 7PDFJS_DIR="$PROJECT_DIR/public/pdfjs" 8 9if [ -n "${1:-}" ]; then 10 VERSION="$1" 11else 12 echo "Fetching latest PDF.js version..." 13 VERSION=$(curl -sL "https://api.github.com/repos/mozilla/pdf.js/releases/latest" \ 14 | grep '"tag_name"' | head -1 | sed -E 's/.*"v([^"]+)".*/\1/') 15 if [ -z "$VERSION" ]; then 16 echo "Error: Could not determine latest version." >&2 17 exit 1 18 fi 19fi 20 21echo "Updating PDF.js to v${VERSION}..." 22 23DOWNLOAD_URL="https://github.com/mozilla/pdf.js/releases/download/v${VERSION}/pdfjs-${VERSION}-dist.zip" 24TMPFILE=$(mktemp /tmp/pdfjs-XXXXXX.zip) 25echo "Downloading from ${DOWNLOAD_URL}..." 26curl -L -o "$TMPFILE" "$DOWNLOAD_URL" 27 28INIT_SCRIPT="" 29if [ -f "$PDFJS_DIR/margin-pdfjs-init.js" ]; then 30 INIT_SCRIPT=$(cat "$PDFJS_DIR/margin-pdfjs-init.js") 31fi 32 33rm -rf "$PDFJS_DIR" 34mkdir -p "$PDFJS_DIR" 35 36echo "Extracting..." 37unzip -q -o "$TMPFILE" -d "$PDFJS_DIR" 38rm -f "$TMPFILE" 39 40if [ -n "$INIT_SCRIPT" ]; then 41 echo "$INIT_SCRIPT" > "$PDFJS_DIR/margin-pdfjs-init.js" 42fi 43 44echo "Cleaning up..." 45rm -f "$PDFJS_DIR/web/compressed.tracemonkey-pldi-09.pdf" 46rm -f "$PDFJS_DIR/web/debugger.css" "$PDFJS_DIR/web/debugger.mjs" 47rm -rf "$PDFJS_DIR/web/wasm" 48find "$PDFJS_DIR" -name '*.map' -delete 49 50KEEP_LOCALES="ar bg ca cs da de el en-GB en-US es-AR es-CL es-ES es-MX et fi fr he hi-IN hr hu id it ja ko lt lv ms nb-NO nl pl pt-BR pt-PT ro ru sk sl sr sv-SE th tr uk vi zh-CN zh-TW" 51LOCALE_DIR="$PDFJS_DIR/web/locale" 52if [ -d "$LOCALE_DIR" ]; then 53 for dir in "$LOCALE_DIR"/*/; do 54 locale=$(basename "$dir") 55 if ! echo " $KEEP_LOCALES " | grep -q " $locale "; then 56 rm -rf "$dir" 57 fi 58 done 59 if command -v python3 &>/dev/null && [ -f "$LOCALE_DIR/locale.json" ]; then 60 python3 -c " 61import json, sys 62keep = set('$KEEP_LOCALES'.split()) 63d = json.load(open('$LOCALE_DIR/locale.json')) 64filtered = {k:v for k,v in d.items() if k in keep} 65json.dump(filtered, open('$LOCALE_DIR/locale.json','w'), ensure_ascii=False, separators=(',',':')) 66print(f' Kept {len(filtered)} of {len(d)} locales') 67" 68 fi 69fi 70 71echo "Patching viewer.mjs (origin check bypass)..." 72sed -i '' 's/if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {/if (true) {/' \ 73 "$PDFJS_DIR/web/viewer.mjs" 74 75echo "Patching viewer.html (script injection)..." 76sed -i '' 's|<script src="viewer.mjs" type="module"></script>|<script src="viewer.mjs" type="module"></script>\ 77 <script src="/pdfjs/margin-pdfjs-init.js"></script>\ 78 <script src="/pdf-viewer.js" type="module"></script>|' \ 79 "$PDFJS_DIR/web/viewer.html" 80 81FINAL_SIZE=$(du -sh "$PDFJS_DIR" | cut -f1) 82echo "" 83echo "PDF.js v${VERSION} installed successfully (${FINAL_SIZE})" 84echo "Location: $PDFJS_DIR"