@vivliostyle/cli 10.3.0 → 10.3.1

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/README.md +7 -4
  2. package/dist/{chunk-3QOSSWIX.js → chunk-7GIJVX4M.js} +15 -5
  3. package/dist/chunk-7GIJVX4M.js.map +1 -0
  4. package/dist/{chunk-YNX6D2I6.js → chunk-C4HQHRXQ.js} +23 -8
  5. package/dist/chunk-C4HQHRXQ.js.map +1 -0
  6. package/dist/{chunk-RILZCPJE.js → chunk-DBK27BAR.js} +19 -12
  7. package/dist/chunk-DBK27BAR.js.map +1 -0
  8. package/dist/{chunk-ALY3QX7K.js → chunk-ERDN47XG.js} +10 -17
  9. package/dist/{chunk-ALY3QX7K.js.map → chunk-ERDN47XG.js.map} +1 -1
  10. package/dist/{chunk-NVNEYZ3J.js → chunk-LGOHUEEQ.js} +5 -5
  11. package/dist/{chunk-WIGLU3EK.js → chunk-LWMSAGHL.js} +4 -4
  12. package/dist/{chunk-RBKPG6VU.js → chunk-MU7JCDMK.js} +2 -2
  13. package/dist/{chunk-ZEBXHUJX.js → chunk-OAFXM4ES.js} +4 -4
  14. package/dist/chunk-OAFXM4ES.js.map +1 -0
  15. package/dist/{chunk-QLK3XMQI.js → chunk-PYPAYBFL.js} +170 -112
  16. package/dist/chunk-PYPAYBFL.js.map +1 -0
  17. package/dist/cli.js +1 -1
  18. package/dist/commands/build.js +13 -7
  19. package/dist/commands/build.js.map +1 -1
  20. package/dist/commands/create.js +11 -5
  21. package/dist/commands/create.js.map +1 -1
  22. package/dist/commands/init.js +4 -4
  23. package/dist/commands/preview.js +13 -7
  24. package/dist/commands/preview.js.map +1 -1
  25. package/dist/config/schema.d.ts +827 -810
  26. package/dist/config/schema.js +2 -2
  27. package/dist/index.js +9 -9
  28. package/dist/vite-adapter.js +5 -5
  29. package/package.json +3 -3
  30. package/dist/chunk-3QOSSWIX.js.map +0 -1
  31. package/dist/chunk-QLK3XMQI.js.map +0 -1
  32. package/dist/chunk-RILZCPJE.js.map +0 -1
  33. package/dist/chunk-YNX6D2I6.js.map +0 -1
  34. package/dist/chunk-ZEBXHUJX.js.map +0 -1
  35. /package/dist/{chunk-NVNEYZ3J.js.map → chunk-LGOHUEEQ.js.map} +0 -0
  36. /package/dist/{chunk-WIGLU3EK.js.map → chunk-LWMSAGHL.js.map} +0 -0
  37. /package/dist/{chunk-RBKPG6VU.js.map → chunk-MU7JCDMK.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  VivliostyleInlineConfig
3
- } from "./chunk-3QOSSWIX.js";
3
+ } from "./chunk-7GIJVX4M.js";
4
4
  import {
5
5
  DEFAULT_BROWSER_VERSIONS,
6
6
  EMPTY_DATA_URI,
7
7
  languages
8
- } from "./chunk-ZEBXHUJX.js";
8
+ } from "./chunk-OAFXM4ES.js";
9
9
 
10
10
  // src/commands/cli-flags.ts
11
11
  import "commander";
@@ -884,10 +884,11 @@ async function exec(command, args = [], options = {}) {
884
884
  return subprocess;
885
885
  }
886
886
  var beforeExitHandlers = [];
887
+ var exitHandlersRun = false;
887
888
  var registerExitHandler = (debugMessage, handler) => {
888
889
  const callback = () => {
889
890
  Logger.debug(debugMessage);
890
- handler();
891
+ return handler();
891
892
  };
892
893
  beforeExitHandlers.push(callback);
893
894
  return () => {
@@ -897,18 +898,24 @@ var registerExitHandler = (debugMessage, handler) => {
897
898
  }
898
899
  };
899
900
  };
