typst-wasm 0.0.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +186 -0
- package/dist/index.js +746 -0
- package/dist/index.js.map +1 -0
- package/dist/types-BoGtHbqQ.d.ts +95 -0
- package/dist/typst_wasm-Bjm0p5IN.js +372 -0
- package/dist/wasm.d.ts +14 -0
- package/dist/wasm.js +26 -0
- package/dist/wasm.js.map +1 -0
- package/dist/worker.js +200 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["isRecord","TypstWorker"],"sources":["../src/webassembly-jspi.ts","../src/backend-support.ts","../src/errors.ts","../src/direct-service.ts","../src/messages.ts","../src/rpc.ts","../src/protocol.ts","../src/fetch-bridge.ts","../src/worker-transport.ts","../src/worker-service.ts","../src/compiler-backend.ts","../src/cache-abstraction.ts","../src/package-manager.ts","../src/index.ts"],"sourcesContent":["export type JspiHostFetch = (\n pathPtr: number,\n pathLen: number,\n resultLenPtr: number,\n) => Promise<number>;\n\nexport type JspiCompileThunk<TOptions> = (\n compilerPtr: number,\n options: TOptions,\n) => [number, number, number];\n\nexport type JspiWebAssembly<TOptions = unknown> = typeof WebAssembly & {\n Suspending?: new (\n fn: JspiHostFetch,\n ) => (pathPtr: number, pathLen: number, resultLenPtr: number) => number;\n promising?: (\n fn: JspiCompileThunk<TOptions>,\n ) => (\n compilerPtr: number,\n options: TOptions,\n ) => Promise<[number, number, number]>;\n};\n\nexport const getJspiWebAssembly = <\n TOptions = unknown,\n>(): JspiWebAssembly<TOptions> => WebAssembly as JspiWebAssembly<TOptions>;\n","import { getJspiWebAssembly } from \"./webassembly-jspi\";\n\nexport const supportsWorkerBackend = (): boolean =>\n typeof Worker !== \"undefined\" &&\n typeof SharedArrayBuffer !== \"undefined\" &&\n typeof Atomics !== \"undefined\" &&\n typeof Atomics.wait === \"function\";\n\nexport const supportsJspiBackend = (): boolean => {\n const wasm = getJspiWebAssembly();\n return (\n typeof wasm.Suspending === \"function\" &&\n typeof wasm.promising === \"function\"\n );\n};\n","import type { WasmDiagnostic } from \"./wasm\";\n\nexport class TypstError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = new.target.name;\n }\n}\n\nexport class CompileError extends TypstError {\n readonly diagnostics: WasmDiagnostic[];\n\n constructor(\n message: string,\n options: { diagnostics?: WasmDiagnostic[]; cause?: unknown } = {},\n ) {\n super(message, { cause: options.cause });\n this.diagnostics = options.diagnostics ?? [];\n }\n}\n\nexport class CompilerNotInitializedError extends TypstError {}\n\nexport class CompilerDisposedError extends TypstError {}\n\nexport class FontLoadError extends TypstError {\n readonly fontName: string;\n\n constructor(fontName: string, cause: unknown) {\n super(`Failed to load font \"${fontName}\"`, { cause });\n this.fontName = fontName;\n }\n}\n\nexport class FetchError extends TypstError {\n readonly path: string;\n\n constructor(path: string, cause: unknown) {\n super(`Failed to fetch \"${path}\"`, { cause });\n this.path = path;\n }\n}\n\nexport class PackageParseError extends TypstError {\n readonly spec: string;\n\n constructor(spec: string, message: string) {\n super(message);\n this.spec = spec;\n }\n}\n\nexport class PackageFetchError extends TypstError {\n readonly url: string;\n\n constructor(url: string, cause: unknown) {\n super(`Failed to fetch package: ${url}`, { cause });\n this.url = url;\n }\n}\n\nexport class FileNotFoundError extends TypstError {\n readonly filePath: string;\n\n constructor(filePath: string) {\n super(`File not found: ${filePath}`);\n this.filePath = filePath;\n }\n}\n\nexport class WorkerError extends TypstError {}\n","import { supportsJspiBackend } from \"./backend-support\";\nimport {\n CompilerDisposedError,\n CompilerNotInitializedError,\n WorkerError,\n} from \"./errors\";\nimport type { PackageManager } from \"./package-manager\";\nimport type { WasmModuleOrPath } from \"./wasm-module\";\nimport {\n loadWasmModule,\n type InitOutput,\n type TypstCompilerInstance,\n type WasmCompileOptions,\n type WasmCompileOutput,\n} from \"./wasm\";\nimport { getJspiWebAssembly } from \"./webassembly-jspi\";\n\nconst MAX_FETCH_ATTEMPTS = 3;\nconst textDecoder = new TextDecoder();\n\nconst retry = async <T>(\n task: () => Promise<T>,\n maxAttempts: number,\n): Promise<T> => {\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxAttempts; attempt += 1) {\n try {\n return await task();\n } catch (error) {\n lastError = error;\n }\n }\n\n throw lastError ?? new Error(\"Unknown host fetch error\");\n};\n\nexport class DirectService {\n private disposed = false;\n private initPromise: Promise<void> | null = null;\n private compiler: TypstCompilerInstance | null = null;\n private wasmExports: InitOutput | null = null;\n private compileAsync:\n | ((\n compilerPtr: number,\n options: WasmCompileOptions,\n ) => Promise<[number, number, number]>)\n | null = null;\n\n constructor(\n private readonly packageManager: PackageManager,\n private readonly fetchImpl: typeof fetch = fetch,\n ) {}\n\n async init(moduleOrPath: WasmModuleOrPath): Promise<void> {\n this.assertNotDisposed();\n this.initPromise ??= this.initDirect(moduleOrPath);\n await this.initPromise;\n }\n\n async dispose(): Promise<void> {\n this.disposed = true;\n if (this.compiler) {\n this.compiler.free();\n }\n this.compiler = null;\n this.wasmExports = null;\n this.compileAsync = null;\n }\n\n async addFont(data: Uint8Array): Promise<void> {\n this.withCompiler((compiler) => void compiler.add_font(data), \"add_font\");\n }\n\n async addFile(path: string, data: Uint8Array): Promise<void> {\n this.withCompiler(\n (compiler) => void compiler.add_file(path, data),\n \"add_file\",\n );\n }\n\n async addSource(path: string, text: string): Promise<void> {\n this.withCompiler(\n (compiler) => void compiler.add_source(path, text),\n \"add_source\",\n );\n }\n\n async removeFile(path: string): Promise<void> {\n this.withCompiler(\n (compiler) => void compiler.remove_file(path),\n \"remove_file\",\n );\n }\n\n async clearFiles(): Promise<void> {\n this.withCompiler((compiler) => void compiler.clear_files(), \"clear_files\");\n }\n\n async listFiles(): Promise<string[]> {\n return this.withCompiler((compiler) => compiler.list_files(), \"list_files\");\n }\n\n async hasFile(path: string): Promise<boolean> {\n return this.withCompiler((compiler) => compiler.has_file(path), \"has_file\");\n }\n\n async setMain(path: string): Promise<void> {\n this.withCompiler((compiler) => void compiler.set_main(path), \"set_main\");\n }\n\n async compile(options: WasmCompileOptions): Promise<WasmCompileOutput> {\n this.assertNotDisposed();\n const compiler = this.compiler;\n const wasmExports = this.wasmExports;\n const compile = this.compileAsync;\n\n if (!compiler || !wasmExports || !compile) {\n throw new CompilerNotInitializedError(\"Compiler not initialized\");\n }\n\n let ret: [number, number, number];\n try {\n ret = await compile(compiler.__wbg_ptr, options);\n } catch (cause) {\n throw new WorkerError(\"Direct command failed: compile\", { cause });\n }\n\n if (ret[2]) {\n throw this.takeExternref(wasmExports, ret[1]);\n }\n\n return this.takeExternref(wasmExports, ret[0]) as WasmCompileOutput;\n }\n\n private async initDirect(moduleOrPath: WasmModuleOrPath): Promise<void> {\n if (!supportsJspiBackend()) {\n throw new WorkerError(\"JSPI is unavailable in this runtime\");\n }\n\n const wasmModule = await loadWasmModule();\n const { Suspending, promising } = getJspiWebAssembly<WasmCompileOptions>();\n if (!Suspending || !promising) {\n throw new WorkerError(\"JSPI is unavailable in this runtime\");\n }\n const suspending = new Suspending(this.hostFetch);\n\n const wasmExports = await wasmModule.default({\n module_or_path: moduleOrPath,\n imports: {\n bridge: {\n host_fetch: suspending,\n },\n },\n });\n\n this.wasmExports = wasmExports;\n this.compileAsync = promising(wasmExports.typstcompiler_compile);\n this.compiler = new wasmModule.TypstCompiler();\n }\n\n private readonly hostFetch = async (\n pathPtr: number,\n pathLen: number,\n resultLenPtr: number,\n ): Promise<number> => {\n const wasmExports = this.wasmExports;\n if (!wasmExports) {\n throw new Error(\"WASM exports not initialized\");\n }\n\n const path = textDecoder.decode(\n new Uint8Array(wasmExports.memory.buffer, pathPtr, pathLen),\n );\n\n try {\n const bytes = await retry(\n () => this.fetchBytes(path),\n MAX_FETCH_ATTEMPTS,\n );\n const resultPtr = wasmExports.__wbindgen_malloc(bytes.length, 1);\n new Uint8Array(wasmExports.memory.buffer, resultPtr, bytes.length).set(\n bytes,\n );\n new DataView(wasmExports.memory.buffer).setUint32(\n resultLenPtr,\n bytes.length,\n true,\n );\n return resultPtr;\n } catch {\n new DataView(wasmExports.memory.buffer).setUint32(resultLenPtr, 0, true);\n return 0;\n }\n };\n\n private async fetchBytes(path: string): Promise<Uint8Array> {\n if (path.startsWith(\"@\")) {\n return this.packageManager.getFile(path);\n }\n\n const response = await this.fetchImpl(path);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch \"${path}\" with status ${response.status}`,\n );\n }\n\n return new Uint8Array(await response.arrayBuffer());\n }\n\n private withCompiler<T>(\n run: (compiler: TypstCompilerInstance) => T,\n name: string,\n ): T {\n this.assertNotDisposed();\n if (!this.compiler) {\n throw new CompilerNotInitializedError(\"Compiler not initialized\");\n }\n\n try {\n return run(this.compiler);\n } catch (cause) {\n throw new WorkerError(`Direct command failed: ${name}`, { cause });\n }\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new CompilerDisposedError(\"Compiler has been disposed\");\n }\n }\n\n private takeExternref(wasmExports: InitOutput, idx: number): unknown {\n const value = wasmExports.__wbindgen_externrefs.get(idx);\n wasmExports.__externref_table_dealloc(idx);\n return value;\n }\n}\n","import type {\n RpcRequestMessage,\n RpcResponseMessage,\n TypstWorkerProtocol,\n} from \"./protocol\";\n\nexport type MainToWorkerMessage = RpcRequestMessage<TypstWorkerProtocol>;\n\nexport type WorkerEventMessage = {\n kind: \"web_fetch\";\n payload: {\n path: string;\n };\n};\n\nexport type WorkerToMainMessage = RpcResponseMessage | WorkerEventMessage;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isMainToWorkerMessage = (\n value: unknown,\n): value is MainToWorkerMessage => {\n if (!isRecord(value)) return false;\n if (typeof value.kind !== \"string\") return false;\n return typeof value.requestId === \"number\";\n};\n\nexport const isRpcResponseMessage = (\n value: unknown,\n): value is RpcResponseMessage => {\n if (!isRecord(value)) return false;\n if (typeof value.requestId !== \"number\") return false;\n\n const hasResult = \"result\" in value;\n const hasError = \"error\" in value;\n return hasResult !== hasError;\n};\n\nexport const isWorkerEventMessage = (\n value: unknown,\n): value is WorkerEventMessage => {\n if (!isRecord(value)) return false;\n if (typeof value.kind !== \"string\") return false;\n\n if (value.kind === \"web_fetch\") {\n if (!(\"payload\" in value) || !isRecord(value.payload)) return false;\n return typeof value.payload.path === \"string\";\n }\n\n return false;\n};\n\nexport const isWorkerToMainMessage = (\n value: unknown,\n): value is WorkerToMainMessage =>\n isRpcResponseMessage(value) || isWorkerEventMessage(value);\n","import { WorkerError } from \"./errors\";\nimport { isRpcResponseMessage } from \"./messages\";\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst extractRpcErrorMessage = (error: unknown): string => {\n if (typeof error === \"string\") return error;\n if (isRecord(error) && typeof error.message === \"string\")\n return error.message;\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nexport interface RpcClient<Protocol> {\n call<K extends keyof Protocol>(\n kind: K,\n ...args: Protocol[K] extends { request: infer P }\n ? P extends void\n ? []\n : [payload: P]\n : []\n ): Promise<Protocol[K] extends { response: infer R } ? R : void>;\n notify(message: unknown): void;\n receive(response: unknown): void;\n rejectAll(cause: unknown): void;\n}\n\nexport const makeRpcClient = <Protocol>(\n sender: (message: unknown) => void,\n): RpcClient<Protocol> => {\n let requestIdCounter = 0;\n const pending = new Map<\n number,\n {\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n kind: string;\n }\n >();\n\n const call = <K extends keyof Protocol>(\n kind: K,\n ...args: Protocol[K] extends { request: infer P }\n ? P extends void\n ? []\n : [payload: P]\n : []\n ): Promise<Protocol[K] extends { response: infer R } ? R : void> => {\n const requestId = requestIdCounter;\n requestIdCounter += 1;\n\n return new Promise((resolve, reject) => {\n pending.set(requestId, {\n resolve: resolve as (value: unknown) => void,\n reject,\n kind: kind as string,\n });\n\n const payload = args[0];\n try {\n sender(\n payload === undefined\n ? { kind, requestId }\n : { kind, requestId, payload },\n );\n } catch (cause) {\n pending.delete(requestId);\n reject(\n new WorkerError(`Failed to send worker command \"${String(kind)}\"`, {\n cause,\n }),\n );\n }\n });\n };\n\n const receive = (response: unknown): void => {\n if (!isRpcResponseMessage(response)) return;\n\n const req = pending.get(response.requestId);\n if (!req) return;\n\n pending.delete(response.requestId);\n if (\"result\" in response) {\n req.resolve(response.result);\n } else {\n req.reject(\n new WorkerError(`Worker command failed: ${req.kind}`, {\n cause: response.error ?? extractRpcErrorMessage(response.error),\n }),\n );\n }\n };\n\n const rejectAll = (cause: unknown): void => {\n for (const [requestId, req] of pending) {\n pending.delete(requestId);\n req.reject(\n new WorkerError(`Worker command failed: ${req.kind}`, { cause }),\n );\n }\n };\n\n return {\n call,\n notify: sender,\n receive,\n rejectAll,\n };\n};\n","import type { WasmCompileOptions, WasmCompileOutput } from \"./wasm\";\nimport type { WasmModuleOrPath } from \"./wasm-module\";\n\nconst INITIAL_SAB_SIZE = 1024 * 1024;\nconst MAX_SAB_SIZE = 4 * 1024 * 1024 * 1024;\nconst DEFAULT_FETCH_TIMEOUT = 30000;\n\nexport const SharedMemoryCommunicationStatus = {\n None: 0,\n Pending: 1,\n Error: 2,\n Success: 3,\n} as const;\n\nexport type SharedMemoryCommunicationStatus =\n (typeof SharedMemoryCommunicationStatus)[keyof typeof SharedMemoryCommunicationStatus];\n\nexport class SharedMemoryCommunication {\n dataBuf: SharedArrayBuffer;\n statusBuf: SharedArrayBuffer;\n sizeBuf: SharedArrayBuffer;\n\n constructor() {\n this.dataBuf = new SharedArrayBuffer(INITIAL_SAB_SIZE, {\n maxByteLength: MAX_SAB_SIZE,\n });\n this.statusBuf = new SharedArrayBuffer(4);\n this.sizeBuf = new SharedArrayBuffer(4);\n }\n\n getStatus(): SharedMemoryCommunicationStatus {\n return Atomics.load(\n new Int32Array(this.statusBuf),\n 0,\n ) as SharedMemoryCommunicationStatus;\n }\n\n setStatus(status: SharedMemoryCommunicationStatus): void {\n const statusView = new Int32Array(this.statusBuf);\n Atomics.store(statusView, 0, status);\n Atomics.notify(statusView, 0, 1);\n }\n\n setBuffer(buf: Uint8Array): void {\n const needed = buf.byteLength;\n if (needed > MAX_SAB_SIZE) {\n throw new Error(\n `File too large: ${needed} bytes. Maximum allowed: ${MAX_SAB_SIZE} bytes.`,\n );\n }\n\n if (needed > this.dataBuf.byteLength) {\n this.dataBuf.grow(needed);\n }\n\n new Uint8Array(this.dataBuf).set(buf);\n Atomics.store(new Int32Array(this.sizeBuf), 0, needed);\n }\n\n getBuffer(): Uint8Array {\n const size = Atomics.load(new Int32Array(this.sizeBuf), 0);\n return new Uint8Array(this.dataBuf, 0, size);\n }\n\n waitForStatusChange(\n expectedStatus: SharedMemoryCommunicationStatus,\n timeoutMs = DEFAULT_FETCH_TIMEOUT,\n ): boolean {\n return (\n Atomics.wait(\n new Int32Array(this.statusBuf),\n 0,\n expectedStatus,\n timeoutMs,\n ) === \"ok\"\n );\n }\n\n static hydrateObj(obj: SharedMemoryCommunication): SharedMemoryCommunication {\n // Structured cloning preserves the SharedArrayBuffers but drops the class\n // prototype, so the worker rehydrates the plain cloned object before using\n // the SharedMemoryCommunication methods.\n const instantiation = new SharedMemoryCommunication();\n instantiation.dataBuf = obj.dataBuf;\n instantiation.statusBuf = obj.statusBuf;\n instantiation.sizeBuf = obj.sizeBuf;\n return instantiation;\n }\n}\n\nexport interface TypstWorkerProtocol {\n init: {\n request: {\n sharedMemoryCommunication: SharedMemoryCommunication;\n moduleOrPath: WasmModuleOrPath;\n };\n response: void;\n };\n add_file: {\n request: { path: string; data: Uint8Array };\n response: void;\n };\n add_source: {\n request: { path: string; text: string };\n response: void;\n };\n add_font: {\n request: { data: Uint8Array };\n response: void;\n };\n remove_file: {\n request: { path: string };\n response: void;\n };\n clear_files: {\n request: void;\n response: void;\n };\n set_main: {\n request: { path: string };\n response: void;\n };\n compile: {\n request: { options: WasmCompileOptions };\n response: WasmCompileOutput;\n };\n list_files: {\n request: void;\n response: string[];\n };\n has_file: {\n request: { path: string };\n response: boolean;\n };\n}\n\ntype NoPayload = Record<never, never>;\n\nexport type ExcludePayloadIfEmpty<P> = P extends void\n ? NoPayload\n : { payload: P };\n\nexport type RpcRequestMessage<T> = {\n [K in keyof T]: {\n kind: K;\n requestId: number;\n } & (T[K] extends { request: infer P }\n ? ExcludePayloadIfEmpty<P>\n : NoPayload);\n}[keyof T];\n\nexport type RpcResponseMessage<TResult = unknown, TError = unknown> =\n | { requestId: number; result: TResult }\n | { requestId: number; error: TError };\n","import { FetchError } from \"./errors\";\nimport {\n SharedMemoryCommunication,\n SharedMemoryCommunicationStatus,\n} from \"./protocol\";\n\ntype PackageFileLoader = {\n getFile(spec: string): Promise<Uint8Array>;\n};\n\nexport type FetchBridge = {\n readonly sharedMemoryCommunication: SharedMemoryCommunication;\n readonly handleFetchRequest: (path: string) => Promise<void>;\n};\n\nexport const makeFetchBridge = (\n packageLoader: PackageFileLoader,\n isDisposed: () => boolean,\n fetchImpl: typeof fetch = fetch,\n): FetchBridge => {\n const sharedMemoryCommunication = new SharedMemoryCommunication();\n\n const handleFetchRequest = async (path: string): Promise<void> => {\n if (isDisposed()) return;\n\n try {\n const bytes = path.startsWith(\"@\")\n ? await packageLoader.getFile(path)\n : await fetchPath(path, fetchImpl);\n if (isDisposed()) return;\n\n sharedMemoryCommunication.setBuffer(bytes);\n sharedMemoryCommunication.setStatus(\n SharedMemoryCommunicationStatus.Success,\n );\n } catch {\n if (!isDisposed()) {\n sharedMemoryCommunication.setStatus(\n SharedMemoryCommunicationStatus.Error,\n );\n }\n }\n };\n\n return {\n sharedMemoryCommunication,\n handleFetchRequest,\n };\n};\n\nconst fetchPath = async (\n path: string,\n fetchImpl: typeof fetch,\n): Promise<Uint8Array> => {\n try {\n const response = await fetchImpl(path);\n if (!response.ok) throw new Error(`Status ${response.status}`);\n return new Uint8Array(await response.arrayBuffer());\n } catch (cause) {\n throw new FetchError(path, cause);\n }\n};\n","import { isWorkerToMainMessage, type WorkerToMainMessage } from \"./messages\";\n\ntype WorkerLike = {\n onmessage: ((event: MessageEvent) => void) | null;\n onerror?: ((event: ErrorEvent) => void) | null;\n postMessage: (message: unknown) => void;\n};\n\nexport type WorkerTransport = {\n readonly post: (message: unknown) => void;\n readonly close: () => void;\n};\n\nexport const makeWorkerTransport = (\n worker: WorkerLike,\n onMessage: (message: WorkerToMainMessage) => void,\n onError: (cause: unknown) => void,\n): WorkerTransport => {\n worker.onmessage = (event: MessageEvent) => {\n if (isWorkerToMainMessage(event.data)) {\n onMessage(event.data);\n }\n };\n\n if (\"onerror\" in worker) {\n worker.onerror = (event: ErrorEvent) => {\n onError(event.error ?? event.message);\n };\n }\n\n return {\n post: (message: unknown) => {\n worker.postMessage(message);\n },\n close: () => {\n worker.onmessage = null;\n if (\"onerror\" in worker) {\n worker.onerror = null;\n }\n },\n };\n};\n","import type { TypstWorkerProtocol } from \"./protocol\";\nimport type { PackageManager } from \"./package-manager\";\nimport TypstWorker from \"./worker.ts?worker\";\nimport { makeRpcClient, type RpcClient } from \"./rpc\";\nimport { isRpcResponseMessage, type WorkerToMainMessage } from \"./messages\";\nimport { makeFetchBridge } from \"./fetch-bridge\";\nimport type { WasmModuleOrPath } from \"./wasm-module\";\nimport { makeWorkerTransport, type WorkerTransport } from \"./worker-transport\";\nimport type { WasmCompileOptions, WasmCompileOutput } from \"./wasm\";\nimport { CompilerDisposedError } from \"./errors\";\n\nexport class WorkerService {\n private disposed = false;\n private initPromise: Promise<void> | null = null;\n private readonly worker: Worker;\n private readonly rpcClient: RpcClient<TypstWorkerProtocol>;\n private readonly transport: WorkerTransport;\n\n constructor(packageManager: PackageManager, fetchImpl: typeof fetch = fetch) {\n this.worker = new TypstWorker() as Worker;\n const fetchBridge = makeFetchBridge(\n packageManager,\n () => this.disposed,\n fetchImpl,\n );\n\n this.rpcClient = makeRpcClient<TypstWorkerProtocol>((msg) => {\n this.transport.post(msg);\n });\n\n this.transport = makeWorkerTransport(\n this.worker,\n (msg) => {\n void this.handleMessage(msg, fetchBridge.handleFetchRequest);\n },\n (cause) => {\n this.rpcClient.rejectAll(cause);\n },\n );\n\n this.initWorker = async (moduleOrPath: WasmModuleOrPath) => {\n await this.rpcClient.call(\"init\", {\n sharedMemoryCommunication: fetchBridge.sharedMemoryCommunication,\n moduleOrPath,\n });\n };\n }\n\n private readonly initWorker: (\n moduleOrPath: WasmModuleOrPath,\n ) => Promise<void>;\n\n async init(moduleOrPath: WasmModuleOrPath): Promise<void> {\n this.assertNotDisposed();\n this.initPromise ??= this.initWorker(moduleOrPath);\n try {\n await this.initPromise;\n } catch (error) {\n this.initPromise = null;\n throw error;\n }\n }\n\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n this.rpcClient.rejectAll(\n new CompilerDisposedError(\"Compiler has been disposed\"),\n );\n this.transport.close();\n this.worker.terminate();\n }\n\n addFont(data: Uint8Array): Promise<void> {\n return this.rpcClient.call(\"add_font\", { data });\n }\n\n addFile(path: string, data: Uint8Array): Promise<void> {\n return this.rpcClient.call(\"add_file\", { path, data });\n }\n\n addSource(path: string, text: string): Promise<void> {\n return this.rpcClient.call(\"add_source\", { path, text });\n }\n\n removeFile(path: string): Promise<void> {\n return this.rpcClient.call(\"remove_file\", { path });\n }\n\n clearFiles(): Promise<void> {\n return this.rpcClient.call(\"clear_files\");\n }\n\n listFiles(): Promise<string[]> {\n return this.rpcClient.call(\"list_files\");\n }\n\n hasFile(path: string): Promise<boolean> {\n return this.rpcClient.call(\"has_file\", { path });\n }\n\n setMain(path: string): Promise<void> {\n return this.rpcClient.call(\"set_main\", { path });\n }\n\n compile(options: WasmCompileOptions): Promise<WasmCompileOutput> {\n return this.rpcClient.call(\"compile\", { options });\n }\n\n private async handleMessage(\n msg: WorkerToMainMessage,\n handleFetchRequest: (path: string) => Promise<void>,\n ): Promise<void> {\n if (isRpcResponseMessage(msg)) {\n this.rpcClient.receive(msg);\n return;\n }\n\n switch (msg.kind) {\n case \"web_fetch\":\n await handleFetchRequest(msg.payload.path);\n return;\n }\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new CompilerDisposedError(\"Compiler has been disposed\");\n }\n }\n}\n","import { DirectService } from \"./direct-service\";\nimport type { PackageManager } from \"./package-manager\";\nimport { WorkerService } from \"./worker-service\";\nimport type { WasmModuleOrPath } from \"./wasm-module\";\nimport type { WasmCompileOptions, WasmCompileOutput } from \"./wasm\";\nexport { supportsJspiBackend, supportsWorkerBackend } from \"./backend-support\";\nimport { supportsJspiBackend, supportsWorkerBackend } from \"./backend-support\";\n\nexport type CompilerBackendService = {\n init(moduleOrPath: WasmModuleOrPath): Promise<void>;\n dispose(): Promise<void>;\n addFont(data: Uint8Array): Promise<void>;\n addFile(path: string, data: Uint8Array): Promise<void>;\n addSource(path: string, text: string): Promise<void>;\n removeFile(path: string): Promise<void>;\n clearFiles(): Promise<void>;\n listFiles(): Promise<string[]>;\n hasFile(path: string): Promise<boolean>;\n setMain(path: string): Promise<void>;\n compile(options: WasmCompileOptions): Promise<WasmCompileOutput>;\n};\n\nexport interface BackendFactoryOptions {\n packageManager: PackageManager;\n fetch?: typeof fetch;\n}\n\nexport const selectAutomaticBackendKind = (): \"worker\" | \"jspi\" | \"none\" => {\n if (supportsWorkerBackend()) return \"worker\";\n if (supportsJspiBackend()) return \"jspi\";\n return \"none\";\n};\n\nexport const createCompilerBackend = (\n backend: \"auto\" | \"worker\" | \"jspi\",\n options: BackendFactoryOptions,\n): CompilerBackendService => {\n const selected = backend === \"auto\" ? selectAutomaticBackendKind() : backend;\n\n switch (selected) {\n case \"worker\":\n return new WorkerService(options.packageManager, options.fetch);\n case \"jspi\":\n return new DirectService(options.packageManager, options.fetch);\n case \"none\":\n throw new Error(\n \"No compatible typst-wasm backend available. Requires Worker+SharedArrayBuffer+Atomics.wait or JSPI.\",\n );\n }\n};\n","import type { PackageCache } from \"./types\";\n\nexport const makeBrowserCacheStorage = (): PackageCache => {\n let cachePromise: Promise<Cache | null> | null = null;\n\n const openCache = async (): Promise<Cache | null> => {\n cachePromise ??= caches.open(\"typst-packages\").catch(() => null);\n return cachePromise;\n };\n\n return {\n async get(key: string): Promise<Uint8Array | null> {\n const cache = await openCache();\n if (!cache) return null;\n\n try {\n const response = await cache.match(key);\n if (!response) return null;\n return new Uint8Array(await response.arrayBuffer());\n } catch {\n return null;\n }\n },\n\n async set(key: string, value: Uint8Array): Promise<void> {\n const cache = await openCache();\n if (!cache) return;\n\n try {\n const response = new Response(value.slice(), {\n headers: { \"Content-Type\": \"application/octet-stream\" },\n });\n await cache.put(key, response);\n } catch {\n // Cache failures should not make compilation fail.\n }\n },\n };\n};\n\nexport const makeMemoryCacheStorage = (capacity: number): PackageCache => {\n const storage = new Map<string, Uint8Array>();\n\n return {\n async get(key: string): Promise<Uint8Array | null> {\n const value = storage.get(key);\n if (!value) return null;\n storage.delete(key);\n storage.set(key, value);\n return value;\n },\n\n async set(key: string, value: Uint8Array): Promise<void> {\n if (storage.has(key)) {\n storage.delete(key);\n }\n\n storage.set(key, value);\n while (storage.size > capacity) {\n const oldest = storage.keys().next().value as string | undefined;\n if (!oldest) break;\n storage.delete(oldest);\n }\n },\n };\n};\n\nexport const makeDefaultPackageCache = (capacity = 400): PackageCache =>\n typeof caches !== \"undefined\"\n ? makeBrowserCacheStorage()\n : makeMemoryCacheStorage(capacity);\n","import { parseTarGzip } from \"nanotar\";\nimport {\n FileNotFoundError,\n PackageFetchError,\n PackageParseError,\n} from \"./errors\";\nimport { makeDefaultPackageCache } from \"./cache-abstraction\";\nimport type { PackageCache } from \"./types\";\n\ninterface PackageSpec {\n readonly namespace: string;\n readonly name: string;\n readonly version: string;\n readonly filePath: string;\n}\n\nexport interface PackageManagerOptions {\n fetch?: typeof fetch;\n packageBaseUrl?: string;\n cache?: PackageCache;\n memoryPackageCacheCapacity?: number;\n}\n\nconst parseSpec = (spec: string): PackageSpec => {\n const match = spec.match(\n /^@([a-z0-9-]+)\\/([a-z0-9_-]+):([0-9]+\\.[0-9]+\\.[0-9]+(?:-[a-zA-Z0-9.-]+)?)\\/(.+)$/,\n );\n\n if (!match) {\n throw new PackageParseError(\n spec,\n \"Expected format: @namespace/name:version/path where namespace is lowercase alphanumeric with hyphens, name is lowercase alphanumeric with hyphens/underscores, version is semver, and path is the file path.\",\n );\n }\n\n const [, namespace, name, version, filePath] = match;\n\n if (namespace.startsWith(\"-\") || namespace.endsWith(\"-\")) {\n throw new PackageParseError(\n spec,\n `Invalid package namespace: \"${namespace}\" cannot start or end with hyphen`,\n );\n }\n\n if (name.startsWith(\"_\") || name.endsWith(\"_\")) {\n throw new PackageParseError(\n spec,\n `Invalid package name: \"${name}\" cannot start or end with underscore`,\n );\n }\n\n return { namespace, name, version, filePath };\n};\n\nconst getFileCacheKey = (spec: PackageSpec, filePath: string): string =>\n `@${spec.namespace}/${spec.name}:${spec.version}/${filePath}`;\nconst getCacheKey = (spec: PackageSpec): string =>\n getFileCacheKey(spec, spec.filePath);\nconst getPackageKey = (spec: PackageSpec): string =>\n `@${spec.namespace}/${spec.name}:${spec.version}`;\n\nexport class PackageManager {\n private readonly fetchImpl: typeof fetch;\n private readonly packageBaseUrl: string;\n private readonly cache: PackageCache;\n private readonly loadedPackages = new Set<string>();\n private readonly loadingPackages = new Map<string, Promise<void>>();\n\n constructor(options: PackageManagerOptions = {}) {\n this.fetchImpl = options.fetch ?? fetch;\n this.packageBaseUrl =\n options.packageBaseUrl ?? \"https://packages.typst.org\";\n this.cache =\n options.cache ??\n makeDefaultPackageCache(options.memoryPackageCacheCapacity);\n }\n\n async getFile(spec: string): Promise<Uint8Array> {\n const parsed = parseSpec(spec);\n const cacheKey = getCacheKey(parsed);\n const cached = await this.cache.get(cacheKey);\n if (cached) return cached;\n\n const packageKey = getPackageKey(parsed);\n if (!this.loadedPackages.has(packageKey)) {\n await this.loadPackageDeduped(parsed);\n }\n\n const file = await this.cache.get(cacheKey);\n if (!file) {\n throw new FileNotFoundError(parsed.filePath);\n }\n return file;\n }\n\n private async loadPackageDeduped(spec: PackageSpec): Promise<void> {\n const packageKey = getPackageKey(spec);\n const existing = this.loadingPackages.get(packageKey);\n if (existing) {\n await existing;\n return;\n }\n\n const load = this.loadPackage(spec);\n this.loadingPackages.set(packageKey, load);\n try {\n await load;\n this.loadedPackages.add(packageKey);\n } finally {\n this.loadingPackages.delete(packageKey);\n }\n }\n\n private async loadPackage(spec: PackageSpec): Promise<void> {\n const url = `${this.packageBaseUrl}/${spec.namespace}/${spec.name}-${spec.version}.tar.gz`;\n\n try {\n const response = await this.fetchImpl(url);\n if (!response.ok) {\n throw new Error(`Status ${response.status}`);\n }\n\n const tarData = new Uint8Array(await response.arrayBuffer());\n const files = await parseTarGzip(tarData);\n\n await Promise.all(\n files.map(async (file) => {\n if (file.type === \"file\" && file.data) {\n await this.cache.set(getFileCacheKey(spec, file.name), file.data);\n }\n }),\n );\n } catch (cause) {\n throw new PackageFetchError(url, cause);\n }\n }\n}\n","import {\n createCompilerBackend,\n type CompilerBackendService,\n} from \"./compiler-backend\";\nimport { CompileError } from \"./errors\";\nimport { PackageManager } from \"./package-manager\";\nimport { toWasmCompileOptions, type WasmCompileOutput } from \"./wasm\";\nimport type {\n CompileOptions,\n CompileResult,\n TypstCompiler,\n TypstCompilerOptions,\n} from \"./types\";\n\nconst hasErrorDiagnostics = (diagnostics: { severity: string }[]): boolean =>\n diagnostics.some((diagnostic) => diagnostic.severity === \"error\");\n\nconst extractErrorMessage = (error: unknown): string => {\n if (error instanceof Error) return error.message;\n if (typeof error === \"string\") return error;\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\nconst normalizeCompileResult = (result: WasmCompileOutput): CompileResult => {\n const diagnostics = result.diagnostics;\n const deps = result.deps ?? undefined;\n const timings = result.timings;\n\n switch (result.format) {\n case \"pdf\":\n return {\n format: \"pdf\",\n output: result.output_bytes ?? new Uint8Array(),\n diagnostics,\n deps,\n timings,\n };\n case \"png\":\n return {\n format: \"png\",\n pages: result.pages.map((page) => ({\n page: page.page,\n output: page.output_bytes ?? new Uint8Array(),\n })),\n diagnostics,\n deps,\n timings,\n };\n case \"svg\":\n return {\n format: \"svg\",\n pages: result.pages.map((page) => ({\n page: page.page,\n output: page.output_text ?? \"\",\n })),\n diagnostics,\n deps,\n timings,\n };\n case \"html\":\n return {\n format: \"html\",\n output: result.output_text ?? \"\",\n diagnostics,\n deps,\n timings,\n };\n case \"bundle\":\n return {\n format: \"bundle\",\n files: result.files.map((file) => ({\n path: file.path,\n data: file.data,\n mediaType: file.media_type ?? undefined,\n })),\n diagnostics,\n deps,\n timings,\n };\n }\n};\n\nclass PromiseTypstCompiler implements TypstCompiler {\n constructor(private readonly backend: CompilerBackendService) {}\n\n addFont(data: Uint8Array): Promise<void> {\n return this.backend.addFont(data);\n }\n\n addFile(path: string, data: Uint8Array): Promise<void> {\n return this.backend.addFile(path, data);\n }\n\n addSource(path: string, text: string): Promise<void> {\n return this.backend.addSource(path, text);\n }\n\n removeFile(path: string): Promise<void> {\n return this.backend.removeFile(path);\n }\n\n clearFiles(): Promise<void> {\n return this.backend.clearFiles();\n }\n\n listFiles(): Promise<string[]> {\n return this.backend.listFiles();\n }\n\n hasFile(path: string): Promise<boolean> {\n return this.backend.hasFile(path);\n }\n\n setMain(path: string): Promise<void> {\n return this.backend.setMain(path);\n }\n\n async compile(options: CompileOptions = {}): Promise<CompileResult> {\n if (options.main) {\n await this.setMain(options.main);\n }\n\n let rawResult: WasmCompileOutput;\n try {\n rawResult = await this.backend.compile(toWasmCompileOptions(options));\n } catch (cause) {\n throw new CompileError(extractErrorMessage(cause), { cause });\n }\n\n if (hasErrorDiagnostics(rawResult.diagnostics) || !rawResult.success) {\n throw new CompileError(rawResult.internal_error ?? \"Compilation failed\", {\n diagnostics: rawResult.diagnostics,\n });\n }\n\n return normalizeCompileResult(rawResult);\n }\n\n dispose(): Promise<void> {\n return this.backend.dispose();\n }\n}\n\nexport const createTypstCompiler = async (\n options: TypstCompilerOptions,\n): Promise<TypstCompiler> => {\n const packageManager = new PackageManager({\n fetch: options.fetch,\n packageBaseUrl: options.packageBaseUrl,\n cache: options.packageCache,\n memoryPackageCacheCapacity: options.memoryPackageCacheCapacity,\n });\n const backend = createCompilerBackend(options.backend ?? \"auto\", {\n packageManager,\n fetch: options.fetch,\n });\n\n await backend.init(options.moduleOrPath);\n return new PromiseTypstCompiler(backend);\n};\n\nexport { SharedMemoryCommunication } from \"./protocol\";\nexport type { MainToWorkerMessage, WorkerToMainMessage } from \"./messages\";\nexport type { WasmModuleOrPath } from \"./wasm-module\";\nexport type { WasmDiagnostic } from \"./wasm\";\nexport type {\n BundleFile,\n CompileFormat,\n CompileOptions,\n CompileResult,\n DependencyInfo,\n PageOutput,\n PackageCache,\n TypstCompiler,\n TypstCompilerOptions,\n} from \"./types\";\nexport * from \"@typst-wasm/fonts\";\nexport * from \"./errors\";\nexport { PackageManager } from \"./package-manager\";\nexport {\n makeBrowserCacheStorage,\n makeDefaultPackageCache,\n makeMemoryCacheStorage,\n} from \"./cache-abstraction\";\nexport {\n supportsWorkerBackend,\n supportsJspiBackend,\n selectAutomaticBackendKind,\n} from \"./compiler-backend\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { WasmDiagnostic } from "./wasm.js";
|
|
2
|
+
|
|
3
|
+
//#region src/wasm-module.d.ts
|
|
4
|
+
type WasmModuleOrPath = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region src/types.d.ts
|
|
7
|
+
type CompileFormat = "pdf" | "png" | "svg" | "html" | "bundle";
|
|
8
|
+
type DiagnosticFormat = "human" | "short";
|
|
9
|
+
interface TypstCompilerOptions {
|
|
10
|
+
moduleOrPath: WasmModuleOrPath;
|
|
11
|
+
backend?: "auto" | "worker" | "jspi";
|
|
12
|
+
fetch?: typeof fetch;
|
|
13
|
+
packageBaseUrl?: string;
|
|
14
|
+
packageCache?: PackageCache;
|
|
15
|
+
memoryPackageCacheCapacity?: number;
|
|
16
|
+
}
|
|
17
|
+
interface CompileOptions {
|
|
18
|
+
format?: CompileFormat;
|
|
19
|
+
main?: string;
|
|
20
|
+
root?: string;
|
|
21
|
+
inputs?: Record<string, string>;
|
|
22
|
+
features?: string[];
|
|
23
|
+
creationTimestamp?: number | null;
|
|
24
|
+
jobs?: number;
|
|
25
|
+
diagnosticFormat?: DiagnosticFormat;
|
|
26
|
+
pages?: string;
|
|
27
|
+
pdfStandards?: string[];
|
|
28
|
+
pdfTags?: boolean;
|
|
29
|
+
ppi?: number;
|
|
30
|
+
deps?: boolean;
|
|
31
|
+
depsFormat?: "json";
|
|
32
|
+
timings?: boolean;
|
|
33
|
+
}
|
|
34
|
+
interface PageOutput<T> {
|
|
35
|
+
page: number;
|
|
36
|
+
output: T;
|
|
37
|
+
}
|
|
38
|
+
interface BundleFile {
|
|
39
|
+
path: string;
|
|
40
|
+
data: Uint8Array;
|
|
41
|
+
mediaType?: string;
|
|
42
|
+
}
|
|
43
|
+
interface DependencyInfo {
|
|
44
|
+
files: string[];
|
|
45
|
+
}
|
|
46
|
+
type CompileResult = {
|
|
47
|
+
format: "pdf";
|
|
48
|
+
output: Uint8Array;
|
|
49
|
+
diagnostics: WasmDiagnostic[];
|
|
50
|
+
deps?: DependencyInfo;
|
|
51
|
+
timings?: unknown;
|
|
52
|
+
} | {
|
|
53
|
+
format: "png";
|
|
54
|
+
pages: PageOutput<Uint8Array>[];
|
|
55
|
+
diagnostics: WasmDiagnostic[];
|
|
56
|
+
deps?: DependencyInfo;
|
|
57
|
+
timings?: unknown;
|
|
58
|
+
} | {
|
|
59
|
+
format: "svg";
|
|
60
|
+
pages: PageOutput<string>[];
|
|
61
|
+
diagnostics: WasmDiagnostic[];
|
|
62
|
+
deps?: DependencyInfo;
|
|
63
|
+
timings?: unknown;
|
|
64
|
+
} | {
|
|
65
|
+
format: "html";
|
|
66
|
+
output: string;
|
|
67
|
+
diagnostics: WasmDiagnostic[];
|
|
68
|
+
deps?: DependencyInfo;
|
|
69
|
+
timings?: unknown;
|
|
70
|
+
} | {
|
|
71
|
+
format: "bundle";
|
|
72
|
+
files: BundleFile[];
|
|
73
|
+
diagnostics: WasmDiagnostic[];
|
|
74
|
+
deps?: DependencyInfo;
|
|
75
|
+
timings?: unknown;
|
|
76
|
+
};
|
|
77
|
+
interface PackageCache {
|
|
78
|
+
get(key: string): Promise<Uint8Array | null>;
|
|
79
|
+
set(key: string, value: Uint8Array): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
interface TypstCompiler {
|
|
82
|
+
addFont(data: Uint8Array): Promise<void>;
|
|
83
|
+
addFile(path: string, data: Uint8Array): Promise<void>;
|
|
84
|
+
addSource(path: string, text: string): Promise<void>;
|
|
85
|
+
removeFile(path: string): Promise<void>;
|
|
86
|
+
clearFiles(): Promise<void>;
|
|
87
|
+
listFiles(): Promise<string[]>;
|
|
88
|
+
hasFile(path: string): Promise<boolean>;
|
|
89
|
+
setMain(path: string): Promise<void>;
|
|
90
|
+
compile(options?: CompileOptions): Promise<CompileResult>;
|
|
91
|
+
dispose(): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { DependencyInfo as a, TypstCompiler as c, CompileResult as i, TypstCompilerOptions as l, CompileFormat as n, PackageCache as o, CompileOptions as r, PageOutput as s, BundleFile as t, WasmModuleOrPath as u };
|
|
95
|
+
//# sourceMappingURL=types-BoGtHbqQ.d.ts.map
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
//#region ../engine-wasm/dist/typst_wasm.js
|
|
2
|
+
var TypstCompiler = class {
|
|
3
|
+
__destroy_into_raw() {
|
|
4
|
+
const ptr = this.__wbg_ptr;
|
|
5
|
+
this.__wbg_ptr = 0;
|
|
6
|
+
TypstCompilerFinalization.unregister(this);
|
|
7
|
+
return ptr;
|
|
8
|
+
}
|
|
9
|
+
free() {
|
|
10
|
+
const ptr = this.__destroy_into_raw();
|
|
11
|
+
wasm.__wbg_typstcompiler_free(ptr, 0);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @param {string} path
|
|
15
|
+
* @param {Uint8Array} data
|
|
16
|
+
*/
|
|
17
|
+
add_file(path, data) {
|
|
18
|
+
const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
19
|
+
const len0 = WASM_VECTOR_LEN;
|
|
20
|
+
const ptr1 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
|
|
21
|
+
const len1 = WASM_VECTOR_LEN;
|
|
22
|
+
const ret = wasm.typstcompiler_add_file(this.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
23
|
+
if (ret[1]) throw takeFromExternrefTable0(ret[0]);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @param {Uint8Array} data
|
|
27
|
+
* @returns {string}
|
|
28
|
+
*/
|
|
29
|
+
add_font(data) {
|
|
30
|
+
let deferred3_0;
|
|
31
|
+
let deferred3_1;
|
|
32
|
+
try {
|
|
33
|
+
const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
|
|
34
|
+
const len0 = WASM_VECTOR_LEN;
|
|
35
|
+
const ret = wasm.typstcompiler_add_font(this.__wbg_ptr, ptr0, len0);
|
|
36
|
+
var ptr2 = ret[0];
|
|
37
|
+
var len2 = ret[1];
|
|
38
|
+
if (ret[3]) {
|
|
39
|
+
ptr2 = 0;
|
|
40
|
+
len2 = 0;
|
|
41
|
+
throw takeFromExternrefTable0(ret[2]);
|
|
42
|
+
}
|
|
43
|
+
deferred3_0 = ptr2;
|
|
44
|
+
deferred3_1 = len2;
|
|
45
|
+
return getStringFromWasm0(ptr2, len2);
|
|
46
|
+
} finally {
|
|
47
|
+
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @param {string} path
|
|
52
|
+
* @param {string} text
|
|
53
|
+
*/
|
|
54
|
+
add_source(path, text) {
|
|
55
|
+
const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
56
|
+
const len0 = WASM_VECTOR_LEN;
|
|
57
|
+
const ptr1 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
58
|
+
const len1 = WASM_VECTOR_LEN;
|
|
59
|
+
const ret = wasm.typstcompiler_add_source(this.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
60
|
+
if (ret[1]) throw takeFromExternrefTable0(ret[0]);
|
|
61
|
+
}
|
|
62
|
+
clear_files() {
|
|
63
|
+
const ret = wasm.typstcompiler_clear_files(this.__wbg_ptr);
|
|
64
|
+
if (ret[1]) throw takeFromExternrefTable0(ret[0]);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @param {CompileOptions} options
|
|
68
|
+
* @returns {CompileOutput}
|
|
69
|
+
*/
|
|
70
|
+
compile(options) {
|
|
71
|
+
const ret = wasm.typstcompiler_compile(this.__wbg_ptr, options);
|
|
72
|
+
if (ret[2]) throw takeFromExternrefTable0(ret[1]);
|
|
73
|
+
return takeFromExternrefTable0(ret[0]);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @param {string} path
|
|
77
|
+
* @returns {boolean}
|
|
78
|
+
*/
|
|
79
|
+
has_file(path) {
|
|
80
|
+
const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
81
|
+
const len0 = WASM_VECTOR_LEN;
|
|
82
|
+
const ret = wasm.typstcompiler_has_file(this.__wbg_ptr, ptr0, len0);
|
|
83
|
+
if (ret[2]) throw takeFromExternrefTable0(ret[1]);
|
|
84
|
+
return ret[0] !== 0;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @returns {string[]}
|
|
88
|
+
*/
|
|
89
|
+
list_files() {
|
|
90
|
+
const ret = wasm.typstcompiler_list_files(this.__wbg_ptr);
|
|
91
|
+
if (ret[3]) throw takeFromExternrefTable0(ret[2]);
|
|
92
|
+
var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
|
93
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
94
|
+
return v1;
|
|
95
|
+
}
|
|
96
|
+
constructor() {
|
|
97
|
+
this.__wbg_ptr = wasm.typstcompiler_new() >>> 0;
|
|
98
|
+
TypstCompilerFinalization.register(this, this.__wbg_ptr, this);
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @param {string} path
|
|
103
|
+
*/
|
|
104
|
+
remove_file(path) {
|
|
105
|
+
const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
106
|
+
const len0 = WASM_VECTOR_LEN;
|
|
107
|
+
const ret = wasm.typstcompiler_remove_file(this.__wbg_ptr, ptr0, len0);
|
|
108
|
+
if (ret[1]) throw takeFromExternrefTable0(ret[0]);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @param {string} path
|
|
112
|
+
*/
|
|
113
|
+
set_main(path) {
|
|
114
|
+
const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
115
|
+
const len0 = WASM_VECTOR_LEN;
|
|
116
|
+
wasm.typstcompiler_set_main(this.__wbg_ptr, ptr0, len0);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
if (Symbol.dispose) TypstCompiler.prototype[Symbol.dispose] = TypstCompiler.prototype.free;
|
|
120
|
+
function __wbg_get_imports(memory, customImports) {
|
|
121
|
+
const imports = {
|
|
122
|
+
__proto__: null,
|
|
123
|
+
"./typst_wasm_bg.js": {
|
|
124
|
+
__proto__: null,
|
|
125
|
+
__wbg___wbindgen_is_undefined_9e4d92534c42d778: function(arg0) {
|
|
126
|
+
return arg0 === void 0;
|
|
127
|
+
},
|
|
128
|
+
__wbg___wbindgen_string_get_72fb696202c56729: function(arg0, arg1) {
|
|
129
|
+
const obj = arg1;
|
|
130
|
+
const ret = typeof obj === "string" ? obj : void 0;
|
|
131
|
+
var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
132
|
+
var len1 = WASM_VECTOR_LEN;
|
|
133
|
+
getDataViewMemory0().setInt32(arg0 + 4, len1, true);
|
|
134
|
+
getDataViewMemory0().setInt32(arg0 + 0, ptr1, true);
|
|
135
|
+
},
|
|
136
|
+
__wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {
|
|
137
|
+
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
138
|
+
},
|
|
139
|
+
__wbg_getDate_db46eca87d2b4907: function(arg0) {
|
|
140
|
+
return arg0.getDate();
|
|
141
|
+
},
|
|
142
|
+
__wbg_getFullYear_30ddf266b7612036: function(arg0) {
|
|
143
|
+
return arg0.getFullYear();
|
|
144
|
+
},
|
|
145
|
+
__wbg_getMonth_4af888e76b42bb51: function(arg0) {
|
|
146
|
+
return arg0.getMonth();
|
|
147
|
+
},
|
|
148
|
+
__wbg_getTime_1e3cd1391c5c3995: function(arg0) {
|
|
149
|
+
return arg0.getTime();
|
|
150
|
+
},
|
|
151
|
+
__wbg_getUTCDate_aad14cab5ce3b408: function(arg0) {
|
|
152
|
+
return arg0.getUTCDate();
|
|
153
|
+
},
|
|
154
|
+
__wbg_getUTCFullYear_e2ef808de49a659f: function(arg0) {
|
|
155
|
+
return arg0.getUTCFullYear();
|
|
156
|
+
},
|
|
157
|
+
__wbg_getUTCMonth_1225344f80ac9874: function(arg0) {
|
|
158
|
+
return arg0.getUTCMonth();
|
|
159
|
+
},
|
|
160
|
+
__wbg_new_0_73afc35eb544e539: function() {
|
|
161
|
+
return /* @__PURE__ */ new Date();
|
|
162
|
+
},
|
|
163
|
+
__wbg_new_245cd5c49157e602: function(arg0) {
|
|
164
|
+
return new Date(arg0);
|
|
165
|
+
},
|
|
166
|
+
__wbg_parse_708461a1feddfb38: function() {
|
|
167
|
+
return handleError(function(arg0, arg1) {
|
|
168
|
+
return JSON.parse(getStringFromWasm0(arg0, arg1));
|
|
169
|
+
}, arguments);
|
|
170
|
+
},
|
|
171
|
+
__wbg_stringify_8d1cc6ff383e8bae: function() {
|
|
172
|
+
return handleError(function(arg0) {
|
|
173
|
+
return JSON.stringify(arg0);
|
|
174
|
+
}, arguments);
|
|
175
|
+
},
|
|
176
|
+
__wbindgen_cast_0000000000000001: function(arg0) {
|
|
177
|
+
return arg0;
|
|
178
|
+
},
|
|
179
|
+
__wbindgen_cast_0000000000000002: function(arg0, arg1) {
|
|
180
|
+
return getStringFromWasm0(arg0, arg1);
|
|
181
|
+
},
|
|
182
|
+
__wbindgen_init_externref_table: function() {
|
|
183
|
+
const table = wasm.__wbindgen_externrefs;
|
|
184
|
+
const offset = table.grow(4);
|
|
185
|
+
table.set(0, void 0);
|
|
186
|
+
table.set(offset + 0, void 0);
|
|
187
|
+
table.set(offset + 1, null);
|
|
188
|
+
table.set(offset + 2, true);
|
|
189
|
+
table.set(offset + 3, false);
|
|
190
|
+
},
|
|
191
|
+
memory: memory || new WebAssembly.Memory({
|
|
192
|
+
initial: 148,
|
|
193
|
+
maximum: 4096,
|
|
194
|
+
shared: true
|
|
195
|
+
})
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
if (customImports && typeof customImports === "object") for (const [moduleName, moduleImports] of Object.entries(customImports)) {
|
|
199
|
+
const existing = imports[moduleName] ?? { __proto__: null };
|
|
200
|
+
imports[moduleName] = Object.assign(existing, moduleImports ?? {});
|
|
201
|
+
}
|
|
202
|
+
return imports;
|
|
203
|
+
}
|
|
204
|
+
const TypstCompilerFinalization = typeof FinalizationRegistry === "undefined" ? {
|
|
205
|
+
register: () => {},
|
|
206
|
+
unregister: () => {}
|
|
207
|
+
} : new FinalizationRegistry((ptr) => wasm.__wbg_typstcompiler_free(ptr >>> 0, 1));
|
|
208
|
+
function addToExternrefTable0(obj) {
|
|
209
|
+
const idx = wasm.__externref_table_alloc();
|
|
210
|
+
wasm.__wbindgen_externrefs.set(idx, obj);
|
|
211
|
+
return idx;
|
|
212
|
+
}
|
|
213
|
+
function getArrayJsValueFromWasm0(ptr, len) {
|
|
214
|
+
ptr = ptr >>> 0;
|
|
215
|
+
const mem = getDataViewMemory0();
|
|
216
|
+
const result = [];
|
|
217
|
+
for (let i = ptr; i < ptr + 4 * len; i += 4) result.push(wasm.__wbindgen_externrefs.get(mem.getUint32(i, true)));
|
|
218
|
+
wasm.__externref_drop_slice(ptr, len);
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
let cachedDataViewMemory0 = null;
|
|
222
|
+
function getDataViewMemory0() {
|
|
223
|
+
if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
|
|
224
|
+
return cachedDataViewMemory0;
|
|
225
|
+
}
|
|
226
|
+
function getStringFromWasm0(ptr, len) {
|
|
227
|
+
ptr = ptr >>> 0;
|
|
228
|
+
return decodeText(ptr, len);
|
|
229
|
+
}
|
|
230
|
+
let cachedUint8ArrayMemory0 = null;
|
|
231
|
+
function getUint8ArrayMemory0() {
|
|
232
|
+
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
|
233
|
+
return cachedUint8ArrayMemory0;
|
|
234
|
+
}
|
|
235
|
+
function handleError(f, args) {
|
|
236
|
+
try {
|
|
237
|
+
return f.apply(this, args);
|
|
238
|
+
} catch (e) {
|
|
239
|
+
const idx = addToExternrefTable0(e);
|
|
240
|
+
wasm.__wbindgen_exn_store(idx);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function isLikeNone(x) {
|
|
244
|
+
return x === void 0 || x === null;
|
|
245
|
+
}
|
|
246
|
+
function passArray8ToWasm0(arg, malloc) {
|
|
247
|
+
const ptr = malloc(arg.length * 1, 1) >>> 0;
|
|
248
|
+
getUint8ArrayMemory0().set(arg, ptr / 1);
|
|
249
|
+
WASM_VECTOR_LEN = arg.length;
|
|
250
|
+
return ptr;
|
|
251
|
+
}
|
|
252
|
+
function passStringToWasm0(arg, malloc, realloc) {
|
|
253
|
+
if (realloc === void 0) {
|
|
254
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
255
|
+
const ptr = malloc(buf.length, 1) >>> 0;
|
|
256
|
+
getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
|
|
257
|
+
WASM_VECTOR_LEN = buf.length;
|
|
258
|
+
return ptr;
|
|
259
|
+
}
|
|
260
|
+
let len = arg.length;
|
|
261
|
+
let ptr = malloc(len, 1) >>> 0;
|
|
262
|
+
const mem = getUint8ArrayMemory0();
|
|
263
|
+
let offset = 0;
|
|
264
|
+
for (; offset < len; offset++) {
|
|
265
|
+
const code = arg.charCodeAt(offset);
|
|
266
|
+
if (code > 127) break;
|
|
267
|
+
mem[ptr + offset] = code;
|
|
268
|
+
}
|
|
269
|
+
if (offset !== len) {
|
|
270
|
+
if (offset !== 0) arg = arg.slice(offset);
|
|
271
|
+
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
|
|
272
|
+
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
|
|
273
|
+
const ret = cachedTextEncoder.encodeInto(arg, view);
|
|
274
|
+
offset += ret.written;
|
|
275
|
+
ptr = realloc(ptr, len, offset, 1) >>> 0;
|
|
276
|
+
}
|
|
277
|
+
WASM_VECTOR_LEN = offset;
|
|
278
|
+
return ptr;
|
|
279
|
+
}
|
|
280
|
+
function takeFromExternrefTable0(idx) {
|
|
281
|
+
const value = wasm.__wbindgen_externrefs.get(idx);
|
|
282
|
+
wasm.__externref_table_dealloc(idx);
|
|
283
|
+
return value;
|
|
284
|
+
}
|
|
285
|
+
let cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", {
|
|
286
|
+
ignoreBOM: true,
|
|
287
|
+
fatal: true
|
|
288
|
+
}) : void 0;
|
|
289
|
+
if (cachedTextDecoder) cachedTextDecoder.decode();
|
|
290
|
+
const MAX_SAFARI_DECODE_BYTES = 2146435072;
|
|
291
|
+
let numBytesDecoded = 0;
|
|
292
|
+
function decodeText(ptr, len) {
|
|
293
|
+
numBytesDecoded += len;
|
|
294
|
+
if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
|
|
295
|
+
cachedTextDecoder = new TextDecoder("utf-8", {
|
|
296
|
+
ignoreBOM: true,
|
|
297
|
+
fatal: true
|
|
298
|
+
});
|
|
299
|
+
cachedTextDecoder.decode();
|
|
300
|
+
numBytesDecoded = len;
|
|
301
|
+
}
|
|
302
|
+
return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));
|
|
303
|
+
}
|
|
304
|
+
const cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder() : void 0;
|
|
305
|
+
if (cachedTextEncoder) cachedTextEncoder.encodeInto = function(arg, view) {
|
|
306
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
307
|
+
view.set(buf);
|
|
308
|
+
return {
|
|
309
|
+
read: arg.length,
|
|
310
|
+
written: buf.length
|
|
311
|
+
};
|
|
312
|
+
};
|
|
313
|
+
let WASM_VECTOR_LEN = 0, wasm;
|
|
314
|
+
function __wbg_finalize_init(instance, module, thread_stack_size) {
|
|
315
|
+
wasm = instance.exports;
|
|
316
|
+
cachedDataViewMemory0 = null;
|
|
317
|
+
cachedUint8ArrayMemory0 = null;
|
|
318
|
+
if (typeof thread_stack_size !== "undefined" && (typeof thread_stack_size !== "number" || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) throw "invalid stack size";
|
|
319
|
+
wasm.__wbindgen_start(thread_stack_size);
|
|
320
|
+
return wasm;
|
|
321
|
+
}
|
|
322
|
+
async function __wbg_load(module, imports) {
|
|
323
|
+
if (typeof Response === "function" && module instanceof Response) {
|
|
324
|
+
if (typeof WebAssembly.instantiateStreaming === "function") try {
|
|
325
|
+
return await WebAssembly.instantiateStreaming(module, imports);
|
|
326
|
+
} catch (e) {
|
|
327
|
+
if (module.ok && expectedResponseType(module.type) && module.headers.get("Content-Type") !== "application/wasm") console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
|
|
328
|
+
else throw e;
|
|
329
|
+
}
|
|
330
|
+
const bytes = await module.arrayBuffer();
|
|
331
|
+
return await WebAssembly.instantiate(bytes, imports);
|
|
332
|
+
} else {
|
|
333
|
+
const instance = await WebAssembly.instantiate(module, imports);
|
|
334
|
+
if (instance instanceof WebAssembly.Instance) return {
|
|
335
|
+
instance,
|
|
336
|
+
module
|
|
337
|
+
};
|
|
338
|
+
else return instance;
|
|
339
|
+
}
|
|
340
|
+
function expectedResponseType(type) {
|
|
341
|
+
switch (type) {
|
|
342
|
+
case "basic":
|
|
343
|
+
case "cors":
|
|
344
|
+
case "default": return true;
|
|
345
|
+
}
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function initSync(module, memory) {
|
|
350
|
+
if (wasm !== void 0) return wasm;
|
|
351
|
+
let thread_stack_size;
|
|
352
|
+
let customImports;
|
|
353
|
+
if (module !== void 0) if (Object.getPrototypeOf(module) === Object.prototype) ({module, memory, thread_stack_size, imports: customImports} = module);
|
|
354
|
+
else console.warn("using deprecated parameters for `initSync()`; pass a single object instead");
|
|
355
|
+
const imports = __wbg_get_imports(memory, customImports);
|
|
356
|
+
if (!(module instanceof WebAssembly.Module)) module = new WebAssembly.Module(module);
|
|
357
|
+
return __wbg_finalize_init(new WebAssembly.Instance(module, imports), module, thread_stack_size);
|
|
358
|
+
}
|
|
359
|
+
async function __wbg_init(module_or_path, memory) {
|
|
360
|
+
if (wasm !== void 0) return wasm;
|
|
361
|
+
let thread_stack_size;
|
|
362
|
+
let customImports;
|
|
363
|
+
if (module_or_path !== void 0) if (Object.getPrototypeOf(module_or_path) === Object.prototype) ({module_or_path, memory, thread_stack_size, imports: customImports} = module_or_path);
|
|
364
|
+
else console.warn("using deprecated parameters for the initialization function; pass a single object instead");
|
|
365
|
+
if (module_or_path === void 0) module_or_path = new URL("typst_wasm_bg.wasm", import.meta.url);
|
|
366
|
+
const imports = __wbg_get_imports(memory, customImports);
|
|
367
|
+
if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) module_or_path = fetch(module_or_path);
|
|
368
|
+
const { instance, module } = await __wbg_load(await module_or_path, imports);
|
|
369
|
+
return __wbg_finalize_init(instance, module, thread_stack_size);
|
|
370
|
+
}
|
|
371
|
+
//#endregion
|
|
372
|
+
export { TypstCompiler, __wbg_init as default, initSync };
|
package/dist/wasm.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { r as CompileOptions$1 } from "./types-BoGtHbqQ.js";
|
|
2
|
+
import { BundleFile as WasmBundleFile, CompileOptions, CompileOutput, InitOutput, PageOutput as WasmPageOutput, TypstCompilerInstance, WasmDiagnostic, WasmModule, wasmBinaryUrl } from "@typst-wasm/engine-wasm";
|
|
3
|
+
|
|
4
|
+
//#region src/wasm.d.ts
|
|
5
|
+
type WasmCompileOptions = CompileOptions & {
|
|
6
|
+
main?: string;
|
|
7
|
+
root?: string;
|
|
8
|
+
};
|
|
9
|
+
type WasmCompileOutput = CompileOutput;
|
|
10
|
+
declare const toWasmCompileOptions: (options?: CompileOptions$1) => WasmCompileOptions;
|
|
11
|
+
declare const loadWasmModule: () => Promise<WasmModule>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { type InitOutput, type TypstCompilerInstance, type WasmBundleFile, WasmCompileOptions, WasmCompileOutput, type WasmDiagnostic, type WasmModule, type WasmPageOutput, wasmBinaryUrl as default, wasmBinaryUrl, loadWasmModule, toWasmCompileOptions };
|
|
14
|
+
//# sourceMappingURL=wasm.d.ts.map
|