@vivliostyle/cli 8.0.1 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +90 -88
  2. package/dist/build.d.ts +1 -5
  3. package/dist/build.d.ts.map +1 -1
  4. package/dist/build.js +80 -26
  5. package/dist/build.js.map +1 -1
  6. package/dist/commands/build.js +2 -0
  7. package/dist/commands/build.js.map +1 -1
  8. package/dist/commands/build.parser.d.ts +1 -1
  9. package/dist/commands/build.parser.d.ts.map +1 -1
  10. package/dist/commands/build.parser.js +7 -3
  11. package/dist/commands/build.parser.js.map +1 -1
  12. package/dist/commands/init.js +1 -0
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/init.parser.d.ts.map +1 -1
  15. package/dist/commands/init.parser.js +5 -2
  16. package/dist/commands/init.parser.js.map +1 -1
  17. package/dist/commands/preview.js +2 -0
  18. package/dist/commands/preview.js.map +1 -1
  19. package/dist/commands/preview.parser.d.ts.map +1 -1
  20. package/dist/commands/preview.parser.js +6 -2
  21. package/dist/commands/preview.parser.js.map +1 -1
  22. package/dist/const.d.ts +8 -2
  23. package/dist/const.d.ts.map +1 -1
  24. package/dist/const.js +27 -5
  25. package/dist/const.js.map +1 -1
  26. package/dist/container.js +5 -6
  27. package/dist/container.js.map +1 -1
  28. package/dist/init.d.ts +1 -0
  29. package/dist/init.d.ts.map +1 -1
  30. package/dist/init.js +4 -3
  31. package/dist/init.js.map +1 -1
  32. package/dist/{config.d.ts → input/config.d.ts} +24 -13
  33. package/dist/input/config.d.ts.map +1 -0
  34. package/dist/{config.js → input/config.js} +103 -86
  35. package/dist/input/config.js.map +1 -0
  36. package/dist/{input.d.ts → input/input-types.d.ts} +1 -1
  37. package/dist/input/input-types.d.ts.map +1 -0
  38. package/dist/{input.js → input/input-types.js} +3 -3
  39. package/dist/input/input-types.js.map +1 -0
  40. package/dist/output/epub.d.ts +10 -0
  41. package/dist/output/epub.d.ts.map +1 -0
  42. package/dist/output/epub.js +542 -0
  43. package/dist/output/epub.js.map +1 -0
  44. package/dist/{output.d.ts → output/output-types.d.ts} +8 -3
  45. package/dist/output/output-types.d.ts.map +1 -0
  46. package/dist/{output.js → output/output-types.js} +7 -4
  47. package/dist/output/output-types.js.map +1 -0
  48. package/dist/{postprocess.d.ts → output/pdf-postprocess.d.ts} +4 -4
  49. package/dist/output/pdf-postprocess.d.ts.map +1 -0
  50. package/dist/{postprocess.js → output/pdf-postprocess.js} +7 -8
  51. package/dist/output/pdf-postprocess.js.map +1 -0
  52. package/dist/{pdf.d.ts → output/pdf.d.ts} +3 -3
  53. package/dist/output/pdf.d.ts.map +1 -0
  54. package/dist/{pdf.js → output/pdf.js} +12 -13
  55. package/dist/output/pdf.js.map +1 -0
  56. package/dist/output/webbook.d.ts +21 -0
  57. package/dist/output/webbook.d.ts.map +1 -0
  58. package/dist/output/webbook.js +251 -0
  59. package/dist/output/webbook.js.map +1 -0
  60. package/dist/preview.d.ts +1 -1
  61. package/dist/preview.d.ts.map +1 -1
  62. package/dist/preview.js +7 -6
  63. package/dist/preview.js.map +1 -1
  64. package/dist/{builder.d.ts → processor/compile.d.ts} +9 -6
  65. package/dist/processor/compile.d.ts.map +1 -0
  66. package/dist/{builder.js → processor/compile.js} +81 -76
  67. package/dist/processor/compile.js.map +1 -0
  68. package/dist/processor/html.d.ts +59 -0
  69. package/dist/processor/html.d.ts.map +1 -0
  70. package/dist/processor/html.js +294 -0
  71. package/dist/processor/html.js.map +1 -0
  72. package/dist/processor/markdown.d.ts.map +1 -0
  73. package/dist/processor/markdown.js.map +1 -0
  74. package/dist/{theme.d.ts → processor/theme.d.ts} +1 -1
  75. package/dist/processor/theme.d.ts.map +1 -0
  76. package/dist/{theme.js → processor/theme.js} +6 -8
  77. package/dist/processor/theme.js.map +1 -0
  78. package/dist/schema/pubManifest.d.ts.map +1 -1
  79. package/dist/schema/pubManifest.js +19 -21
  80. package/dist/schema/pubManifest.js.map +1 -1
  81. package/dist/schema/vivliostyle.d.ts.map +1 -1
  82. package/dist/schema/vivliostyle.js +3 -5
  83. package/dist/schema/vivliostyle.js.map +1 -1
  84. package/dist/server.d.ts.map +1 -1
  85. package/dist/server.js +18 -16
  86. package/dist/server.js.map +1 -1
  87. package/dist/util.d.ts +14 -0
  88. package/dist/util.d.ts.map +1 -1
  89. package/dist/util.js +111 -17
  90. package/dist/util.js.map +1 -1
  91. package/package.json +31 -15
  92. package/types/custom.d.ts +4 -0
  93. package/types/jsdom.d.ts +14 -0
  94. package/vendors/README.md +10 -0
  95. package/vendors/build.js +27 -0
  96. package/vendors/index.d.ts +4 -0
  97. package/vendors/index.src.js +9 -0
  98. package/dist/builder.d.ts.map +0 -1
  99. package/dist/builder.js.map +0 -1
  100. package/dist/config.d.ts.map +0 -1
  101. package/dist/config.js.map +0 -1
  102. package/dist/epub.d.ts +0 -6
  103. package/dist/epub.d.ts.map +0 -1
  104. package/dist/epub.js +0 -18
  105. package/dist/epub.js.map +0 -1
  106. package/dist/html.d.ts +0 -17
  107. package/dist/html.d.ts.map +0 -1
  108. package/dist/html.js +0 -60
  109. package/dist/html.js.map +0 -1
  110. package/dist/input.d.ts.map +0 -1
  111. package/dist/input.js.map +0 -1
  112. package/dist/markdown.d.ts.map +0 -1
  113. package/dist/markdown.js.map +0 -1
  114. package/dist/output.d.ts.map +0 -1
  115. package/dist/output.js.map +0 -1
  116. package/dist/pdf.d.ts.map +0 -1
  117. package/dist/pdf.js.map +0 -1
  118. package/dist/postprocess.d.ts.map +0 -1
  119. package/dist/postprocess.js.map +0 -1
  120. package/dist/theme.d.ts.map +0 -1
  121. package/dist/theme.js.map +0 -1
  122. package/dist/webbook.d.ts +0 -7
  123. package/dist/webbook.d.ts.map +0 -1
  124. package/dist/webbook.js +0 -99
  125. package/dist/webbook.js.map +0 -1
  126. /package/dist/{markdown.d.ts → processor/markdown.d.ts} +0 -0
  127. /package/dist/{markdown.js → processor/markdown.js} +0 -0
