@vivliostyle/cli 10.2.0 → 10.3.0

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.
Files changed (37) hide show
  1. package/dist/{chunk-CKXFRCPH.js → chunk-3QOSSWIX.js} +129 -7
  2. package/dist/chunk-3QOSSWIX.js.map +1 -0
  3. package/dist/{chunk-5MEUINC4.js → chunk-ALY3QX7K.js} +530 -51
  4. package/dist/chunk-ALY3QX7K.js.map +1 -0
  5. package/dist/{chunk-E6QVHS6D.js → chunk-ECEGM36O.js} +2 -1
  6. package/dist/chunk-ECEGM36O.js.map +1 -0
  7. package/dist/{chunk-37OLZSNI.js → chunk-NVNEYZ3J.js} +4 -4
  8. package/dist/{chunk-O3CBPX4R.js → chunk-QLK3XMQI.js} +3 -3
  9. package/dist/{chunk-XMCTTVR7.js → chunk-RBKPG6VU.js} +2 -2
  10. package/dist/{chunk-T2VWLU2I.js → chunk-RILZCPJE.js} +5 -3
  11. package/dist/chunk-RILZCPJE.js.map +1 -0
  12. package/dist/{chunk-62AC6XGJ.js → chunk-WIGLU3EK.js} +4 -4
  13. package/dist/{chunk-BR2V7MHE.js → chunk-YNX6D2I6.js} +207 -53
  14. package/dist/chunk-YNX6D2I6.js.map +1 -0
  15. package/dist/commands/build.js +7 -7
  16. package/dist/commands/build.js.map +1 -1
  17. package/dist/commands/create.js +3 -3
  18. package/dist/commands/init.js +3 -3
  19. package/dist/commands/preview.js +6 -6
  20. package/dist/config/schema.d.ts +21143 -21173
  21. package/dist/config/schema.js +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +16 -10
  24. package/dist/index.js.map +1 -1
  25. package/dist/node-modules.d.ts +3 -1
  26. package/dist/node-modules.js +1 -1
  27. package/dist/vite-adapter.js +5 -5
  28. package/package.json +4 -3
  29. package/dist/chunk-5MEUINC4.js.map +0 -1
  30. package/dist/chunk-BR2V7MHE.js.map +0 -1
  31. package/dist/chunk-CKXFRCPH.js.map +0 -1
  32. package/dist/chunk-E6QVHS6D.js.map +0 -1
  33. package/dist/chunk-T2VWLU2I.js.map +0 -1
  34. /package/dist/{chunk-37OLZSNI.js.map → chunk-NVNEYZ3J.js.map} +0 -0
  35. /package/dist/{chunk-O3CBPX4R.js.map → chunk-QLK3XMQI.js.map} +0 -0
  36. /package/dist/{chunk-XMCTTVR7.js.map → chunk-RBKPG6VU.js.map} +0 -0
  37. /package/dist/{chunk-62AC6XGJ.js.map → chunk-WIGLU3EK.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/build.ts","../src/container.ts","../src/output/pdf.ts","../src/output/pdf-postprocess.ts","../src/output/pdf-stream.ts","../src/output/cmyk.ts","../src/output/image.ts"],"sourcesContent":["import { pathToFileURL } from 'node:url';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { type PreviewServer, build as viteBuild } from 'vite';\nimport { cyan, gray } from 'yoctocolors';\nimport { setupConfigFromFlags } from '../commands/cli-flags.js';\nimport { loadVivliostyleConfig, warnDeprecatedConfig } from '../config/load.js';\nimport { mergeConfig, mergeInlineConfig } from '../config/merge.js';\nimport { isWebPubConfig, resolveTaskConfig } from '../config/resolve.js';\nimport type { ParsedVivliostyleInlineConfig } from '../config/schema.js';\nimport { resolveViteConfig } from '../config/vite.js';\nimport { buildPDFWithContainer } from '../container.js';\nimport { isUnicodeSupported, Logger, randomBookSymbol } from '../logger.js';\nimport { buildPDF } from '../output/pdf.js';\nimport { buildWebPublication } from '../output/webbook.js';\nimport { copyAssets } from '../processor/asset.js';\nimport {\n cleanupWorkspace,\n compile,\n prepareThemeDirectory,\n} from '../processor/compile.js';\nimport { createViteServer } from '../server.js';\nimport { cwd, runExitHandlers } from '../util.js';\n\nexport async function build(\n inlineConfig: ParsedVivliostyleInlineConfig,\n { containerForkMode = false }: { containerForkMode?: boolean } = {},\n) {\n Logger.setLogOptions(inlineConfig);\n if (containerForkMode) {\n Logger.setLogPrefix(gray('[Docker]'));\n }\n Logger.debug('build > inlineConfig %O', inlineConfig);\n\n let vivliostyleConfig =\n (await loadVivliostyleConfig(inlineConfig)) ??\n setupConfigFromFlags(inlineConfig);\n warnDeprecatedConfig(vivliostyleConfig);\n vivliostyleConfig = mergeInlineConfig(vivliostyleConfig, {\n ...inlineConfig,\n quick: false,\n });\n const { inlineOptions } = vivliostyleConfig;\n Logger.debug('build > vivliostyleConfig %O', vivliostyleConfig);\n\n for (let [i, task] of vivliostyleConfig.tasks.entries()) {\n using _ = Logger.startLogging('Start building');\n\n let config = resolveTaskConfig(task, inlineOptions);\n Logger.debug('build > config %O', config);\n const viteConfig = await resolveViteConfig({\n ...config,\n mode: 'build',\n });\n\n let server: PreviewServer | undefined;\n if (!containerForkMode) {\n // build dependents first\n Logger.debug('build > viteConfig.configFile %s', viteConfig.configFile);\n if (viteConfig.configFile && typeof config.serverRootDir === 'string') {\n using _ = Logger.suspendLogging('Building Vite project');\n await viteBuild({\n configFile: viteConfig.configFile,\n root: config.serverRootDir,\n });\n }\n\n if (!inlineConfig.disableServerStartup) {\n server = await createViteServer({\n config,\n viteConfig,\n inlineConfig,\n mode: 'build',\n });\n\n if (server.httpServer) {\n const addressInfo = server.httpServer.address();\n if (addressInfo && typeof addressInfo !== 'string') {\n const actualPort = addressInfo.port;\n vivliostyleConfig = mergeConfig(vivliostyleConfig, {\n temporaryFilePrefix: config.temporaryFilePrefix,\n server: {\n ...server.config.preview,\n port: actualPort,\n },\n });\n config = resolveTaskConfig(\n vivliostyleConfig.tasks[i],\n vivliostyleConfig.inlineOptions,\n );\n }\n }\n }\n\n // build artifacts\n if (isWebPubConfig(config)) {\n await cleanupWorkspace(config);\n await prepareThemeDirectory(config);\n await compile(config);\n await copyAssets(config);\n }\n }\n\n // generate files\n for (const target of config.outputs) {\n let output: string | null = null;\n const { format } = target;\n if (format === 'pdf') {\n if (!containerForkMode && target.renderMode === 'docker') {\n output = await buildPDFWithContainer({\n target,\n config,\n inlineConfig,\n });\n } else {\n output = await buildPDF({ target, config });\n }\n } else if (format === 'webpub' || format === 'epub') {\n output = await buildWebPublication({ target, config });\n }\n if (output && !containerForkMode) {\n const formattedOutput = cyan(\n upath.relative(inlineConfig.cwd ?? cwd, output),\n );\n Logger.logSuccess(\n `Finished building ${terminalLink(\n formattedOutput,\n pathToFileURL(output).href,\n {\n fallback: () => formattedOutput,\n },\n )}`,\n );\n }\n }\n\n await server?.close();\n }\n\n runExitHandlers();\n if (!containerForkMode) {\n const num = vivliostyleConfig.tasks.flatMap((t) => t.output ?? []).length;\n const symbol = isUnicodeSupported\n ? `${num > 1 ? '📚' : randomBookSymbol} `\n : '';\n Logger.log(`${symbol}Built successfully!`);\n }\n}\n","import process from 'node:process';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { x } from 'tinyexec';\nimport upath from 'upath';\nimport type { PdfOutput, ResolvedTaskConfig } from './config/resolve.js';\nimport type { ParsedVivliostyleInlineConfig } from './config/schema.js';\nimport { CONTAINER_LOCAL_HOSTNAME, CONTAINER_ROOT_DIR } from './const.js';\nimport { Logger } from './logger.js';\nimport { importNodeModule } from './node-modules.js';\nimport { getSourceUrl } from './server.js';\nimport { exec, isValidUri, pathEquals } from './util.js';\n\nexport function toContainerPath(urlOrAbsPath: string): string {\n if (isValidUri(urlOrAbsPath)) {\n if (urlOrAbsPath.toLowerCase().startsWith('file')) {\n return pathToFileURL(\n upath.posix.join(\n CONTAINER_ROOT_DIR,\n upath.toUnix(fileURLToPath(urlOrAbsPath)).replace(/^\\w:/, ''),\n ),\n ).href;\n } else {\n return urlOrAbsPath;\n }\n }\n return upath.posix.join(\n CONTAINER_ROOT_DIR,\n upath.toUnix(urlOrAbsPath).replace(/^\\w:/, ''),\n );\n}\n\nexport function collectVolumeArgs(mountPoints: string[]): string[] {\n return mountPoints\n .filter((p, i, array) => {\n if (i !== array.indexOf(p)) {\n // duplicated path\n return false;\n }\n let parent = p;\n while (!pathEquals(parent, upath.dirname(parent))) {\n parent = upath.dirname(parent);\n if (array.includes(parent)) {\n // other mount point contains its directory\n return false;\n }\n }\n return true;\n })\n .map((p) => `${p}:${toContainerPath(p)}`);\n}\n\nexport async function runContainer({\n image,\n userVolumeArgs,\n commandArgs,\n entrypoint,\n env,\n workdir,\n}: {\n image: string;\n userVolumeArgs: string[];\n commandArgs: string[];\n entrypoint?: string;\n env?: [string, string][];\n workdir?: string;\n}) {\n const { default: commandExists } = await importNodeModule('command-exists');\n if (!(await commandExists('docker'))) {\n throw new Error(\n `Docker isn't be installed. To use this feature, you'll need to install Docker.`,\n );\n }\n const version = (\n await exec('docker', ['version', '--format', '{{.Server.Version}}'])\n ).stdout;\n const [major, minor] = version.split('.').map(Number);\n if (major < 20 || (major === 20 && minor < 10)) {\n throw new Error(\n `Docker version ${version} is not supported. Please upgrade to Docker 20.10.0 or later.`,\n );\n }\n\n try {\n using _ = Logger.suspendLogging('Launching docker container');\n const args = [\n 'run',\n ...(Logger.isInteractive ? ['-it'] : []),\n '--rm',\n ...(entrypoint ? ['--entrypoint', entrypoint] : []),\n ...(env ? env.flatMap(([k, v]) => ['-e', `${k}=${v}`]) : []),\n ...(process.env.DEBUG\n ? ['-e', `DEBUG=${process.env.DEBUG}`] // escape seems to work well\n : []),\n ...userVolumeArgs.flatMap((arg) => ['-v', arg]),\n ...(workdir ? ['-w', workdir] : []),\n image,\n ...commandArgs,\n ];\n Logger.debug(`docker ${args.join(' ')}`);\n const proc = x('docker', args, {\n throwOnError: true,\n nodeOptions: {\n stdio: Logger.isInteractive ? 'inherit' : undefined,\n },\n });\n if (Logger.isInteractive) {\n await proc;\n } else {\n for await (const line of proc) {\n Logger.log(line);\n }\n }\n } catch (error) {\n throw new Error(\n 'An error occurred on the running container. Please see logs above.',\n );\n }\n}\n\nexport async function buildPDFWithContainer({\n target,\n config,\n inlineConfig,\n}: {\n target: PdfOutput;\n config: ResolvedTaskConfig;\n inlineConfig: ParsedVivliostyleInlineConfig;\n}): Promise<string | null> {\n const sourceUrl = new URL(await getSourceUrl(config));\n if (sourceUrl.origin === config.rootUrl) {\n sourceUrl.hostname = CONTAINER_LOCAL_HOSTNAME;\n }\n const bypassedOption = {\n ...inlineConfig,\n input: {\n format: 'webbook',\n entry: sourceUrl.href,\n },\n output: [\n {\n ...target,\n path: toContainerPath(target.path),\n },\n ],\n host: CONTAINER_LOCAL_HOSTNAME,\n } satisfies ParsedVivliostyleInlineConfig;\n\n await runContainer({\n image: config.image,\n userVolumeArgs: collectVolumeArgs([\n ...(typeof config.serverRootDir === 'string'\n ? [config.serverRootDir]\n : []),\n upath.dirname(target.path),\n ]),\n env: [['VS_CLI_BUILD_PDF_OPTIONS', JSON.stringify(bypassedOption)]],\n commandArgs: ['build'],\n workdir:\n typeof config.serverRootDir === 'string'\n ? toContainerPath(config.serverRootDir)\n : undefined,\n });\n\n return target.path;\n}\n","import fs from 'node:fs';\nimport { URL } from 'node:url';\nimport type { Browser, Page } from 'puppeteer-core';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { cyan, gray, green, red } from 'yoctocolors';\nimport { launchPreview } from '../browser.js';\nimport type {\n ManuscriptEntry,\n PdfOutput,\n ResolvedTaskConfig,\n} from '../config/resolve.js';\nimport type { CmykMap, Meta, Payload, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { getViewerFullUrl } from '../server.js';\nimport { pathEquals } from '../util.js';\nimport { type PageSizeData, PostProcess } from './pdf-postprocess.js';\n\nexport async function buildPDF({\n target,\n config,\n}: {\n target: PdfOutput;\n config: ResolvedTaskConfig;\n}): Promise<string | null> {\n Logger.logUpdate(`Launching PDF build environment`);\n\n const viewerFullUrl = await getViewerFullUrl(config);\n Logger.debug('viewerFullUrl', viewerFullUrl);\n\n let lastEntry: ManuscriptEntry | undefined;\n\n function stringifyEntry(entry: ManuscriptEntry) {\n const formattedSourcePath = cyan(\n entry.source.type === 'file'\n ? upath.relative(config.entryContextDir, entry.source.pathname)\n : entry.source.href,\n );\n return `${terminalLink(\n formattedSourcePath,\n entry.source.type === 'file'\n ? `file://${entry.source.pathname}`\n : entry.source.href,\n {\n fallback: () => formattedSourcePath,\n },\n )} ${entry.title ? gray(entry.title) : ''}`;\n }\n\n function handleEntry(response: any) {\n const entry = config.entries.find((entry): entry is ManuscriptEntry => {\n if (!('source' in entry)) {\n return false;\n }\n const url = new URL(response.url());\n return url.protocol === 'file:'\n ? pathEquals(entry.target, url.pathname)\n : pathEquals(\n upath.relative(config.workspaceDir, entry.target),\n url.pathname.substring(1),\n );\n });\n if (entry) {\n if (!lastEntry) {\n lastEntry = entry;\n Logger.logUpdate(stringifyEntry(entry));\n return;\n }\n Logger.logSuccess(stringifyEntry(lastEntry));\n Logger.startLogging(stringifyEntry(entry));\n lastEntry = entry;\n }\n }\n\n const { browser, page } = await launchPreview({\n mode: 'build',\n url: viewerFullUrl,\n config,\n onBrowserOpen: () => {\n Logger.logUpdate('Building pages');\n },\n onPageOpen: async (page) => {\n page.on('pageerror', (error) => {\n Logger.logError(red((error as Error).message));\n });\n\n page.on('console', (msg) => {\n switch (msg.type()) {\n case 'error':\n if (/\\/vivliostyle-viewer\\.js$/.test(msg.location().url ?? '')) {\n Logger.logError(msg.text());\n throw msg.text();\n }\n return;\n case 'debug':\n if (/time slice/.test(msg.text())) {\n return;\n }\n break;\n }\n if (msg.type() === 'error') {\n Logger.logVerbose(red('console.error()'), msg.text());\n } else {\n Logger.logVerbose(gray(`console.${msg.type()}()`), msg.text());\n }\n });\n\n page.on('response', (response) => {\n Logger.debug(\n gray('viewer:response'),\n green(response.status().toString()),\n response.url(),\n );\n\n handleEntry(response);\n\n if (400 > response.status() && 200 <= response.status()) return;\n // file protocol doesn't have status code\n if (response.url().startsWith('file://') && response.ok()) return;\n\n Logger.logError(red(`${response.status()}`), response.url());\n });\n\n await page.setDefaultTimeout(config.timeout);\n },\n });\n\n const browserVersion = await browser.version();\n Logger.debug(green('success'), `browserVersion=${browserVersion}`);\n\n let remainTime = config.timeout;\n const startTime = Date.now();\n\n await page.waitForNetworkIdle();\n await page.waitForFunction(() => !!window.coreViewer);\n\n const { protocol } = browser as Browser & {\n protocol: 'cdp' | 'webDriverBiDi';\n };\n // Only CDP supports emulateMediaType\n if (protocol === 'cdp') {\n await page.emulateMediaType('print');\n }\n await page.waitForFunction(\n /* v8 ignore next */\n () => window.coreViewer.readyState === 'complete',\n { polling: 1000 },\n );\n\n if (lastEntry) {\n Logger.logSuccess(stringifyEntry(lastEntry));\n }\n\n const pageProgression = await page.evaluate(() =>\n /* v8 ignore next 5 */\n document\n .querySelector('#vivliostyle-viewer-viewport')\n ?.getAttribute('data-vivliostyle-page-progression') === 'rtl'\n ? 'rtl'\n : 'ltr',\n );\n const viewerCoreVersion = await page.evaluate(() =>\n /* v8 ignore next 3 */\n document\n .querySelector('#vivliostyle-menu_settings .version')\n ?.textContent?.replace(/^.*?: (\\d[-+.\\w]+).*$/, '$1'),\n );\n const metadata = await loadMetadata(page);\n const toc = await loadTOC(page);\n const pageSizeData = await loadPageSizeData(page);\n const cmykMap = target.cmyk ? await loadCmykMap(page) : {};\n\n remainTime -= Date.now() - startTime;\n if (remainTime <= 0) {\n throw new Error('Typesetting process timed out');\n }\n Logger.debug('Remaining timeout:', remainTime);\n\n Logger.logUpdate('Building PDF');\n\n // For Firefox WebDriver BiDi, explicitly set width and height\n // because page.pdf() doesn't support for the preferCSSPageSize option.\n // Use a sufficiently large value to accommodate user-defined page sizes.\n const dimensionSizeForWebDriverBiDi =\n parseInt(process.env.VS_CLI_PDF_BUILD_PDF_PAGE_SIZE || '', 10) || 3780; // 1000mm\n const pdf = await page.pdf({\n margin: {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n },\n printBackground: true,\n tagged: true,\n // timeout: remainTime,\n ...(protocol === 'webDriverBiDi'\n ? {\n width: dimensionSizeForWebDriverBiDi,\n height: dimensionSizeForWebDriverBiDi,\n }\n : {\n preferCSSPageSize: true,\n }),\n });\n\n await browser.close();\n\n Logger.logUpdate('Processing PDF');\n fs.mkdirSync(upath.dirname(target.path), { recursive: true });\n\n const post = await PostProcess.load(pdf);\n await post.metadata(metadata, {\n pageProgression,\n browserVersion,\n viewerCoreVersion,\n // If custom viewer is set and its version info is not available,\n // there is no guarantee that the default creator option is correct.\n disableCreatorOption: !!config.viewer && !viewerCoreVersion,\n });\n await post.toc(toc);\n await post.setPageBoxes(pageSizeData);\n await post.save(target.path, {\n preflight: target.preflight,\n preflightOption: target.preflightOption,\n image: config.image,\n cmyk: target.cmyk,\n cmykMap,\n replaceImage: target.replaceImage,\n });\n\n return target.path;\n}\n\nasync function loadMetadata(page: Page): Promise<Meta> {\n return page.evaluate(() => window.coreViewer.getMetadata());\n}\n\n// Show and hide the TOC in order to read its contents.\n// Chromium needs to see the TOC links in the DOM to add\n// the PDF destinations used during postprocessing.\nasync function loadTOC(page: Page): Promise<TOCItem[]> {\n /* v8 ignore start */\n return page.evaluate(\n () =>\n new Promise<TOCItem[]>((resolve) => {\n function listener(payload: Payload) {\n if (payload.a !== 'toc') {\n return;\n }\n window.coreViewer.removeListener('done', listener);\n window.coreViewer.showTOC(false);\n resolve(window.coreViewer.getTOC());\n }\n window.coreViewer.addListener('done', listener);\n window.coreViewer.showTOC(true);\n }),\n );\n /* v8 ignore stop */\n}\n\nasync function loadPageSizeData(page: Page): Promise<PageSizeData[]> {\n /* v8 ignore start */\n return page.evaluate(() => {\n const sizeData: PageSizeData[] = [];\n const pageContainers = document.querySelectorAll(\n '#vivliostyle-viewer-viewport > div > div > div[data-vivliostyle-page-container]',\n ) as NodeListOf<HTMLElement>;\n\n for (const pageContainer of pageContainers) {\n const bleedBox = pageContainer.querySelector(\n 'div[data-vivliostyle-bleed-box]',\n ) as HTMLElement;\n sizeData.push({\n mediaWidth: parseFloat(pageContainer.style.width) * 0.75,\n mediaHeight: parseFloat(pageContainer.style.height) * 0.75,\n bleedOffset: parseFloat(bleedBox?.style.left) * 0.75,\n bleedSize: parseFloat(bleedBox?.style.paddingLeft) * 0.75,\n });\n }\n return sizeData;\n });\n /* v8 ignore stop */\n}\n\nasync function loadCmykMap(page: Page): Promise<CmykMap> {\n /* v8 ignore next 3 */\n return page.evaluate(() => window.coreViewer.getCmykMap?.() ?? {});\n}\n","import decamelize from 'decamelize';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport type { PDFDocument, PDFRef } from 'pdf-lib';\nimport upath from 'upath';\nimport { v1 as uuid } from 'uuid';\nimport type { PdfOutput, ResolvedTaskConfig } from '../config/resolve.js';\nimport { coreVersion } from '../const.js';\nimport {\n collectVolumeArgs,\n runContainer,\n toContainerPath,\n} from '../container.js';\nimport type { CmykMap, Meta, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { importNodeModule } from '../node-modules.js';\nimport { isInContainer } from '../util.js';\nimport { convertCmykColors } from './cmyk.js';\nimport { replaceImages } from './image.js';\n\nexport type SaveOption = Pick<\n PdfOutput,\n 'preflight' | 'preflightOption' | 'cmyk' | 'replaceImage'\n> &\n Pick<ResolvedTaskConfig, 'image'> & { cmykMap: CmykMap };\n\nconst prefixes = {\n dcterms: 'http://purl.org/dc/terms/',\n meta: 'http://idpf.org/epub/vocab/package/meta/#',\n};\n\nconst metaTerms = {\n title: `${prefixes.dcterms}title`,\n creator: `${prefixes.dcterms}creator`,\n description: `${prefixes.dcterms}description`,\n subject: `${prefixes.dcterms}subject`,\n contributor: `${prefixes.dcterms}contributor`,\n language: `${prefixes.dcterms}language`,\n role: `${prefixes.meta}role`,\n created: `${prefixes.meta}created`,\n date: `${prefixes.meta}date`,\n};\n\ninterface PDFTocItem extends TOCItem {\n children: PDFTocItem[];\n ref: PDFRef;\n parentRef: PDFRef;\n}\n\nexport interface PageSizeData {\n mediaWidth: number;\n mediaHeight: number;\n bleedOffset: number;\n bleedSize: number;\n}\n\nexport async function pressReadyWithContainer({\n input,\n output,\n preflightOption,\n image,\n}: {\n input: string;\n output: string;\n preflightOption: string[];\n image: string;\n}) {\n await runContainer({\n image,\n entrypoint: 'press-ready',\n userVolumeArgs: collectVolumeArgs([\n upath.dirname(input),\n upath.dirname(output),\n ]),\n commandArgs: [\n 'build',\n '-i',\n toContainerPath(input),\n '-o',\n toContainerPath(output),\n ...preflightOption\n .map((opt) => `--${decamelize(opt, { separator: '-' })}`)\n .filter((str) => /^[\\w-]+/.test(str)),\n ],\n });\n}\n\nexport class PostProcess {\n protected readonly document: PDFDocument;\n\n static async load(pdf: Uint8Array): Promise<PostProcess> {\n const { PDFDocument } = await importNodeModule('pdf-lib');\n const document = await PDFDocument.load(pdf, { updateMetadata: false });\n return new PostProcess(document);\n }\n\n protected constructor(document: PDFDocument) {\n this.document = document;\n }\n\n async save(\n output: string,\n {\n preflight,\n preflightOption,\n image,\n cmyk,\n cmykMap,\n replaceImage,\n }: SaveOption,\n ) {\n let pdf = await this.document.save();\n\n if (cmyk) {\n const mergedMap: CmykMap = { ...cmykMap };\n for (const [rgb, cmykValue] of cmyk.overrideMap) {\n const key = JSON.stringify([rgb.r, rgb.g, rgb.b]);\n mergedMap[key] = cmykValue;\n }\n\n Logger.logInfo('Converting CMYK colors');\n pdf = await convertCmykColors({\n pdf,\n colorMap: mergedMap,\n warnUnmapped: cmyk.warnUnmapped,\n });\n\n if (cmyk.mapOutput) {\n const mapOutputDir = upath.dirname(cmyk.mapOutput);\n fs.mkdirSync(mapOutputDir, { recursive: true });\n await fs.promises.writeFile(\n cmyk.mapOutput,\n JSON.stringify(mergedMap, null, 2),\n );\n Logger.logInfo(`CMYK color map saved to ${cmyk.mapOutput}`);\n }\n }\n\n if (replaceImage.length > 0) {\n Logger.logInfo('Replacing images');\n pdf = await replaceImages({\n pdf,\n replaceImageConfig: replaceImage,\n });\n }\n\n if (preflight) {\n const input = upath.join(os.tmpdir(), `vivliostyle-cli-${uuid()}.pdf`);\n await fs.promises.writeFile(input, pdf);\n\n if (\n preflight === 'press-ready-local' ||\n (preflight === 'press-ready' && isInContainer())\n ) {\n using _ = Logger.suspendLogging('Running press-ready');\n const { build } = await importNodeModule('press-ready');\n await build({\n ...preflightOption.reduce((acc, opt) => {\n const optName = decamelize(opt, { separator: '-' });\n return optName.startsWith('no-')\n ? {\n ...acc,\n [optName.slice(3)]: false,\n }\n : {\n ...acc,\n [optName]: true,\n };\n }, {}),\n input,\n output,\n });\n } else if (preflight === 'press-ready') {\n using _ = Logger.suspendLogging('Running press-ready');\n await pressReadyWithContainer({\n input,\n output,\n preflightOption,\n image,\n });\n }\n } else {\n await fs.promises.writeFile(output, pdf);\n }\n }\n\n async metadata(\n tree: Meta,\n {\n pageProgression,\n browserVersion,\n viewerCoreVersion,\n disableCreatorOption,\n }: {\n pageProgression?: 'ltr' | 'rtl';\n browserVersion?: string;\n viewerCoreVersion?: string;\n disableCreatorOption?: boolean;\n } = {},\n ) {\n const { ReadingDirection } = await importNodeModule('pdf-lib');\n const title = tree[metaTerms.title]?.[0].v;\n if (title) {\n this.document.setTitle(title);\n }\n\n const author = tree[metaTerms.creator]?.map((item) => item.v)?.join('; ');\n if (author) {\n this.document.setAuthor(author);\n }\n\n const subject = tree[metaTerms.description]?.[0].v;\n if (subject) {\n this.document.setSubject(subject);\n }\n\n const keywords = tree[metaTerms.subject]?.map((item) => item.v);\n if (keywords) {\n this.document.setKeywords(keywords);\n }\n\n let creatorOpt = `Vivliostyle.js ${viewerCoreVersion ?? coreVersion}`;\n if (browserVersion) {\n creatorOpt += `; ${browserVersion}`;\n }\n this.document.setCreator(\n disableCreatorOption ? 'Vivliostyle' : `Vivliostyle (${creatorOpt})`,\n );\n\n const language = tree[metaTerms.language]?.[0].v;\n if (language) {\n this.document.setLanguage(language);\n }\n\n const creation = (tree[metaTerms.created] || tree[metaTerms.date])?.[0].v;\n const creationDate = creation && new Date(creation);\n if (creationDate) {\n this.document.setCreationDate(creationDate);\n }\n if (pageProgression === 'rtl') {\n const viewerPrefs = this.document.catalog.getOrCreateViewerPreferences();\n viewerPrefs.setReadingDirection(ReadingDirection.R2L);\n }\n }\n\n async toc(items: TOCItem[]) {\n const { PDFDict, PDFHexString, PDFName, PDFNumber } =\n await importNodeModule('pdf-lib');\n if (!items || !items.length) {\n return;\n }\n\n const addRefs = (items: TOCItem[], parentRef: PDFRef): PDFTocItem[] =>\n items.map((item) => {\n const ref = this.document.context.nextRef();\n return {\n ...item,\n parentRef,\n ref,\n children: addRefs(item.children, ref),\n };\n });\n const countAll = (items: PDFTocItem[]): number =>\n items.reduce((sum, item) => sum + countAll(item.children), items.length);\n const addObjectsToPDF = (items: PDFTocItem[]) => {\n for (const [i, item] of items.entries()) {\n const child = PDFDict.withContext(this.document.context);\n child.set(PDFName.of('Title'), PDFHexString.fromText(item.title));\n child.set(PDFName.of('Dest'), PDFName.of(item.id));\n child.set(PDFName.of('Parent'), item.parentRef);\n const prev = items[i - 1];\n if (prev) {\n child.set(PDFName.of('Prev'), prev.ref);\n }\n const next = items[i + 1];\n if (next) {\n child.set(PDFName.of('Next'), next.ref);\n }\n if (item.children.length) {\n child.set(PDFName.of('First'), item.children[0].ref);\n child.set(\n PDFName.of('Last'),\n item.children[item.children.length - 1].ref,\n );\n child.set(PDFName.of('Count'), PDFNumber.of(countAll(item.children)));\n }\n this.document.context.assign(item.ref, child);\n addObjectsToPDF(item.children);\n }\n };\n\n const outlineRef = this.document.context.nextRef();\n const itemsWithRefs = addRefs(items, outlineRef);\n addObjectsToPDF(itemsWithRefs);\n\n const outline = PDFDict.withContext(this.document.context);\n outline.set(PDFName.of('First'), itemsWithRefs[0].ref);\n outline.set(\n PDFName.of('Last'),\n itemsWithRefs[itemsWithRefs.length - 1].ref,\n );\n outline.set(PDFName.of('Count'), PDFNumber.of(countAll(itemsWithRefs)));\n this.document.context.assign(outlineRef, outline);\n this.document.catalog.set(PDFName.of('Outlines'), outlineRef);\n }\n\n async setPageBoxes(pageSizeData: PageSizeData[]) {\n if (pageSizeData.length + 1 === this.document.getPageCount()) {\n // fix issue #312: Chromium LayoutNGPrinting adds unnecessary blank page\n this.document.removePage(pageSizeData.length);\n }\n if (pageSizeData.length !== this.document.getPageCount()) {\n return;\n }\n for (let i = 0; i < pageSizeData.length; i++) {\n const page = this.document.getPage(i);\n const sizeData = pageSizeData[i];\n if (\n !sizeData.mediaWidth ||\n !sizeData.mediaHeight ||\n isNaN(sizeData.bleedOffset) ||\n isNaN(sizeData.bleedSize)\n ) {\n continue;\n }\n const yOffset = page.getHeight() - sizeData.mediaHeight;\n page.setMediaBox(0, yOffset, sizeData.mediaWidth, sizeData.mediaHeight);\n if (!sizeData.bleedOffset && !sizeData.bleedSize) {\n continue;\n }\n page.setBleedBox(\n sizeData.bleedOffset,\n yOffset + sizeData.bleedOffset,\n sizeData.mediaWidth - sizeData.bleedOffset * 2,\n sizeData.mediaHeight - sizeData.bleedOffset * 2,\n );\n const trimOffset = sizeData.bleedOffset + sizeData.bleedSize;\n page.setTrimBox(\n trimOffset,\n yOffset + trimOffset,\n sizeData.mediaWidth - trimOffset * 2,\n sizeData.mediaHeight - trimOffset * 2,\n );\n }\n }\n}\n","import type { CmykMap } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\n\n/**\n * `SRGBValue.MAX`\n * @see https://github.com/vivliostyle/vivliostyle.js/blob/master/packages/core/src/vivliostyle/cmyk-store.ts\n */\nconst SRGB_MAX = 10000;\n/**\n * `CMYKValue.MAX`\n * @see https://github.com/vivliostyle/vivliostyle.js/blob/master/packages/core/src/vivliostyle/cmyk-store.ts\n */\nconst CMYK_MAX = 10000;\n\ninterface NumberToken {\n type: 'number';\n value: number;\n raw: string;\n}\n\ninterface OperatorToken {\n type: 'operator';\n value: string;\n raw: string;\n}\n\ninterface OtherToken {\n type: 'other';\n raw: string;\n}\n\ntype Token = NumberToken | OperatorToken | OtherToken;\n\n/**\n * Tokenize PDF content stream\n */\nfunction* tokenize(content: string): Generator<Token> {\n let i = 0;\n const len = content.length;\n\n while (i < len) {\n // Skip whitespace\n while (i < len && /\\s/.test(content[i])) i++;\n if (i >= len) break;\n\n const c = content[i];\n\n // Comment - skip to end of line\n if (c === '%') {\n const start = i;\n while (i < len && content[i] !== '\\n' && content[i] !== '\\r') i++;\n yield { type: 'other', raw: content.slice(start, i) };\n continue;\n }\n\n // String literal (...) - must skip properly to avoid parsing numbers inside\n if (c === '(') {\n let depth = 1;\n let str = '(';\n i++;\n while (i < len && depth > 0) {\n if (content[i] === '\\\\' && i + 1 < len) {\n str += content[i] + content[i + 1];\n i += 2;\n } else {\n if (content[i] === '(') depth++;\n else if (content[i] === ')') depth--;\n str += content[i];\n i++;\n }\n }\n yield { type: 'other', raw: str };\n continue;\n }\n\n // Hex string <...> - must skip properly to avoid parsing numbers inside\n if (c === '<' && content[i + 1] !== '<') {\n let str = '<';\n i++;\n while (i < len && content[i] !== '>') {\n str += content[i];\n i++;\n }\n if (i < len) {\n str += '>';\n i++;\n }\n yield { type: 'other', raw: str };\n continue;\n }\n\n // Single character delimiters\n if (c === '[' || c === ']' || c === '{' || c === '}') {\n yield { type: 'other', raw: c };\n i++;\n continue;\n }\n\n // Dictionary << ... >>\n if (c === '<' && content[i + 1] === '<') {\n yield { type: 'other', raw: '<<' };\n i += 2;\n continue;\n }\n if (c === '>' && content[i + 1] === '>') {\n yield { type: 'other', raw: '>>' };\n i += 2;\n continue;\n }\n\n // Name /...\n if (c === '/') {\n let name = '/';\n i++;\n while (i < len && /[^\\s\\[\\]()<>{}/%]/.test(content[i])) {\n name += content[i];\n i++;\n }\n yield { type: 'other', raw: name };\n continue;\n }\n\n // Number or operator\n let token = '';\n while (i < len && /[^\\s\\[\\]()<>{}/%]/.test(content[i])) {\n token += content[i];\n i++;\n }\n\n if (/^[+-]?(\\d+\\.?\\d*|\\.\\d+)$/.test(token)) {\n yield { type: 'number', value: parseFloat(token), raw: token };\n } else if (token === 'ID') {\n // Inline image: ID is followed by single whitespace, then binary data until EI\n yield { type: 'operator', value: 'ID', raw: 'ID' };\n\n // Read binary data until whitespace + EI + (whitespace or EOF)\n const dataStart = i;\n while (i < len) {\n if (\n /\\s/.test(content[i]) &&\n content[i + 1] === 'E' &&\n content[i + 2] === 'I' &&\n (i + 3 >= len || /\\s/.test(content[i + 3]))\n ) {\n // Emit binary data including trailing whitespace before EI\n yield { type: 'other', raw: content.slice(dataStart, i + 1) };\n yield { type: 'operator', value: 'EI', raw: 'EI' };\n i += 3;\n break;\n }\n i++;\n }\n } else if (token.length > 0) {\n yield { type: 'operator', value: token, raw: token };\n }\n }\n}\n\nfunction formatRgbKey(r: number, g: number, b: number): string {\n const ri = Math.round(r * SRGB_MAX);\n const gi = Math.round(g * SRGB_MAX);\n const bi = Math.round(b * SRGB_MAX);\n return JSON.stringify([ri, gi, bi]);\n}\n\nfunction formatRgbKeyForWarning(r: number, g: number, b: number): string {\n const ri = Math.round(r * SRGB_MAX);\n const gi = Math.round(g * SRGB_MAX);\n const bi = Math.round(b * SRGB_MAX);\n return JSON.stringify({ r: ri, g: gi, b: bi });\n}\n\n/**\n * Convert RGB color operators to CMYK in a content stream\n */\nexport function convertStreamColors(\n content: string,\n colorMap: CmykMap,\n warnUnmapped: boolean,\n warnedColors: Set<string>,\n): string {\n const result: string[] = [];\n const pendingNumbers: { value: number; raw: string }[] = [];\n\n const flushPendingNumbers = () => {\n for (const num of pendingNumbers) {\n result.push(num.raw);\n }\n pendingNumbers.length = 0;\n };\n\n for (const token of tokenize(content)) {\n if (token.type === 'number') {\n pendingNumbers.push({ value: token.value, raw: token.raw });\n } else if (token.type === 'operator') {\n const op = token.value;\n\n // RGB color: r g b rg (non-stroking) or r g b RG (stroking)\n const cmykOp = op === 'rg' ? 'k' : op === 'RG' ? 'K' : null;\n if (cmykOp && pendingNumbers.length >= 3) {\n const b = pendingNumbers.pop()!;\n const g = pendingNumbers.pop()!;\n const r = pendingNumbers.pop()!;\n flushPendingNumbers();\n\n const key = formatRgbKey(r.value, g.value, b.value);\n const cmyk = colorMap[key];\n\n if (cmyk) {\n const c = (cmyk.c / CMYK_MAX).toString();\n const m = (cmyk.m / CMYK_MAX).toString();\n const y = (cmyk.y / CMYK_MAX).toString();\n const k = (cmyk.k / CMYK_MAX).toString();\n result.push(`${c} ${m} ${y} ${k} ${cmykOp}`);\n } else {\n result.push(r.raw, g.raw, b.raw, token.raw);\n if (warnUnmapped) {\n const warnKey = formatRgbKeyForWarning(r.value, g.value, b.value);\n if (!warnedColors.has(warnKey)) {\n warnedColors.add(warnKey);\n Logger.logWarn(`RGB color not mapped to CMYK: ${warnKey}`);\n }\n }\n }\n } else {\n flushPendingNumbers();\n result.push(token.raw);\n }\n } else {\n // Other token types - flush pending numbers and pass through\n flushPendingNumbers();\n result.push(token.raw);\n }\n }\n\n // Flush any remaining pending numbers\n flushPendingNumbers();\n\n return result.join(' ');\n}\n","import type * as mupdfType from 'mupdf';\nimport type { CmykMap } from '../global-viewer.js';\nimport { importNodeModule } from '../node-modules.js';\nimport { convertStreamColors } from './pdf-stream.js';\n\ninterface Destroyable {\n destroy(): void;\n}\n\nfunction disposable<T extends Destroyable>(obj: T): T & Disposable {\n return Object.assign(obj, {\n [Symbol.dispose]() {\n obj.destroy();\n },\n });\n}\n\nfunction processStream(\n stream: mupdfType.PDFObject,\n colorMap: CmykMap,\n warnUnmapped: boolean,\n warnedColors: Set<string>,\n mupdf: typeof import('mupdf'),\n): void {\n const buffer = stream.readStream();\n const content = buffer.asString();\n const converted = convertStreamColors(\n content,\n colorMap,\n warnUnmapped,\n warnedColors,\n );\n stream.writeStream(new mupdf.Buffer(converted));\n}\n\nfunction processFormXObjects(\n resources: mupdfType.PDFObject,\n colorMap: CmykMap,\n warnUnmapped: boolean,\n warnedColors: Set<string>,\n mupdf: typeof import('mupdf'),\n processed: Set<number>,\n): void {\n const xobjects = resources.get('XObject');\n if (!xobjects || !xobjects.isDictionary()) {\n return;\n }\n\n xobjects.forEach((xobj) => {\n if (!xobj || !xobj.isStream()) {\n return;\n }\n\n const resolved = xobj.resolve();\n\n const objNum = resolved.asIndirect();\n if (objNum && processed.has(objNum)) {\n // Avoid circular references\n return;\n }\n if (objNum) {\n processed.add(objNum);\n }\n\n const subtype = resolved.get('Subtype');\n if (!subtype || subtype.toString() !== '/Form') {\n return;\n }\n\n processStream(resolved, colorMap, warnUnmapped, warnedColors, mupdf);\n const nestedResources = resolved.get('Resources');\n if (nestedResources && nestedResources.isDictionary()) {\n processFormXObjects(\n nestedResources,\n colorMap,\n warnUnmapped,\n warnedColors,\n mupdf,\n processed,\n );\n }\n });\n}\n\nfunction processContents(\n contents: mupdfType.PDFObject,\n colorMap: CmykMap,\n warnUnmapped: boolean,\n warnedColors: Set<string>,\n mupdf: typeof import('mupdf'),\n): void {\n if (contents.isArray()) {\n // Multiple content streams\n for (let i = 0; i < contents.length; i++) {\n const streamObj = contents.get(i);\n if (streamObj && streamObj.isStream()) {\n processStream(\n streamObj.resolve(),\n colorMap,\n warnUnmapped,\n warnedColors,\n mupdf,\n );\n }\n }\n } else if (contents.isStream()) {\n // Single content stream\n processStream(contents, colorMap, warnUnmapped, warnedColors, mupdf);\n }\n}\n\nexport async function convertCmykColors({\n pdf,\n colorMap,\n warnUnmapped,\n}: {\n pdf: Uint8Array;\n colorMap: CmykMap;\n warnUnmapped: boolean;\n}): Promise<Uint8Array> {\n const mupdf = await importNodeModule('mupdf');\n const warnedColors = new Set<string>();\n const processedXObjects = new Set<number>();\n\n using doc = disposable(\n mupdf.PDFDocument.openDocument(\n pdf,\n 'application/pdf',\n ) as mupdfType.PDFDocument,\n );\n\n const pageCount = doc.countPages();\n for (let i = 0; i < pageCount; i++) {\n const page = doc.loadPage(i) as mupdfType.PDFPage;\n const pageObj = page.getObject().resolve();\n\n const contents = pageObj.get('Contents');\n if (contents) {\n processContents(contents, colorMap, warnUnmapped, warnedColors, mupdf);\n }\n\n const resources = pageObj.get('Resources');\n if (resources && resources.isDictionary()) {\n processFormXObjects(\n resources,\n colorMap,\n warnUnmapped,\n warnedColors,\n mupdf,\n processedXObjects,\n );\n }\n\n // Annotations may have appearance streams with colors\n const annots = pageObj.get('Annots');\n if (!annots?.isArray()) {\n continue;\n }\n for (let j = 0; j < annots.length; j++) {\n const annot = annots.get(j);\n if (!annot) {\n continue;\n }\n const ap = annot.resolve().get('AP');\n if (!ap?.isDictionary()) {\n continue;\n }\n // Normal appearance\n const n = ap.get('N');\n if (!n) {\n continue;\n }\n if (n.isStream()) {\n processStream(n, colorMap, warnUnmapped, warnedColors, mupdf);\n } else if (n.isDictionary()) {\n // Multiple appearance states\n n.forEach((val) => {\n if (val?.isStream()) {\n processStream(val, colorMap, warnUnmapped, warnedColors, mupdf);\n }\n });\n }\n }\n }\n\n using outputBuffer = disposable(doc.saveToBuffer('compress'));\n // Create a copy to ensure the data remains valid after the buffer is destroyed\n return new Uint8Array(outputBuffer.asUint8Array());\n}\n","import fs from 'node:fs';\nimport type * as mupdfType from 'mupdf';\nimport type { ReplaceImageConfig } from '../config/resolve.js';\nimport { Logger } from '../logger.js';\nimport { importNodeModule } from '../node-modules.js';\n\ninterface Destroyable {\n destroy(): void;\n}\n\nfunction disposable<T extends Destroyable>(obj: T): T & Disposable {\n return Object.assign(obj, {\n [Symbol.dispose]() {\n obj.destroy();\n },\n });\n}\n\nfunction imagesEqual(a: mupdfType.Image, b: mupdfType.Image): boolean {\n if (a.getWidth() !== b.getWidth() || a.getHeight() !== b.getHeight()) {\n return false;\n }\n\n const pixmapA = a.toPixmap();\n const pixmapB = b.toPixmap();\n\n const typeA = pixmapA.getColorSpace();\n const typeB = pixmapB.getColorSpace();\n if (\n typeA === null ||\n typeB === null ||\n !(\n (typeA.isRGB() && typeB.isRGB()) ||\n (typeA.isCMYK() && typeB.isCMYK()) ||\n (typeA.isGray() && typeB.isGray())\n )\n ) {\n return false;\n }\n\n const pixelsA = pixmapA.getPixels();\n const pixelsB = pixmapB.getPixels();\n return (\n pixelsA.length === pixelsB.length &&\n Buffer.compare(Buffer.from(pixelsA), Buffer.from(pixelsB)) === 0\n );\n}\n\ninterface ImagePair {\n srcImage: mupdfType.Image;\n destImage: mupdfType.Image;\n sourcePath: string;\n replacementPath: string;\n}\n\ninterface ReplaceStats {\n replaced: number;\n total: number;\n}\n\nfunction replaceImagesInDocument(\n doc: mupdfType.PDFDocument,\n imagePairs: ImagePair[],\n): ReplaceStats {\n let replaced = 0;\n let total = 0;\n\n const pageCount = doc.countPages();\n\n for (let i = 0; i < pageCount; i++) {\n const page = doc.loadPage(i);\n const pageObj = page.getObject().resolve();\n\n const res = pageObj.get('Resources');\n if (!res || !res.isDictionary()) continue;\n\n const xobjects = res.get('XObject');\n if (!xobjects || !xobjects.isDictionary()) continue;\n\n // Collect keys first to avoid modification during iteration\n const entries: { key: string | number; value: mupdfType.PDFObject }[] = [];\n xobjects.forEach((value, key) => {\n entries.push({ key, value });\n });\n\n for (const { key, value } of entries) {\n const resolved = value.resolve();\n const subtype = resolved.get('Subtype');\n\n if (subtype && subtype.toString() === '/Image') {\n total++;\n\n // Extract image from PDF\n const pdfImage = doc.loadImage(value);\n\n // Find matching source image\n for (const pair of imagePairs) {\n if (imagesEqual(pdfImage, pair.srcImage)) {\n const newImageRef = doc.addImage(pair.destImage);\n xobjects.put(key, newImageRef);\n replaced++;\n Logger.debug(\n ` Page ${i + 1}, ref \"${key}\": ${pair.sourcePath} -> ${pair.replacementPath}`,\n );\n break;\n }\n }\n }\n }\n\n res.put('XObject', xobjects);\n pageObj.put('Resources', res);\n }\n\n return { replaced, total };\n}\n\nexport async function replaceImages({\n pdf,\n replaceImageConfig,\n}: {\n pdf: Uint8Array;\n replaceImageConfig: ReplaceImageConfig;\n}): Promise<Uint8Array> {\n if (replaceImageConfig.length === 0) {\n return pdf;\n }\n\n const mupdf = await importNodeModule('mupdf');\n\n // Load image pairs\n const imagePairs: ImagePair[] = [];\n for (const { source, replacement } of replaceImageConfig) {\n let srcImage: mupdfType.Image;\n let destImage: mupdfType.Image;\n\n try {\n const srcBuffer = fs.readFileSync(source);\n srcImage = new mupdf.Image(srcBuffer);\n Logger.debug(\n `Loaded source image: ${source} (${srcImage.getWidth()}x${srcImage.getHeight()})`,\n );\n } catch (error) {\n Logger.logWarn(`Failed to load source image: ${source}: ${error}`);\n continue;\n }\n\n try {\n const destBuffer = fs.readFileSync(replacement);\n destImage = new mupdf.Image(destBuffer);\n Logger.debug(\n `Loaded replacement image: ${replacement} (${destImage.getWidth()}x${destImage.getHeight()})`,\n );\n } catch (error) {\n Logger.logWarn(\n `Failed to load replacement image: ${replacement}: ${error}`,\n );\n continue;\n }\n\n imagePairs.push({\n srcImage,\n destImage,\n sourcePath: source,\n replacementPath: replacement,\n });\n }\n\n if (imagePairs.length === 0) {\n return pdf;\n }\n\n using doc = disposable(\n mupdf.PDFDocument.openDocument(\n pdf,\n 'application/pdf',\n ) as mupdfType.PDFDocument,\n );\n\n const stats = replaceImagesInDocument(doc, imagePairs);\n Logger.debug(`Replaced ${stats.replaced} of ${stats.total} images`);\n\n using outputBuffer = disposable(doc.saveToBuffer('compress'));\n // Create a copy to ensure the data remains valid after the buffer is destroyed\n return new Uint8Array(outputBuffer.asUint8Array());\n}\n"],"mappings":"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","names":["pathToFileURL","terminalLink","upath","cyan","gray","process","_","process","fs","URL","upath","fs","upath","disposable","upath","document","fs","_","build","_stack","_error","_hasError","items","upath","entry","URL","page","fs","gray","_stack","_","cyan","upath","terminalLink","pathToFileURL","_error","_hasError"]}
@@ -3,6 +3,7 @@ var nodeExternalModules = [
3
3
  "@napi-rs/canvas",
4
4
  "@puppeteer/browsers",
5
5
  "command-exists",
6
+ "mupdf",
6
7
  "press-ready",
7
8
  "pdf-lib",
8
9
  "puppeteer-core"
@@ -13,4 +14,4 @@ export {
13
14
  nodeExternalModules,
14
15
  importNodeModule
15
16
  };
16
- //# sourceMappingURL=chunk-E6QVHS6D.js.map
17
+ //# sourceMappingURL=chunk-ECEGM36O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/node-modules.ts"],"sourcesContent":["// List the libraries that are assumed to run in the Node.js environment\n// but are not required to run the Vivliostyle CLI.\n// Mark these modules as dynamic imports to prevent execution failure\n// when trying to import unnecessary modules in a standalone environment.\nexport const nodeExternalModules = [\n '@napi-rs/canvas',\n '@puppeteer/browsers',\n 'command-exists',\n 'mupdf',\n 'press-ready',\n 'pdf-lib',\n 'puppeteer-core',\n] as const;\n\ntype NodeExternalModules = {\n '@napi-rs/canvas': typeof import('@napi-rs/canvas');\n '@puppeteer/browsers': typeof import('@puppeteer/browsers');\n 'command-exists': typeof import('command-exists');\n mupdf: typeof import('mupdf');\n 'press-ready': typeof import('press-ready');\n 'pdf-lib': typeof import('pdf-lib');\n 'puppeteer-core': typeof import('puppeteer-core');\n};\n\nexport const importNodeModule = <\n T extends (typeof nodeExternalModules)[number],\n>(\n name: T,\n) => import(name) as Promise<NodeExternalModules[T]>;\n"],"mappings":";AAIO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAYO,IAAM,mBAAmB,CAG9B,SACG,OAAO;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveViteConfig
3
- } from "./chunk-XMCTTVR7.js";
3
+ } from "./chunk-RBKPG6VU.js";
4
4
  import {
5
5
  createViteServer,
6
6
  getViewerFullUrl,
@@ -9,13 +9,13 @@ import {
9
9
  mergeInlineConfig,
10
10
  resolveTaskConfig,
11
11
  warnDeprecatedConfig
12
- } from "./chunk-BR2V7MHE.js";
12
+ } from "./chunk-YNX6D2I6.js";
13
13
  import {
14
14
  Logger,
15
15
  isUnicodeSupported,
16
16
  randomBookSymbol,
17
17
  setupConfigFromFlags
18
- } from "./chunk-T2VWLU2I.js";
18
+ } from "./chunk-RILZCPJE.js";
19
19
  import {
20
20
  cliVersion
21
21
  } from "./chunk-ZEBXHUJX.js";
@@ -84,4 +84,4 @@ ${blueBright("\u2559\u2500")} ${dim(`Preview URL: ${terminalLink(url, url, { fal
84
84
  export {
85
85
  preview
86
86
  };
87
- //# sourceMappingURL=chunk-37OLZSNI.js.map
87
+ //# sourceMappingURL=chunk-NVNEYZ3J.js.map
@@ -8,12 +8,12 @@ import {
8
8
  registerExitHandler,
9
9
  toTitleCase,
10
10
  whichPm
11
- } from "./chunk-T2VWLU2I.js";
11
+ } from "./chunk-RILZCPJE.js";
12
12
  import {
13
13
  ValidString,
14
14
  VivliostyleInlineConfigWithoutChecks,
15
15
  VivliostylePackageMetadata
16
- } from "./chunk-CKXFRCPH.js";
16
+ } from "./chunk-3QOSSWIX.js";
17
17
  import {
18
18
  DEFAULT_CONFIG_FILENAME,
19
19
  DEFAULT_PROJECT_AUTHOR,
@@ -1080,4 +1080,4 @@ For more information, visit ${terminalLink(yellow2("https://docs.vivliostyle.org
1080
1080
  export {
1081
1081
  create
1082
1082
  };
1083
- //# sourceMappingURL=chunk-O3CBPX4R.js.map
1083
+ //# sourceMappingURL=chunk-QLK3XMQI.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Logger,
3
3
  useTmpDirectory
4
- } from "./chunk-T2VWLU2I.js";
4
+ } from "./chunk-RILZCPJE.js";
5
5
 
6
6
  // src/config/vite.ts
7
7
  import upath from "upath";
@@ -75,4 +75,4 @@ async function resolveViteConfig({
75
75
  export {
76
76
  resolveViteConfig
77
77
  };
78
- //# sourceMappingURL=chunk-XMCTTVR7.js.map
78
+ //# sourceMappingURL=chunk-RBKPG6VU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VivliostyleInlineConfig
3
- } from "./chunk-CKXFRCPH.js";
3
+ } from "./chunk-3QOSSWIX.js";
4
4
  import {
5
5
  DEFAULT_BROWSER_VERSIONS,
6
6
  EMPTY_DATA_URI,
@@ -912,7 +912,9 @@ exitSignals.forEach((sig) => {
912
912
  if (process.exitCode === void 0) {
913
913
  process.exitCode = exitCode !== void 0 ? 128 + exitCode : Number(signal);
914
914
  }
915
- process.exit();
915
+ if (sig !== "exit") {
916
+ process.exit();
917
+ }
916
918
  });
917
919
  });
918
920
  if (process.platform === "win32") {
@@ -1472,4 +1474,4 @@ export {
1472
1474
  getAssetMatcher,
1473
1475
  copyAssets
1474
1476
  };
1475
- //# sourceMappingURL=chunk-T2VWLU2I.js.map
1477
+ //# sourceMappingURL=chunk-RILZCPJE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/cli-flags.ts","../src/util.ts","../src/logger.ts","../schemas/pub-manifest/module/bcp.schema.json","../schemas/pub-manifest/module/context.schema.json","../schemas/pub-manifest/module/contributor-object.schema.json","../schemas/pub-manifest/module/contributor.schema.json","../schemas/pub-manifest/module/date.schema.json","../schemas/pub-manifest/module/duration.schema.json","../schemas/pub-manifest/module/item-lists.schema.json","../schemas/pub-manifest/module/ItemList.schema.json","../schemas/pub-manifest/module/language.schema.json","../schemas/pub-manifest/module/link.schema.json","../schemas/pub-manifest/module/localizable-object.schema.json","../schemas/pub-manifest/module/localizable.schema.json","../schemas/pub-manifest/module/resource.categorization.schema.json","../schemas/pub-manifest/module/strings.schema.json","../schemas/pub-manifest/module/url.schema.json","../schemas/pub-manifest/module/urls.schema.json","../schemas/pub-manifest/publication.schema.json","../src/schema/pub-manifest.ts","../src/processor/asset.ts"],"sourcesContent":["import { Command, type OptionValues } from 'commander';\nimport * as v from 'valibot';\nimport {\n type InlineOptions,\n type OutputConfig,\n type ParsedVivliostyleConfigSchema,\n VivliostyleInlineConfig,\n} from '../config/schema.js';\nimport { EMPTY_DATA_URI } from '../const.js';\n\nexport interface CliFlags {\n input?: string;\n config?: string;\n outputs?: Pick<OutputConfig, 'path' | 'format'>[];\n theme?: string[];\n size?: string;\n cropMarks?: boolean;\n bleed?: string;\n cropOffset?: string;\n css?: string;\n style?: string;\n userStyle?: string;\n singleDoc?: boolean;\n quick?: boolean;\n pressReady?: boolean;\n title?: string;\n author?: string;\n language?: string;\n readingProgression?: 'ltr' | 'rtl';\n timeout?: number;\n renderMode?: 'local' | 'docker';\n preflight?: 'press-ready' | 'press-ready-local';\n preflightOption?: string[];\n sandbox?: boolean;\n executableBrowser?: string;\n image?: string;\n /** @deprecated */ http?: boolean;\n viewer?: string;\n viewerParam?: string;\n browser?: string;\n proxyServer?: string;\n proxyBypass?: string;\n proxyUser?: string;\n proxyPass?: string;\n logLevel?: 'silent' | 'info' | 'verbose' | 'debug';\n ignoreHttpsErrors?: boolean;\n projectPath?: string;\n template?: string;\n}\n\nexport function createParserProgram({\n setupProgram,\n parseArgs,\n}: {\n setupProgram: () => Command;\n parseArgs?: (options: CliFlags, args: string[]) => CliFlags;\n}) {\n return (argv: string[]) => {\n const program = setupProgram();\n program.parse(argv);\n let options = program.opts<CliFlags>();\n options = parseArgs?.(options, program.args ?? []) || options;\n options = warnDeprecatedFlags(options);\n return v.parse(VivliostyleInlineConfig, options);\n };\n}\n\nexport function setupConfigFromFlags(\n flags: InlineOptions,\n): ParsedVivliostyleConfigSchema {\n if (!flags.input) {\n if (flags.enableViewerStartPage) {\n return {\n tasks: [{ entry: [] }],\n inlineOptions: {\n input: { format: 'webbook', entry: EMPTY_DATA_URI },\n },\n };\n } else {\n throw new Error(\n 'No input is set. Please set an appropriate entry or a Vivliostyle config file.',\n );\n }\n }\n return {\n tasks: [{ entry: [] }],\n inlineOptions: { ...flags },\n };\n}\n\nfunction warnDeprecatedFlags(options: OptionValues): OptionValues {\n const modifiedOptions = { ...options };\n\n // Place here warnings for deprecated flags\n // if (options.someDeprecatedFlag) {\n // Logger.logWarn(\n // \"'--some-deprecated-flag' option was deprecated and will be removed in a future release. Please use '--new-flag' instead.\",\n // );\n // }\n\n return modifiedOptions;\n}\n","import { codeFrameColumns } from '@babel/code-frame';\nimport {\n type JSONValue,\n type ValueNode as JsonValueNode,\n evaluate,\n parse,\n} from '@humanwhocodes/momoa';\nimport type { BrowserPlatform } from '@puppeteer/browsers';\nimport { Ajv, type Plugin as AjvPlugin, type Schema } from 'ajv';\nimport formatsPlugin from 'ajv-formats';\nimport { XMLParser } from 'fast-xml-parser';\nimport lcid from 'lcid';\nimport StreamZip from 'node-stream-zip';\nimport childProcess, { type ExecFileOptions } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport readline from 'node:readline';\nimport util from 'node:util';\nimport { osLocale } from 'os-locale';\nimport { titleCase } from 'title-case';\nimport tmp from 'tmp';\nimport upath from 'upath';\nimport type { BaseIssue } from 'valibot';\nimport { gray, red, redBright } from 'yoctocolors';\nimport type { BrowserType } from './config/schema.js';\nimport { DEFAULT_BROWSER_VERSIONS, languages } from './const.js';\nimport { Logger } from './logger.js';\nimport {\n publicationSchema,\n publicationSchemas,\n} from './schema/pub-manifest.js';\nimport type { PublicationManifest } from './schema/publication.schema.js';\n\nexport const cwd = upath.normalize(process.cwd());\n\nconst execFile = util.promisify(childProcess.execFile);\nexport async function exec(\n command: string,\n args: string[] = [],\n options: ExecFileOptions = {},\n) {\n const subprocess = await execFile(command, args, {\n ...options,\n encoding: 'utf8',\n });\n subprocess.stdout = subprocess.stdout.trim();\n return subprocess;\n}\n\nconst beforeExitHandlers: (() => void)[] = [];\nexport const registerExitHandler = (\n debugMessage: string,\n handler: () => void,\n) => {\n const callback = () => {\n Logger.debug(debugMessage);\n handler();\n };\n beforeExitHandlers.push(callback);\n return () => {\n const index = beforeExitHandlers.indexOf(callback);\n if (index !== -1) {\n return beforeExitHandlers.splice(index, 1)[0];\n }\n };\n};\n\nexport function runExitHandlers() {\n while (beforeExitHandlers.length) {\n try {\n beforeExitHandlers.shift()?.();\n } catch (e) {\n // NOOP\n }\n }\n}\n\nconst exitSignals = ['exit', 'SIGINT', 'SIGTERM'];\nexitSignals.forEach((sig) => {\n process.once(sig, (signal?: string | number, exitCode?: number) => {\n runExitHandlers();\n if (process.exitCode === undefined) {\n process.exitCode =\n exitCode !== undefined ? 128 + exitCode : Number(signal);\n }\n // Only call process.exit() for signals, not for 'exit' event.\n // Calling process.exit() inside 'exit' handler prevents other\n // 'exit' listeners from being executed.\n if (sig !== 'exit') {\n process.exit();\n }\n });\n});\n\nif (process.platform === 'win32') {\n // Windows does not support signals, so use readline interface\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n rl.on('SIGINT', () => {\n runExitHandlers();\n process.exit(1);\n });\n registerExitHandler('Closing readline interface', () => {\n rl.close();\n });\n}\n\nexport class DetailError extends Error {\n detail: string | undefined;\n\n constructor(message: string | undefined, detail: string | undefined) {\n super(message);\n this.detail = detail;\n }\n}\n\nexport function getFormattedError(err: Error) {\n return err instanceof DetailError\n ? `${err.message}\\n${err.detail}`\n : err.stack || `${err.message}`;\n}\n\nexport function gracefulError(err: Error) {\n console.log(`${redBright('ERROR')} ${getFormattedError(err)}\n\n${gray('If you think this is a bug, please report at https://github.com/vivliostyle/vivliostyle-cli/issues')}`);\n\n process.exit(1);\n}\n\nexport function readJSON(path: string) {\n try {\n return JSON.parse(fs.readFileSync(path, 'utf8'));\n } catch (err) {\n return undefined;\n }\n}\n\nexport function statFileSync(\n filePath: string,\n {\n errorMessage = 'Specified input does not exist',\n }: { errorMessage?: string } = {},\n) {\n try {\n return fs.statSync(filePath);\n } catch (err) {\n if ((err as any).code === 'ENOENT') {\n throw new Error(`${errorMessage}: ${filePath}`);\n }\n throw err;\n }\n}\n\nexport async function inflateZip(filePath: string, dest: string) {\n return await new Promise<void>((res, rej) => {\n try {\n const zip = new StreamZip({\n file: filePath,\n storeEntries: true,\n });\n zip.on('error', (err) => {\n rej(err);\n });\n zip.on('ready', async () => {\n await util.promisify(zip.extract)(null, dest);\n await util.promisify(zip.close)();\n Logger.debug(`Unzipped ${filePath} to ${dest}`);\n res();\n });\n } catch (err) {\n rej(err);\n }\n });\n}\n\nexport function useTmpDirectory(): Promise<[string, () => void]> {\n return new Promise<[string, () => void]>((res, rej) => {\n tmp.dir({ unsafeCleanup: true }, (err, path, clear) => {\n if (err) {\n return rej(err);\n }\n Logger.debug(`Created the temporary directory: ${path}`);\n if (import.meta.env?.VITEST) {\n return res([path, () => {}]);\n }\n const callback = () => {\n // clear function doesn't work well?\n // clear();\n fs.rmSync(path, { force: true, recursive: true });\n };\n registerExitHandler(\n `Removing the temporary directory: ${path}`,\n callback,\n );\n res([path, callback]);\n });\n });\n}\n\nexport function touchTmpFile(path: string): () => void {\n fs.mkdirSync(upath.dirname(path), { recursive: true });\n // Create file if not exist\n fs.closeSync(fs.openSync(path, 'a'));\n Logger.debug(`Created the temporary file: ${path}`);\n const callback = () => {\n fs.rmSync(path, { force: true, recursive: true });\n };\n registerExitHandler(`Removing the temporary file: ${path}`, callback);\n return callback;\n}\n\nexport function pathEquals(path1: string, path2: string): boolean {\n return upath.relative(path1, path2) === '';\n}\n\nexport function pathContains(parentPath: string, childPath: string): boolean {\n const rel = upath.relative(parentPath, childPath);\n return rel !== '' && !rel.startsWith('..');\n}\n\nexport function isValidUri(str: string): boolean {\n return /^(https?|file|data):/i.test(str);\n}\n\nfunction cachedFn<T>(fn: () => T): () => T {\n let cache: T | null = null;\n return (): T => cache ?? (cache = fn());\n}\n\nexport const isInContainer = cachedFn(function isInContainer() {\n return fs.existsSync('/opt/vivliostyle-cli/.vs-cli-version');\n});\n\nexport const isRunningOnWSL = cachedFn(function isRunningOnWSL() {\n // Detection method based on microsoft/WSL#4071\n return (\n fs.existsSync('/proc/version') &&\n fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n );\n});\n\nexport async function openEpub(epubPath: string, tmpDir: string) {\n await inflateZip(epubPath, tmpDir);\n Logger.debug(`Created the temporary EPUB directory: ${tmpDir}`);\n const deleteEpub = () => {\n fs.rmSync(tmpDir, { force: true, recursive: true });\n };\n registerExitHandler(\n `Removing the temporary EPUB directory: ${tmpDir}`,\n deleteEpub,\n );\n return deleteEpub;\n}\n\nexport function getDefaultEpubOpfPath(epubDir: string) {\n const containerXmlPath = upath.join(epubDir, 'META-INF/container.xml');\n const xmlParser = new XMLParser({\n ignoreAttributes: false,\n });\n const { container } = xmlParser.parse(\n fs.readFileSync(containerXmlPath, 'utf8'),\n );\n const rootfile = [container.rootfiles.rootfile].flat()[0]; // Only supports a default rendition\n const epubOpfPath = upath.join(epubDir, rootfile['@_full-path']);\n return epubOpfPath;\n}\n\nexport function getEpubRootDir(epubOpfPath: string) {\n function traverse(dir: string) {\n const files = fs.readdirSync(dir);\n if (\n files.includes('META-INF') &&\n pathEquals(epubOpfPath, getDefaultEpubOpfPath(dir))\n ) {\n return dir;\n }\n const next = upath.dirname(dir);\n if (pathEquals(dir, next)) {\n return;\n }\n return traverse(next);\n }\n return traverse(upath.dirname(epubOpfPath));\n}\n\nconst getAjvValidatorFunction =\n <T extends Schema>(schema: T, refSchemas?: Schema | Schema[]) =>\n (obj: unknown): obj is T => {\n const ajv = new Ajv({ strict: false });\n // @ts-expect-error: Invalid type\n const addFormats = formatsPlugin as AjvPlugin<unknown>;\n addFormats(ajv);\n if (refSchemas) {\n ajv.addSchema(refSchemas);\n }\n const validate = ajv.compile(schema);\n const valid = validate(obj);\n if (!valid) {\n throw validate.errors?.[0] || new Error();\n }\n return true;\n };\n\nexport const assertPubManifestSchema =\n getAjvValidatorFunction<PublicationManifest>(\n publicationSchema as unknown as PublicationManifest,\n publicationSchemas,\n );\n\nexport function parseJsonc(rawJsonc: string): JSONValue {\n const ast = parse(rawJsonc, {\n mode: 'jsonc',\n ranges: false,\n tokens: false,\n });\n return evaluate(ast);\n}\n\nexport function prettifySchemaError(\n rawJsonc: string,\n issues: BaseIssue<unknown>[],\n) {\n const parsed = parse(rawJsonc, {\n mode: 'jsonc',\n ranges: false,\n tokens: false,\n });\n\n // Traverse to the deepest issue\n function traverse(issues: BaseIssue<unknown>[], depth: number) {\n return issues.flatMap((issue): [BaseIssue<unknown>[], number][] => {\n const p = issue.path?.length || 0;\n if (!issue.issues) {\n return [[[issue], depth + p]];\n }\n return traverse(issue.issues, depth + p).map(([i, d]) => [\n [issue, ...i],\n d,\n ]);\n });\n }\n const all = traverse(issues, 0);\n const maxDepth = Math.max(...all.map(([, d]) => d));\n const issuesTraversed = all.find(([, d]) => d === maxDepth)![0];\n\n let jsonValue = parsed.body as JsonValueNode;\n for (const p of issuesTraversed.flatMap((v) => v.path ?? [])) {\n let childValue: JsonValueNode | undefined;\n if (p.type === 'object' && jsonValue.type === 'Object') {\n childValue = jsonValue.members.find(\n (m) =>\n (m.name.type === 'Identifier' && m.name.name === p.key) ||\n (m.name.type === 'String' && m.name.value === p.key),\n )?.value;\n }\n if (p.type === 'array' && jsonValue.type === 'Array') {\n childValue = jsonValue.elements[p.key]?.value;\n }\n if (childValue) {\n jsonValue = childValue;\n } else {\n break;\n }\n }\n\n let message = `${red(issuesTraversed.at(-1)!.message)}`;\n if (jsonValue) {\n message += `\\n${codeFrameColumns(rawJsonc, jsonValue.loc, {\n highlightCode: true,\n })}`;\n }\n return message;\n}\n\nexport function writeFileIfChanged(filePath: string, content: Buffer) {\n if (!fs.existsSync(filePath) || !fs.readFileSync(filePath).equals(content)) {\n fs.mkdirSync(upath.dirname(filePath), { recursive: true });\n fs.writeFileSync(filePath, content);\n }\n}\n\nlet cachedLocale: string | undefined;\nexport async function getOsLocale(): Promise<string> {\n if (import.meta.env?.VITEST) {\n return process.env.TEST_LOCALE || 'en';\n }\n // It uses the same implementation as os-locale, but prioritizes the OS language settings on Windows and macOS.\n if (cachedLocale) {\n return cachedLocale;\n }\n let locale: string | undefined;\n if (process.platform === 'win32') {\n const { stdout } = await exec('wmic', ['os', 'get', 'locale']);\n const lcidCode = Number.parseInt(stdout.replace('Locale', ''), 16);\n locale = lcid.from(lcidCode);\n }\n if (process.platform === 'darwin') {\n const results = await Promise.all([\n exec('defaults', ['read', '-globalDomain', 'AppleLocale']).then(\n ({ stdout }) => stdout,\n ),\n exec('locale', ['-a']).then(({ stdout }) => stdout),\n ]);\n if (results[1].includes(results[0])) {\n locale = results[0];\n }\n }\n if (locale) {\n locale = locale.replace(/_/, '-');\n } else {\n locale = await osLocale();\n }\n\n const langs = Object.keys(languages);\n locale = langs.includes(locale)\n ? locale\n : langs.includes(locale.split('-')[0])\n ? locale.split('-')[0]\n : 'en';\n return (cachedLocale = locale.replace(/_/, '-'));\n}\n\nexport function toTitleCase<T = unknown>(input: T): T {\n if (typeof input !== 'string') {\n return input;\n }\n return titleCase(\n input.replace(/[\\W_]/g, ' ').replace(/\\s+/g, ' ').trim(),\n ) as T;\n}\n\nexport function debounce<T extends (...args: any[]) => unknown>(\n func: T,\n wait: number,\n options: { leading?: boolean; trailing?: boolean } = {},\n): (...args: Parameters<T>) => void {\n const leading = options.leading ?? false;\n const trailing = options.trailing ?? !leading;\n let timer: NodeJS.Timeout | null = null;\n let pending = false;\n\n const invoke = (...args: Parameters<T>) => {\n pending = false;\n func(...args);\n };\n\n return (...args: Parameters<T>) => {\n pending = true;\n\n if (timer) {\n clearTimeout(timer);\n }\n\n const callNow = leading && !timer;\n\n timer = setTimeout(() => {\n const shouldCall = trailing && pending && !(leading && callNow);\n timer = null;\n if (shouldCall) {\n invoke(...args);\n } else {\n pending = false;\n }\n }, wait);\n\n if (callNow) {\n invoke(...args);\n }\n };\n}\n\nexport const getCacheDir = cachedFn(function getCacheDir() {\n let osCacheDir: string;\n if (process.platform === 'linux') {\n osCacheDir =\n process.env.XDG_CACHE_HOME || upath.join(os.homedir(), '.cache');\n } else if (process.platform === 'darwin') {\n osCacheDir = upath.join(os.homedir(), 'Library', 'Caches');\n } else if (process.platform === 'win32') {\n osCacheDir =\n process.env.LOCALAPPDATA || upath.join(os.homedir(), 'AppData', 'Local');\n } else {\n throw new Error(`Unsupported platform: ${process.platform}`);\n }\n return upath.join(osCacheDir, 'vivliostyle');\n});\n\n// Detects the browser platform, similar to detectBrowserPlatform in @puppeteer/browsers\n// Included here to avoid adding @puppeteer/browsers as a dependency\nexport const detectBrowserPlatform = cachedFn(function detectBrowserPlatform():\n | BrowserPlatform\n | undefined {\n const platform = process.platform;\n const arch = process.arch;\n switch (platform) {\n case 'darwin':\n return arch === 'arm64'\n ? ('mac_arm' as BrowserPlatform)\n : ('mac' as BrowserPlatform);\n case 'linux':\n return arch === 'arm64'\n ? ('linux_arm' as BrowserPlatform)\n : ('linux' as BrowserPlatform);\n case 'win32':\n return arch === 'x64' ||\n // Windows 11 for ARM supports x64 emulation\n (arch === 'arm64' && isWindows11(os.release()))\n ? ('win64' as BrowserPlatform)\n : ('win32' as BrowserPlatform);\n default:\n return undefined;\n }\n});\n\nfunction isWindows11(version: string): boolean {\n const parts = version.split('.');\n if (parts.length > 2) {\n const major = parseInt(parts[0] as string, 10);\n const minor = parseInt(parts[1] as string, 10);\n const patch = parseInt(parts[2] as string, 10);\n return (\n major > 10 ||\n (major === 10 && minor > 0) ||\n (major === 10 && minor === 0 && patch >= 22000)\n );\n }\n return false;\n}\n\nexport const getDefaultBrowserTag = (browserType: BrowserType) => {\n if (import.meta.env?.VITEST) {\n return '100.0';\n }\n const platform = detectBrowserPlatform();\n return platform && DEFAULT_BROWSER_VERSIONS[browserType][platform];\n};\n\nexport type PackageManager = 'npm' | 'yarn' | 'pnpm';\n\n// License for `whichPm`\n// The MIT License (MIT)\n// Copyright (c) 2017-2022 Zoltan Kochan <z@kochan.io>\n// https://github.com/zkochan/packages/tree/main/which-pm-runs\nexport function whichPm(): PackageManager {\n if (!process.env.npm_config_user_agent) {\n return 'npm';\n }\n\n const pmSpec = process.env.npm_config_user_agent.split(' ')[0];\n const separatorPos = pmSpec.lastIndexOf('/');\n const name = pmSpec.substring(0, separatorPos);\n\n return name as PackageManager;\n}\n","import debug from 'debug';\nimport { Console } from 'node:console';\nimport type { Readable, Writable } from 'node:stream';\nimport type { WriteStream } from 'node:tty';\nimport yoctoSpinner, { type Spinner } from 'yocto-spinner';\nimport { blueBright, greenBright, redBright, yellowBright } from 'yoctocolors';\nimport { isInContainer, registerExitHandler } from './util.js';\n\nexport const isUnicodeSupported =\n process.platform !== 'win32' || Boolean(process.env.WT_SESSION);\n\nexport const randomBookSymbol = ['📕', '📗', '📘', '📙'][\n Math.floor(Math.random() * 4)\n];\n\nexport const spinnerFrames = isUnicodeSupported\n ? ['▁▁╱ ', '▁║▁ ', '╲▁▁ ', '▁▁▁ ', '▁▁▁ ', '▁▁▁ ']\n : ['- ', '\\\\ ', '| ', '/ '];\n\nexport const spinnerInterval = 80;\n\nconst infoSymbol = blueBright('INFO');\nconst successSymbol = greenBright('SUCCESS');\nconst warnSymbol = yellowBright('WARN');\nconst errorSymbol = redBright('ERROR');\n\nexport interface LoggerInterface {\n info(message: string): void;\n warn(message: string): void;\n error(message: string): void;\n}\n\nexport class Logger {\n /**\n * 0: silent 1: info 2: verbose 3: debug\n */\n static #logLevel: 0 | 1 | 2 | 3 = 0;\n static #loggerInstance: Logger | undefined;\n static #nonBlockingLogPrinted = false;\n static #customLogger: LoggerInterface | undefined;\n static #logPrefix: string | undefined;\n static #stdin: Readable = process.stdin;\n static #stdout: Writable = process.stdout;\n static #stderr: Writable = process.stderr;\n static #signal: AbortSignal | undefined;\n\n static debug = debug('vs-cli');\n\n static get #console() {\n if (this.#customLogger) {\n return {\n ...this.#customLogger,\n log: () => {\n /* NOOP */\n },\n };\n }\n return new Console({\n stdout: this.#stdout,\n stderr: this.#stderr,\n });\n }\n\n static get #spinner() {\n return this.#loggerInstance && this.#loggerInstance.#_spinner;\n }\n\n static get stdin() {\n return this.#stdin;\n }\n\n static get stdout() {\n return this.#stdout;\n }\n\n static get stderr() {\n return this.#stderr;\n }\n\n static get signal() {\n return this.#signal;\n }\n\n static get isInteractive() {\n return Boolean(\n !this.#customLogger &&\n (this.#stderr as WriteStream).isTTY &&\n process.env.TERM !== 'dumb' &&\n !('CI' in process.env) &&\n !import.meta.env?.VITEST &&\n !debug.enabled('vs-cli') &&\n // Prevent stream output in docker container so that not to spawn process\n !isInContainer(),\n );\n }\n\n static startLogging(text: string) {\n if (this.#logLevel === 0) {\n return;\n }\n if (!this.isInteractive) {\n this.logInfo(text);\n return;\n }\n if (this.#loggerInstance) {\n this.#loggerInstance.#_spinner.text = text;\n return this.#loggerInstance;\n }\n this.#loggerInstance = new Logger(this.#stderr);\n this.#loggerInstance.#start(text);\n return this.#loggerInstance;\n }\n\n static suspendLogging(text: string) {\n if (this.#logLevel === 0) {\n return;\n }\n if (!this.#spinner || !this.isInteractive) {\n this.logInfo(text);\n return;\n }\n const currentMsg = this.#spinner?.text;\n this.logUpdate(currentMsg);\n this.#spinner.stop(`${infoSymbol} ${text}\\n`);\n return {\n [Symbol.dispose]() {\n if (Logger.isInteractive) {\n Logger.#console.log('');\n Logger.#spinner?.start(currentMsg);\n Logger.#nonBlockingLogPrinted = true;\n }\n },\n };\n }\n\n static log(...messages: any[]) {\n if (this.#logLevel < 1) {\n return;\n }\n Logger.#console.log(...messages);\n }\n\n static logUpdate(...messages: any[]) {\n if (!this.#spinner || !this.isInteractive) {\n this.logInfo(...messages);\n return;\n }\n this.#spinner.stop(\n this.#nonBlockingLogPrinted\n ? undefined\n : `${infoSymbol} ${this.#spinner.text}`,\n );\n this.#spinner.start(messages.join(' '));\n this.#nonBlockingLogPrinted = false;\n }\n\n static getMessage(message: string, symbol?: string) {\n return !this.#customLogger && symbol ? `${symbol} ${message}` : message;\n }\n\n static #nonBlockingLog(\n logMethod: 'warn' | 'error' | 'info',\n message: string,\n ) {\n if (!this.#spinner || !this.isInteractive) {\n if (this.#logPrefix) {\n message = `${this.#logPrefix} ${message}`;\n }\n this.#logLevel >= 3\n ? this.debug(message)\n : this.#console[logMethod](message);\n return;\n }\n this.logUpdate(this.#spinner.text);\n this.#nonBlockingLogPrinted = true;\n this.#spinner.stop(message);\n this.#spinner.start();\n }\n\n static logSuccess(...messages: any[]) {\n if (this.#logLevel < 1) {\n return;\n }\n this.#nonBlockingLog(\n 'info',\n this.getMessage(messages.join(' '), successSymbol),\n );\n }\n\n static logError(...messages: any[]) {\n if (this.#logLevel < 1) {\n return;\n }\n this.#nonBlockingLog(\n 'error',\n this.getMessage(messages.join(' '), errorSymbol),\n );\n }\n\n static logWarn(...messages: any[]) {\n if (this.#logLevel < 1) {\n return;\n }\n this.#nonBlockingLog(\n 'warn',\n this.getMessage(messages.join(' '), warnSymbol),\n );\n }\n\n static logInfo(...messages: any[]) {\n if (this.#logLevel < 1) {\n return;\n }\n this.#nonBlockingLog(\n 'info',\n this.getMessage(messages.join(' '), infoSymbol),\n );\n }\n\n static logVerbose(...messages: any[]) {\n if (this.#logLevel < 2) {\n return;\n }\n this.#nonBlockingLog('info', this.getMessage(messages.join(' ')));\n }\n\n static setLogOptions({\n logLevel,\n logger,\n stdin,\n stdout,\n stderr,\n signal,\n }: {\n logLevel?: 'silent' | 'info' | 'verbose' | 'debug';\n logger?: LoggerInterface;\n stdin?: Readable;\n stdout?: Writable;\n stderr?: Writable;\n signal?: AbortSignal;\n }) {\n if (logLevel) {\n this.#logLevel = (\n {\n silent: 0,\n info: 1,\n verbose: 2,\n debug: 3,\n } as const\n )[logLevel];\n if (this.#logLevel >= 3) {\n debug.enable('vs-cli');\n }\n }\n if (logger) {\n this.#customLogger = logger;\n }\n if (stdin) {\n this.#stdin = stdin;\n }\n if (stdout) {\n this.#stdout = stdout;\n }\n if (stderr) {\n this.#stderr = stderr;\n }\n if (signal) {\n this.#signal = signal;\n }\n }\n\n static setLogPrefix(prefix: string) {\n this.#logPrefix = prefix;\n }\n\n #_spinner: Spinner;\n #_disposeSpinnerExitHandler: (() => void) | undefined;\n\n constructor(stream: Writable) {\n this.#_spinner = yoctoSpinner({\n spinner: {\n frames: spinnerFrames,\n interval: spinnerInterval,\n },\n color: 'gray',\n stream,\n });\n return this;\n }\n\n #start(text: string) {\n this.#_spinner.start(text);\n this.#_disposeSpinnerExitHandler = registerExitHandler(\n 'Stopping spinner',\n () => {\n this.#_spinner.stop();\n },\n );\n }\n\n [Symbol.dispose]() {\n this.#_disposeSpinnerExitHandler?.();\n this.#_spinner.stop(\n Logger.#nonBlockingLogPrinted\n ? undefined\n : `${infoSymbol} ${this.#_spinner.text}`,\n );\n Logger.#loggerInstance = undefined;\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/bcp.schema.json\",\n \"title\": \"BCP47 Language tag\",\n \"type\": \"string\",\n \"pattern\": \"^((?:(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?:([A-Za-z]{2,3}(-(?:[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?:[A-Za-z]{4}))?(-(?:[A-Za-z]{2}|[0-9]{3}))?(-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?:[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?:x(-[A-Za-z0-9]{1,8})+))?)|(?:x(-[A-Za-z0-9]{1,8})+))$\"\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/context.schema.json\",\n \"title\": \"Publication Contexts\",\n \"type\": \"array\",\n \"items\": [\n {\n \"const\": \"https://schema.org\"\n },\n {\n \"const\": \"https://www.w3.org/ns/pub-context\"\n }\n ],\n \"additionalItems\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"language\": {\n \"$ref\": \"bcp.schema.json\"\n },\n \"direction\": false\n },\n \"required\": [\"language\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"direction\": {\n \"type\": \"string\",\n \"enum\": [\"ltr\", \"rtl\"]\n },\n \"language\": false\n },\n \"required\": [\"direction\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"language\": {\n \"$ref\": \"bcp.schema.json\"\n },\n \"direction\": {\n \"type\": \"string\",\n \"enum\": [\"ltr\", \"rtl\"]\n }\n },\n \"required\": [\"language\", \"direction\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"language\": false,\n \"direction\": false\n }\n }\n ]\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/contributor-object.schema.json\",\n \"title\": \"Contributor Object\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"$ref\": \"localizable.schema.json\"\n },\n \"id\": {\n \"$ref\": \"url.schema.json\"\n },\n \"type\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\"Person\", \"Organization\"],\n \"default\": \"Person\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"contains\": {\n \"enum\": [\"Person\", \"Organization\"]\n }\n }\n ]\n },\n \"url\": {\n \"$ref\": \"url.schema.json\"\n },\n \"identifier\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"name\"]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/contributor.schema.json\",\n \"title\": \"Contributor\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"contributor-object.schema.json\"\n }\n ]\n }\n },\n {\n \"$ref\": \"contributor-object.schema.json\"\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/date.schema.json\",\n \"title\": \"Dates\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/duration.schema.json\",\n \"title\": \"Duration\",\n \"type\": \"string\",\n \"pattern\": \"^P(?!$)((\\\\d+Y)|(\\\\d+\\\\.\\\\d+Y$))?((\\\\d+M)|(\\\\d+\\\\.\\\\d+M$))?((\\\\d+W)|(\\\\d+\\\\.\\\\d+W$))?((\\\\d+D)|(\\\\d+\\\\.\\\\d+D$))?(T(?=\\\\d)((\\\\d+H)|(\\\\d+\\\\.\\\\d+H$))?((\\\\d+M)|(\\\\d+\\\\.\\\\d+M$))?(\\\\d+(\\\\.\\\\d+)?S)?)??$\"\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/item-lists.schema.json\",\n \"title\": \"Lists of ItemList\",\n \"oneOf\": [\n {\n \"$ref\": \"ItemList.schema.json\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"ItemList.schema.json\"\n }\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/ItemList.schema.json\",\n \"title\": \"schema.org ItemList object\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"const\": \"ItemList\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"contains\": {\n \"const\": \"ItemList\"\n }\n }\n ]\n },\n \"itemListElement\": {\n \"type\": [\"array\"],\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"type\", \"itemListElement\"]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/language.schema.json\",\n \"title\": \"Languages\",\n \"oneOf\": [\n {\n \"$ref\": \"bcp.schema.json\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"bcp.schema.json\"\n }\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/link.schema.json\",\n \"title\": \"Publication Links\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"const\": \"LinkedResource\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"contains\": {\n \"const\": \"LinkedResource\"\n }\n }\n ]\n },\n \"url\": {\n \"$ref\": \"url.schema.json\"\n },\n \"encodingFormat\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"$ref\": \"localizable.schema.json\"\n },\n \"description\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"localizable-object.schema.json\"\n }\n ]\n },\n \"rel\": {\n \"type\": [\"string\", \"array\"],\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"integrity\": {\n \"type\": \"string\"\n },\n \"duration\": {\n \"$ref\": \"duration.schema.json\"\n },\n \"alternate\": {\n \"$ref\": \"resource.categorization.schema.json\"\n }\n },\n \"required\": [\"url\"]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/localizable-object.schema.json\",\n \"title\": \"Localizable String Object\",\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\"\n },\n \"language\": {\n \"$ref\": \"bcp.schema.json\"\n }\n },\n \"required\": [\"value\"]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/localizable.schema.json\",\n \"title\": \"Localizable String or Object\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"$ref\": \"localizable-object.schema.json\"\n }\n ]\n }\n },\n {\n \"$ref\": \"localizable-object.schema.json\"\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/resource.categorization.schema.json\",\n \"title\": \"Resource Categorization\",\n \"oneOf\": [\n {\n \"oneOf\": [\n {\n \"$ref\": \"url.schema.json\"\n },\n {\n \"$ref\": \"link.schema.json\"\n }\n ]\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"url.schema.json\"\n },\n {\n \"$ref\": \"link.schema.json\"\n }\n ]\n },\n \"uniqueItems\": true\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/strings.schema.json\",\n \"title\": \"Unique strings\",\n \"type\": [\"string\", \"array\"],\n \"items\": {\n \"type\": \"string\"\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/url.schema.json\",\n \"title\": \"URL\",\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/module/urls.schema.json\",\n \"title\": \"URLs\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n }\n }\n ]\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.w3.org/ns/pub-schema/manifest/publication.schema.json\",\n \"title\": \"Publication Manifest\",\n \"type\": \"object\",\n \"properties\": {\n \"@context\": {\n \"$ref\": \"module/context.schema.json\"\n },\n \"type\": {\n \"type\": [\"string\", \"array\"],\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"conformsTo\": {\n \"oneOf\": [\n {\n \"$ref\": \"module/url.schema.json\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"module/url.schema.json\"\n }\n }\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"abridged\": {\n \"type\": \"boolean\"\n },\n \"accessMode\": {\n \"$ref\": \"module/strings.schema.json\"\n },\n \"accessModeSufficient\": {\n \"$ref\": \"module/item-lists.schema.json\"\n },\n \"accessibilityFeature\": {\n \"$ref\": \"module/strings.schema.json\"\n },\n \"accessibilityHazard\": {\n \"$ref\": \"module/strings.schema.json\"\n },\n \"accessibilitySummary\": {\n \"$ref\": \"module/localizable.schema.json\"\n },\n \"artist\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"author\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"colorist\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"contributor\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"creator\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"editor\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"illustrator\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"inker\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"letterer\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"penciler\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"publisher\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"readBy\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"translator\": {\n \"$ref\": \"module/contributor.schema.json\"\n },\n \"url\": {\n \"$ref\": \"module/urls.schema.json\"\n },\n \"duration\": {\n \"$ref\": \"module/duration.schema.json\"\n },\n \"inLanguage\": {\n \"$ref\": \"module/language.schema.json\"\n },\n \"dateModified\": {\n \"$ref\": \"module/date.schema.json\"\n },\n \"datePublished\": {\n \"$ref\": \"module/date.schema.json\"\n },\n \"name\": {\n \"$ref\": \"module/localizable.schema.json\"\n },\n \"readingOrder\": {\n \"$ref\": \"module/resource.categorization.schema.json\"\n },\n \"resources\": {\n \"$ref\": \"module/resource.categorization.schema.json\"\n },\n \"links\": {\n \"$ref\": \"module/resource.categorization.schema.json\"\n },\n \"readingProgression\": {\n \"type\": \"string\",\n \"enum\": [\"ltr\", \"rtl\"],\n \"default\": \"ltr\"\n }\n },\n \"required\": [\"@context\", \"conformsTo\"]\n}\n","import bcpSchema from '../../schemas/pub-manifest/module/bcp.schema.json' with { type: 'json' };\nimport contextSchema from '../../schemas/pub-manifest/module/context.schema.json' with { type: 'json' };\nimport contributorObjectSchema from '../../schemas/pub-manifest/module/contributor-object.schema.json' with { type: 'json' };\nimport contributorSchema from '../../schemas/pub-manifest/module/contributor.schema.json' with { type: 'json' };\nimport dateSchema from '../../schemas/pub-manifest/module/date.schema.json' with { type: 'json' };\nimport durationSchema from '../../schemas/pub-manifest/module/duration.schema.json' with { type: 'json' };\nimport itemListsSchema from '../../schemas/pub-manifest/module/item-lists.schema.json' with { type: 'json' };\nimport itemListSchema from '../../schemas/pub-manifest/module/ItemList.schema.json' with { type: 'json' };\nimport languageSchema from '../../schemas/pub-manifest/module/language.schema.json' with { type: 'json' };\nimport linkSchema from '../../schemas/pub-manifest/module/link.schema.json' with { type: 'json' };\nimport localizableObjectSchema from '../../schemas/pub-manifest/module/localizable-object.schema.json' with { type: 'json' };\nimport localizableSchema from '../../schemas/pub-manifest/module/localizable.schema.json' with { type: 'json' };\nimport resourceCategorizationSchema from '../../schemas/pub-manifest/module/resource.categorization.schema.json' with { type: 'json' };\nimport stringsSchema from '../../schemas/pub-manifest/module/strings.schema.json' with { type: 'json' };\nimport urlSchema from '../../schemas/pub-manifest/module/url.schema.json' with { type: 'json' };\nimport urlsSchema from '../../schemas/pub-manifest/module/urls.schema.json' with { type: 'json' };\nimport publicationSchema from '../../schemas/pub-manifest/publication.schema.json' with { type: 'json' };\n\nexport const publicationSchemas = [\n bcpSchema,\n contextSchema,\n contributorObjectSchema,\n contributorSchema,\n dateSchema,\n durationSchema,\n itemListsSchema,\n itemListSchema,\n languageSchema,\n linkSchema,\n localizableObjectSchema,\n localizableSchema,\n resourceCategorizationSchema,\n stringsSchema,\n urlSchema,\n urlsSchema,\n publicationSchema,\n] as const;\n\nexport { publicationSchema };\n","import { copy } from 'fs-extra/esm';\nimport fs from 'node:fs';\nimport picomatch, { type PicomatchOptions } from 'picomatch';\nimport { glob, type GlobOptions } from 'tinyglobby';\nimport upath from 'upath';\nimport type { ResolvedTaskConfig } from '../config/resolve.js';\nimport { Logger } from '../logger.js';\nimport { pathContains, pathEquals } from '../util.js';\n\nexport class GlobMatcher {\n readonly matcherConfig: (Pick<PicomatchOptions, 'dot' | 'ignore' | 'cwd'> & {\n patterns: string[];\n })[];\n\n #_matchers: picomatch.Matcher[];\n\n constructor(matcherConfig: typeof GlobMatcher.prototype.matcherConfig) {\n this.matcherConfig = matcherConfig;\n this.#_matchers = matcherConfig.map(({ patterns, ...options }) =>\n picomatch(patterns, options),\n );\n }\n\n match(test: string): boolean {\n return this.#_matchers.some((matcher) => matcher(test));\n }\n\n async glob(\n globOptions: Pick<GlobOptions, 'followSymbolicLinks'> = {},\n ): Promise<Set<string>> {\n return new Set(\n (\n await Promise.all(\n this.matcherConfig.map((config) =>\n glob({ ...config, ...globOptions }),\n ),\n )\n ).flat(),\n );\n }\n}\n\nfunction getIgnoreThemeDirectoryPatterns({\n themesDir,\n cwd,\n}: Pick<ResolvedTaskConfig, 'themesDir'> & {\n cwd: string;\n}): string[] {\n return pathContains(cwd, themesDir)\n ? [\n `${upath.relative(cwd, themesDir)}/node_modules/*/example`,\n `${upath.relative(cwd, themesDir)}/node_modules/*/*/example`,\n ]\n : [];\n}\n\nfunction getIgnoreAssetPatterns({\n outputs,\n entries,\n cwd,\n}: Pick<ResolvedTaskConfig, 'outputs' | 'entries'> & {\n cwd: string;\n}): string[] {\n return [\n ...outputs.flatMap(({ format, path: p }) =>\n !pathContains(cwd, p)\n ? []\n : format === 'webpub'\n ? upath.join(upath.relative(cwd, p), '**')\n : upath.relative(cwd, p),\n ),\n ...entries.flatMap(({ template }) => {\n return template?.type === 'file' && pathContains(cwd, template.pathname)\n ? upath.relative(cwd, template.pathname)\n : [];\n }),\n ];\n}\n\nexport function getWebPubResourceMatcher({\n outputs,\n themesDir,\n entries,\n cwd,\n manifestPath,\n copyAsset: { fileExtensions },\n}: Pick<\n ResolvedTaskConfig,\n 'outputs' | 'themesDir' | 'entries' | 'copyAsset'\n> & {\n cwd: string;\n manifestPath: string;\n}) {\n return new GlobMatcher([\n {\n patterns: [\n `**/${upath.relative(cwd, manifestPath)}`,\n '**/*.{html,htm,xhtml,xht}',\n `**/*.{${fileExtensions.join(',')}}`,\n ],\n ignore: [\n ...getIgnoreAssetPatterns({\n cwd,\n outputs,\n entries,\n }),\n ...getIgnoreThemeDirectoryPatterns({\n cwd,\n themesDir,\n }),\n // Ignore node_modules in the root directory\n 'node_modules/**',\n // only include dotfiles starting with `.vs-`\n '**/.!(vs-*)/**',\n ],\n dot: true,\n cwd,\n },\n ]);\n}\n\nexport function getAssetMatcher({\n copyAsset: { fileExtensions, includes, excludes },\n outputs,\n themesDir,\n entries,\n cwd,\n ignore = [],\n}: Pick<\n ResolvedTaskConfig,\n 'copyAsset' | 'outputs' | 'themesDir' | 'entries'\n> & {\n cwd: string;\n ignore?: string[];\n}) {\n const ignorePatterns = [\n ...ignore,\n ...excludes,\n ...getIgnoreAssetPatterns({ outputs, entries, cwd }),\n ];\n return new GlobMatcher([\n // Step 1: Glob files with an extension in `fileExtension`\n // Ignore files in node_modules directory, theme example files and files matched `excludes`\n {\n patterns: fileExtensions.map((ext) => `**/*.${ext}`),\n ignore: [\n '**/node_modules/**',\n ...ignorePatterns,\n ...getIgnoreThemeDirectoryPatterns({ themesDir, cwd }),\n ],\n cwd,\n },\n // Step 2: Glob files matched with `includes`\n // Ignore only files matched `excludes`\n {\n patterns: includes,\n ignore: ignorePatterns,\n cwd,\n },\n ]);\n}\n\nexport async function copyAssets({\n entryContextDir,\n workspaceDir,\n copyAsset,\n outputs,\n themesDir,\n entries,\n}: ResolvedTaskConfig): Promise<void> {\n if (pathEquals(entryContextDir, workspaceDir)) {\n return;\n }\n const relWorkspaceDir = upath.relative(entryContextDir, workspaceDir);\n const assets = await getAssetMatcher({\n copyAsset,\n cwd: entryContextDir,\n outputs,\n themesDir,\n entries,\n ignore: [\n // don't copy workspace itself\n ...(relWorkspaceDir ? [upath.join(relWorkspaceDir, '**')] : []),\n ],\n }).glob({ followSymbolicLinks: true });\n Logger.debug('assets', assets);\n for (const asset of assets) {\n const target = upath.join(workspaceDir, asset);\n fs.mkdirSync(upath.dirname(target), { recursive: true });\n await copy(upath.resolve(entryContextDir, asset), target);\n }\n}\n"],"mappings":"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","names":["parse","redBright","redBright","isInContainer","isRunningOnWSL","parse","issues","v","getCacheDir","detectBrowserPlatform","fs","upath","cwd","upath","fs"]}
@@ -7,14 +7,14 @@ import {
7
7
  vsStaticServePlugin,
8
8
  vsViewerPlugin,
9
9
  warnDeprecatedConfig
10
- } from "./chunk-BR2V7MHE.js";
10
+ } from "./chunk-YNX6D2I6.js";
11
11
  import {
12
12
  Logger,
13
13
  setupConfigFromFlags
14
- } from "./chunk-T2VWLU2I.js";
14
+ } from "./chunk-RILZCPJE.js";
15
15
  import {
16
16
  VivliostyleInlineConfig
17
- } from "./chunk-CKXFRCPH.js";
17
+ } from "./chunk-3QOSSWIX.js";
18
18
 
19
19
  // src/vite-adapter.ts
20
20
  import * as v from "valibot";
@@ -53,4 +53,4 @@ async function createVitePlugin(inlineConfig = {}) {
53
53
  export {
54
54
  createVitePlugin
55
55
  };
56
- //# sourceMappingURL=chunk-62AC6XGJ.js.map
56
+ //# sourceMappingURL=chunk-WIGLU3EK.js.map