@file-viewer/vite-plugin 3.0.0 → 3.0.2
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.js +195 -19
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -203,6 +203,14 @@ const rendererModules = [
|
|
|
203
203
|
rendererIds: ['archive'],
|
|
204
204
|
chunkName: 'file-viewer-archive'
|
|
205
205
|
},
|
|
206
|
+
{
|
|
207
|
+
id: 'chm',
|
|
208
|
+
packageName: '@file-viewer/renderer-chm',
|
|
209
|
+
exportName: 'chmRenderer',
|
|
210
|
+
formats: ['chm'],
|
|
211
|
+
rendererIds: ['chm'],
|
|
212
|
+
chunkName: 'file-viewer-chm'
|
|
213
|
+
},
|
|
206
214
|
{
|
|
207
215
|
id: 'email',
|
|
208
216
|
packageName: '@file-viewer/renderer-email',
|
|
@@ -390,6 +398,51 @@ const rendererModules = [
|
|
|
390
398
|
rendererIds: ['geo'],
|
|
391
399
|
chunkName: 'file-viewer-geo'
|
|
392
400
|
},
|
|
401
|
+
{
|
|
402
|
+
id: 'design',
|
|
403
|
+
packageName: '@file-viewer/renderer-design',
|
|
404
|
+
exportName: 'designRenderer',
|
|
405
|
+
includeInPresetAll: false,
|
|
406
|
+
formats: [
|
|
407
|
+
'design',
|
|
408
|
+
'photoshop-design',
|
|
409
|
+
'illustrator-pdf-design',
|
|
410
|
+
'postscript-design',
|
|
411
|
+
'adobe-palette-design',
|
|
412
|
+
'photoshop-resource-design',
|
|
413
|
+
'indesign-idml-design',
|
|
414
|
+
'indesign-exchange-design',
|
|
415
|
+
'adobe-animate-xfl-design',
|
|
416
|
+
'adobe-xd-design',
|
|
417
|
+
'indesign-native-design',
|
|
418
|
+
'psd',
|
|
419
|
+
'psb',
|
|
420
|
+
'pdd',
|
|
421
|
+
'psdt',
|
|
422
|
+
'ai',
|
|
423
|
+
'ait',
|
|
424
|
+
'eps',
|
|
425
|
+
'ps',
|
|
426
|
+
'ase',
|
|
427
|
+
'aco',
|
|
428
|
+
'abr',
|
|
429
|
+
'csh',
|
|
430
|
+
'pat',
|
|
431
|
+
'grd',
|
|
432
|
+
'asl',
|
|
433
|
+
'idml',
|
|
434
|
+
'icml',
|
|
435
|
+
'idms',
|
|
436
|
+
'inx',
|
|
437
|
+
'fla',
|
|
438
|
+
'xfl',
|
|
439
|
+
'xd',
|
|
440
|
+
'indd',
|
|
441
|
+
'indt'
|
|
442
|
+
],
|
|
443
|
+
rendererIds: ['photoshop-design', 'illustrator-pdf-design', 'postscript-design', 'adobe-palette-design', 'photoshop-resource-design', 'indesign-idml-design', 'indesign-exchange-design', 'adobe-animate-xfl-design', 'adobe-xd-design', 'indesign-native-design'],
|
|
444
|
+
chunkName: 'file-viewer-design'
|
|
445
|
+
},
|
|
393
446
|
{
|
|
394
447
|
id: 'data',
|
|
395
448
|
packageName: '@file-viewer/renderer-data',
|
|
@@ -402,9 +455,6 @@ const rendererModules = [
|
|
|
402
455
|
'sqlite3',
|
|
403
456
|
'parquet',
|
|
404
457
|
'avro',
|
|
405
|
-
'psd',
|
|
406
|
-
'ai',
|
|
407
|
-
'eps',
|
|
408
458
|
'webarchive',
|
|
409
459
|
'wasm',
|
|
410
460
|
'ttf',
|
|
@@ -523,6 +573,7 @@ const fileViewerOptimizationExcludedPackages = [
|
|
|
523
573
|
const cjsInteropPackages = [
|
|
524
574
|
'@file-viewer/docx',
|
|
525
575
|
'@xmldom/xmldom',
|
|
576
|
+
'diff2html',
|
|
526
577
|
'keynote-archives',
|
|
527
578
|
'occt-import-js',
|
|
528
579
|
'jszip',
|
|
@@ -1012,6 +1063,9 @@ function createManualChunks(selection, autoPresetIds = []) {
|
|
|
1012
1063
|
});
|
|
1013
1064
|
return (id) => {
|
|
1014
1065
|
const normalized = id.replace(/\\/g, '/');
|
|
1066
|
+
if (normalized.endsWith('/dist/vendor/pdfjs/legacy/build/pdf.worker.mjs')) {
|
|
1067
|
+
return undefined;
|
|
1068
|
+
}
|
|
1015
1069
|
for (const [packageName, chunkName] of packageToChunk) {
|
|
1016
1070
|
if (normalized.includes(`/node_modules/${packageName}/`) ||
|
|
1017
1071
|
normalized.includes(`/node_modules/.pnpm/${packageName.replace('/', '+')}@`)) {
|
|
@@ -1432,7 +1486,7 @@ async function copyPdfCjkFontAssets(from, to) {
|
|
|
1432
1486
|
async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
1433
1487
|
const selected = new Set(rendererIds);
|
|
1434
1488
|
const results = [];
|
|
1435
|
-
const push = async (rendererId, id, to, copyAction, reason, source) => {
|
|
1489
|
+
const push = async (rendererId, id, to, copyAction, reason, source, required) => {
|
|
1436
1490
|
if (!selected.has(rendererId)) {
|
|
1437
1491
|
return;
|
|
1438
1492
|
}
|
|
@@ -1443,11 +1497,42 @@ async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
|
1443
1497
|
to,
|
|
1444
1498
|
copied,
|
|
1445
1499
|
reason: copied ? undefined : reason || 'source asset not found',
|
|
1500
|
+
required,
|
|
1446
1501
|
...source,
|
|
1447
1502
|
});
|
|
1448
1503
|
};
|
|
1449
|
-
const
|
|
1450
|
-
const
|
|
1504
|
+
const rendererPdfRoot = resolvePackageRoot('@file-viewer/renderer-pdf');
|
|
1505
|
+
const stagedPdfRoot = rendererPdfRoot
|
|
1506
|
+
? join(rendererPdfRoot, 'dist/vendor/pdfjs')
|
|
1507
|
+
: null;
|
|
1508
|
+
const stagedPdfProvenancePath = stagedPdfRoot
|
|
1509
|
+
? join(stagedPdfRoot, 'provenance.json')
|
|
1510
|
+
: null;
|
|
1511
|
+
let stagedPdfVersion = null;
|
|
1512
|
+
if (stagedPdfProvenancePath && existsSync(stagedPdfProvenancePath)) {
|
|
1513
|
+
try {
|
|
1514
|
+
const provenance = JSON.parse(readFileSync(stagedPdfProvenancePath, 'utf8'));
|
|
1515
|
+
if (provenance.packageName === 'pdfjs-dist' && provenance.version) {
|
|
1516
|
+
stagedPdfVersion = provenance.version;
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
catch {
|
|
1520
|
+
stagedPdfVersion = null;
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
const hasStagedPdfAssets = Boolean(stagedPdfRoot &&
|
|
1524
|
+
stagedPdfVersion &&
|
|
1525
|
+
existsSync(join(stagedPdfRoot, 'legacy/build/pdf.worker.mjs')) &&
|
|
1526
|
+
existsSync(join(stagedPdfRoot, 'cmaps')) &&
|
|
1527
|
+
existsSync(join(stagedPdfRoot, 'wasm')) &&
|
|
1528
|
+
existsSync(join(stagedPdfRoot, 'standard_fonts')));
|
|
1529
|
+
const dependencyPdfRoot = hasStagedPdfAssets
|
|
1530
|
+
? null
|
|
1531
|
+
: resolvePackageRoot('pdfjs-dist', ['@file-viewer/renderer-pdf']);
|
|
1532
|
+
const pdfRoot = hasStagedPdfAssets ? stagedPdfRoot : dependencyPdfRoot;
|
|
1533
|
+
const pdfVersion = hasStagedPdfAssets
|
|
1534
|
+
? stagedPdfVersion
|
|
1535
|
+
: assertOwnedPackageVersion('pdfjs-dist', dependencyPdfRoot, '@file-viewer/renderer-pdf');
|
|
1451
1536
|
const pdfSource = pdfRoot
|
|
1452
1537
|
? { sourcePackage: 'pdfjs-dist', sourceVersion: pdfVersion || undefined }
|
|
1453
1538
|
: undefined;
|
|
@@ -1455,10 +1540,36 @@ async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
|
1455
1540
|
await push('pdf', 'pdf-cmaps', join(targetRoot, 'vendor/pdf/cmaps'), () => copyDirectoryIfPresent(pdfRoot ? join(pdfRoot, 'cmaps') : null, join(targetRoot, 'vendor/pdf/cmaps')), undefined, pdfSource);
|
|
1456
1541
|
await push('pdf', 'pdf-wasm', join(targetRoot, 'vendor/pdf/wasm'), () => copyDirectoryIfPresent(pdfRoot ? join(pdfRoot, 'wasm') : null, join(targetRoot, 'vendor/pdf/wasm')), undefined, pdfSource);
|
|
1457
1542
|
await push('pdf', 'pdf-standard-fonts', join(targetRoot, 'vendor/pdf/standard_fonts'), () => copyDirectoryIfPresent(pdfRoot ? join(pdfRoot, 'standard_fonts') : null, join(targetRoot, 'vendor/pdf/standard_fonts')), undefined, pdfSource);
|
|
1458
|
-
const
|
|
1543
|
+
const stagedPdfCjkFontRoot = rendererPdfRoot
|
|
1544
|
+
? join(rendererPdfRoot, 'dist/vendor/noto-sans-sc')
|
|
1545
|
+
: null;
|
|
1546
|
+
const standardAssetsRoot = resolvePackageRoot('@file-viewer/assets-standard');
|
|
1547
|
+
const standardPdfCjkFontRoot = standardAssetsRoot
|
|
1548
|
+
? join(standardAssetsRoot, 'viewer/vendor/pdf/fonts')
|
|
1549
|
+
: null;
|
|
1550
|
+
const dependencyPdfCjkFontRoot = resolvePackageRoot('@fontsource-variable/noto-sans-sc', [
|
|
1459
1551
|
'@file-viewer/renderer-pdf'
|
|
1460
1552
|
]);
|
|
1461
|
-
|
|
1553
|
+
const pdfCjkFontTarget = join(targetRoot, 'vendor/pdf/fonts');
|
|
1554
|
+
// The standard profile pack owns the CJK fallback font; presets that activate the pdf
|
|
1555
|
+
// renderer without that pack declare the font package directly. renderer-pdf must not
|
|
1556
|
+
// vendor a second copy, so when no source is installed the build warns instead of
|
|
1557
|
+
// failing and PDF rendering keeps using embedded fonts.
|
|
1558
|
+
const pdfCjkFontSourceAvailable = Boolean(standardPdfCjkFontRoot && existsSync(join(standardPdfCjkFontRoot, 'noto-sans-sc.css'))) ||
|
|
1559
|
+
Boolean(stagedPdfCjkFontRoot && existsSync(join(stagedPdfCjkFontRoot, 'wght.css'))) ||
|
|
1560
|
+
Boolean(dependencyPdfCjkFontRoot);
|
|
1561
|
+
await push('pdf', 'pdf-cjk-font-fallback', pdfCjkFontTarget, async () => {
|
|
1562
|
+
if (standardPdfCjkFontRoot &&
|
|
1563
|
+
existsSync(join(standardPdfCjkFontRoot, 'noto-sans-sc.css'))) {
|
|
1564
|
+
return copyDirectoryIfPresent(standardPdfCjkFontRoot, pdfCjkFontTarget);
|
|
1565
|
+
}
|
|
1566
|
+
if (stagedPdfCjkFontRoot && existsSync(join(stagedPdfCjkFontRoot, 'wght.css'))) {
|
|
1567
|
+
return copyPdfCjkFontAssets(stagedPdfCjkFontRoot, pdfCjkFontTarget);
|
|
1568
|
+
}
|
|
1569
|
+
return copyPdfCjkFontAssets(dependencyPdfCjkFontRoot, pdfCjkFontTarget);
|
|
1570
|
+
}, pdfCjkFontSourceAvailable
|
|
1571
|
+
? undefined
|
|
1572
|
+
: `install ${independentlyOwnedAssetRendererIds.get('pdf')} or @fontsource-variable/noto-sans-sc`, undefined, pdfCjkFontSourceAvailable ? undefined : false);
|
|
1462
1573
|
const pptxRoot = resolvePackageRoot('@file-viewer/pptx', [
|
|
1463
1574
|
'@file-viewer/renderer-pptx',
|
|
1464
1575
|
'@file-viewer/renderer-presentation'
|
|
@@ -1548,7 +1659,59 @@ async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
|
1548
1659
|
const archiveRoot = resolvePackageRoot('libarchive.js', ['@file-viewer/renderer-archive']);
|
|
1549
1660
|
await push('archive', 'libarchive-worker', join(targetRoot, 'vendor/libarchive/worker-bundle.js'), () => copyFileIfPresent(archiveRoot ? join(archiveRoot, 'dist/worker-bundle.js') : null, join(targetRoot, 'vendor/libarchive/worker-bundle.js')));
|
|
1550
1661
|
await push('archive', 'libarchive-wasm', join(targetRoot, 'vendor/libarchive/libarchive.wasm'), () => copyFileIfPresent(archiveRoot ? join(archiveRoot, 'dist/libarchive.wasm') : null, join(targetRoot, 'vendor/libarchive/libarchive.wasm')));
|
|
1662
|
+
const chmRoot = resolvePackageRoot('@file-viewer/renderer-chm', ['@file-viewer/renderer-chm']);
|
|
1663
|
+
const chmSource = chmRoot
|
|
1664
|
+
? { sourcePackage: '@file-viewer/renderer-chm', sourceVersion: readPackageVersion(chmRoot) || undefined }
|
|
1665
|
+
: undefined;
|
|
1666
|
+
for (const [id, sourceName, targetName] of [
|
|
1667
|
+
['chm-worker', 'dist/chm.worker.js', 'chm.worker.js'],
|
|
1668
|
+
['chm-wasm-module', 'dist/chm_wasm.js', 'chm_wasm.js'],
|
|
1669
|
+
['chm-wasm', 'dist/chm_wasm_bg.wasm', 'chm_wasm_bg.wasm'],
|
|
1670
|
+
['chm-license', 'LICENSE', 'LICENSE'],
|
|
1671
|
+
['chm-third-party-notices', 'THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md'],
|
|
1672
|
+
['chm-rust-notice', 'rust/NOTICE.md', 'RUST_NOTICE.md'],
|
|
1673
|
+
['chm-rust-third-party-licenses', 'rust/THIRD_PARTY_LICENSES.md', 'RUST_THIRD_PARTY_LICENSES.md']
|
|
1674
|
+
]) {
|
|
1675
|
+
await push('chm', id, join(targetRoot, `vendor/chm/${targetName}`), () => copyFileIfPresent(chmRoot ? join(chmRoot, sourceName) : null, join(targetRoot, `vendor/chm/${targetName}`)), undefined, chmSource);
|
|
1676
|
+
}
|
|
1551
1677
|
const sqlJsRoot = resolvePackageRoot('sql.js', ['@file-viewer/renderer-data']);
|
|
1678
|
+
const designRendererRoot = resolvePackageRoot('@file-viewer/renderer-design');
|
|
1679
|
+
const introspectWasmRoot = resolvePackageRoot('@paged-media/introspect-wasm', [
|
|
1680
|
+
'@file-viewer/renderer-design'
|
|
1681
|
+
]);
|
|
1682
|
+
const introspectWasmVersion = assertOwnedPackageVersion('@paged-media/introspect-wasm', introspectWasmRoot, '@file-viewer/renderer-design');
|
|
1683
|
+
const introspectWasmSource = introspectWasmRoot
|
|
1684
|
+
? {
|
|
1685
|
+
sourcePackage: '@paged-media/introspect-wasm',
|
|
1686
|
+
sourceVersion: introspectWasmVersion || undefined
|
|
1687
|
+
}
|
|
1688
|
+
: undefined;
|
|
1689
|
+
await push('illustrator-pdf-design', 'illustrator-pgf-worker', join(targetRoot, 'vendor/design/illustrator-pgf.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/illustrator-pgf.worker.js') : null, join(targetRoot, 'vendor/design/illustrator-pgf.worker.js')));
|
|
1690
|
+
await push('photoshop-design', 'photoshop-design-worker', join(targetRoot, 'vendor/design/photoshop.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/photoshop.worker.js') : null, join(targetRoot, 'vendor/design/photoshop.worker.js')));
|
|
1691
|
+
await push('photoshop-resource-design', 'photoshop-resource-worker', join(targetRoot, 'vendor/design/adobe-resource.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-resource.worker.js') : null, join(targetRoot, 'vendor/design/adobe-resource.worker.js')));
|
|
1692
|
+
await push('adobe-palette-design', 'adobe-palette-container-worker', join(targetRoot, 'vendor/design/adobe-container.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-container.worker.js') : null, join(targetRoot, 'vendor/design/adobe-container.worker.js')));
|
|
1693
|
+
await push('indesign-exchange-design', 'indesign-exchange-container-worker', join(targetRoot, 'vendor/design/adobe-container.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-container.worker.js') : null, join(targetRoot, 'vendor/design/adobe-container.worker.js')));
|
|
1694
|
+
await push('adobe-animate-xfl-design', 'adobe-animate-xfl-container-worker', join(targetRoot, 'vendor/design/adobe-container.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-container.worker.js') : null, join(targetRoot, 'vendor/design/adobe-container.worker.js')));
|
|
1695
|
+
await push('adobe-xd-design', 'adobe-xd-container-worker', join(targetRoot, 'vendor/design/adobe-container.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-container.worker.js') : null, join(targetRoot, 'vendor/design/adobe-container.worker.js')));
|
|
1696
|
+
await push('indesign-native-design', 'indesign-native-container-worker', join(targetRoot, 'vendor/design/adobe-container.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/adobe-container.worker.js') : null, join(targetRoot, 'vendor/design/adobe-container.worker.js')));
|
|
1697
|
+
await push('postscript-design', 'postscript-design-worker', join(targetRoot, 'vendor/design/postscript.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/postscript.worker.js') : null, join(targetRoot, 'vendor/design/postscript.worker.js')));
|
|
1698
|
+
await push('postscript-design', 'postscript-design-wasm', join(targetRoot, 'vendor/design/stet_wasm_bg.wasm'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'runtime/postscript/stet_wasm_bg.wasm') : null, join(targetRoot, 'vendor/design/stet_wasm_bg.wasm')));
|
|
1699
|
+
const postscriptLicenses = [
|
|
1700
|
+
['postscript-design-license-stet-apache', 'Stet-Apache-2.0.txt', 'LICENSE.stet-Apache-2.0.txt'],
|
|
1701
|
+
['postscript-design-license-stet-mit', 'Stet-MIT.txt', 'LICENSE.stet-MIT.txt'],
|
|
1702
|
+
['postscript-design-license-carlito-ofl', 'Carlito-OFL-1.1.txt', 'LICENSE.Carlito-OFL-1.1.txt'],
|
|
1703
|
+
['postscript-design-license-tinos-ofl', 'Tinos-OFL-1.1.txt', 'LICENSE.Tinos-OFL-1.1.txt'],
|
|
1704
|
+
['postscript-design-license-cousine-ofl', 'Cousine-OFL-1.1.txt', 'LICENSE.Cousine-OFL-1.1.txt'],
|
|
1705
|
+
['postscript-design-license-noto-symbols-ofl', 'NotoSansSymbols2-OFL-1.1.txt', 'LICENSE.NotoSansSymbols2-OFL-1.1.txt']
|
|
1706
|
+
];
|
|
1707
|
+
for (const [assetId, sourceName, targetName] of postscriptLicenses) {
|
|
1708
|
+
await push('postscript-design', assetId, join(targetRoot, 'vendor/design', targetName), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'LICENSES', sourceName) : null, join(targetRoot, 'vendor/design', targetName)));
|
|
1709
|
+
}
|
|
1710
|
+
await push('indesign-idml-design', 'indesign-idml-worker', join(targetRoot, 'vendor/design/idml.worker.js'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'dist/idml.worker.js') : null, join(targetRoot, 'vendor/design/idml.worker.js')));
|
|
1711
|
+
await push('indesign-idml-design', 'indesign-idml-wasm', join(targetRoot, 'vendor/design/paged_introspect_wasm_bg.wasm'), () => copyFileIfPresent(introspectWasmRoot
|
|
1712
|
+
? join(introspectWasmRoot, 'paged_introspect_wasm_bg.wasm')
|
|
1713
|
+
: null, join(targetRoot, 'vendor/design/paged_introspect_wasm_bg.wasm')), undefined, introspectWasmSource);
|
|
1714
|
+
await push('indesign-idml-design', 'indesign-idml-license', join(targetRoot, 'vendor/design/LICENSE.introspect-wasm-MPL-2.0.txt'), () => copyFileIfPresent(designRendererRoot ? join(designRendererRoot, 'LICENSES/MPL-2.0.txt') : null, join(targetRoot, 'vendor/design/LICENSE.introspect-wasm-MPL-2.0.txt')));
|
|
1552
1715
|
await push('data-asset', 'data-sql-wasm', join(targetRoot, 'wasm/data/sql-wasm.wasm'), () => copyFileIfPresent(sqlJsRoot ? join(sqlJsRoot, 'dist/sql-wasm.wasm') : null, join(targetRoot, 'wasm/data/sql-wasm.wasm')));
|
|
1553
1716
|
await mkdir(targetRoot, { recursive: true });
|
|
1554
1717
|
await writeFile(join(targetRoot, 'flyfish-viewer-assets.json'), `${JSON.stringify({
|
|
@@ -1562,6 +1725,7 @@ async function copyKnownRendererAssets(targetRoot, rendererIds) {
|
|
|
1562
1725
|
}
|
|
1563
1726
|
const independentlyOwnedAssetRendererIds = new Map([
|
|
1564
1727
|
['archive', '@file-viewer/assets-standard'],
|
|
1728
|
+
['chm', '@file-viewer/assets-chm'],
|
|
1565
1729
|
['pdf', '@file-viewer/assets-standard'],
|
|
1566
1730
|
['office-word-openxml', '@file-viewer/assets-standard'],
|
|
1567
1731
|
['office-presentation', '@file-viewer/assets-standard'],
|
|
@@ -1863,7 +2027,8 @@ async function copyRendererAssets(target, rendererIds) {
|
|
|
1863
2027
|
id: 'missing-independent-asset-owner',
|
|
1864
2028
|
to: target.targetRoot,
|
|
1865
2029
|
copied: false,
|
|
1866
|
-
|
|
2030
|
+
// Specialist offline payloads stay opt-in; warn instead of failing the build.
|
|
2031
|
+
required: false,
|
|
1867
2032
|
reason: `install ${requiredOwner} for this capability`
|
|
1868
2033
|
});
|
|
1869
2034
|
}
|
|
@@ -2089,22 +2254,33 @@ function collectAssetRendererIds(selection, autoPresetIds = [], includeFullPrese
|
|
|
2089
2254
|
...selection.descriptors.flatMap((descriptor) => descriptor.rendererIds)
|
|
2090
2255
|
]);
|
|
2091
2256
|
}
|
|
2257
|
+
const defaultRequiredAssetRendererIds = [
|
|
2258
|
+
'pdf',
|
|
2259
|
+
'office-word-openxml',
|
|
2260
|
+
'office-presentation-binary',
|
|
2261
|
+
'office-presentation',
|
|
2262
|
+
'archive',
|
|
2263
|
+
'cad',
|
|
2264
|
+
'typst'
|
|
2265
|
+
];
|
|
2266
|
+
function isRequiredAssetResult(result) {
|
|
2267
|
+
return result.required ?? defaultRequiredAssetRendererIds.includes(result.rendererId);
|
|
2268
|
+
}
|
|
2092
2269
|
function reportAssetCopy(results, targetRoot, mode) {
|
|
2093
|
-
const failedRequired = results.filter((result) => !result.copied && (result
|
|
2094
|
-
|
|
2095
|
-
'office-word-openxml',
|
|
2096
|
-
'office-presentation-binary',
|
|
2097
|
-
'office-presentation',
|
|
2098
|
-
'archive',
|
|
2099
|
-
'cad',
|
|
2100
|
-
'typst'
|
|
2101
|
-
].includes(result.rendererId)));
|
|
2270
|
+
const failedRequired = results.filter((result) => !result.copied && isRequiredAssetResult(result));
|
|
2271
|
+
const missingOptional = results.filter((result) => !result.copied && !isRequiredAssetResult(result));
|
|
2102
2272
|
if (!results.length) {
|
|
2103
2273
|
return;
|
|
2104
2274
|
}
|
|
2105
2275
|
const summary = `[file-viewer:vite-plugin] Copied ${results.filter((result) => result.copied).length}/${results.length} renderer assets to ${targetRoot}`;
|
|
2276
|
+
console.log(summary);
|
|
2277
|
+
if (missingOptional.length) {
|
|
2278
|
+
const optionalDetails = missingOptional
|
|
2279
|
+
.map((result) => ` - ${result.rendererId}:${result.id} -> ${result.to} (${result.reason || 'source asset not found'})`)
|
|
2280
|
+
.join('\n');
|
|
2281
|
+
console.warn(`[file-viewer:vite-plugin] Skipped optional offline assets; install the owning package to self-host them:\n${optionalDetails}`);
|
|
2282
|
+
}
|
|
2106
2283
|
if (!failedRequired.length || mode === 'ignore') {
|
|
2107
|
-
console.log(summary);
|
|
2108
2284
|
return;
|
|
2109
2285
|
}
|
|
2110
2286
|
const details = failedRequired
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@file-viewer/vite-plugin",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Vite plugin for File Viewer on-demand renderer assembly, chunk planning, and offline asset deployment.",
|
|
@@ -63,13 +63,14 @@
|
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@types/node": "^
|
|
66
|
+
"@types/node": "^26.4.0",
|
|
67
67
|
"typescript": "^6.0.3",
|
|
68
|
-
"vite": "^8.
|
|
68
|
+
"vite": "^8.2.2"
|
|
69
69
|
},
|
|
70
70
|
"license": "Apache-2.0",
|
|
71
71
|
"scripts": {
|
|
72
72
|
"build": "tsc -b tsconfig.json",
|
|
73
|
-
"type-check": "tsc -b tsconfig.json"
|
|
73
|
+
"type-check": "tsc -b tsconfig.json",
|
|
74
|
+
"verify:github-242": "node scripts/verify-github-242.mjs"
|
|
74
75
|
}
|
|
75
76
|
}
|