@@ -1,24 +1,15 @@
1
- import AjvModule from 'ajv';
2
- import AjvFormatsModule from 'ajv-formats';
3
- import betterAjvErrors from 'better-ajv-errors';
4
1
  import chalk from 'chalk';
5
2
  import cheerio from 'cheerio';
6
3
  import fs from 'fs';
7
- import path from 'upath';
8
4
  import { pathToFileURL } from 'url';
9
- import { getExecutableBrowserPath } from './browser.js';
10
- import { MANIFEST_FILENAME, TOC_FILENAME, TOC_TITLE } from './const.js';
11
- import { CONTAINER_IMAGE } from './container.js';
12
- import { openEpubToTmpDirectory } from './epub.js';
13
- import { detectInputFormat, detectManuscriptMediaType, } from './input.js';
14
- import { readMarkdownMetadata } from './markdown.js';
15
- import { checkOutputFormat, checkPreflightMode, checkRenderMode, detectOutputFormat, } from './output.js';
16
- import { vivliostyleConfigSchema } from './schema/vivliostyle.js';
17
- import { parsePackageName } from './theme.js';
18
- import { cwd, debug, DetailError, filterRelevantAjvErrors, isUrlString, log, logWarn, readJSON, statFileSync, touchTmpFile, } from './util.js';
19
- // FIXME: https://github.com/ajv-validator/ajv/issues/2047
20
- const Ajv = AjvModule.default;
21
- const addFormats = AjvFormatsModule.default;
5
+ import { getExecutableBrowserPath } from '../browser.js';
6
+ import { COVER_HTML_FILENAME, EPUB_OUTPUT_VERSION, MANIFEST_FILENAME, TOC_FILENAME, TOC_TITLE, } from '../const.js';
7
+ import { CONTAINER_IMAGE } from '../container.js';
8
+ import { detectInputFormat, detectManuscriptMediaType, } from '../input/input-types.js';
9
+ import { checkOutputFormat, checkPreflightMode, checkRenderMode, detectOutputFormat, } from '../output/output-types.js';
10
+ import { readMarkdownMetadata } from '../processor/markdown.js';
11
+ import { parsePackageName } from '../processor/theme.js';
12
+ import { DetailError, assertVivliostyleConfigSchema, cwd, debug, isUrlString, log, logWarn, openEpubToTmpDirectory, readJSON, statFileSync, touchTmpFile, upath, } from '../util.js';
22
13
  const DEFAULT_TIMEOUT = 2 * 60 * 1000; // 2 minutes
