@vivliostyle/cli 10.2.1 → 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.
- package/README.md +7 -4
- package/dist/{chunk-CKXFRCPH.js → chunk-7GIJVX4M.js} +143 -11
- package/dist/chunk-7GIJVX4M.js.map +1 -0
- package/dist/{chunk-BR2V7MHE.js → chunk-C4HQHRXQ.js} +227 -58
- package/dist/chunk-C4HQHRXQ.js.map +1 -0
- package/dist/{chunk-T2VWLU2I.js → chunk-DBK27BAR.js} +22 -13
- package/dist/chunk-DBK27BAR.js.map +1 -0
- package/dist/{chunk-E6QVHS6D.js → chunk-ECEGM36O.js} +2 -1
- package/dist/chunk-ECEGM36O.js.map +1 -0
- package/dist/{chunk-5MEUINC4.js → chunk-ERDN47XG.js} +524 -52
- package/dist/chunk-ERDN47XG.js.map +1 -0
- package/dist/{chunk-37OLZSNI.js → chunk-LGOHUEEQ.js} +5 -5
- package/dist/{chunk-62AC6XGJ.js → chunk-LWMSAGHL.js} +4 -4
- package/dist/{chunk-XMCTTVR7.js → chunk-MU7JCDMK.js} +2 -2
- package/dist/{chunk-ZEBXHUJX.js → chunk-OAFXM4ES.js} +4 -4
- package/dist/chunk-OAFXM4ES.js.map +1 -0
- package/dist/{chunk-O3CBPX4R.js → chunk-PYPAYBFL.js} +170 -112
- package/dist/chunk-PYPAYBFL.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/commands/build.js +15 -9
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/create.js +11 -5
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.js +4 -4
- package/dist/commands/preview.js +14 -8
- package/dist/commands/preview.js.map +1 -1
- package/dist/config/schema.d.ts +21152 -21165
- package/dist/config/schema.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +17 -11
- package/dist/index.js.map +1 -1
- package/dist/node-modules.d.ts +3 -1
- package/dist/node-modules.js +1 -1
- package/dist/vite-adapter.js +6 -6
- package/package.json +5 -4
- package/dist/chunk-5MEUINC4.js.map +0 -1
- package/dist/chunk-BR2V7MHE.js.map +0 -1
- package/dist/chunk-CKXFRCPH.js.map +0 -1
- package/dist/chunk-E6QVHS6D.js.map +0 -1
- package/dist/chunk-O3CBPX4R.js.map +0 -1
- package/dist/chunk-T2VWLU2I.js.map +0 -1
- package/dist/chunk-ZEBXHUJX.js.map +0 -1
- /package/dist/{chunk-37OLZSNI.js.map → chunk-LGOHUEEQ.js.map} +0 -0
- /package/dist/{chunk-62AC6XGJ.js.map → chunk-LWMSAGHL.js.map} +0 -0
- /package/dist/{chunk-XMCTTVR7.js.map → chunk-MU7JCDMK.js.map} +0 -0
|
@@ -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 { x } from 'tinyexec';\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 { askQuestion, InteractiveLogger } from '../interactive.js';\nimport { Logger } from '../logger.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 const interactiveLogger = new InteractiveLogger();\n let {\n projectPath,\n cwd = defaultCwd,\n title,\n author,\n language,\n theme,\n template,\n installDependencies,\n createConfigFileOnly = false,\n } = inlineConfig;\n let extraTemplateVariables: Record<string, unknown> = {};\n let themePackage: VivliostylePackageJson | 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 const usingPresetTemplate = TEMPLATE_SETTINGS.find(\n (t) => t.value === template,\n );\n if (useLocalTemplate) {\n template = absTemplatePath;\n interactiveLogger.logInfo(\n `Using the specified local template directory\\n${dim(upath.relative(cwd, absTemplatePath) || '.')}`,\n );\n } else if (usingPresetTemplate) {\n template = usingPresetTemplate.template;\n } else {\n interactiveLogger.logWarn(\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({ interactiveLogger }));\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, interactiveLogger }));\n }\n if (!author) {\n ({ author } = createConfigFileOnly\n ? { author: DEFAULT_PROJECT_AUTHOR }\n : await askAuthor({ interactiveLogger }));\n }\n if (!language) {\n ({ language } = createConfigFileOnly\n ? { language: await getOsLocale() }\n : await askLanguage({ interactiveLogger }));\n }\n\n if (!createConfigFileOnly) {\n let presetTemplate: (typeof TEMPLATE_SETTINGS)[number] | undefined;\n if (!template) {\n ({ presetTemplate } = await askPresetTemplate({ interactiveLogger }));\n if (presetTemplate) {\n template = presetTemplate.template;\n }\n }\n if (!theme && theme !== false) {\n ({ theme, themePackage } = await askTheme({\n presetTemplate,\n template,\n fetch,\n interactiveLogger,\n }));\n }\n if (!template) {\n ({ template, extraTemplateVariables } = await askThemeTemplate({\n themeMetadata: themePackage?.vivliostyle,\n interactiveLogger,\n }));\n }\n if (typeof installDependencies !== 'boolean') {\n ({ installDependencies } = await askInstallDependencies({\n interactiveLogger,\n }));\n }\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 if (interactiveLogger.messageHistory.length > 0) {\n interactiveLogger.logOutro(\n 'All configurations are set! Creating your project...',\n );\n }\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 interactiveLogger,\n}: {\n interactiveLogger: InteractiveLogger;\n}) {\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 interactiveLogger,\n });\n}\n\nasync function askTitle({\n projectPath,\n interactiveLogger,\n}: {\n projectPath: string;\n interactiveLogger: InteractiveLogger;\n}) {\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 interactiveLogger,\n });\n}\n\nasync function askAuthor({\n interactiveLogger,\n}: {\n interactiveLogger: InteractiveLogger;\n}) {\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 interactiveLogger,\n });\n}\n\nasync function askLanguage({\n interactiveLogger,\n}: {\n interactiveLogger: InteractiveLogger;\n}) {\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 interactiveLogger,\n });\n}\n\nexport const PRESET_TEMPLATE_NOT_USE = 'Use templates from the community theme';\n\nasync function askPresetTemplate({\n interactiveLogger,\n}: {\n interactiveLogger: InteractiveLogger;\n}): 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 interactiveLogger,\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 interactiveLogger,\n}: Pick<ParsedVivliostyleInlineConfig, 'template'> & {\n presetTemplate: (typeof TEMPLATE_SETTINGS)[number] | undefined;\n fetch: ReturnType<typeof createFetch>;\n interactiveLogger: InteractiveLogger;\n}): Promise<\n Pick<ParsedVivliostyleInlineConfig, 'theme'> & {\n themePackage: VivliostylePackageJson | undefined;\n }\n> {\n const useCommunityThemes = !presetTemplate && !template;\n const themePackages = await interactiveLogger.logLoading(\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 interactiveLogger,\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 interactiveLogger,\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 interactiveLogger,\n themeMetadata,\n}: {\n interactiveLogger: InteractiveLogger;\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 interactiveLogger.logWarn(\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 interactiveLogger,\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 interactiveLogger,\n });\n }\n return { template: usingTemplate.source, extraTemplateVariables };\n}\n\nasync function askInstallDependencies({\n interactiveLogger,\n}: {\n interactiveLogger: InteractiveLogger;\n}) {\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 interactiveLogger,\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 proc = x(pm, ['install'], {\n throwOnError: true,\n nodeOptions: {\n cwd: upath.join(cwd, projectPath),\n stdio: Logger.isInteractive ? 'inherit' : undefined,\n },\n });\n if (Logger.isInteractive) {\n await proc;\n } else {\n for await (const line of proc) {\n Logger.log(line);\n }\n }\n}\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 interactiveLogger: InteractiveLogger;\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 interactiveLogger: InteractiveLogger;\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 interactiveLogger,\n schema,\n validateProgressMessage,\n}: {\n question: Record<\n keyof v.InferInput<S>,\n DistributiveOmit<PromptOption, 'name'>\n >;\n interactiveLogger: InteractiveLogger;\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 interactiveLogger.messageHistory.push({\n type: 'question',\n message: question.message,\n answer: result,\n });\n }\n\n let result: v.SafeParseResult<any>;\n if (schema && schema.async) {\n result = await interactiveLogger?.logLoading(\n 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 interactiveLogger.logWarn(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 class InteractiveLogger {\n messageHistory: {\n type: 'question' | 'loading' | 'info' | 'warn' | 'outro';\n message: string;\n answer?: unknown;\n }[] = [];\n\n async logLoading<T>(\n message: string,\n fn: () => Promise<T>,\n deferredTimeMs = 300,\n ): Promise<T> {\n this.messageHistory.push({ type: 'loading', message });\n if (!Logger.isInteractive || import.meta.env?.VITEST) {\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\n logInfo(message: string) {\n this.messageHistory.push({ type: 'info', message });\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\n logWarn(message: string) {\n this.messageHistory.push({ type: 'warn', message });\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\n logOutro(message: string) {\n this.messageHistory.push({ type: 'outro', message });\n if (import.meta.env?.VITEST) {\n return;\n }\n Logger.stdout.write(\n `${blueBright('║')}\\n${blueBright('╙─')} ${message}\\n\\n`,\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"]}
|
package/dist/cli.js
CHANGED
package/dist/commands/build.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
build
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-ERDN47XG.js";
|
|
4
|
+
import "../chunk-MU7JCDMK.js";
|
|
5
|
+
import "../chunk-C4HQHRXQ.js";
|
|
6
|
+
import "../chunk-ECEGM36O.js";
|
|
7
7
|
import {
|
|
8
8
|
Logger,
|
|
9
9
|
createParserProgram,
|
|
10
10
|
gracefulError,
|
|
11
11
|
isInContainer
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-DBK27BAR.js";
|
|
13
|
+
import "../chunk-7GIJVX4M.js";
|
|
14
14
|
import {
|
|
15
15
|
versionForDisplay
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-OAFXM4ES.js";
|
|
17
17
|
import "../chunk-I7BWSAN6.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/build.ts
|
|
@@ -69,7 +69,13 @@ custom(comma separated): 182mm,257mm or 8.5in,11in`
|
|
|
69
69
|
).option(
|
|
70
70
|
"--css <CSS>",
|
|
71
71
|
'custom style CSS code. (ex: ":root {--my-color: lime;}")'
|
|
72
|
-
).option(
|
|
72
|
+
).option(
|
|
73
|
+
"--style <stylesheet>",
|
|
74
|
+
"Additional stylesheet for Vivliostyle viewer."
|
|
75
|
+
).option(
|
|
76
|
+
"--user-style <user_stylesheet>",
|
|
77
|
+
"Additional user stylesheet for Vivliostyle viewer."
|
|
78
|
+
).option("-d, --single-doc", "single HTML document input").option(
|
|
73
79
|
"-p, --press-ready",
|
|
74
80
|
`make generated PDF compatible with press ready PDF/X-1a [false]
|
|
75
81
|
This option is equivalent with "--preflight press-ready"`
|
|
@@ -97,7 +103,7 @@ This option is equivalent with "--preflight press-ready"`
|
|
|
97
103
|
`options for preflight process (ex: gray-scale, enforce-outline)
|
|
98
104
|
Please refer the document of press-ready for further information.
|
|
99
105
|
https://github.com/vibranthq/press-ready`
|
|
100
|
-
).addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).option(
|
|
106
|
+
).option("--cmyk", "convert device-cmyk() colors to CMYK in the output PDF").addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).option(
|
|
101
107
|
"--executable-browser <path>",
|
|
102
108
|
"specify a path of executable browser you installed"
|
|
103
109
|
).option("--image <image>", "specify a docker image to render").option(
|
|
@@ -1 +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 { parseBuildCommand } from './build.parser.js';\n\ntry {\n let inlineConfig = parseBuildCommand(process.argv);\n let containerForkMode = false;\n if (isInContainer() && process.env.VS_CLI_BUILD_PDF_OPTIONS) {\n inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS);\n containerForkMode = true;\n Logger.debug('bypassedPdfBuilderOption %O', inlineConfig);\n }\n await build(inlineConfig, { containerForkMode });\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n","import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction 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 [300]`,\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 .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 .addOption(\n new Option(\n '--browser <browser>',\n `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`,\n ),\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 .version(versionForDisplay, '-v, --version')\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 * 1000 : undefined;\n}\n\nexport const parseBuildCommand = createParserProgram({\n setupProgram: setupBuildParserProgram,\n parseArgs: (options, [input]) => {\n if (\n input &&\n !options.config &&\n upath.basename(input).startsWith('vivliostyle.config')\n ) {\n // Load an input argument as a Vivliostyle config\n return { ...options, config: input };\n }\n return { ...options, input };\n },\n});\n"],"mappings":"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","names":[]}
|
|
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 { parseBuildCommand } from './build.parser.js';\n\ntry {\n let inlineConfig = parseBuildCommand(process.argv);\n let containerForkMode = false;\n if (isInContainer() && process.env.VS_CLI_BUILD_PDF_OPTIONS) {\n inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS);\n containerForkMode = true;\n Logger.debug('bypassedPdfBuilderOption %O', inlineConfig);\n }\n await build(inlineConfig, { containerForkMode });\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n","import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction 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(\n '--style <stylesheet>',\n 'Additional stylesheet for Vivliostyle viewer.',\n )\n .option(\n '--user-style <user_stylesheet>',\n 'Additional user stylesheet for Vivliostyle viewer.',\n )\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 [300]`,\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 .option('--cmyk', 'convert device-cmyk() colors to CMYK in the output PDF')\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\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 .addOption(\n new Option(\n '--browser <browser>',\n `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`,\n ),\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 .version(versionForDisplay, '-v, --version')\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 * 1000 : undefined;\n}\n\nexport const parseBuildCommand = createParserProgram({\n setupProgram: setupBuildParserProgram,\n parseArgs: (options, [input]) => {\n if (\n input &&\n !options.config &&\n upath.basename(input).startsWith('vivliostyle.config')\n ) {\n // Load an input argument as a Vivliostyle config\n return { ...options, config: input };\n }\n return { ...options, input };\n },\n});\n"],"mappings":"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","names":[]}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
2
|
create
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-PYPAYBFL.js";
|
|
4
4
|
import {
|
|
5
5
|
createParserProgram,
|
|
6
6
|
gracefulError
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-DBK27BAR.js";
|
|
8
|
+
import "../chunk-7GIJVX4M.js";
|
|
9
9
|
import {
|
|
10
10
|
versionForDisplay
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-OAFXM4ES.js";
|
|
12
12
|
import "../chunk-I7BWSAN6.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/create.parser.ts
|
|
15
15
|
import { Command, Option } from "commander";
|
|
16
16
|
function setupCreateParserProgram() {
|
|
17
17
|
const program = new Command();
|
|
18
|
-
program.name("vivliostyle create").description("scaffold a new Vivliostyle project").arguments("[projectPath]").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").option("-s, --size <size>", "paper size").option("-T, --theme <theme>", "theme").option(
|
|
18
|
+
program.name("vivliostyle create").description("scaffold a new Vivliostyle project").arguments("[projectPath]").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").option("-s, --size <size>", "paper size").option("-T, --theme <theme>", "theme").option("--no-theme", "Do not include a theme.").option(
|
|
19
19
|
"--template <template>",
|
|
20
20
|
`Template source in the format of \`[provider]:repo[/subpath][#ref]\` or as a local directory to copy from.`
|
|
21
|
+
).option(
|
|
22
|
+
"--install-dependencies",
|
|
23
|
+
"Install dependencies after creating a project."
|
|
24
|
+
).option(
|
|
25
|
+
"--no-install-dependencies",
|
|
26
|
+
"Do not install dependencies after creating a project."
|
|
21
27
|
).option(
|
|
22
28
|
"--create-config-file-only",
|
|
23
29
|
`Create a Vivliostyle config file without generating project template files.`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/create.parser.ts","../../src/commands/create.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupCreateParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle create')\n .description('scaffold a new Vivliostyle project')\n .arguments('[projectPath]')\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 .option(\n '--template <template>',\n `Template source in the format of \\`[provider]:repo[/subpath][#ref]\\` or as a local directory to copy from.`,\n )\n .option(\n '--create-config-file-only',\n `Create a Vivliostyle config file without generating project template files.`,\n )\n .addOption(\n new Option('--proxy-server <proxyServer>', `HTTP/SOCK proxy server url`),\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 .version(versionForDisplay, '-v, --version');\n return program;\n}\n\nexport const parseCreateCommand = createParserProgram({\n setupProgram: setupCreateParserProgram,\n parseArgs: (options, [projectPath]) => ({ ...options, projectPath }),\n});\n","import { create } from '../core/create.js';\nimport { gracefulError } from '../util.js';\nimport { parseCreateCommand } from './create.parser.js';\n\ntry {\n const inlineConfig = parseCreateCommand(process.argv);\n await create(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAIhC,SAAS,2BAAoC;AAC3C,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,oBAAoB,EACzB,YAAY,oCAAoC,EAChD,UAAU,eAAe,EACzB,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,qBAAqB,YAAY,EACxC,OAAO,uBAAuB,OAAO,EACrC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI,OAAO,gCAAgC,4BAA4B;AAAA,EACzE,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,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAEO,IAAM,qBAAqB,oBAAoB;AAAA,EACpD,cAAc;AAAA,EACd,WAAW,CAAC,SAAS,CAAC,WAAW,OAAO,EAAE,GAAG,SAAS,YAAY;AACpE,CAAC;;;
|
|
1
|
+
{"version":3,"sources":["../../src/commands/create.parser.ts","../../src/commands/create.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupCreateParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle create')\n .description('scaffold a new Vivliostyle project')\n .arguments('[projectPath]')\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 .option('--no-theme', 'Do not include a theme.')\n .option(\n '--template <template>',\n `Template source in the format of \\`[provider]:repo[/subpath][#ref]\\` or as a local directory to copy from.`,\n )\n .option(\n '--install-dependencies',\n 'Install dependencies after creating a project.',\n )\n .option(\n '--no-install-dependencies',\n 'Do not install dependencies after creating a project.',\n )\n .option(\n '--create-config-file-only',\n `Create a Vivliostyle config file without generating project template files.`,\n )\n .addOption(\n new Option('--proxy-server <proxyServer>', `HTTP/SOCK proxy server url`),\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 .version(versionForDisplay, '-v, --version');\n return program;\n}\n\nexport const parseCreateCommand = createParserProgram({\n setupProgram: setupCreateParserProgram,\n parseArgs: (options, [projectPath]) => ({ ...options, projectPath }),\n});\n","import { create } from '../core/create.js';\nimport { gracefulError } from '../util.js';\nimport { parseCreateCommand } from './create.parser.js';\n\ntry {\n const inlineConfig = parseCreateCommand(process.argv);\n await create(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAIhC,SAAS,2BAAoC;AAC3C,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,oBAAoB,EACzB,YAAY,oCAAoC,EAChD,UAAU,eAAe,EACzB,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,qBAAqB,YAAY,EACxC,OAAO,uBAAuB,OAAO,EACrC,OAAO,cAAc,yBAAyB,EAC9C;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI,OAAO,gCAAgC,4BAA4B;AAAA,EACzE,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,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAEO,IAAM,qBAAqB,oBAAoB;AAAA,EACpD,cAAc;AAAA,EACd,WAAW,CAAC,SAAS,CAAC,WAAW,OAAO,EAAE,GAAG,SAAS,YAAY;AACpE,CAAC;;;AChED,IAAI;AACF,QAAM,eAAe,mBAAmB,QAAQ,IAAI;AACpD,QAAM,OAAO,YAAY;AAC3B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
create
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-PYPAYBFL.js";
|
|
4
4
|
import {
|
|
5
5
|
createParserProgram,
|
|
6
6
|
gracefulError
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-DBK27BAR.js";
|
|
8
|
+
import "../chunk-7GIJVX4M.js";
|
|
9
9
|
import {
|
|
10
10
|
versionForDisplay
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-OAFXM4ES.js";
|
|
12
12
|
import "../chunk-I7BWSAN6.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/init.parser.ts
|
package/dist/commands/preview.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
preview
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-LGOHUEEQ.js";
|
|
4
|
+
import "../chunk-MU7JCDMK.js";
|
|
5
|
+
import "../chunk-C4HQHRXQ.js";
|
|
6
|
+
import "../chunk-ECEGM36O.js";
|
|
7
7
|
import {
|
|
8
8
|
createParserProgram,
|
|
9
9
|
gracefulError
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-DBK27BAR.js";
|
|
11
|
+
import "../chunk-7GIJVX4M.js";
|
|
12
12
|
import {
|
|
13
13
|
versionForDisplay
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-OAFXM4ES.js";
|
|
15
15
|
import "../chunk-I7BWSAN6.js";
|
|
16
16
|
|
|
17
17
|
// src/commands/preview.parser.ts
|
|
@@ -33,7 +33,13 @@ custom(comma separated): 182mm,257mm or 8.5in,11in`
|
|
|
33
33
|
).option(
|
|
34
34
|
"--css <CSS>",
|
|
35
35
|
'custom style CSS code. (ex: ":root {--my-color: lime;}")'
|
|
36
|
-
).option(
|
|
36
|
+
).option(
|
|
37
|
+
"--style <stylesheet>",
|
|
38
|
+
"Additional stylesheet for Vivliostyle viewer."
|
|
39
|
+
).option(
|
|
40
|
+
"--user-style <user_stylesheet>",
|
|
41
|
+
"Additional user stylesheet for Vivliostyle viewer."
|
|
42
|
+
).option("-d, --single-doc", "single HTML document input").option("-q, --quick", "quick loading with rough page count").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").addOption(
|
|
37
43
|
new Option(
|
|
38
44
|
"--reading-progression <direction>",
|
|
39
45
|
"Direction of reading progression"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/preview.parser.ts","../../src/commands/preview.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction 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>'
|
|
1
|
+
{"version":3,"sources":["../../src/commands/preview.parser.ts","../../src/commands/preview.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction 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(\n '--style <stylesheet>',\n 'Additional stylesheet for Vivliostyle viewer.',\n )\n .option(\n '--user-style <user_stylesheet>',\n 'Additional user stylesheet for Vivliostyle viewer.',\n )\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 .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 `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`,\n ),\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 .version(versionForDisplay, '-v, --version');\n return program;\n}\n\nexport const parsePreviewCommand = createParserProgram({\n setupProgram: setupPreviewParserProgram,\n parseArgs: (options, [input]) => {\n if (\n input &&\n !options.config &&\n upath.basename(input).startsWith('vivliostyle.config')\n ) {\n // Load an input argument as a Vivliostyle config\n return { ...options, config: input };\n }\n return { ...options, input };\n },\n});\n","import { preview } from '../core/preview.js';\nimport { gracefulError } from '../util.js';\nimport { parsePreviewCommand } from './preview.parser.js';\n\ntry {\n const inlineConfig = parsePreviewCommand(process.argv);\n await preview(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAChC,OAAO,WAAW;AAIlB,SAAS,4BAAqC;AAC5C,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;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,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;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,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;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,EACC,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAEO,IAAM,sBAAsB,oBAAoB;AAAA,EACrD,cAAc;AAAA,EACd,WAAW,CAAC,SAAS,CAAC,KAAK,MAAM;AAC/B,QACE,SACA,CAAC,QAAQ,UACT,MAAM,SAAS,KAAK,EAAE,WAAW,oBAAoB,GACrD;AAEA,aAAO,EAAE,GAAG,SAAS,QAAQ,MAAM;AAAA,IACrC;AACA,WAAO,EAAE,GAAG,SAAS,MAAM;AAAA,EAC7B;AACF,CAAC;;;ACpID,IAAI;AACF,QAAM,eAAe,oBAAoB,QAAQ,IAAI;AACrD,QAAM,QAAQ,YAAY;AAC5B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
|