@vivliostyle/cli 9.9.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +74 -30
  2. package/dist/{chunk-QWX5MAON.js → chunk-2M2KXPDN.js} +16 -17
  3. package/dist/chunk-2M2KXPDN.js.map +1 -0
  4. package/dist/{chunk-OZ4XTSAH.js → chunk-5DB6XVJN.js} +2 -2
  5. package/dist/chunk-5DB6XVJN.js.map +1 -0
  6. package/dist/{chunk-3O3N2V7D.js → chunk-5K3NGLBV.js} +6 -7
  7. package/dist/chunk-5K3NGLBV.js.map +1 -0
  8. package/dist/{chunk-UYKCTF6F.js → chunk-IIKRNYAM.js} +445 -228
  9. package/dist/chunk-IIKRNYAM.js.map +1 -0
  10. package/dist/{chunk-G3GROLBN.js → chunk-MQYXBSRJ.js} +397 -88
  11. package/dist/chunk-MQYXBSRJ.js.map +1 -0
  12. package/dist/chunk-RPMMYPTR.js +1076 -0
  13. package/dist/chunk-RPMMYPTR.js.map +1 -0
  14. package/dist/{chunk-WELNNHOB.js → chunk-YN3JNBNT.js} +415 -384
  15. package/dist/chunk-YN3JNBNT.js.map +1 -0
  16. package/dist/{chunk-6UU7DEUR.js → chunk-YVNDJXMI.js} +32 -33
  17. package/dist/chunk-YVNDJXMI.js.map +1 -0
  18. package/dist/{chunk-FXUEYQRY.js → chunk-ZIK6DINS.js} +3 -3
  19. package/dist/chunk-ZIK6DINS.js.map +1 -0
  20. package/dist/chunk-ZKEIYNLT.js +331 -0
  21. package/dist/chunk-ZKEIYNLT.js.map +1 -0
  22. package/dist/cli.js +7 -8
  23. package/dist/cli.js.map +1 -1
  24. package/dist/commands/build.js +29 -17
  25. package/dist/commands/build.js.map +1 -1
  26. package/dist/commands/create.d.ts +2 -0
  27. package/dist/commands/create.js +64 -0
  28. package/dist/commands/create.js.map +1 -0
  29. package/dist/commands/init.js +23 -14
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/preview.js +26 -20
  32. package/dist/commands/preview.js.map +1 -1
  33. package/dist/config/schema.d.ts +7815 -4012
  34. package/dist/config/schema.js +16 -4
  35. package/dist/index.d.ts +46 -7
  36. package/dist/index.js +24 -16
  37. package/dist/index.js.map +1 -1
  38. package/dist/node-modules.d.ts +5 -5
  39. package/dist/node-modules.js +1 -1
  40. package/dist/vite-adapter.d.ts +1 -0
  41. package/dist/vite-adapter.js +6 -6
  42. package/package.json +37 -26
  43. package/dist/chunk-3O3N2V7D.js.map +0 -1
  44. package/dist/chunk-4IIM6RSG.js +0 -71
  45. package/dist/chunk-4IIM6RSG.js.map +0 -1
  46. package/dist/chunk-6KEOMYDZ.js +0 -89
  47. package/dist/chunk-6KEOMYDZ.js.map +0 -1
  48. package/dist/chunk-6UU7DEUR.js.map +0 -1
  49. package/dist/chunk-FXUEYQRY.js.map +0 -1
  50. package/dist/chunk-G3GROLBN.js.map +0 -1
  51. package/dist/chunk-OZ4XTSAH.js.map +0 -1
  52. package/dist/chunk-QWX5MAON.js.map +0 -1
  53. package/dist/chunk-UYKCTF6F.js.map +0 -1
  54. package/dist/chunk-WELNNHOB.js.map +0 -1
  55. package/types/playwright.d.ts +0 -49
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/create.ts","../src/create-template.ts","../src/interactive.ts","../src/npm.ts"],"sourcesContent":["import { downloadTemplate } from '@bluwy/giget-core';\nimport { copy } from 'fs-extra/esm';\nimport { isUtf8 } from 'node:buffer';\nimport fs from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport * as v from 'valibot';\nimport { cyan, dim, gray, green, yellow } from 'yoctocolors';\nimport {\n type ParsedVivliostyleInlineConfig,\n VivliostyleInlineConfigWithoutChecks,\n VivliostylePackageMetadata,\n} from '../config/schema.js';\nimport {\n cliVersion,\n coreVersion,\n DEFAULT_CONFIG_FILENAME,\n DEFAULT_PROJECT_AUTHOR,\n DEFAULT_PROJECT_TITLE,\n languages,\n TEMPLATE_DEFAULT_FILES,\n TEMPLATE_SETTINGS,\n} from '../const.js';\nimport { format, type TemplateVariable } from '../create-template.js';\nimport {\n askQuestion,\n interactiveLogInfo,\n interactiveLogLoading,\n interactiveLogOutro,\n interactiveLogWarn,\n} from '../interactive.js';\nimport { Logger } from '../logger.js';\nimport { importNodeModule } from '../node-modules.js';\nimport {\n createFetch,\n fetchPackageMetadata,\n listVivliostyleThemes,\n type PackageJson,\n} from '../npm.js';\nimport { GlobMatcher } from '../processor/asset.js';\nimport {\n cwd as defaultCwd,\n getDefaultBrowserTag,\n getOsLocale,\n type PackageManager,\n registerExitHandler,\n toTitleCase,\n whichPm,\n} from '../util.js';\n\ntype VivliostylePackageJson = Pick<PackageJson, 'name' | 'version'> & {\n vivliostyle?: VivliostylePackageMetadata;\n};\n\nexport async function create(inlineConfig: ParsedVivliostyleInlineConfig) {\n Logger.setLogOptions(inlineConfig);\n Logger.debug('create > inlineConfig %O', inlineConfig);\n\n const fetch = createFetch(inlineConfig);\n let {\n projectPath,\n cwd = defaultCwd,\n title,\n author,\n language,\n theme,\n template,\n createConfigFileOnly = false,\n } = inlineConfig;\n let extraTemplateVariables: Record<string, unknown> = {};\n let themePackage: VivliostylePackageJson | undefined;\n let installDependencies: boolean | undefined;\n let useLocalTemplate = false;\n\n if (template && !/^([\\w-.]+):/.test(template)) {\n const absTemplatePath = upath.resolve(cwd, template);\n useLocalTemplate =\n fs.existsSync(upath.resolve(cwd, template)) &&\n fs.statSync(upath.resolve(cwd, template)).isDirectory();\n if (useLocalTemplate) {\n template = absTemplatePath;\n interactiveLogInfo(\n `Using the specified local template directory\\n${dim(upath.relative(cwd, absTemplatePath) || '.')}`,\n );\n } else {\n interactiveLogWarn(\n `The specified theme ${green(template)} was not found as a local directory. Proceeding to fetch it from GitHub repository.`,\n );\n }\n }\n\n if (!projectPath) {\n ({ projectPath } = await askProjectPath());\n }\n const dist = upath.join(cwd, projectPath);\n if (createConfigFileOnly) {\n if (fs.existsSync(upath.join(dist, DEFAULT_CONFIG_FILENAME))) {\n throw new Error(`${DEFAULT_CONFIG_FILENAME} already exists. Aborting.`);\n }\n } else if (\n (projectPath === '.' &&\n fs.readdirSync(dist).filter((n) => !n.startsWith('.')).length > 0) ||\n (projectPath !== '.' && fs.existsSync(dist))\n ) {\n throw new Error(`Destination ${dist} is not empty.`);\n }\n\n if (!title) {\n ({ title } = createConfigFileOnly\n ? { title: DEFAULT_PROJECT_TITLE }\n : await askTitle({ projectPath }));\n }\n if (!author) {\n ({ author } = createConfigFileOnly\n ? { author: DEFAULT_PROJECT_AUTHOR }\n : await askAuthor());\n }\n if (!language) {\n ({ language } = createConfigFileOnly\n ? { language: await getOsLocale() }\n : await askLanguage());\n }\n\n if (!createConfigFileOnly) {\n let presetTemplate: (typeof TEMPLATE_SETTINGS)[number] | undefined;\n if (!template) {\n ({ presetTemplate } = await askPresetTemplate());\n if (presetTemplate) {\n template = presetTemplate.template;\n }\n }\n if (!theme) {\n ({ theme, themePackage } = await askTheme({\n presetTemplate,\n template,\n fetch,\n }));\n }\n if (!template) {\n ({ template, extraTemplateVariables } = await askThemeTemplate(\n themePackage?.vivliostyle,\n ));\n }\n ({ installDependencies } = await askInstallDependencies());\n }\n\n const browserType = 'chrome' as const;\n const browserTag = getDefaultBrowserTag(browserType);\n const explicitTemplateVariables = {\n ...extraTemplateVariables,\n projectPath,\n title,\n author,\n language,\n theme: (() => {\n if (!theme) {\n return;\n }\n const arr = theme.map((t) => (t.import ? t : t.specifier));\n return arr.length === 1 ? arr[0] : arr;\n })(),\n themePackage,\n template,\n cliVersion,\n coreVersion,\n browser: { type: browserType, tag: browserTag },\n } satisfies TemplateVariable;\n Logger.debug(\n 'create > explicitTemplateVariables %O',\n explicitTemplateVariables,\n );\n if (createConfigFileOnly) {\n setupConfigFile({\n projectPath,\n cwd,\n templateVariables: {\n ...inlineConfig,\n ...explicitTemplateVariables,\n },\n });\n } else {\n interactiveLogOutro('All configurations are set! Creating your project...');\n using _ = Logger.startLogging(\n useLocalTemplate ? 'Copying a local template' : 'Downloading a template',\n );\n await setupTemplate({\n projectPath,\n cwd,\n template: template!,\n templateVariables: {\n ...inlineConfig,\n ...explicitTemplateVariables,\n },\n useLocalTemplate,\n });\n if (installDependencies) {\n const pm = whichPm();\n using _ = Logger.suspendLogging(`Installing dependencies with ${pm}`);\n await performInstallDependencies({ projectPath, cwd, pm });\n }\n }\n\n const output = createConfigFileOnly\n ? upath.join(dist, DEFAULT_CONFIG_FILENAME)\n : dist;\n const relativeOutput = upath.relative(cwd, output) || '.';\n const formattedOutput = terminalLink(\n cyan(relativeOutput),\n pathToFileURL(output).href,\n { fallback: (text) => text },\n );\n if (createConfigFileOnly) {\n Logger.logSuccess(\n `Successfully created a config file at ${formattedOutput}`,\n );\n } else {\n caveat(`Successfully created a project at ${formattedOutput}`, {\n relativeOutput,\n installDependencies: Boolean(installDependencies),\n });\n }\n}\n\nasync function askProjectPath() {\n return await askQuestion({\n question: {\n projectPath: {\n type: 'text',\n message: 'Where should we create your project?',\n placeholder: 'Specify \".\" to create files in the current directory.',\n required: true,\n },\n },\n schema: v.required(\n v.pick(VivliostyleInlineConfigWithoutChecks, ['projectPath']),\n ),\n });\n}\n\nasync function askTitle({ projectPath }: { projectPath: string }) {\n return await askQuestion({\n question: {\n title: {\n type: 'text',\n message: \"What's the title of your publication?\",\n defaultValue: toTitleCase(projectPath) || DEFAULT_PROJECT_TITLE,\n placeholder: toTitleCase(projectPath) || DEFAULT_PROJECT_TITLE,\n },\n },\n schema: v.required(v.pick(VivliostyleInlineConfigWithoutChecks, ['title'])),\n });\n}\n\nasync function askAuthor() {\n return await askQuestion({\n question: {\n author: {\n type: 'text',\n message: \"What's the author name?\",\n defaultValue: DEFAULT_PROJECT_AUTHOR,\n placeholder: DEFAULT_PROJECT_AUTHOR,\n },\n },\n schema: v.required(\n v.pick(VivliostyleInlineConfigWithoutChecks, ['author']),\n ),\n });\n}\n\nasync function askLanguage() {\n const initialValue = await getOsLocale();\n return await askQuestion({\n question: {\n language: {\n type: 'autocomplete',\n message: \"What's the language?\",\n options: Object.entries(languages).map(([value, displayName]) => ({\n value,\n label: displayName,\n hint: value,\n })),\n initialValue,\n },\n },\n schema: v.required(\n v.pick(VivliostyleInlineConfigWithoutChecks, ['language']),\n ),\n });\n}\n\nexport const PRESET_TEMPLATE_NOT_USE = 'Use templates from the community theme';\n\nasync function askPresetTemplate(): Promise<{\n presetTemplate: (typeof TEMPLATE_SETTINGS)[number] | undefined;\n}> {\n const { presetTemplate } = await askQuestion({\n question: {\n presetTemplate: {\n type: 'select',\n message: \"What's the project template?\",\n options: [\n ...TEMPLATE_SETTINGS,\n {\n value: PRESET_TEMPLATE_NOT_USE,\n label: PRESET_TEMPLATE_NOT_USE,\n hint: 'If a theme includes a template, you can choose it in the next step.',\n },\n ],\n },\n },\n schema: v.object({\n presetTemplate: v.pipe(\n v.string(),\n v.transform((value) =>\n value === PRESET_TEMPLATE_NOT_USE\n ? undefined\n : TEMPLATE_SETTINGS.find((t) => t.value === value),\n ),\n ),\n }),\n });\n return { presetTemplate };\n}\n\nconst TRUNCATE_LENGTH = 60;\nconst truncateString = (str: string) => {\n const trimmed = str.replace(/\\s+/g, ' ');\n return trimmed.length > TRUNCATE_LENGTH\n ? trimmed.slice(0, TRUNCATE_LENGTH) + '…'\n : trimmed;\n};\n\nexport const THEME_ANSWER_NOT_USE = 'Not use Vivliostyle theme';\nexport const THEME_ANSWER_MANUAL = 'Install other themes from npm';\n\nasync function askTheme({\n template,\n presetTemplate,\n fetch,\n}: Pick<ParsedVivliostyleInlineConfig, 'template'> & {\n presetTemplate: (typeof TEMPLATE_SETTINGS)[number] | undefined;\n fetch: ReturnType<typeof createFetch>;\n}): Promise<\n Pick<ParsedVivliostyleInlineConfig, 'theme'> & {\n themePackage: VivliostylePackageJson | undefined;\n }\n> {\n const useCommunityThemes = !presetTemplate && !template;\n const themePackages = await interactiveLogLoading(\n 'Fetching a list of Vivliostyle themes...',\n async () => {\n let themes = (await listVivliostyleThemes({ fetch })).objects;\n if (useCommunityThemes) {\n // Show only community themes\n themes = themes.filter(\n (theme) => !theme.package.name.startsWith('@vivliostyle/'),\n );\n }\n themes.sort((a, b) => {\n // Prioritize packages in the @vivliostyle namespace\n const aIsOfficial = a.package.name.startsWith('@vivliostyle/') ? 1 : 0;\n const bIsOfficial = b.package.name.startsWith('@vivliostyle/') ? 1 : 0;\n return aIsOfficial ^ bIsOfficial\n ? bIsOfficial - aIsOfficial\n : b.downloads.monthly - a.downloads.monthly;\n });\n return themes.map((theme) => theme.package);\n },\n );\n\n let themePackage: VivliostylePackageJson | undefined;\n const fetchedPackages: Record<string, PackageJson> = {};\n const validateThemeMetadataSchema = v.customAsync<string>(async (value) => {\n if (value === THEME_ANSWER_NOT_USE || value === THEME_ANSWER_MANUAL) {\n return true;\n }\n if (typeof value !== 'string') {\n return false;\n }\n fetchedPackages[value] ??= await fetchPackageMetadata({\n fetch,\n packageName: value,\n version: 'latest',\n });\n const pkg = fetchedPackages[value];\n const ret = v.safeParse(\n v.object({\n name: v.string(),\n version: v.string(),\n vivliostyle: v.optional(VivliostylePackageMetadata),\n }),\n pkg,\n );\n if (ret.success) {\n themePackage = ret.output;\n }\n return ret.success;\n }, 'Invalid theme package. Please check the schema of the `vivliostyle` field.');\n\n let { theme } = await askQuestion({\n question: {\n theme: {\n type: 'autocomplete',\n message: \"What's the project theme?\",\n options: [\n ...(!useCommunityThemes\n ? [{ label: THEME_ANSWER_NOT_USE, value: THEME_ANSWER_NOT_USE }]\n : []),\n { label: THEME_ANSWER_MANUAL, value: THEME_ANSWER_MANUAL },\n ...themePackages.map((pkg) => ({\n label: pkg.name,\n value: pkg.name,\n hint: truncateString(pkg.description || ''),\n })),\n ],\n initialValue: themePackages[0].name,\n },\n },\n schema: v.objectAsync({ theme: validateThemeMetadataSchema }),\n validateProgressMessage: 'Fetching package metadata...',\n });\n\n if (theme === THEME_ANSWER_NOT_USE) {\n return { theme: undefined, themePackage: undefined };\n }\n\n if (theme === THEME_ANSWER_MANUAL) {\n theme = await askQuestion({\n question: {\n themeManualInput: {\n type: 'text',\n message: 'Input npm package name:',\n required: true,\n },\n },\n schema: v.objectAsync({\n themeManualInput: v.pipeAsync(\n v.string(),\n v.customAsync(async (packageName) => {\n if (typeof packageName !== 'string') {\n return false;\n }\n try {\n fetchedPackages[packageName] = await fetchPackageMetadata({\n fetch,\n packageName,\n version: 'latest',\n });\n return true;\n } catch (error) {\n return false;\n }\n }, 'Package not found'),\n validateThemeMetadataSchema,\n ),\n }),\n validateProgressMessage: 'Fetching package metadata...',\n }).then((ret) => ret.themeManualInput);\n }\n\n return {\n theme: [\n { specifier: themePackage ? `${theme}@^${themePackage.version}` : theme },\n ],\n themePackage,\n };\n}\n\nasync function askThemeTemplate(\n themeMetadata?: VivliostylePackageMetadata,\n): Promise<\n Required<Pick<ParsedVivliostyleInlineConfig, 'template'>> & {\n extraTemplateVariables: Record<string, unknown>;\n }\n> {\n const themeTemplate = themeMetadata?.template;\n const options = Object.entries(themeTemplate || {}).map(([value, tmpl]) => ({\n label: tmpl.name || value,\n value,\n hint: truncateString(tmpl.description || ''),\n }));\n if (!themeTemplate || options.length === 0) {\n interactiveLogWarn(\n 'The chosen theme does not set template settings. Applying the minimal template.',\n );\n return {\n template: TEMPLATE_SETTINGS.find((t) => t.value === 'minimal')!.template,\n extraTemplateVariables: {},\n };\n }\n\n const { usingTemplate } = await askQuestion({\n question: {\n usingTemplate: {\n type: 'autocomplete',\n message: 'Which template do you want to use?',\n options,\n },\n },\n schema: v.object({\n usingTemplate: v.pipe(\n v.string(),\n v.transform((input) => themeTemplate[input]),\n ),\n }),\n });\n\n let extraTemplateVariables: Record<string, unknown> = {};\n if (usingTemplate.prompt?.length) {\n extraTemplateVariables = await askQuestion({\n question: Object.fromEntries(\n usingTemplate.prompt.map((q) => [q.name, q]),\n ),\n });\n }\n return { template: usingTemplate.source, extraTemplateVariables };\n}\n\nasync function askInstallDependencies() {\n return await askQuestion({\n question: {\n installDependencies: {\n type: 'select',\n message:\n 'Should we install dependencies? (You can install them later.)',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n },\n },\n schema: v.object({\n installDependencies: v.boolean(),\n }),\n });\n}\n\nasync function setupTemplate({\n cwd,\n projectPath,\n template,\n templateVariables,\n useLocalTemplate,\n}: Required<\n Pick<ParsedVivliostyleInlineConfig, 'cwd' | 'projectPath' | 'template'>\n> & {\n templateVariables: Record<string, unknown>;\n useLocalTemplate?: boolean;\n}) {\n if (useLocalTemplate) {\n const matcher = new GlobMatcher([\n {\n patterns: ['**'],\n ignore: ['**/node_modules/**', '**/.git/**'],\n dot: true,\n cwd: template,\n },\n ]);\n const files = await matcher.glob({ followSymbolicLinks: true });\n Logger.debug('setupTemplate > files from local template %O', files);\n for (const file of files) {\n const targetPath = upath.join(cwd, projectPath, file);\n fs.mkdirSync(upath.dirname(targetPath), { recursive: true });\n await copy(upath.join(template, file), targetPath);\n }\n } else {\n // `downloadTemplate` deletes the destination directory for rollback purposes\n // when template download fails. To prevent this behavior from deleting\n // the current directory, create a temporary directory and copy the template\n // to its final location.\n // https://github.com/bluwy/giget-core/blob/2247658f4cc3240e8dc3819c782355fe4b535214/src/utils.js#L195\n const tmpDownloadDir = upath.join(\n cwd,\n projectPath,\n `.vs-template-${Date.now()}`,\n );\n Logger.debug('setupTemplate > tmpDownloadDir %s', tmpDownloadDir);\n const cleanupExitHandler = registerExitHandler(\n `Removing the temporary directory: ${tmpDownloadDir}`,\n () => {\n fs.rmSync(tmpDownloadDir, { recursive: true, force: true });\n },\n );\n\n await downloadTemplate(template, { dir: tmpDownloadDir });\n for (const entry of fs.readdirSync(tmpDownloadDir)) {\n fs.renameSync(\n upath.join(tmpDownloadDir, entry),\n upath.join(cwd, projectPath, entry),\n );\n }\n cleanupExitHandler()?.();\n }\n for (const [file, content] of Object.entries(TEMPLATE_DEFAULT_FILES)) {\n const targetPath = upath.join(cwd, projectPath, file);\n if (fs.existsSync(targetPath)) {\n continue;\n }\n fs.mkdirSync(upath.dirname(targetPath), { recursive: true });\n fs.writeFileSync(targetPath, content, 'utf8');\n }\n\n const replaceTemplateVariable = (dir: string) => {\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const entryPath = upath.join(dir, entry.name);\n if (entry.isDirectory()) {\n replaceTemplateVariable(entryPath);\n } else {\n const buf = fs.readFileSync(entryPath);\n if (!isUtf8(buf)) {\n continue;\n }\n fs.writeFileSync(\n entryPath,\n format(buf.toString(), templateVariables),\n 'utf8',\n );\n }\n }\n };\n replaceTemplateVariable(upath.join(cwd, projectPath));\n}\n\nfunction setupConfigFile({\n cwd,\n projectPath,\n templateVariables,\n}: Required<Pick<ParsedVivliostyleInlineConfig, 'cwd' | 'projectPath'>> & {\n templateVariables: Record<string, unknown>;\n}) {\n const targetPath = upath.join(cwd, projectPath, DEFAULT_CONFIG_FILENAME);\n const content = TEMPLATE_DEFAULT_FILES[DEFAULT_CONFIG_FILENAME];\n fs.mkdirSync(upath.dirname(targetPath), { recursive: true });\n fs.writeFileSync(targetPath, format(content, templateVariables), 'utf8');\n}\n\nasync function performInstallDependencies({\n pm,\n cwd,\n projectPath,\n}: Required<Pick<ParsedVivliostyleInlineConfig, 'cwd' | 'projectPath'>> & {\n pm: PackageManager;\n}) {\n const { execa } = await importNodeModule('execa');\n await execa(pm, ['install'], {\n cwd: upath.join(cwd, projectPath),\n stdio: 'inherit',\n });\n}\n\nfunction caveat(\n message: string,\n {\n relativeOutput,\n installDependencies,\n }: { relativeOutput: string; installDependencies: boolean },\n): void {\n const steps = [];\n if (relativeOutput !== '.') {\n steps.push(`Navigate to ${green(relativeOutput)}`);\n }\n if (!installDependencies) {\n steps.push(`${cyan('npm install')} to install dependencies`);\n }\n steps.push('Create and edit Markdown files');\n steps.push(\n `Modify the ${cyan('entry')} field in ${green('vivliostyle.config.js')}`,\n );\n steps.push(`${cyan('npm run preview')} to open a preview browser window`);\n steps.push(`${cyan('npm run build')} to generate the output file`);\n\n Logger.logSuccess(message);\n Logger.log(\n `\nNext steps:\n${steps.map((s, i) => gray(`${i + 1}. `) + s).join('\\n')}\n\nFor more information, visit ${terminalLink(yellow('https://docs.vivliostyle.org'), 'https://docs.vivliostyle.org', { fallback: (text) => text })}.\n\n🖋 Happy writing!`,\n );\n}\n","import { camelCase, capitalCase, kebabCase, snakeCase } from 'change-case';\nimport Handlebars from 'handlebars';\nimport { titleCase } from 'title-case';\nimport {\n type ParsedVivliostyleInlineConfig,\n ThemeSpecifier,\n VivliostylePackageMetadata,\n} from './config/schema.js';\nimport type { PackageJson } from './npm.js';\n\nexport type VivliostylePackageJson = Pick<PackageJson, 'name' | 'version'> & {\n vivliostyle?: VivliostylePackageMetadata;\n};\n\nexport interface TemplateVariable\n extends Omit<ParsedVivliostyleInlineConfig, 'theme'> {\n projectPath: string;\n title: string;\n author: string;\n language: string;\n theme?: ThemeSpecifier;\n themePackage?: VivliostylePackageJson;\n cliVersion: string;\n coreVersion: string;\n}\n\nfunction upper(text: string) {\n return text && text.toUpperCase();\n}\nHandlebars.registerHelper('upper', upper);\n\nfunction lower(text: string) {\n return text && text.toLowerCase();\n}\nHandlebars.registerHelper('lower', lower);\n\nfunction capital(text: string) {\n return text && capitalCase(text);\n}\nHandlebars.registerHelper('capital', capital);\n\nfunction camel(text: string) {\n return text && camelCase(text);\n}\nHandlebars.registerHelper('camel', camel);\n\nfunction snake(text: string) {\n return text && snakeCase(text);\n}\nHandlebars.registerHelper('snake', snake);\n\nfunction kebab(text: string) {\n return text && kebabCase(text);\n}\nHandlebars.registerHelper('kebab', kebab);\n\nfunction proper(text: string) {\n return text && titleCase(text);\n}\nHandlebars.registerHelper('proper', proper);\n\nfunction lorem() {\n return 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio, maxime et saepe facilis dolor aut maiores cupiditate rem voluptatem placeat accusamus voluptates laborum ratione enim blanditiis nisi voluptas non mollitia.';\n}\nHandlebars.registerHelper('lorem', lorem);\n\nfunction json(data: unknown) {\n return JSON.stringify(data);\n}\nHandlebars.registerHelper('json', json);\n\nexport function format(text: string, context: unknown) {\n const template = Handlebars.compile(text.toString(), { noEscape: true });\n return template(context);\n}\n","import {\n AutocompletePrompt,\n getColumns,\n isCancel,\n MultiSelectPrompt,\n SelectPrompt,\n type State,\n TextPrompt,\n} from '@clack/core';\nimport type {\n AutocompleteOptions,\n MultiSelectOptions,\n Option,\n SelectOptions,\n TextOptions,\n} from '@clack/prompts';\nimport { limitOptions } from '@clack/prompts';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport * as v from 'valibot';\nimport {\n blueBright,\n dim,\n gray,\n green,\n hidden,\n inverse,\n redBright,\n strikethrough,\n yellow,\n yellowBright,\n} from 'yoctocolors';\nimport {\n PromptOption,\n SelectPromptOption,\n ValidString,\n} from './config/schema.js';\nimport { isUnicodeSupported, Logger } from './logger.js';\n\ntype DistributiveOmit<T, K extends keyof any> = T extends any\n ? Omit<T, K>\n : never;\n\nexport async function askQuestion<\n T extends object,\n S extends v.ObjectSchema<any, any> | v.ObjectSchemaAsync<any, any>,\n>(_: {\n question: Record<\n keyof v.InferInput<S>,\n DistributiveOmit<PromptOption, 'name'>\n >;\n schema: S;\n validateProgressMessage?: string;\n}): Promise<S extends undefined ? T : v.InferOutput<NonNullable<S>>>;\n\nexport async function askQuestion<T extends object>(_: {\n question: Record<string, DistributiveOmit<PromptOption, 'name'>>;\n schema?: undefined;\n validateProgressMessage?: string;\n}): Promise<T>;\n\nexport async function askQuestion<\n S extends v.ObjectSchema<any, any> | v.ObjectSchemaAsync<any, any>,\n>({\n question: questions,\n schema,\n validateProgressMessage,\n}: {\n question: Record<\n keyof v.InferInput<S>,\n DistributiveOmit<PromptOption, 'name'>\n >;\n schema?: S;\n validateProgressMessage?: string;\n}): Promise<any> {\n const response: Record<string, unknown> = {};\n\n // Repeat until the input passes the validation\n while (true) {\n for (const [name, question] of Object.entries(questions)) {\n let result: unknown;\n\n // Maximum number of items to display at once.\n const maxItems = 10;\n const normalizeOptions = (options: SelectPromptOption[]) =>\n options.map((v) => (typeof v === 'string' ? { value: v } : v));\n const validate = (value: unknown = '') => {\n if (!question.required || 'defaultValue' in question) {\n return;\n }\n const { success, issues } = v.safeParse(ValidString, value);\n return success ? undefined : issues[0].message;\n };\n\n if (import.meta.env?.VITEST) {\n // For testing, safely assign the name property using a type assertion\n (question as any).name = name;\n }\n if (question.type === 'text') {\n result = await textPrompt({ ...question, validate });\n } else if (question.type === 'select') {\n result = await selectPrompt({\n ...question,\n options: normalizeOptions(question.options),\n maxItems,\n });\n } else if (question.type === 'multiSelect') {\n result = await multiSelectPrompt({\n ...question,\n options: normalizeOptions(question.options),\n maxItems,\n });\n } else if (question.type === 'autocomplete') {\n result = await autocompletePrompt({\n ...question,\n options: normalizeOptions(question.options),\n maxItems,\n validate,\n });\n } else if (question.type === 'autocompleteMultiSelect') {\n result = await autocompleteMultiSelectPrompt({\n ...question,\n options: normalizeOptions(question.options),\n maxItems,\n });\n } else {\n result = question satisfies never;\n }\n if (isCancel(result)) {\n process.exit(0);\n }\n response[name] = result;\n }\n\n let result: v.SafeParseResult<any>;\n if (schema && schema.async) {\n result = await interactiveLogLoading(validateProgressMessage ?? '', () =>\n v.safeParseAsync(schema, response),\n );\n } else if (schema) {\n result = v.safeParse(schema, response);\n } else {\n return response;\n }\n\n const { success, output, issues } = result;\n if (success) {\n return output;\n }\n interactiveLogWarn(issues[0].message);\n }\n}\n\nconst promptStateSymbol = {\n initial: isUnicodeSupported ? '◆' : '*',\n active: isUnicodeSupported ? '◆' : '*',\n cancel: isUnicodeSupported ? '■' : 'x',\n submit: isUnicodeSupported ? '◇' : 'o',\n error: isUnicodeSupported ? '▲' : 'x',\n} as const satisfies { [key in State]: string };\nconst radioActiveSymbol = isUnicodeSupported ? '◉' : '>';\nconst radioInactiveSymbol = isUnicodeSupported ? '◯' : ' ';\nconst checkboxActiveSymbol = isUnicodeSupported ? '◼' : '[+]';\nconst checkboxInactiveSymbol = isUnicodeSupported ? '◻' : '[ ]';\n\nconst labelToString = <Value>(option: Option<Value>) =>\n option.label ?? String(option.value ?? '');\nconst renderListOption =\n <Value>(multiSelect: boolean, selectedValues?: Value[]) =>\n (option: Option<Value>, active: boolean) => {\n const Y = multiSelect ? checkboxActiveSymbol : radioActiveSymbol;\n const N = multiSelect ? checkboxInactiveSymbol : radioInactiveSymbol;\n if (option.disabled) {\n return `${gray(N)} ${gray(labelToString(option))} ${gray('(disabled)')}`;\n }\n return `${\n (multiSelect && selectedValues?.includes(option.value)) ||\n (!multiSelect && active)\n ? green(Y)\n : dim(N)\n } ${\n active\n ? `${labelToString(option)}${option.hint ? ` ${dim(`(${option.hint})`)}` : ''}`\n : dim(labelToString(option))\n }`;\n };\n\nfunction textPrompt(opts: TextOptions) {\n return new TextPrompt({\n ...opts,\n input: Logger.stdin,\n output: Logger.stdout,\n signal: Logger.signal,\n render() {\n const symbol = promptStateSymbol[this.state];\n const placeholder = opts.placeholder\n ? inverse(opts.placeholder[0]) + dim(opts.placeholder.slice(1))\n : inverse(hidden('_'));\n const userInput = !this.userInput\n ? placeholder\n : this.userInputWithCursor;\n const value = this.value ?? '';\n\n switch (this.state) {\n case 'error': {\n const errorText = this.error ? ` ${yellow(this.error)}` : '';\n return `${yellow('║')}\\n${yellow(`${symbol}─`)} ${opts.message}\\n ${userInput}\\n${errorText}`;\n }\n case 'submit': {\n const valueText = value ? ` ${dim(value)}` : '';\n return `${blueBright('║')}\\n${blueBright(`${symbol}─`)} ${opts.message}\\n${blueBright('║')}${valueText}`;\n }\n case 'cancel': {\n const valueText = value ? ` ${strikethrough(dim(value))}` : '';\n return `${gray('║')}\\n${gray(`${symbol}─`)} ${opts.message}\\n${valueText}`;\n }\n default:\n return `${blueBright('║')}\\n${blueBright(`${symbol}─`)} ${opts.message}\\n ${userInput}\\n`;\n }\n },\n }).prompt() as Promise<string | symbol>;\n}\n\nfunction selectPrompt<Value>(opts: SelectOptions<Value>, multiple = false) {\n return new (multiple ? MultiSelectPrompt : SelectPrompt)({\n ...opts,\n input: Logger.stdin,\n output: Logger.stdout,\n signal: Logger.signal,\n render() {\n const symbol = promptStateSymbol[this.state];\n const values = [this.value].flat() as Value[];\n const selected = this.options.filter((o) => values.includes(o.value));\n const label =\n selected.length > 0 ? selected.map(labelToString).join(', ') : 'none';\n\n switch (this.state) {\n case 'submit': {\n return `${blueBright('║')}\\n${blueBright(`${symbol}─`)} ${opts.message}\\n${blueBright('║')} ${dim(label)}`;\n }\n case 'cancel': {\n return `${gray('║')}\\n${gray(`${symbol}─`)} ${opts.message}\\n ${strikethrough(dim(label))}`;\n }\n default: {\n const indents = ' ';\n const displayingOptions = limitOptions({\n output: opts.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: opts.maxItems,\n columnPadding: indents.length,\n style: renderListOption(\n multiple,\n Array.isArray(this.value) ? this.value : [],\n ),\n });\n return `${blueBright('║')}\\n${blueBright(`${symbol}─`)} ${opts.message}\\n ${displayingOptions.join(`\\n${indents}`)}\\n`;\n }\n }\n },\n }).prompt() as Promise<Value | symbol>;\n}\n\nfunction multiSelectPrompt<Value>(opts: MultiSelectOptions<Value>) {\n return selectPrompt<Value>(opts, true) as Promise<Value[] | symbol>;\n}\n\nfunction autocompletePrompt<Value>(\n opts: AutocompleteOptions<Value>,\n multiple = false,\n) {\n return new AutocompletePrompt({\n ...opts,\n multiple,\n initialValue: opts.initialValue ? [opts.initialValue] : undefined,\n filter: (searchText, option) => {\n if (!searchText) {\n return true;\n }\n const label = (option.label ?? String(option.value ?? '')).toLowerCase();\n const hint = (option.hint ?? '').toLowerCase();\n const value = String(option.value).toLowerCase();\n const term = searchText.toLowerCase();\n return (\n label.includes(term) || hint.includes(term) || value.includes(term)\n );\n },\n input: Logger.stdin,\n output: Logger.stdout,\n signal: Logger.signal,\n render() {\n const symbol = promptStateSymbol[this.state];\n const selected = this.options.filter((o) =>\n this.selectedValues.includes(o.value),\n );\n const label =\n selected.length > 0 ? selected.map(labelToString).join(', ') : 'none';\n\n switch (this.state) {\n case 'submit': {\n return `${blueBright('║')}\\n${blueBright(`${symbol}─`)} ${opts.message}\\n${blueBright('║')} ${dim(label)}`;\n }\n case 'cancel': {\n const userInputText = this.userInput\n ? ` ${strikethrough(dim(this.userInput))}`\n : '';\n return `${gray('║')}\\n${gray(`${symbol}─`)} ${opts.message}\\n${userInputText}`;\n }\n default: {\n const indents = ' ';\n let searchText = '';\n if (this.isNavigating || (opts.placeholder && !this.userInput)) {\n const searchTextValue = opts.placeholder ?? this.userInput;\n searchText = searchTextValue ? ` ${dim(searchTextValue)}` : '';\n } else {\n searchText = ` ${this.userInputWithCursor}`;\n }\n const matches =\n this.filteredOptions.length !== this.options.length\n ? dim(\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`,\n )\n : '';\n const headings = [\n blueBright('║'),\n `${blueBright(`${symbol}─`)} ${opts.message}`,\n `${indents}${dim('Search:')}${searchText}${matches}`,\n ];\n if (this.filteredOptions.length === 0 && this.userInput) {\n headings.push(`${indents}${yellow('No matches found')}`);\n }\n if (this.state === 'error') {\n headings.push(`${indents}${yellow(`Error: ${this.error ?? ''}`)}`);\n }\n const footers = [\n multiple\n ? `${indents}${dim('↑/↓ to navigate • Space/Tab: select • Enter: confirm • Type: to search')}`\n : `${indents}${dim('↑/↓ to select • Enter: confirm • Type: to search')}`,\n ];\n const displayingOptions = limitOptions({\n output: opts.output,\n cursor: this.cursor,\n options: this.filteredOptions,\n maxItems: opts.maxItems,\n columnPadding: indents.length,\n rowPadding: headings.length + footers.length,\n style: renderListOption(multiple, this.selectedValues),\n });\n return [\n ...headings,\n ...displayingOptions.map((s) => `${indents}${s}`),\n ...footers,\n ].join('\\n');\n }\n }\n },\n }).prompt() as Promise<Value | symbol>;\n}\n\nfunction autocompleteMultiSelectPrompt<Value>(\n opts: AutocompleteOptions<Value>,\n) {\n return autocompletePrompt<Value>(opts, true) as Promise<Value[] | symbol>;\n}\n\nexport async function interactiveLogLoading<T>(\n message: string,\n fn: () => Promise<T>,\n deferredTimeMs = 300,\n): Promise<T> {\n if (!Logger.isInteractive) {\n return await fn();\n }\n\n const output = Logger.stdout;\n const columns = getColumns(output);\n const showMessage = (msg: string) => {\n const wrapped = wrapAnsi(msg, columns, { hard: true, trim: false });\n output.write(wrapped);\n return () => {\n const prevLines = wrapped.split('\\n');\n if (prevLines.length > 1) {\n output.write(cursor.up(prevLines.length - 1));\n }\n output.write(cursor.to(0));\n output.write(erase.down());\n };\n };\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n let clearMessage: (() => void) | undefined;\n const promise = new Promise<void>((resolve) => {\n timer = setTimeout(() => {\n output.write(`${blueBright('║')}\\n`);\n clearMessage = showMessage(\n `${blueBright(`${promptStateSymbol.active}─`)} ${dim(message)}\\n`,\n );\n resolve();\n }, deferredTimeMs);\n });\n const result = await fn()\n .then((r) => {\n if (!clearMessage) {\n return r;\n }\n return new Promise<T>((resolve) =>\n setTimeout(() => resolve(r), deferredTimeMs),\n );\n })\n .catch(async (e) => {\n await promise;\n clearMessage?.();\n showMessage(\n `${redBright(`${promptStateSymbol.error}─`)} ${dim(message)}\\n\\n`,\n );\n throw e;\n });\n clearTimeout(timer);\n if (clearMessage) {\n clearMessage();\n showMessage(\n `${blueBright(`${promptStateSymbol.submit}─`)} ${dim(message)}\\n`,\n );\n }\n return result;\n}\n\nexport function interactiveLogInfo(message: string) {\n if (import.meta.env?.VITEST) {\n return;\n }\n Logger.stdout.write(\n `${blueBright(`${promptStateSymbol.submit}─`)} ${message.split('\\n').join(`\\n${blueBright('║')} `)}\\n`,\n );\n}\n\nexport function interactiveLogWarn(message: string) {\n if (import.meta.env?.VITEST) {\n return;\n }\n Logger.stdout.write(\n `${yellowBright(`${promptStateSymbol.error}─`)} ${yellowBright(message.split('\\n').join(`\\n${yellowBright('║')} `))}\\n`,\n );\n}\n\nexport function interactiveLogOutro(message: string) {\n if (import.meta.env?.VITEST) {\n return;\n }\n Logger.stdout.write(`${blueBright('║')}\\n${blueBright('╙─')} ${message}\\n\\n`);\n}\n","import { fetch as _fetch } from 'node-fetch-native';\nimport { createProxy } from 'node-fetch-native/proxy';\n\nexport interface PackageJson {\n name: string;\n version: string;\n description?: string;\n dependencies?: Record<string, string>;\n dist?: {\n fileCount: number;\n integrity: string;\n shasum: string;\n signatures: {\n keyid: string;\n sig: string;\n }[];\n tarball: string;\n unpackedSize: number;\n };\n vivliostyle?: unknown;\n}\n\nexport interface PackageSearchResult {\n objects: {\n downloads: {\n monthly: number;\n weekly: number;\n };\n package: Omit<PackageJson, 'vivliostyle'>;\n searchScore: number;\n updated: string;\n }[];\n total: number;\n time: string;\n}\n\nexport function createFetch(options: {\n proxyServer?: string;\n proxyBypass?: string;\n proxyUser?: string;\n proxyPass?: string;\n}): typeof _fetch {\n const url = options.proxyServer ?? process.env.HTTP_PROXY;\n const proxy = url\n ? createProxy({\n url,\n noProxy: options.proxyBypass ?? process.env.NO_PROXY ?? undefined,\n })\n : undefined;\n const token =\n options.proxyUser && options.proxyPass\n ? `Basic ${Buffer.from(\n `${options.proxyUser}:${options.proxyPass}`,\n ).toString('base64')}`\n : undefined;\n if (proxy && token) {\n // Find kProxyHeaders symbol\n // https://github.com/nodejs/undici/blob/3d231da2d7ddb7d9354f67ddd86af02890d29d71/lib/dispatcher/proxy-agent.js\n const proxyHeadersKey = Object.getOwnPropertySymbols(proxy.dispatcher).find(\n (symbol) => symbol.description === 'proxy headers',\n );\n if (proxyHeadersKey) {\n (\n proxy.dispatcher as unknown as {\n [key: typeof proxyHeadersKey]: Record<string, string>;\n }\n )[proxyHeadersKey]['proxy-authorization'] = token;\n }\n }\n return (url, fetchOptions) =>\n _fetch(url, { ...(proxy ?? {}), ...fetchOptions }).then((response) => {\n if (!response.ok) {\n throw new Error(\n `Failed to fetch ${url}: ${response.status} ${response.statusText}`,\n );\n }\n return response;\n });\n}\n\nexport async function listVivliostyleThemes({\n fetch,\n}: {\n fetch: typeof globalThis.fetch;\n}): Promise<PackageSearchResult> {\n const keyword = 'vivliostyle-theme';\n return await fetch(\n `https://registry.npmjs.org/-/v1/search?text=keywords:${keyword}&size=250`,\n ).then((response) => response.json());\n}\n\nexport async function fetchPackageMetadata({\n fetch,\n packageName,\n version,\n}: {\n fetch: typeof globalThis.fetch;\n packageName: string;\n version: string;\n}): Promise<PackageJson> {\n return fetch(`https://registry.npmjs.org/${packageName}/${version}`).then(\n (response) => response.json(),\n );\n}\n"],"mappings":"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","names":["v","dim","gray","green","yellow","result","v","success","issues","url","cwd","dim","green","_stack","_","_error","_hasError","theme","gray","yellow"]}