900
- function runExitHandlers() {
901
+ async function runExitHandlers() {
902
+ if (exitHandlersRun) return;
903
+ exitHandlersRun = true;
901
904
  while (beforeExitHandlers.length) {
902
905
  try {
903
- beforeExitHandlers.shift()?.();
906
+ await beforeExitHandlers.shift()?.();
904
907
  } catch (e) {
905
908
  }
906
909
  }
907
910
  }
908
- var exitSignals = ["exit", "SIGINT", "SIGTERM"];
911
+ var exitSignals = process.platform === "win32" ? ["exit"] : ["exit", "SIGINT", "SIGTERM"];
909
912
  exitSignals.forEach((sig) => {
910
- process.once(sig, (signal, exitCode) => {
911
- runExitHandlers();
913
+ process.once(sig, async (signal, exitCode) => {
914
+ if (sig !== "exit") {
915
+ await runExitHandlers();
916
+ } else {
917
+ void runExitHandlers();
918
+ }
912
919
  if (process.exitCode === void 0) {
913
920
  process.exitCode = exitCode !== void 0 ? 128 + exitCode : Number(signal);
914
921
  }
@@ -922,9 +929,9 @@ if (process.platform === "win32") {
922
929
  input: process.stdin,
923
930
  output: process.stdout
924
931
  });
925
- rl.on("SIGINT", () => {
926
- runExitHandlers();
927
- process.exit(1);
932
+ rl.on("SIGINT", async () => {
933
+ await runExitHandlers();
934
+ process.exit(130);
928
935
  });
929
936
  registerExitHandler("Closing readline interface", () => {
930
937
  rl.close();
@@ -1474,4 +1481,4 @@ export {
1474
1481
  getAssetMatcher,
1475
1482
  copyAssets
1476
1483
  };
1477
- //# sourceMappingURL=chunk-RILZCPJE.js.map
1484
+ //# sourceMappingURL=chunk-DBK27BAR.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 | Promise<void>)[] = [];\nlet exitHandlersRun = false;\n\nexport const registerExitHandler = (\n debugMessage: string,\n handler: () => void | Promise<void>,\n) => {\n const callback = () => {\n Logger.debug(debugMessage);\n return 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 async function runExitHandlers() {\n if (exitHandlersRun) return;\n exitHandlersRun = true;\n while (beforeExitHandlers.length) {\n try {\n await beforeExitHandlers.shift()?.();\n } catch (e) {\n // NOOP\n }\n }\n}\n\n// Windows does not support SIGINT/SIGTERM signals natively, so only register 'exit'\n// On other platforms, register all signals\nconst exitSignals =\n process.platform === 'win32' ? ['exit'] : ['exit', 'SIGINT', 'SIGTERM'];\n\nexitSignals.forEach((sig) => {\n process.once(sig, async (signal?: string | number, exitCode?: number) => {\n // For signals (not 'exit'), wait for handlers to complete\n if (sig !== 'exit') {\n await runExitHandlers();\n } else {\n // For 'exit' event, run handlers synchronously (non-blocking)\n // as async operations cannot be awaited in 'exit' handler\n void runExitHandlers();\n }\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', async () => {\n await runExitHandlers();\n // Exit code 130 = 128 + SIGINT (2)\n process.exit(130);\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"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveViteConfig
3
- } from "./chunk-RBKPG6VU.js";
3
+ } from "./chunk-MU7JCDMK.js";
4
4
  import {
5
5
  buildWebPublication,
6
6
  cleanupWorkspace,
@@ -16,7 +16,7 @@ import {
16
16
  prepareThemeDirectory,
17
17
  resolveTaskConfig,
18
18
  warnDeprecatedConfig
19
- } from "./chunk-YNX6D2I6.js";
19
+ } from "./chunk-C4HQHRXQ.js";
20
20
  import {
21
21
  importNodeModule
22
22
  } from "./chunk-ECEGM36O.js";
@@ -32,12 +32,12 @@ import {
32
32
  randomBookSymbol,
33
33
  runExitHandlers,
34
34
  setupConfigFromFlags
35
- } from "./chunk-RILZCPJE.js";
35
+ } from "./chunk-DBK27BAR.js";
36
36
  import {
37
37
  CONTAINER_LOCAL_HOSTNAME,
38
38
  CONTAINER_ROOT_DIR,
39
39
  coreVersion
40
- } from "./chunk-ZEBXHUJX.js";
40
+ } from "./chunk-OAFXM4ES.js";
41
41
  import {
42
42
  __callDispose,
43
43
  __using
@@ -388,20 +388,19 @@ function processFormXObjects(resources, colorMap, warnUnmapped, warnedColors, mu
388
388
  if (!xobj || !xobj.isStream()) {
389
389
  return;
390
390
  }
391
- const resolved = xobj.resolve();
392
- const objNum = resolved.asIndirect();
391
+ const objNum = xobj.asIndirect();
393
392
  if (objNum && processed.has(objNum)) {
394
393
  return;
395
394
  }
396
395
  if (objNum) {
397
396
  processed.add(objNum);
398
397
  }
399
- const subtype = resolved.get("Subtype");
398
+ const subtype = xobj.get("Subtype");
400
399
  if (!subtype || subtype.toString() !== "/Form") {
401
400
  return;
402
401
  }
403
- processStream(resolved, colorMap, warnUnmapped, warnedColors, mupdf);
404
- const nestedResources = resolved.get("Resources");
402
+ processStream(xobj, colorMap, warnUnmapped, warnedColors, mupdf);
403
+ const nestedResources = xobj.get("Resources");
405
404
  if (nestedResources && nestedResources.isDictionary()) {
406
405
  processFormXObjects(
407
406
  nestedResources,
@@ -419,13 +418,7 @@ function processContents(contents, colorMap, warnUnmapped, warnedColors, mupdf)
419
418
  for (let i = 0; i < contents.length; i++) {
420
419
  const streamObj = contents.get(i);
421
420
  if (streamObj && streamObj.isStream()) {
422
- processStream(
423
- streamObj.resolve(),
424
- colorMap,
425
- warnUnmapped,
426
- warnedColors,
427
- mupdf
428
- );
421
+ processStream(streamObj, colorMap, warnUnmapped, warnedColors, mupdf);
429
422
  }
430
423
  }
431
424
  } else if (contents.isStream()) {
@@ -1233,4 +1226,4 @@ async function build(inlineConfig, { containerForkMode = false } = {}) {
1233
1226
  export {
1234
1227
  build
1235
1228
  };
1236
- //# sourceMappingURL=chunk-ALY3QX7K.js.map
1229
+ //# sourceMappingURL=chunk-ERDN47XG.js.map