23
14
  const DEFAULT_ASSETS = [
24
15
  '**/*.png',
@@ -37,7 +28,7 @@ export function validateTimeoutFlag(val) {
37
28
  return Number.isFinite(+val) && +val > 0 ? +val * 1000 : DEFAULT_TIMEOUT;
38
29
  }
39
30
  export function contextResolve(context, loc) {
40
- return loc && path.resolve(context, loc);
31
+ return loc && upath.resolve(context, loc);
41
32
  }
42
33
  function normalizeEntry(e) {
43
34
  if (typeof e === 'object') {
@@ -52,19 +43,19 @@ export function parseTheme({ theme, context, workspaceDir, themesDir, }) {
52
43
  if (isUrlString(specifier)) {
53
44
  return {
54
45
  type: 'uri',
55
- name: path.basename(specifier),
46
+ name: upath.basename(specifier),
56
47
  location: specifier,
57
48
  };
58
49
  }
59
50
  // bare .css file
60
- const stylePath = path.resolve(context, specifier);
51
+ const stylePath = upath.resolve(context, specifier);
61
52
  if (fs.existsSync(stylePath) && stylePath.endsWith('.css')) {
62
- const sourceRelPath = path.relative(context, stylePath);
53
+ const sourceRelPath = upath.relative(context, stylePath);
63
54
  return {
64
55
  type: 'file',
65
- name: path.basename(specifier),
56
+ name: upath.basename(specifier),
66
57
  source: stylePath,
67
- location: path.resolve(workspaceDir, sourceRelPath),
58
+ location: upath.resolve(workspaceDir, sourceRelPath),
68
59
  };
69
60
  }
70
61
  // node_modules, local pkg
@@ -80,7 +71,7 @@ export function parseTheme({ theme, context, workspaceDir, themesDir, }) {
80
71
  let name = parsed.name;
81
72
  let resolvedSpecifier = specifier;
82
73
  if (parsed.type === 'directory' && parsed.fetchSpec) {
83
- const pkgJsonPath = path.join(parsed.fetchSpec, 'package.json');
74
+ const pkgJsonPath = upath.join(parsed.fetchSpec, 'package.json');
84
75
  if (fs.existsSync(pkgJsonPath)) {
85
76
  const packageJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
86
77
  name = packageJson.name;
@@ -94,7 +85,7 @@ export function parseTheme({ theme, context, workspaceDir, themesDir, }) {
94
85
  type: 'package',
95
86
  name,
96
87
  specifier: resolvedSpecifier,
97
- location: path.join(themesDir, 'packages', name),
88
+ location: upath.join(themesDir, 'packages', name),
98
89
  importPath,
99
90
  };
100
91
  }
@@ -116,7 +107,7 @@ function parsePageSize(size) {
116
107
  }
117
108
  }
118
109
  function parseFileMetadata({ type, sourcePath, workspaceDir, themesDir, }) {
119
- const sourceDir = path.dirname(sourcePath);
110
+ const sourceDir = upath.dirname(sourcePath);
120
111
  let title;
121
112
  let themes;
122
113
  if (type === 'text/markdown') {
@@ -145,7 +136,7 @@ export async function collectVivliostyleConfig(cliFlags) {
145
136
  let config;
146
137
  let jsonRaw;
147
138
  try {
148
- if (path.extname(configPath) === '.json') {
139
+ if (upath.extname(configPath) === '.json') {
149
140
  jsonRaw = fs.readFileSync(configPath, 'utf8');
150
141
  config = JSON.parse(jsonRaw);
151
142
  }
@@ -157,28 +148,25 @@ export async function collectVivliostyleConfig(cliFlags) {
157
148
  const thrownError = error;
158
149
  throw new DetailError(`An error occurred on loading a config file: ${configPath}`, thrownError.stack ?? thrownError.message);
159
150
  }
160
- const ajv = new Ajv({ strict: false });
161
- addFormats(ajv);
162
- const validate = ajv.compile(vivliostyleConfigSchema);
163
- const valid = validate(config);
164
- if (!valid) {
165
- const message = `Validation of vivliostyle.config failed. Please check the schema: ${configPath}`;
166
- const detailMessage = validate.errors &&
167
- betterAjvErrors(vivliostyleConfigSchema, config, filterRelevantAjvErrors(validate.errors), typeof jsonRaw === 'string' ? { json: jsonRaw } : { indent: 2 });
168
- throw detailMessage
169
- ? new DetailError(message, detailMessage)
170
- : new Error(message);
151
+ try {
152
+ assertVivliostyleConfigSchema(config, typeof jsonRaw === 'string' ? { json: jsonRaw } : { indent: 2 });
153
+ }
154
+ catch (error) {
155
+ const thrownError = error;
156
+ throw new DetailError(`Validation of vivliostyle.config failed. Please check the schema: ${configPath}`, typeof thrownError === 'string'
157
+ ? thrownError
158
+ : thrownError.stack ?? thrownError.message);
171
159
  }
172
160
  return config;
173
161
  };
174
162
  let configEntry = {};
175
163
  let vivliostyleConfigPath;
176
164
  if (cliFlags.configPath) {
177
- vivliostyleConfigPath = path.resolve(cwd, cliFlags.configPath);
165
+ vivliostyleConfigPath = upath.resolve(cwd, cliFlags.configPath);
178
166
  }
179
167
  else {
180
168
  vivliostyleConfigPath = ['.js', '.mjs', '.cjs']
181
- .map((ext) => path.join(cwd, `vivliostyle.config${ext}`))
169
+ .map((ext) => upath.join(cwd, `vivliostyle.config${ext}`))
182
170
  .find((p) => fs.existsSync(p));
183
171
  }
184
172
  // let vivliostyleConfig: VivliostyleConfigSchema | undefined;
@@ -189,10 +177,10 @@ export async function collectVivliostyleConfig(cliFlags) {
189
177
  };
190
178
  }
191
179
  else if (cliFlags.input &&
192
- path.basename(cliFlags.input).startsWith('vivliostyle.config')) {
180
+ upath.basename(cliFlags.input).startsWith('vivliostyle.config')) {
193
181
  // Load an input argument as a Vivliostyle config
194
182
  try {
195
- const inputPath = path.resolve(cwd, cliFlags.input);
183
+ const inputPath = upath.resolve(cwd, cliFlags.input);
196
184
  const inputConfig = await load(inputPath);
197
185
  cliFlags = {
198
186
  ...cliFlags,
@@ -209,6 +197,9 @@ export async function collectVivliostyleConfig(cliFlags) {
209
197
  logWarn(chalk.yellowBright("'--executable-chromium' option was deprecated and will be removed in a future release. Please replace with '--executable-browser' option."));
210
198
  cliFlags.executableBrowser = cliFlags.executableChromium;
211
199
  }
200
+ if (cliFlags.verbose) {
201
+ logWarn(chalk.yellowBright("'--verbose' option was deprecated and will be removed in a future release. Please replace with '--log-level verbose' option."));
202
+ }
212
203
  return {
213
204
  cliFlags,
214
205
  ...configEntry,
@@ -224,20 +215,20 @@ export async function mergeConfig(cliFlags, config, context) {
224
215
  workspaceDir = entryContextDir = cwd;
225
216
  }
226
217
  else {
227
- entryContextDir = path.resolve(cliFlags.input && !config
228
- ? path.dirname(path.resolve(context, cliFlags.input))
218
+ entryContextDir = upath.resolve(cliFlags.input && !config
219
+ ? upath.dirname(upath.resolve(context, cliFlags.input))
229
220
  : contextResolve(context, config?.entryContext) ?? context);
230
221
  workspaceDir =
231
222
  contextResolve(context, config?.workspaceDir) ?? entryContextDir;
232
223
  }
233
- const themesDir = path.join(workspaceDir, 'themes');
224
+ const themesDir = upath.join(workspaceDir, 'themes');
234
225
  const includeAssets = config?.includeAssets
235
226
  ? Array.isArray(config.includeAssets)
236
227
  ? config.includeAssets
237
228
  : [config.includeAssets]
238
229
  : DEFAULT_ASSETS;
239
- const language = cliFlags.language ?? config?.language ?? null;
240
- const readingProgression = config?.readingProgression ?? undefined;
230
+ const language = cliFlags.language ?? config?.language ?? undefined;
231
+ const readingProgression = cliFlags.readingProgression ?? config?.readingProgression ?? undefined;
241
232
  const sizeFlag = cliFlags.size ?? config?.size;
242
233
  const size = sizeFlag ? parsePageSize(sizeFlag) : undefined;
243
234
  const cropMarks = cliFlags.cropMarks ?? false;
@@ -264,7 +255,6 @@ export async function mergeConfig(cliFlags, config, context) {
264
255
  hardLineBreaks: config?.vfm?.hardLineBreaks ?? false,
265
256
  disableFormatHtml: config?.vfm?.disableFormatHtml ?? false,
266
257
  };
267
- const verbose = cliFlags.verbose ?? false;
268
258
  const timeout = cliFlags.timeout ?? config?.timeout ?? DEFAULT_TIMEOUT;
269
259
  const sandbox = cliFlags.sandbox ?? true;
270
260
  const browserType = cliFlags.browser ?? config?.browser ?? 'chromium';
@@ -273,6 +263,9 @@ export async function mergeConfig(cliFlags, config, context) {
273
263
  const httpServer = cliFlags.http ?? config?.http ?? false;
274
264
  const viewer = cliFlags.viewer ?? config?.viewer ?? undefined;
275
265
  const viewerParam = cliFlags.viewerParam ?? config?.viewerParam ?? undefined;
266
+ const logLevel = cliFlags.logLevel ??
267
+ ((cliFlags.verbose && 'verbose') || undefined) ??
268
+ 'silent';
276
269
  const rootThemes = cliFlags.theme
277
270
  ? [
278
271
  parseTheme({
@@ -296,16 +289,23 @@ export async function mergeConfig(cliFlags, config, context) {
296
289
  return cliFlags.targets.map(({ path: outputPath, format }) => {
297
290
  if (format === 'pdf') {
298
291
  return {
299
- path: path.resolve(outputPath),
292
+ path: upath.resolve(outputPath),
300
293
  format,
301
294
  renderMode,
302
295
  preflight,
303
296
  preflightOption,
304
297
  };
305
298
  }
299
+ else if (format === 'epub') {
300
+ return {
301
+ path: upath.resolve(outputPath),
302
+ format,
303
+ version: EPUB_OUTPUT_VERSION,
304
+ };
305
+ }
306
306
  else {
307
307
  return {
308
- path: path.resolve(outputPath),
308
+ path: upath.resolve(outputPath),
309
309
  format,
310
310
  };
311
311
  }
@@ -314,7 +314,7 @@ export async function mergeConfig(cliFlags, config, context) {
314
314
  if (config?.output) {
315
315
  return (Array.isArray(config.output) ? config.output : [config.output]).map((target) => {
316
316
  const targetObj = typeof target === 'string' ? { path: target } : target;
317
- const outputPath = path.resolve(context, targetObj.path);
317
+ const outputPath = upath.resolve(context, targetObj.path);
318
318
  const format = targetObj.format ?? detectOutputFormat(outputPath);
319
319
  if (!checkOutputFormat(format)) {
320
320
  throw new Error(`Unknown format: ${format}`);
@@ -347,7 +347,7 @@ export async function mergeConfig(cliFlags, config, context) {
347
347
  const filename = config?.title ? `${config.title}.pdf` : 'output.pdf';
348
348
  return [
349
349
  {
350
- path: path.resolve(context, filename),
350
+ path: upath.resolve(context, filename),
351
351
  format: 'pdf',
352
352
  renderMode,
353
353
  preflight,
@@ -376,7 +376,6 @@ export async function mergeConfig(cliFlags, config, context) {
376
376
  readingProgression,
377
377
  vfmOptions,
378
378
  cover,
379
- verbose,
380
379
  timeout,
381
380
  sandbox,
382
381
  executableBrowser,
@@ -385,6 +384,7 @@ export async function mergeConfig(cliFlags, config, context) {
385
384
  httpServer,
386
385
  viewer,
387
386
  viewerParam,
387
+ logLevel,
388
388
  };
389
389
  if (!cliFlags.input && !config) {
390
390
  throw new Error('No input is set. Please set an appropriate entry or a Vivliostyle config file.');
@@ -400,6 +400,8 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
400
400
  debug('entering single entry config mode');
401
401
  let sourcePath;
402
402
  let input;
403
+ const title = cliFlags.title ?? config?.title;
404
+ const author = cliFlags.author ?? config?.author;
403
405
  const workspaceDir = otherConfig.workspaceDir;
404
406
  const entries = [];
405
407
  const exportAliases = [];
@@ -409,7 +411,7 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
409
411
  input = { format: 'webbook', entry: sourcePath };
410
412
  }
411
413
  else {
412
- sourcePath = path.resolve(cliFlags.input);
414
+ sourcePath = upath.resolve(cliFlags.input);
413
415
  input = detectInputFormat(sourcePath);
414
416
  // Check file exists
415
417
  statFileSync(sourcePath);
@@ -418,9 +420,9 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
418
420
  // Single input file; create temporary file
419
421
  const type = detectManuscriptMediaType(sourcePath);
420
422
  const metadata = parseFileMetadata({ type, sourcePath, workspaceDir });
421
- const relDir = path.relative(otherConfig.entryContextDir, path.dirname(sourcePath));
422
- const target = path
423
- .resolve(workspaceDir, relDir, `${tmpPrefix}${path.basename(sourcePath)}`)
423
+ const relDir = upath.relative(otherConfig.entryContextDir, upath.dirname(sourcePath));
424
+ const target = upath
425
+ .resolve(workspaceDir, relDir, `${tmpPrefix}${upath.basename(sourcePath)}`)
424
426
  .replace(/\.md$/, '.html');
425
427
  await touchTmpFile(target);
426
428
  const themes = metadata.themes ?? [...otherConfig.rootThemes];
@@ -434,35 +436,41 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
434
436
  });
435
437
  exportAliases.push({
436
438
  source: target,
437
- target: path.resolve(path.dirname(target), path.basename(sourcePath).replace(/\.md$/, '.html')),
439
+ target: upath.resolve(upath.dirname(target), upath.basename(sourcePath).replace(/\.md$/, '.html')),
438
440
  });
439
441
  }
442
+ let fallbackTitle;
440
443
  const manifestDeclaration = await (async () => {
441
444
  if (input.format === 'markdown') {
442
445
  // create temporary manifest file
443
- const manifestPath = path.resolve(workspaceDir, `${tmpPrefix}${MANIFEST_FILENAME}`);
446
+ const manifestPath = upath.resolve(workspaceDir, `${tmpPrefix}${MANIFEST_FILENAME}`);
444
447
  await touchTmpFile(manifestPath);
445
448
  exportAliases.push({
446
449
  source: manifestPath,
447
- target: path.resolve(workspaceDir, MANIFEST_FILENAME),
450
+ target: upath.resolve(workspaceDir, MANIFEST_FILENAME),
448
451
  });
449
- return {
450
- manifestPath,
451
- manifestAutoGenerate: {
452
- title: cliFlags.title ??
453
- config?.title ??
454
- (entries.length === 1 && entries[0].title
455
- ? entries[0].title
456
- : path.basename(sourcePath)),
457
- author: cliFlags.author ?? config?.author ?? '',
458
- },
459
- };
452
+ fallbackTitle =
453
+ entries.length === 1 && entries[0].title
454
+ ? entries[0].title
455
+ : upath.basename(sourcePath);
456
+ return { manifestPath, needToGenerateManifest: true };
460
457
  }
461
458
  else if (input.format === 'html' || input.format === 'webbook') {
462
- return { webbookEntryPath: input.entry };
459
+ const url = isUrlString(input.entry)
460
+ ? new URL(input.entry)
461
+ : pathToFileURL(input.entry);
462
+ // Ensures trailing slash or explicit HTML extensions
463
+ if ((url.protocol === 'http:' || url.protocol === 'https:') &&
464
+ !url.pathname.endsWith('/') &&
465
+ !/\.html?$/.test(url.pathname)) {
466
+ url.pathname = `${url.pathname}/`;
467
+ }
468
+ return {
469
+ webbookEntryUrl: url.href,
470
+ };
463
471
  }
464
472
  else if (input.format === 'pub-manifest') {
465
- return { manifestPath: input.entry, manifestAutoGenerate: null };
473
+ return { manifestPath: input.entry };
466
474
  }
467
475
  else if (input.format === 'epub-opf') {
468
476
  return { epubOpfPath: input.entry };
@@ -481,19 +489,22 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
481
489
  entries,
482
490
  input,
483
491
  exportAliases,
492
+ title: title || fallbackTitle,
493
+ author: author,
484
494
  };
485
495
  }
486
496
  async function composeProjectConfig(otherConfig, cliFlags, config, context) {
487
497
  debug('entering project config mode');
488
498
  const { entryContextDir, workspaceDir, themesDir, themeIndexes, rootThemes, outputs, } = otherConfig;
489
- const pkgJsonPath = path.resolve(entryContextDir, 'package.json');
499
+ const pkgJsonPath = upath.resolve(entryContextDir, 'package.json');
490
500
  const pkgJson = fs.existsSync(pkgJsonPath)
491
501
  ? readJSON(pkgJsonPath)
492
502
  : undefined;
493
503
  if (pkgJson) {
494
504
  debug('located package.json path', pkgJsonPath);
495
505
  }
496
- const autoGeneratedTocPath = path.resolve(workspaceDir, typeof config?.toc === 'string' ? config.toc : TOC_FILENAME);
506
+ const autoGeneratedTocPath = upath.resolve(workspaceDir, typeof config?.toc === 'string' ? config.toc : TOC_FILENAME);
507
+ const autoGeneratedCoverPah = upath.resolve(workspaceDir, COVER_HTML_FILENAME);
497
508
  const projectTitle = cliFlags.title ?? config?.title ?? pkgJson?.name;
498
509
  const projectAuthor = cliFlags.author ?? config?.author ?? pkgJson?.author;
499
510
  function parseEntry(entry) {
@@ -514,9 +525,9 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
514
525
  themes,
515
526
  };
516
527
  }
517
- const sourcePath = path.resolve(entryContextDir, entry.path); // abs
518
- const contextEntryPath = path.relative(entryContextDir, sourcePath); // rel
519
- const targetPath = path
528
+ const sourcePath = upath.resolve(entryContextDir, entry.path); // abs
529
+ const contextEntryPath = upath.relative(entryContextDir, sourcePath); // rel
530
+ const targetPath = upath
520
531
  .resolve(workspaceDir, contextEntryPath)
521
532
  .replace(/\.md$/, '.html');
522
533
  if (!isUrlString(sourcePath)) {
@@ -554,13 +565,13 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
554
565
  if (!entries.length) {
555
566
  throw new Error('The entry fields seems to be empty. Make sure your Vivliostyle configuration.');
556
567
  }
557
- let fallbackProjectTitle = '';
568
+ let fallbackProjectTitle;
558
569
  if (!projectTitle) {
559
570
  if (entries.length === 1 && entries[0].title) {
560
571
  fallbackProjectTitle = entries[0].title;
561
572
  }
562
573
  else {
563
- fallbackProjectTitle = path.basename(outputs[0].path);
574
+ fallbackProjectTitle = upath.basename(outputs[0].path);
564
575
  log(`\n${chalk.yellow('Could not find any appropriate publication title. We set ')}${chalk.bold.yellow(`"${fallbackProjectTitle}"`)}${chalk.yellow(' as a fallback.')}`);
565
576
  }
566
577
  }
@@ -572,19 +583,25 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
572
583
  themes: [...rootThemes],
573
584
  });
574
585
  }
586
+ if (config?.cover && !entries.find(({ rel }) => rel === 'cover')) {
587
+ entries.unshift({
588
+ rel: 'cover',
589
+ target: autoGeneratedCoverPah,
590
+ themes: [],
591
+ });
592
+ }
575
593
  return {
576
594
  ...otherConfig,
577
595
  entries,
578
596
  input: {
579
597
  format: 'pub-manifest',
580
- entry: path.join(workspaceDir, MANIFEST_FILENAME),
598
+ entry: upath.join(workspaceDir, MANIFEST_FILENAME),
581
599
  },
582
600
  exportAliases: [],
583
- manifestPath: path.join(workspaceDir, MANIFEST_FILENAME),
584
- manifestAutoGenerate: {
585
- title: projectTitle || fallbackProjectTitle,
586
- author: projectAuthor || '',
587
- },
601
+ manifestPath: upath.join(workspaceDir, MANIFEST_FILENAME),
602
+ title: projectTitle || fallbackProjectTitle,
603
+ author: projectAuthor,
604
+ needToGenerateManifest: true,
588
605
  };
589
606
  }
590
607
  export function checkUnusedCliFlags(config, cliFlags) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/input/config.ts"],"names":[],"mappings":"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"}
@@ -31,4 +31,4 @@ export declare const manuscriptMediaTypes: readonly ["text/markdown", "text/html
31
31
  export type ManuscriptMediaType = typeof manuscriptMediaTypes[number];
32
32
  export declare function detectManuscriptMediaType(entry: string): ManuscriptMediaType;
33
33
  export {};
34
- //# sourceMappingURL=input.d.ts.map
34
+ //# sourceMappingURL=input-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-types.d.ts","sourceRoot":"","sources":["../../src/input/input-types.ts"],"names":[],"mappings":"AAGA,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAClD,MAAM,EAAE,CAAC,CAAC;CACX;AAED,gCAAgC;AAChC,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,CAAC,UAAU,CAAC;IACvE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAgB,SAAQ,gBAAgB,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAa,SAAQ,gBAAgB,CAAC,SAAS,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4BAA4B;AAC5B,MAAM,WAAW,SAAU,SAAQ,gBAAgB,CAAC,MAAM,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAa,SAAQ,gBAAgB,CAAC,UAAU,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,SAAS,GACT,YAAY,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAc5D;AAED,eAAO,MAAM,oBAAoB,kEAIvB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEtE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAM5E"}
@@ -1,7 +1,7 @@
1
1
  import { lookup as mime } from 'mime-types';
2
- import path from 'upath';
2
+ import { upath } from '../util.js';
3
3
  export function detectInputFormat(entry) {
4
- const lowerCasedExt = path.extname(entry).toLowerCase();
4
+ const lowerCasedExt = upath.extname(entry).toLowerCase();
5
5
  if (lowerCasedExt === '.md' || lowerCasedExt === '.markdown') {
6
6
  return { format: 'markdown', entry };
7
7
  }
@@ -31,4 +31,4 @@ export function detectManuscriptMediaType(entry) {
31
31
  }
32
32
  throw new Error(`Invalid manuscript type ${mediaType} detected: ${entry}`);
33
33
  }
34
- //# sourceMappingURL=input.js.map
34
+ //# sourceMappingURL=input-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-types.js","sourceRoot":"","sources":["../../src/input/input-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA4CnC,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,IAAI,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,WAAW,EAAE;QAC5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACtC;SAAM,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,SAAS,EAAE;QACnE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;KAC1C;SAAM,IAAI,aAAa,KAAK,OAAO,EAAE;QACpC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KAClC;SAAM,IAAI,aAAa,KAAK,MAAM,EAAE;QACnC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KACtC;SAAM,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;QACtE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACrC;IACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,WAAW;IACX,uBAAuB;CACf,CAAC;AAGX,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAgC,CAAC,EAAE;QACnE,OAAO,SAAgC,CAAC;KACzC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,cAAc,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PublicationManifest } from '../schema/publication.schema.js';
2
+ export declare function exportEpub({ webpubDir, entryHtmlFile, entryContextUrl, manifest, target, epubVersion, }: {
3
+ webpubDir: string;
4
+ entryHtmlFile?: string;
5
+ entryContextUrl?: string;
6
+ manifest: PublicationManifest;
7
+ target: string;
8
+ epubVersion: '3.0';
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=epub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epub.d.ts","sourceRoot":"","sources":["../../src/output/epub.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAKV,mBAAmB,EAEpB,MAAM,iCAAiC,CAAC;AAkFzC,wBAAsB,UAAU,CAAC,EAC/B,SAAS,EACT,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,EACN,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,KAAK,CAAC;CACpB,iBA0OA"}