| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import { describe, expect, it } from 'vitest'
- import {
- DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH,
- DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL,
- DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH,
- DEFAULT_FILE_VIEWER_PDF_CMAP_PATH,
- DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH,
- DEFAULT_FILE_VIEWER_PDF_WASM_PATH,
- DEFAULT_FILE_VIEWER_PDF_WORKER_PATH,
- DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH,
- DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL,
- DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL,
- resolveFileViewerArchiveWasmUrl,
- resolveFileViewerArchiveWorkerUrl,
- resolveFileViewerAssetUrl,
- resolveFileViewerCadAssetUrls,
- resolveFileViewerDataSqlWasmUrl,
- resolveFileViewerDocxWorkerUrl,
- resolveFileViewerPdfAssetUrls,
- resolveFileViewerSpreadsheetWorkerUrl,
- resolveFileViewerTypstCompilerWasmUrl,
- resolveFileViewerTypstRendererWasmUrl
- } from '../packages/core/src'
- describe('@file-viewer/core asset URL helpers', () => {
- it('resolves viewer asset URLs against a directory-style base', () => {
- expect(resolveFileViewerAssetUrl('assets/viewer.js', '', {
- baseUrl: '/vendor/file-viewer',
- documentBaseUrl: 'https://example.com/app/index.html'
- })).toBe('https://example.com/vendor/file-viewer/assets/viewer.js')
- expect(resolveFileViewerAssetUrl('/wasm/cad/', '', {
- documentBaseUrl: 'https://example.com/app/index.html',
- trimTrailingSlash: true
- })).toBe('https://example.com/wasm/cad')
- })
- it('resolves archive worker and wasm URLs', () => {
- expect(resolveFileViewerArchiveWorkerUrl(undefined, '/file-viewer/')).toBe(
- `http://localhost/file-viewer/${DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH}`
- )
- expect(resolveFileViewerArchiveWorkerUrl({ workerUrl: 'workers/archive.js' })).toBe(
- 'http://localhost/workers/archive.js'
- )
- expect(resolveFileViewerArchiveWasmUrl({ wasmUrl: 'vendor/libarchive/libarchive.wasm' })).toBe(
- 'http://localhost/vendor/libarchive/libarchive.wasm'
- )
- expect(resolveFileViewerArchiveWasmUrl(undefined, '/assets/libarchive.wasm')).toBe('/assets/libarchive.wasm')
- })
- it('resolves CAD asset defaults and overrides together', () => {
- expect(resolveFileViewerCadAssetUrls(undefined, 'https://viewer.example.com/base/index.html')).toEqual({
- wasmPath: 'https://viewer.example.com/base/wasm/cad',
- workerUrl: 'https://viewer.example.com/base/wasm/cad/dwg-worker.js',
- dwfWasmUrl: 'https://viewer.example.com/base/wasm/cad/dwfv-render.wasm'
- })
- expect(resolveFileViewerCadAssetUrls({
- wasmPath: '/static/cad/',
- workerUrl: 'https://cdn.example.com/dwg-worker.js',
- dwfWasmUrl: '/static/cad/dwf.wasm'
- }, 'https://viewer.example.com/app/')).toEqual({
- wasmPath: 'https://viewer.example.com/static/cad',
- workerUrl: 'https://cdn.example.com/dwg-worker.js',
- dwfWasmUrl: 'https://viewer.example.com/static/cad/dwf.wasm'
- })
- })
- it('resolves optional DOCX worker URLs', () => {
- expect(resolveFileViewerDocxWorkerUrl(undefined, 'https://viewer.example.com/app/index.html')).toBe(
- `https://viewer.example.com/app/${DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH}`
- )
- expect(resolveFileViewerDocxWorkerUrl({
- workerUrl: 'https://cdn.example.com/file-viewer/docx.worker.js'
- }, 'https://viewer.example.com/app/index.html')).toBe(
- 'https://cdn.example.com/file-viewer/docx.worker.js'
- )
- })
- it('resolves optional Spreadsheet worker URLs', () => {
- expect(resolveFileViewerSpreadsheetWorkerUrl(undefined, 'https://viewer.example.com/app/index.html')).toBe(
- `https://viewer.example.com/app/${DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH}`
- )
- expect(resolveFileViewerSpreadsheetWorkerUrl({
- workerUrl: 'https://cdn.example.com/file-viewer/sheet.worker.js'
- }, 'https://viewer.example.com/app/index.html')).toBe(
- 'https://cdn.example.com/file-viewer/sheet.worker.js'
- )
- })
- it('resolves PDF default assets from the site root instead of router paths', () => {
- expect(resolveFileViewerPdfAssetUrls(undefined, 'https://viewer.example.com/dev/file').workerUrl).toBe(
- `https://viewer.example.com/${DEFAULT_FILE_VIEWER_PDF_WORKER_PATH}`
- )
- expect(resolveFileViewerPdfAssetUrls(undefined, 'https://viewer.example.com/dev/file/')).toEqual({
- workerUrl: `https://viewer.example.com/${DEFAULT_FILE_VIEWER_PDF_WORKER_PATH}`,
- cMapUrl: `https://viewer.example.com/${DEFAULT_FILE_VIEWER_PDF_CMAP_PATH}`,
- wasmUrl: `https://viewer.example.com/${DEFAULT_FILE_VIEWER_PDF_WASM_PATH}`,
- standardFontDataUrl: `https://viewer.example.com/${DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH}`
- })
- expect(resolveFileViewerPdfAssetUrls({
- workerUrl: 'assets/pdf.worker.mjs'
- }, 'https://viewer.example.com/dev/file/').workerUrl).toBe(
- 'https://viewer.example.com/dev/file/assets/pdf.worker.mjs'
- )
- })
- it('resolves Typst compiler WASM URL from explicit, override, then default sources', () => {
- expect(resolveFileViewerTypstCompilerWasmUrl({ compilerWasmUrl: '/typst/compiler.wasm' })).toBe('http://localhost/typst/compiler.wasm')
- expect(resolveFileViewerTypstCompilerWasmUrl(undefined, [undefined, '/env/compiler.wasm'])).toBe('http://localhost/env/compiler.wasm')
- expect(resolveFileViewerTypstCompilerWasmUrl()).toBe(`http://localhost/${DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL}`)
- })
- it('resolves Typst renderer WASM URL from explicit, override, then default sources', () => {
- expect(resolveFileViewerTypstRendererWasmUrl({ rendererWasmUrl: '/typst/renderer.wasm' })).toBe('http://localhost/typst/renderer.wasm')
- expect(resolveFileViewerTypstRendererWasmUrl(undefined, [undefined, '/env/renderer.wasm'])).toBe('http://localhost/env/renderer.wasm')
- expect(resolveFileViewerTypstRendererWasmUrl()).toBe(`http://localhost/${DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL}`)
- })
- it('resolves data asset SQL WASM URL from explicit, override, then default sources', () => {
- expect(resolveFileViewerDataSqlWasmUrl({ sqlWasmUrl: '/sql/sql-wasm.wasm' })).toBe('http://localhost/sql/sql-wasm.wasm')
- expect(resolveFileViewerDataSqlWasmUrl(undefined, [undefined, '/env/sql-wasm.wasm'])).toBe('http://localhost/env/sql-wasm.wasm')
- expect(resolveFileViewerDataSqlWasmUrl()).toBe(`http://localhost/${DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL}`)
- })
- })
|