@vivliostyle/cli 10.3.0 → 10.4.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.
- package/README.md +7 -4
- package/dist/{chunk-RBKPG6VU.js → chunk-4DTPH2XX.js} +2 -2
- package/dist/{chunk-QLK3XMQI.js → chunk-DEJL63H2.js} +195 -130
- package/dist/chunk-DEJL63H2.js.map +1 -0
- package/dist/{chunk-ZEBXHUJX.js → chunk-DK3HFVHX.js} +27 -51
- package/dist/chunk-DK3HFVHX.js.map +1 -0
- package/dist/{chunk-3QOSSWIX.js → chunk-J2YGULSR.js} +58 -10
- package/dist/chunk-J2YGULSR.js.map +1 -0
- package/dist/{chunk-ALY3QX7K.js → chunk-L4PJ2SP3.js} +22 -25
- package/dist/chunk-L4PJ2SP3.js.map +1 -0
- package/dist/{chunk-WIGLU3EK.js → chunk-LE3QOQ5F.js} +11 -9
- package/dist/{chunk-WIGLU3EK.js.map → chunk-LE3QOQ5F.js.map} +1 -1
- package/dist/{chunk-YNX6D2I6.js → chunk-P33ELNYE.js} +342 -383
- package/dist/chunk-P33ELNYE.js.map +1 -0
- package/dist/chunk-Q4EIXB5V.js +330 -0
- package/dist/chunk-Q4EIXB5V.js.map +1 -0
- package/dist/{chunk-NVNEYZ3J.js → chunk-RLV2H3QB.js} +11 -11
- package/dist/chunk-RLV2H3QB.js.map +1 -0
- package/dist/{chunk-RILZCPJE.js → chunk-VAPIKX4A.js} +308 -503
- package/dist/chunk-VAPIKX4A.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +17 -10
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/create.js +14 -7
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.js +7 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/preview.js +16 -9
- package/dist/commands/preview.js.map +1 -1
- package/dist/config/schema.d.ts +13293 -1796
- package/dist/config/schema.js +7 -2
- package/dist/constants.d.ts +250 -0
- package/dist/constants.js +60 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/vite-adapter.js +6 -5
- package/package.json +16 -12
- package/dist/chunk-3QOSSWIX.js.map +0 -1
- package/dist/chunk-ALY3QX7K.js.map +0 -1
- package/dist/chunk-NVNEYZ3J.js.map +0 -1
- package/dist/chunk-QLK3XMQI.js.map +0 -1
- package/dist/chunk-RILZCPJE.js.map +0 -1
- package/dist/chunk-YNX6D2I6.js.map +0 -1
- package/dist/chunk-ZEBXHUJX.js.map +0 -1
- /package/dist/{chunk-RBKPG6VU.js.map → chunk-4DTPH2XX.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 { locateVivliostyleConfig } from '../config/load.js';\nimport {\n type ParsedVivliostyleInlineConfig,\n VivliostyleInlineConfigWithoutChecks,\n VivliostylePackageMetadata,\n} from '../config/schema.js';\nimport {\n DEFAULT_CONFIG_FILENAME,\n DEFAULT_PROJECT_AUTHOR,\n DEFAULT_PROJECT_TITLE,\n LANGUAGES,\n TEMPLATE_DEFAULT_PACKAGE_JSON,\n TEMPLATE_DEFAULT_VIVLIOSTYLE_CONFIG_JS,\n TEMPLATE_SETTINGS,\n} from '../constants.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 cliVersion,\n coreVersion,\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\n const packageJsonPath = upath.join(cwd, projectPath, 'package.json');\n if (!fs.existsSync(packageJsonPath)) {\n fs.writeFileSync(packageJsonPath, TEMPLATE_DEFAULT_PACKAGE_JSON, 'utf8');\n }\n if (!locateVivliostyleConfig({ cwd: upath.join(cwd, projectPath) })) {\n fs.writeFileSync(\n upath.join(cwd, projectPath, DEFAULT_CONFIG_FILENAME),\n TEMPLATE_DEFAULT_VIVLIOSTYLE_CONFIG_JS,\n 'utf8',\n );\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_VIVLIOSTYLE_CONFIG_JS;\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"]}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
import fs from "node:fs";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import resolvePkg from "resolve-pkg";
|
|
5
|
-
import upath from "upath";
|
|
1
|
+
// src/constants.ts
|
|
6
2
|
var MANIFEST_FILENAME = "publication.json";
|
|
7
3
|
var TOC_FILENAME = "index.html";
|
|
8
4
|
var TOC_TITLE = "Table of Contents";
|
|
@@ -10,6 +6,7 @@ var COVER_HTML_FILENAME = "cover.html";
|
|
|
10
6
|
var COVER_HTML_IMAGE_ALT = "Cover image";
|
|
11
7
|
var XML_DECLARATION = '<?xml version="1.0" encoding="UTF-8"?>';
|
|
12
8
|
var EPUB_OUTPUT_VERSION = "3.0";
|
|
9
|
+
var EPUB_MIMETYPE = "application/epub+zip";
|
|
13
10
|
var EPUB_NS = "http://www.idpf.org/2007/ops";
|
|
14
11
|
var EPUB_CONTAINER_XML = `${XML_DECLARATION}
|
|
15
12
|
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
|
|
@@ -20,15 +17,16 @@ var EPUB_CONTAINER_XML = `${XML_DECLARATION}
|
|
|
20
17
|
var EPUB_LANDMARKS_TITLE = "Landmarks";
|
|
21
18
|
var EPUB_LANDMARKS_TOC_ENTRY = TOC_TITLE;
|
|
22
19
|
var EPUB_LANDMARKS_COVER_ENTRY = "Cover Page";
|
|
20
|
+
var CMYK_RESERVE_MAP_FILENAME = "cmyk-reserve-map.json";
|
|
23
21
|
var EMPTY_DATA_URI = "data:,";
|
|
24
22
|
var VIEWER_ROOT_PATH = "/__vivliostyle-viewer";
|
|
25
23
|
var CONTAINER_URL = "ghcr.io/vivliostyle/cli";
|
|
26
24
|
var CONTAINER_ROOT_DIR = "/data";
|
|
27
25
|
var CONTAINER_LOCAL_HOSTNAME = "host.docker.internal";
|
|
28
26
|
var DEFAULT_BROWSER_VERSIONS = {
|
|
29
|
-
chrome: { "linux": "
|
|
30
|
-
chromium: { "linux": "
|
|
31
|
-
firefox: { "linux": "
|
|
27
|
+
chrome: { "linux": "146.0.7680.153", "linux_arm": "146.0.7680.153", "mac": "146.0.7680.153", "mac_arm": "146.0.7680.153", "win32": "146.0.7680.153", "win64": "146.0.7680.153" },
|
|
28
|
+
chromium: { "linux": "1603217", "linux_arm": "1603215", "mac": "1603215", "mac_arm": "1603217", "win32": "1603213", "win64": "1603210" },
|
|
29
|
+
firefox: { "linux": "stable_148.0.2", "linux_arm": "stable_148.0.2", "mac": "stable_148.0.2", "mac_arm": "stable_148.0.2", "win32": "stable_148.0.2", "win64": "stable_148.0.2" }
|
|
32
30
|
};
|
|
33
31
|
var DEFAULT_CONFIG_FILENAME = "vivliostyle.config.js";
|
|
34
32
|
var DEFAULT_PROJECT_TITLE = "My Title";
|
|
@@ -45,12 +43,17 @@ var TEMPLATE_SETTINGS = [
|
|
|
45
43
|
label: "Basic",
|
|
46
44
|
hint: "Use a basic template with starter content",
|
|
47
45
|
template: "gh:vivliostyle/vivliostyle-cli/templates/basic"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
value: "basic-ja",
|
|
49
|
+
label: "Basic (Japanese)",
|
|
50
|
+
hint: "Use a basic template with starter content in Japanese",
|
|
51
|
+
template: "gh:vivliostyle/vivliostyle-cli/templates/basic-ja"
|
|
48
52
|
}
|
|
49
53
|
];
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`{
|
|
54
|
+
var TEMPLATE_DEFAULT_PACKAGE_JSON = (
|
|
55
|
+
/* json */
|
|
56
|
+
`{
|
|
54
57
|
"name": "{{kebab title}}",
|
|
55
58
|
"description": "{{proper title}}",
|
|
56
59
|
"author": "{{author}}",
|
|
@@ -66,10 +69,10 @@ var TEMPLATE_DEFAULT_FILES = {
|
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
`
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
);
|
|
73
|
+
var TEMPLATE_DEFAULT_VIVLIOSTYLE_CONFIG_JS = (
|
|
74
|
+
/* js */
|
|
75
|
+
`// @ts-check
|
|
73
76
|
import { defineConfig } from '@vivliostyle/cli';
|
|
74
77
|
|
|
75
78
|
export default defineConfig({
|
|
@@ -91,9 +94,8 @@ export default defineConfig({
|
|
|
91
94
|
entry: ["manuscript.md"],
|
|
92
95
|
});
|
|
93
96
|
`
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var languages = {
|
|
97
|
+
);
|
|
98
|
+
var LANGUAGES = {
|
|
97
99
|
aa: "Afar",
|
|
98
100
|
ab: "Abkhazian",
|
|
99
101
|
af: "Afrikaans",
|
|
@@ -275,31 +277,6 @@ var languages = {
|
|
|
275
277
|
"zh-Hant": "Traditional Chinese",
|
|
276
278
|
zu: "Zulu"
|
|
277
279
|
};
|
|
278
|
-
var cliRoot = upath.join(fileURLToPath(import.meta.url), "../..");
|
|
279
|
-
var cliVersion = (() => {
|
|
280
|
-
if (import.meta.env?.VITEST) {
|
|
281
|
-
return "0.0.1";
|
|
282
|
-
}
|
|
283
|
-
const pkg = JSON.parse(
|
|
284
|
-
fs.readFileSync(upath.join(cliRoot, "package.json"), "utf8")
|
|
285
|
-
);
|
|
286
|
-
return pkg.version;
|
|
287
|
-
})();
|
|
288
|
-
var viewerRoot = resolvePkg("@vivliostyle/viewer", { cwd: cliRoot });
|
|
289
|
-
var coreVersion = (() => {
|
|
290
|
-
if (import.meta.env?.VITEST) {
|
|
291
|
-
return "0.0.1";
|
|
292
|
-
}
|
|
293
|
-
if (!viewerRoot) {
|
|
294
|
-
return "Unknown";
|
|
295
|
-
}
|
|
296
|
-
const pkg = JSON.parse(
|
|
297
|
-
fs.readFileSync(upath.join(viewerRoot, "package.json"), "utf8")
|
|
298
|
-
);
|
|
299
|
-
return pkg.version;
|
|
300
|
-
})();
|
|
301
|
-
var versionForDisplay = `cli: ${cliVersion}
|
|
302
|
-
core: ${coreVersion}`;
|
|
303
280
|
|
|
304
281
|
export {
|
|
305
282
|
MANIFEST_FILENAME,
|
|
@@ -309,11 +286,13 @@ export {
|
|
|
309
286
|
COVER_HTML_IMAGE_ALT,
|
|
310
287
|
XML_DECLARATION,
|
|
311
288
|
EPUB_OUTPUT_VERSION,
|
|
289
|
+
EPUB_MIMETYPE,
|
|
312
290
|
EPUB_NS,
|
|
313
291
|
EPUB_CONTAINER_XML,
|
|
314
292
|
EPUB_LANDMARKS_TITLE,
|
|
315
293
|
EPUB_LANDMARKS_TOC_ENTRY,
|
|
316
294
|
EPUB_LANDMARKS_COVER_ENTRY,
|
|
295
|
+
CMYK_RESERVE_MAP_FILENAME,
|
|
317
296
|
EMPTY_DATA_URI,
|
|
318
297
|
VIEWER_ROOT_PATH,
|
|
319
298
|
CONTAINER_URL,
|
|
@@ -324,11 +303,8 @@ export {
|
|
|
324
303
|
DEFAULT_PROJECT_TITLE,
|
|
325
304
|
DEFAULT_PROJECT_AUTHOR,
|
|
326
305
|
TEMPLATE_SETTINGS,
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
viewerRoot,
|
|
331
|
-
coreVersion,
|
|
332
|
-
versionForDisplay
|
|
306
|
+
TEMPLATE_DEFAULT_PACKAGE_JSON,
|
|
307
|
+
TEMPLATE_DEFAULT_VIVLIOSTYLE_CONFIG_JS,
|
|
308
|
+
LANGUAGES
|
|
333
309
|
};
|
|
334
|
-
//# sourceMappingURL=chunk-
|
|
310
|
+
//# sourceMappingURL=chunk-DK3HFVHX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["export const MANIFEST_FILENAME = 'publication.json';\nexport const TOC_FILENAME = 'index.html';\nexport const TOC_TITLE = 'Table of Contents';\nexport const COVER_HTML_FILENAME = 'cover.html';\nexport const COVER_HTML_IMAGE_ALT = 'Cover image';\n\nexport const XML_DECLARATION = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';\nexport const EPUB_OUTPUT_VERSION = '3.0';\nexport const EPUB_MIMETYPE = 'application/epub+zip';\nexport const EPUB_NS = 'http://www.idpf.org/2007/ops';\nexport const EPUB_CONTAINER_XML = `${XML_DECLARATION}\n<container version=\"1.0\" xmlns=\"urn:oasis:names:tc:opendocument:xmlns:container\">\n <rootfiles>\n <rootfile full-path=\"EPUB/content.opf\" media-type=\"application/oebps-package+xml\" />\n </rootfiles>\n</container>`;\nexport const EPUB_LANDMARKS_TITLE = 'Landmarks';\nexport const EPUB_LANDMARKS_TOC_ENTRY = TOC_TITLE;\nexport const EPUB_LANDMARKS_COVER_ENTRY = 'Cover Page';\n\nexport const CMYK_RESERVE_MAP_FILENAME = 'cmyk-reserve-map.json';\nexport const EMPTY_DATA_URI = 'data:,';\nexport const VIEWER_ROOT_PATH = '/__vivliostyle-viewer';\n\nexport const CONTAINER_URL = 'ghcr.io/vivliostyle/cli';\nexport const CONTAINER_ROOT_DIR = '/data';\n// Special hostname to access host machine from container\n// https://docs.docker.com/desktop/features/networking/#use-cases-and-workarounds\nexport const CONTAINER_LOCAL_HOSTNAME = 'host.docker.internal';\n\n// Don't write by hand! Instead, run `npm run generate:browser-versions` to update.\n// START DEFAULT_BROWSER_VERSIONS\n// prettier-ignore\nexport const DEFAULT_BROWSER_VERSIONS = {\n chrome: {\"linux\":\"146.0.7680.153\",\"linux_arm\":\"146.0.7680.153\",\"mac\":\"146.0.7680.153\",\"mac_arm\":\"146.0.7680.153\",\"win32\":\"146.0.7680.153\",\"win64\":\"146.0.7680.153\"},\n chromium: {\"linux\":\"1603217\",\"linux_arm\":\"1603215\",\"mac\":\"1603215\",\"mac_arm\":\"1603217\",\"win32\":\"1603213\",\"win64\":\"1603210\"},\n firefox: {\"linux\":\"stable_148.0.2\",\"linux_arm\":\"stable_148.0.2\",\"mac\":\"stable_148.0.2\",\"mac_arm\":\"stable_148.0.2\",\"win32\":\"stable_148.0.2\",\"win64\":\"stable_148.0.2\"},\n} as const;\n// END DEFAULT_BROWSER_VERSIONS\n\nexport const DEFAULT_CONFIG_FILENAME = 'vivliostyle.config.js';\nexport const DEFAULT_PROJECT_TITLE = 'My Title';\nexport const DEFAULT_PROJECT_AUTHOR = 'My Name';\n\nexport const TEMPLATE_SETTINGS = [\n {\n value: 'minimal',\n label: 'Minimal',\n hint: 'Use a minimal template with empty content',\n template: 'gh:vivliostyle/vivliostyle-cli/templates/minimal',\n },\n {\n value: 'basic',\n label: 'Basic',\n hint: 'Use a basic template with starter content',\n template: 'gh:vivliostyle/vivliostyle-cli/templates/basic',\n },\n {\n value: 'basic-ja',\n label: 'Basic (Japanese)',\n hint: 'Use a basic template with starter content in Japanese',\n template: 'gh:vivliostyle/vivliostyle-cli/templates/basic-ja',\n },\n] as const;\n\nexport const TEMPLATE_DEFAULT_PACKAGE_JSON = /* json */ `{\n \"name\": \"{{kebab title}}\",\n \"description\": \"{{proper title}}\",\n \"author\": \"{{author}}\",\n \"version\": \"0.0.0\",\n \"type\": \"module\",\n \"private\": true,\n \"scripts\": {\n \"build\": \"vivliostyle build\",\n \"preview\": \"vivliostyle preview\"\n },\n \"dependencies\": {\n \"@vivliostyle/cli\": \"{{cliVersion}}\"\n }\n}\n`;\n\nexport const TEMPLATE_DEFAULT_VIVLIOSTYLE_CONFIG_JS = /* js */ `// @ts-check\nimport { defineConfig } from '@vivliostyle/cli';\n\nexport default defineConfig({\n title: \"{{proper title}}\",\n author: \"{{author}}\",\n {{#if language}}\n language: \"{{language}}\",\n {{/if}}\n {{#if size}}\n size: \"{{size}}\",\n {{/if}}\n {{#if theme}}\n theme: {{json theme}},\n {{/if}}\n {{#if browser}}\n browser: \"{{browser.type}}{{#if browser.tag}}@{{browser.tag}}{{/if}}\",\n {{/if}}\n image: \"${CONTAINER_URL}:{{cliVersion}}\",\n entry: [\"manuscript.md\"],\n});\n`;\n\n// UNICODE LICENSE V3\n// https://github.com/unicode-org/cldr-json\nexport const LANGUAGES = {\n aa: 'Afar',\n ab: 'Abkhazian',\n af: 'Afrikaans',\n ak: 'Akan',\n am: 'Amharic',\n an: 'Aragonese',\n ar: 'Arabic',\n 'ar-001': 'Modern Standard Arabic',\n as: 'Assamese',\n az: 'Azerbaijani',\n ba: 'Bashkir',\n be: 'Belarusian',\n bg: 'Bulgarian',\n bm: 'Bambara',\n bn: 'Bangla',\n bo: 'Tibetan',\n br: 'Breton',\n bs: 'Bosnian',\n ca: 'Catalan',\n ce: 'Chechen',\n co: 'Corsican',\n cs: 'Czech',\n cu: 'Church Slavic',\n cv: 'Chuvash',\n cy: 'Welsh',\n da: 'Danish',\n de: 'German',\n 'de-AT': 'Austrian German',\n 'de-CH': 'Swiss High German',\n dv: 'Divehi',\n dz: 'Dzongkha',\n ee: 'Ewe',\n el: 'Greek',\n en: 'English',\n 'en-AU': 'Australian English',\n 'en-CA': 'Canadian English',\n 'en-GB': 'British English',\n 'en-US': 'American English',\n eo: 'Esperanto',\n es: 'Spanish',\n 'es-419': 'Latin American Spanish',\n 'es-ES': 'European Spanish',\n 'es-MX': 'Mexican Spanish',\n et: 'Estonian',\n eu: 'Basque',\n fa: 'Persian',\n 'fa-AF': 'Dari',\n ff: 'Fula',\n fi: 'Finnish',\n fo: 'Faroese',\n fr: 'French',\n 'fr-CA': 'Canadian French',\n 'fr-CH': 'Swiss French',\n fy: 'Western Frisian',\n ga: 'Irish',\n gd: 'Scottish Gaelic',\n gl: 'Galician',\n gn: 'Guarani',\n gu: 'Gujarati',\n gv: 'Manx',\n ha: 'Hausa',\n he: 'Hebrew',\n hi: 'Hindi',\n 'hi-Latn': 'Hindi (Latin)',\n hr: 'Croatian',\n ht: 'Haitian Creole',\n hu: 'Hungarian',\n hy: 'Armenian',\n ia: 'Interlingua',\n id: 'Indonesian',\n ie: 'Interlingue',\n ig: 'Igbo',\n ii: 'Sichuan Yi',\n io: 'Ido',\n is: 'Icelandic',\n it: 'Italian',\n iu: 'Inuktitut',\n ja: 'Japanese',\n jv: 'Javanese',\n ka: 'Georgian',\n ki: 'Kikuyu',\n kk: 'Kazakh',\n kl: 'Kalaallisut',\n km: 'Khmer',\n kn: 'Kannada',\n ko: 'Korean',\n ks: 'Kashmiri',\n ku: 'Kurdish',\n kw: 'Cornish',\n ky: 'Kyrgyz',\n la: 'Latin',\n lb: 'Luxembourgish',\n lg: 'Ganda',\n ln: 'Lingala',\n lo: 'Lao',\n lt: 'Lithuanian',\n lu: 'Luba-Katanga',\n lv: 'Latvian',\n mg: 'Malagasy',\n mi: 'Māori',\n mk: 'Macedonian',\n ml: 'Malayalam',\n mn: 'Mongolian',\n mr: 'Marathi',\n ms: 'Malay',\n mt: 'Maltese',\n my: 'Burmese',\n nb: 'Norwegian Bokmål',\n nd: 'North Ndebele',\n ne: 'Nepali',\n nl: 'Dutch',\n 'nl-BE': 'Flemish',\n nn: 'Norwegian Nynorsk',\n no: 'Norwegian',\n nr: 'South Ndebele',\n nv: 'Navajo',\n ny: 'Nyanja',\n oc: 'Occitan',\n om: 'Oromo',\n or: 'Odia',\n os: 'Ossetic',\n pa: 'Punjabi',\n pl: 'Polish',\n ps: 'Pashto',\n pt: 'Portuguese',\n 'pt-BR': 'Brazilian Portuguese',\n 'pt-PT': 'European Portuguese',\n qu: 'Quechua',\n rm: 'Romansh',\n rn: 'Rundi',\n ro: 'Romanian',\n 'ro-MD': 'Moldavian',\n ru: 'Russian',\n rw: 'Kinyarwanda',\n sa: 'Sanskrit',\n sc: 'Sardinian',\n sd: 'Sindhi',\n se: 'Northern Sami',\n sg: 'Sango',\n si: 'Sinhala',\n sk: 'Slovak',\n sl: 'Slovenian',\n sn: 'Shona',\n so: 'Somali',\n sq: 'Albanian',\n sr: 'Serbian',\n ss: 'Swati',\n st: 'Southern Sotho',\n su: 'Sundanese',\n sv: 'Swedish',\n sw: 'Swahili',\n 'sw-CD': 'Congo Swahili',\n ta: 'Tamil',\n te: 'Telugu',\n tg: 'Tajik',\n th: 'Thai',\n ti: 'Tigrinya',\n tk: 'Turkmen',\n tn: 'Tswana',\n to: 'Tongan',\n tr: 'Turkish',\n ts: 'Tsonga',\n tt: 'Tatar',\n ug: 'Uyghur',\n uk: 'Ukrainian',\n ur: 'Urdu',\n uz: 'Uzbek',\n ve: 'Venda',\n vi: 'Vietnamese',\n vo: 'Volapük',\n wa: 'Walloon',\n wo: 'Wolof',\n xh: 'Xhosa',\n yi: 'Yiddish',\n yo: 'Yoruba',\n za: 'Zhuang',\n zh: 'Chinese',\n 'zh-Hans': 'Simplified Chinese',\n 'zh-Hant': 'Traditional Chinese',\n zu: 'Zulu',\n};\n"],"mappings":"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J,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,IAAI;AACN;","names":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
CONTAINER_URL,
|
|
3
2
|
cliVersion
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VAPIKX4A.js";
|
|
4
|
+
import {
|
|
5
|
+
CONTAINER_URL
|
|
6
|
+
} from "./chunk-DK3HFVHX.js";
|
|
5
7
|
|
|
6
8
|
// src/config/schema.ts
|
|
7
9
|
import { satisfies as semverSatisfies } from "semver";
|
|
@@ -178,7 +180,7 @@ var OutputFormat = v.union([
|
|
|
178
180
|
v.literal("webpub")
|
|
179
181
|
]);
|
|
180
182
|
var RenderMode = v.union([v.literal("local"), v.literal("docker")]);
|
|
181
|
-
var
|
|
183
|
+
var RGBValueObjectSchema = v.pipe(
|
|
182
184
|
v.object({
|
|
183
185
|
r: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(1e4)),
|
|
184
186
|
g: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(1e4)),
|
|
@@ -186,6 +188,15 @@ var RGBValueSchema = v.pipe(
|
|
|
186
188
|
}),
|
|
187
189
|
v.title("RGBValue")
|
|
188
190
|
);
|
|
191
|
+
var HexColorSchema = v.pipe(
|
|
192
|
+
v.string(),
|
|
193
|
+
v.regex(
|
|
194
|
+
/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,
|
|
195
|
+
'Must be a hex color (e.g. "#ff0000", "#f00", "#ff000080", "#f008")'
|
|
196
|
+
),
|
|
197
|
+
v.title("HexColor")
|
|
198
|
+
);
|
|
199
|
+
var RGBValueSchema = v.union([RGBValueObjectSchema, HexColorSchema]);
|
|
189
200
|
var CMYKValueSchema = v.pipe(
|
|
190
201
|
v.object({
|
|
191
202
|
c: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(1e4)),
|
|
@@ -195,15 +206,24 @@ var CMYKValueSchema = v.pipe(
|
|
|
195
206
|
}),
|
|
196
207
|
v.title("CMYKValue")
|
|
197
208
|
);
|
|
198
|
-
var
|
|
209
|
+
var CmykMapEntrySchema = v.tuple([RGBValueSchema, CMYKValueSchema]);
|
|
199
210
|
var CmykConfigSchema = v.pipe(
|
|
200
211
|
v.partial(
|
|
201
212
|
v.object({
|
|
202
213
|
overrideMap: v.pipe(
|
|
203
|
-
v.array(
|
|
214
|
+
v.array(CmykMapEntrySchema),
|
|
204
215
|
v.description($`
|
|
205
216
|
Custom RGB to CMYK color mapping.
|
|
206
|
-
Each entry is a tuple of [
|
|
217
|
+
Each entry is a tuple of [rgb, {c, m, y, k}].
|
|
218
|
+
RGB can be an object {r, g, b} with integers (0-10000) or a hex color string (e.g. "#ff0000").
|
|
219
|
+
`)
|
|
220
|
+
),
|
|
221
|
+
reserveMap: v.pipe(
|
|
222
|
+
v.array(CmykMapEntrySchema),
|
|
223
|
+
v.description($`
|
|
224
|
+
Pre-register RGB to CMYK color mappings for use in SVG or other non-CSS contexts.
|
|
225
|
+
Each entry is a tuple of [rgb, {c, m, y, k}].
|
|
226
|
+
RGB can be an object {r, g, b} with integers (0-10000) or a hex color string (e.g. "#ff0000").
|
|
207
227
|
`)
|
|
208
228
|
),
|
|
209
229
|
warnUnmapped: v.pipe(
|
|
@@ -340,6 +360,16 @@ var VfmReplaceRule = v.looseObject({
|
|
|
340
360
|
})
|
|
341
361
|
)
|
|
342
362
|
});
|
|
363
|
+
var VfmFootnoteMode = v.union([
|
|
364
|
+
v.literal("pandoc"),
|
|
365
|
+
v.literal("dpub"),
|
|
366
|
+
v.literal("gcpm")
|
|
367
|
+
]);
|
|
368
|
+
var VfmFootnoteOptions = v.union([
|
|
369
|
+
VfmFootnoteMode,
|
|
370
|
+
// Use v.looseObject to allow unknown keys in future VFM versions
|
|
371
|
+
v.looseObject({ mode: VfmFootnoteMode })
|
|
372
|
+
]);
|
|
343
373
|
var BrowserType = v.union([
|
|
344
374
|
v.literal("chrome"),
|
|
345
375
|
v.literal("chromium"),
|
|
@@ -551,6 +581,12 @@ var VfmConfig = v.pipe(
|
|
|
551
581
|
v.description($`
|
|
552
582
|
Assign ID to figcaption instead of img/code.
|
|
553
583
|
`)
|
|
584
|
+
),
|
|
585
|
+
footnote: v.pipe(
|
|
586
|
+
VfmFootnoteOptions,
|
|
587
|
+
v.description($`
|
|
588
|
+
Footnote output mode. Default is \`'pandoc'\` (endnote section).
|
|
589
|
+
`)
|
|
554
590
|
)
|
|
555
591
|
})
|
|
556
592
|
),
|
|
@@ -964,7 +1000,11 @@ var VivliostyleInlineConfigWithoutChecks = v.partial(
|
|
|
964
1000
|
`)
|
|
965
1001
|
),
|
|
966
1002
|
theme: v.pipe(
|
|
967
|
-
|
|
1003
|
+
v.union([
|
|
1004
|
+
ThemeSpecifier,
|
|
1005
|
+
v.literal(false)
|
|
1006
|
+
// Explicitly disable theme installation
|
|
1007
|
+
]),
|
|
968
1008
|
v.description($`
|
|
969
1009
|
Theme path or package name.
|
|
970
1010
|
`)
|
|
@@ -1004,13 +1044,13 @@ var VivliostyleInlineConfigWithoutChecks = v.partial(
|
|
|
1004
1044
|
style: v.pipe(
|
|
1005
1045
|
ValidString,
|
|
1006
1046
|
v.description($`
|
|
1007
|
-
Additional stylesheet
|
|
1047
|
+
Additional stylesheet for Vivliostyle viewer.
|
|
1008
1048
|
`)
|
|
1009
1049
|
),
|
|
1010
1050
|
userStyle: v.pipe(
|
|
1011
1051
|
ValidString,
|
|
1012
1052
|
v.description($`
|
|
1013
|
-
|
|
1053
|
+
Additional user stylesheet for Vivliostyle viewer.
|
|
1014
1054
|
`)
|
|
1015
1055
|
),
|
|
1016
1056
|
singleDoc: v.pipe(
|
|
@@ -1222,6 +1262,12 @@ var VivliostyleInlineConfigWithoutChecks = v.partial(
|
|
|
1222
1262
|
Create a Vivliostyle config file without generating project template files.
|
|
1223
1263
|
`)
|
|
1224
1264
|
),
|
|
1265
|
+
installDependencies: v.pipe(
|
|
1266
|
+
v.boolean(),
|
|
1267
|
+
v.description($`
|
|
1268
|
+
Install dependencies after creating a project.
|
|
1269
|
+
`)
|
|
1270
|
+
),
|
|
1225
1271
|
stdin: v.pipe(
|
|
1226
1272
|
v.custom(() => true),
|
|
1227
1273
|
v.metadata({
|
|
@@ -1437,6 +1483,8 @@ export {
|
|
|
1437
1483
|
RenderMode,
|
|
1438
1484
|
OutputConfig,
|
|
1439
1485
|
VfmReplaceRule,
|
|
1486
|
+
VfmFootnoteMode,
|
|
1487
|
+
VfmFootnoteOptions,
|
|
1440
1488
|
BrowserType,
|
|
1441
1489
|
ReadingProgression,
|
|
1442
1490
|
LogLevel,
|
|
@@ -1454,4 +1502,4 @@ export {
|
|
|
1454
1502
|
VivliostyleTemplateMetadata,
|
|
1455
1503
|
VivliostylePackageMetadata
|
|
1456
1504
|
};
|
|
1457
|
-
//# sourceMappingURL=chunk-
|
|
1505
|
+
//# sourceMappingURL=chunk-J2YGULSR.js.map
|