@vivliostyle/cli 9.0.1 → 9.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/{chunk-4Y2QIRBA.js → chunk-3WXABIMT.js} +7 -4
  2. package/dist/chunk-3WXABIMT.js.map +1 -0
  3. package/dist/{chunk-EX7EA34F.js → chunk-4IIM6RSG.js} +7 -0
  4. package/dist/chunk-4IIM6RSG.js.map +1 -0
  5. package/dist/{chunk-XRR6RKA6.js → chunk-FIAUNKIE.js} +7 -3
  6. package/dist/chunk-FIAUNKIE.js.map +1 -0
  7. package/dist/{chunk-WX6JHPSL.js → chunk-FXUEYQRY.js} +1 -0
  8. package/dist/chunk-FXUEYQRY.js.map +1 -0
  9. package/dist/{chunk-BIEQXUOY.js → chunk-I7BWSAN6.js} +1 -0
  10. package/dist/chunk-I7BWSAN6.js.map +1 -0
  11. package/dist/{chunk-QZWMJ4L2.js → chunk-JX7KVV6O.js} +11 -8
  12. package/dist/chunk-JX7KVV6O.js.map +1 -0
  13. package/dist/{chunk-PY4J4NG6.js → chunk-KSGAS7XH.js} +437 -1634
  14. package/dist/chunk-KSGAS7XH.js.map +1 -0
  15. package/dist/{chunk-FQMQ7BWY.js → chunk-MUCV2MI5.js} +7 -4
  16. package/dist/chunk-MUCV2MI5.js.map +1 -0
  17. package/dist/chunk-S2Q2FDUM.js +1138 -0
  18. package/dist/chunk-S2Q2FDUM.js.map +1 -0
  19. package/dist/{chunk-DMARNPN5.js → chunk-WFLNEE7C.js} +14 -0
  20. package/dist/chunk-WFLNEE7C.js.map +1 -0
  21. package/dist/{chunk-5AUWIYEK.js → chunk-WQC3S32F.js} +172 -35
  22. package/dist/chunk-WQC3S32F.js.map +1 -0
  23. package/dist/cli.js +3 -2
  24. package/dist/cli.js.map +1 -0
  25. package/dist/commands/build.js +9 -7
  26. package/dist/commands/build.js.map +1 -0
  27. package/dist/commands/init.js +6 -6
  28. package/dist/commands/init.js.map +1 -0
  29. package/dist/commands/preview.js +9 -7
  30. package/dist/commands/preview.js.map +1 -0
  31. package/dist/config/schema.d.ts +1650 -1650
  32. package/dist/config/schema.js +4 -2
  33. package/dist/config/schema.js.map +1 -0
  34. package/dist/index.js +12 -10
  35. package/dist/index.js.map +1 -0
  36. package/dist/node-modules.js +3 -2
  37. package/dist/node-modules.js.map +1 -0
  38. package/dist/vite-adapter.js +8 -6
  39. package/dist/vite-adapter.js.map +1 -0
  40. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/build.ts","../src/container.ts","../src/output/pdf.ts","../src/output/pdf-postprocess.ts"],"sourcesContent":["import { pathToFileURL } from 'node:url';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { PreviewServer, build as viteBuild } from 'vite';\nimport { cyan } from 'yoctocolors';\nimport { setupConfigFromFlags } from '../commands/cli-flags.js';\nimport { loadVivliostyleConfig, warnDeprecatedConfig } from '../config/load.js';\nimport { mergeInlineConfig } from '../config/merge.js';\nimport { isWebPubConfig, resolveTaskConfig } from '../config/resolve.js';\nimport { 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 {\n cleanupWorkspace,\n compile,\n copyAssets,\n prepareThemeDirectory,\n} from '../processor/compile.js';\nimport { createViteServer } from '../server.js';\nimport { cwd, isInContainer, runExitHandlers } from '../util.js';\n\nexport async function build(inlineConfig: ParsedVivliostyleInlineConfig) {\n Logger.setLogLevel(inlineConfig.logLevel);\n Logger.setCustomLogger(inlineConfig.logger);\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 const 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 (!isInContainer()) {\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 server = await createViteServer({\n config,\n viteConfig,\n inlineConfig,\n mode: 'build',\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 (!isInContainer() && 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 && !isInContainer()) {\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 (!isInContainer()) {\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 { execFile } from 'node:child_process';\nimport process from 'node:process';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { promisify } from 'node:util';\nimport upath from 'upath';\nimport { PdfOutput, ResolvedTaskConfig } from './config/resolve.js';\nimport { 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 { isValidUri, pathEquals } from './util.js';\n\nconst execFileAsync = promisify(execFile);\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 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 versionCmd = await execFileAsync('docker', [\n 'version',\n '--format',\n '{{.Server.Version}}',\n ]);\n const version = versionCmd.stdout.trim();\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 { execa } = await importNodeModule('execa');\n const proc = execa('docker', args, {\n stdio: 'inherit',\n });\n await proc;\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 } 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 { Page } from 'playwright-core';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { cyan, gray, green, red } from 'yoctocolors';\nimport { getFullBrowserName, launchPreview } from '../browser.js';\nimport {\n ManuscriptEntry,\n PdfOutput,\n ResolvedTaskConfig,\n} from '../config/resolve.js';\nimport { Meta, Payload, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { getViewerFullUrl } from '../server.js';\nimport { pathEquals } from '../util.js';\nimport { 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.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 (300 > 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 browserName = getFullBrowserName(config.browser.type);\n const browserVersion = `${browserName}/${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.waitForLoadState('networkidle');\n await page.waitForFunction(() => !!window.coreViewer);\n\n await page.emulateMedia({ media: 'print' });\n await page.waitForFunction(\n /* v8 ignore next */\n () => window.coreViewer.readyState === 'complete',\n undefined,\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\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 const pdf = await page.pdf({\n margin: {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n },\n printBackground: true,\n preferCSSPageSize: true,\n tagged: true,\n // timeout: remainTime,\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 });\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","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 { PdfOutput, ResolvedTaskConfig } from '../config/resolve.js';\nimport { coreVersion } from '../const.js';\nimport {\n collectVolumeArgs,\n runContainer,\n toContainerPath,\n} from '../container.js';\nimport type { Meta, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { importNodeModule } from '../node-modules.js';\nimport { isInContainer } from '../util.js';\n\nexport type SaveOption = Pick<PdfOutput, 'preflight' | 'preflightOption'> &\n Pick<ResolvedTaskConfig, 'image'>;\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 static async load(pdf: Buffer): 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 private constructor(private document: PDFDocument) {}\n\n async save(\n output: string,\n { preflight, preflightOption, image }: SaveOption,\n ) {\n const input = preflight\n ? upath.join(os.tmpdir(), `vivliostyle-cli-${uuid()}.pdf`)\n : output;\n\n const pdf = await this.document.save();\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 }\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"],"mappings":"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","names":["pathToFileURL","terminalLink","upath","cyan","_","fs","URL","upath","upath","upath","document","_","build","_stack","_error","_hasError","items","upath","entry","URL","page","fs","_stack","_","cyan","upath","terminalLink","pathToFileURL","_error","_hasError"]}
package/dist/cli.js CHANGED
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  cliVersion,
4
4
  coreVersion
5
- } from "./chunk-EX7EA34F.js";
6
- import "./chunk-BIEQXUOY.js";
5
+ } from "./chunk-4IIM6RSG.js";
6
+ import "./chunk-I7BWSAN6.js";
7
7
 
8
8
  // src/cli.ts
9
9
  import { Command } from "commander";
@@ -17,3 +17,4 @@ program.name("vivliostyle").version(version, "-v, --version").command("init", "c
17
17
  }).command("preview", "launch preview server", {
18
18
  executableFile: "commands/preview"
19
19
  }).parse(process.argv);
20
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport { cliVersion, coreVersion } from './const.js';\n\nconst version = `cli: ${cliVersion}\ncore: ${coreVersion}`;\n\nconst program = new Command();\nprogram\n .name('vivliostyle')\n .version(version, '-v, --version')\n .command('init', 'create vivliostyle config', {\n executableFile: 'commands/init',\n })\n .command('build', 'build and create PDF file', {\n executableFile: 'commands/build',\n })\n .command('preview', 'launch preview server', {\n executableFile: 'commands/preview',\n })\n .parse(process.argv);\n"],"mappings":";;;;;;;;AAEA,SAAS,eAAe;AAGxB,IAAM,UAAU,QAAQ,UAAU;AAAA,QAC1B,WAAW;AAEnB,IAAM,UAAU,IAAI,QAAQ;AAC5B,QACG,KAAK,aAAa,EAClB,QAAQ,SAAS,eAAe,EAChC,QAAQ,QAAQ,6BAA6B;AAAA,EAC5C,gBAAgB;AAClB,CAAC,EACA,QAAQ,SAAS,6BAA6B;AAAA,EAC7C,gBAAgB;AAClB,CAAC,EACA,QAAQ,WAAW,yBAAyB;AAAA,EAC3C,gBAAgB;AAClB,CAAC,EACA,MAAM,QAAQ,IAAI;","names":[]}
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  build
3
- } from "../chunk-5AUWIYEK.js";
4
- import "../chunk-4Y2QIRBA.js";
3
+ } from "../chunk-WQC3S32F.js";
4
+ import "../chunk-3WXABIMT.js";
5
+ import "../chunk-KSGAS7XH.js";
6
+ import "../chunk-FXUEYQRY.js";
5
7
  import {
6
8
  Logger,
7
9
  gracefulError,
8
10
  isInContainer,
9
11
  parseFlagsToInlineConfig
10
- } from "../chunk-PY4J4NG6.js";
11
- import "../chunk-EX7EA34F.js";
12
- import "../chunk-WX6JHPSL.js";
13
- import "../chunk-DMARNPN5.js";
14
- import "../chunk-BIEQXUOY.js";
12
+ } from "../chunk-S2Q2FDUM.js";
13
+ import "../chunk-WFLNEE7C.js";
14
+ import "../chunk-4IIM6RSG.js";
15
+ import "../chunk-I7BWSAN6.js";
15
16
 
16
17
  // src/commands/build.ts
17
18
  import process from "node:process";
@@ -169,3 +170,4 @@ try {
169
170
  gracefulError(err);
170
171
  }
171
172
  }
173
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/build.ts","../../src/commands/build.parser.ts"],"sourcesContent":["import process from 'node:process';\nimport { build } from '../core/build.js';\nimport { Logger } from '../logger.js';\nimport { gracefulError, isInContainer } from '../util.js';\nimport { setupBuildParserProgram } from './build.parser.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\n\ntry {\n let inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupBuildParserProgram,\n );\n if (isInContainer()) {\n inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS!);\n Logger.debug('bypassedPdfBuilderOption %O', inlineConfig);\n }\n await build(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n","import { Command, Option } from 'commander';\n\nexport function setupBuildParserProgram(): Command {\n // Provide an order-sensitive command parser\n // ex: \"-o foo -o bar -f baz\"\n // → [{path: \"foo\"}, {path:\"bar\", format: \"baz\"}]\n // ex: \"-f foo -o bar -o baz -f piyo\"\n // → [{path: \"bar\", format: \"foo\"}, {path: \"baz\", format: \"piyo\"}]\n const targets: {\n path?: string;\n format?: string;\n }[] = [];\n const outputOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'path' in targets[targets.length - 1]) {\n targets.push({ path: value });\n } else {\n targets[targets.length - 1].path = value;\n }\n return [...(previous || []), value];\n };\n const formatOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'format' in targets[targets.length - 1]) {\n targets.push({ format: value });\n } else {\n targets[targets.length - 1].format = value;\n }\n return [...(previous || []), value];\n };\n\n const program = new Command();\n program\n .name('vivliostyle build')\n .description('build and create PDF file')\n .arguments('[input]')\n .option(\n '-c, --config <config_file>',\n 'path to vivliostyle.config.js [vivliostyle.config.js]',\n )\n .option(\n '-o, --output <path>',\n `specify output file name or directory [<title>.pdf]\nThis option can be specified multiple, then each -o options can be supplied one -f option.\nex: -o output1 -f webpub -o output2.pdf -f pdf`,\n outputOptionProcessor,\n )\n .option(\n '-f, --format <format>',\n `specify output format corresponding output target\nIf an extension is specified on -o option, this field will be inferenced automatically.`,\n formatOptionProcessor,\n )\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option(\n '-p, --press-ready',\n `make generated PDF compatible with press ready PDF/X-1a [false]\nThis option is equivalent with \"--preflight press-ready\"`,\n )\n .option(\n '-t, --timeout <seconds>',\n `timeout limit for waiting Vivliostyle process [120]`,\n validateTimeoutFlag,\n )\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(\n new Option(\n '--render-mode <mode>',\n 'if docker is set, Vivliostyle try to render PDF on Docker container [local]',\n ).choices(['local', 'docker']),\n )\n .addOption(\n new Option(\n '--preflight <mode>',\n 'apply the process to generate PDF for printing',\n ).choices(['press-ready', 'press-ready-local']),\n )\n .option(\n '--preflight-option <options...>',\n `options for preflight process (ex: gray-scale, enforce-outline)\nPlease refer the document of press-ready for further information.\nhttps://github.com/vibranthq/press-ready`,\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .addOption(\n new Option('--no-sandbox', `launch chrome without sandbox`).hideHelp(),\n )\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option('--image <image>', 'specify a docker image to render')\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n // Hide --browser option for now. There's no choice other than Chromium.\n // .addOption(\n // new commander.Option(\n // '--browser <browser>',\n // `Specify a browser type to launch Vivliostyle viewer [chromium]\n // Currently, Firefox and Webkit support preview command only!`,\n // ).choices(['chromium', 'firefox', 'webkit']),\n // )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n // TODO: Remove it in the next major version up\n .addOption(new Option('--executable-chromium <path>').hideHelp())\n .addOption(new Option('--verbose').hideHelp())\n .addOption(new Option('--http').hideHelp())\n .action((_arg, option) => {\n let invalid = targets.find((it) => !('path' in it));\n if (invalid) {\n // -f is an optional option but -o is required one\n throw new Error(\n `Couldn't find the output option corresponding --format ${invalid.format} option. Please check the command options.`,\n );\n }\n option.output = targets;\n });\n\n return program;\n}\n\nfunction validateTimeoutFlag(val: string) {\n return Number.isFinite(+val) && +val > 0 ? +val * 1000 : undefined;\n}\n"],"mappings":"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","names":[]}
@@ -1,14 +1,13 @@
1
1
  import {
2
2
  init
3
- } from "../chunk-XRR6RKA6.js";
3
+ } from "../chunk-FIAUNKIE.js";
4
4
  import {
5
5
  gracefulError,
6
6
  parseFlagsToInlineConfig
7
- } from "../chunk-PY4J4NG6.js";
8
- import "../chunk-EX7EA34F.js";
9
- import "../chunk-WX6JHPSL.js";
10
- import "../chunk-DMARNPN5.js";
11
- import "../chunk-BIEQXUOY.js";
7
+ } from "../chunk-S2Q2FDUM.js";
8
+ import "../chunk-WFLNEE7C.js";
9
+ import "../chunk-4IIM6RSG.js";
10
+ import "../chunk-I7BWSAN6.js";
12
11
 
13
12
  // src/commands/init.parser.ts
14
13
  import { Command, Option } from "commander";
@@ -35,3 +34,4 @@ try {
35
34
  gracefulError(err);
36
35
  }
37
36
  }
37
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/init.parser.ts","../../src/commands/init.ts"],"sourcesContent":["import { Command, Option } from 'commander';\n\nexport function setupInitParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle init')\n .description('create vivliostyle config file')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .option('-s, --size <size>', 'paper size')\n .option('-T, --theme <theme>', 'theme')\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n );\n return program;\n}\n","import { init } from '../core/init.js';\nimport { gracefulError } from '../util.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\nimport { setupInitParserProgram } from './init.parser.js';\n\ntry {\n const inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupInitParserProgram,\n );\n await init(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAEzB,SAAS,yBAAkC;AAChD,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,kBAAkB,EACvB,YAAY,gCAAgC,EAC5C,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,sBAAsB,YAAY,EACzC,OAAO,uBAAuB,OAAO,EACrC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB;AACF,SAAO;AACT;;;AChBA,IAAI;AACF,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,EACF;AACA,QAAM,KAAK,YAAY;AACzB,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  preview
3
- } from "../chunk-QZWMJ4L2.js";
4
- import "../chunk-4Y2QIRBA.js";
3
+ } from "../chunk-JX7KVV6O.js";
4
+ import "../chunk-3WXABIMT.js";
5
+ import "../chunk-KSGAS7XH.js";
6
+ import "../chunk-FXUEYQRY.js";
5
7
  import {
6
8
  gracefulError,
7
9
  parseFlagsToInlineConfig
8
- } from "../chunk-PY4J4NG6.js";
9
- import "../chunk-EX7EA34F.js";
10
- import "../chunk-WX6JHPSL.js";
11
- import "../chunk-DMARNPN5.js";
12
- import "../chunk-BIEQXUOY.js";
10
+ } from "../chunk-S2Q2FDUM.js";
11
+ import "../chunk-WFLNEE7C.js";
12
+ import "../chunk-4IIM6RSG.js";
13
+ import "../chunk-I7BWSAN6.js";
13
14
 
14
15
  // src/commands/preview.parser.ts
15
16
  import { Command, Option } from "commander";
@@ -101,3 +102,4 @@ try {
101
102
  gracefulError(err);
102
103
  }
103
104
  }
105
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/preview.parser.ts","../../src/commands/preview.ts"],"sourcesContent":["import { Command, Option } from 'commander';\n\nexport function setupPreviewParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle preview')\n .description('launch preview server')\n .arguments('[input]')\n .option('-c, --config <config_file>', 'path to vivliostyle.config.js')\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option('-q, --quick', 'quick loading with rough page count')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .addOption(\n new Option('--no-sandbox', `launch chrome without sandbox`).hideHelp(),\n )\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n .addOption(\n new Option(\n '--browser <browser>',\n `EXPERIMENTAL SUPPORT: Specify a browser type to launch Vivliostyle viewer [chromium]\nCurrently, Firefox and Webkit support preview command only!`,\n ).choices(['chromium', 'firefox', 'webkit']),\n )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-open-viewer', 'do not open viewer')\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--no-enable-viewer-start-page', 'disable viewer start page')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n // TODO: Remove it in the next major version up\n .addOption(new Option('--executable-chromium <path>').hideHelp())\n .addOption(new Option('--verbose').hideHelp())\n .addOption(new Option('--http').hideHelp());\n return program;\n}\n","import { preview } from '../core/preview.js';\nimport { gracefulError } from '../util.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\nimport { setupPreviewParserProgram } from './preview.parser.js';\n\ntry {\n const inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupPreviewParserProgram,\n );\n await preview(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAEzB,SAAS,4BAAqC;AACnD,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,qBAAqB,EAC1B,YAAY,uBAAuB,EACnC,UAAU,SAAS,EACnB,OAAO,8BAA8B,+BAA+B,EACpE,OAAO,0BAA0B,4BAA4B,EAC7D;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA,EAGF,EACC,OAAO,oBAAoB,kBAAkB,EAC7C;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,wBAAwB,mCAAmC,EAClE,OAAO,kCAAkC,6BAA6B,EACtE,OAAO,oBAAoB,4BAA4B,EACvD,OAAO,eAAe,qCAAqC,EAC3D,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,QAAQ,CAAC,OAAO,KAAK,CAAC;AAAA,EAC1B,EACC,UAAU,IAAI,OAAO,aAAa,4BAA4B,EAAE,SAAS,CAAC,EAC1E;AAAA,IACC,IAAI,OAAO,gBAAgB,+BAA+B,EAAE,SAAS;AAAA,EACvE,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA;AAAA,EAEF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA;AAAA,IAEF,EAAE,QAAQ,CAAC,YAAY,WAAW,QAAQ,CAAC;AAAA,EAC7C,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,OAAO,iBAAiB,wCAAwC,EAChE,OAAO,iBAAiB,oCAAoC,QAAQ,EACpE,OAAO,oBAAoB,oBAAoB,EAC/C,OAAO,4BAA4B,6BAA6B,EAChE,OAAO,iCAAiC,2BAA2B,EACnE,OAAO,6BAA6B,uBAAuB,EAC3D;AAAA,IACC;AAAA,IACA;AAAA,EACF,EAEC,UAAU,IAAI,OAAO,8BAA8B,EAAE,SAAS,CAAC,EAC/D,UAAU,IAAI,OAAO,WAAW,EAAE,SAAS,CAAC,EAC5C,UAAU,IAAI,OAAO,QAAQ,EAAE,SAAS,CAAC;AAC5C,SAAO;AACT;;;AClHA,IAAI;AACF,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,EACF;AACA,QAAM,QAAQ,YAAY;AAC5B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}