@vivliostyle/cli 8.0.1 → 8.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) 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 +7 -2
  23. package/dist/const.d.ts.map +1 -1
  24. package/dist/const.js +26 -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} +13 -13
  33. package/dist/input/config.d.ts.map +1 -0
  34. package/dist/{config.js → input/config.js} +95 -110
  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} +54 -61
  67. package/dist/processor/compile.js.map +1 -0
  68. package/dist/processor/html.d.ts +52 -0
  69. package/dist/processor/html.d.ts.map +1 -0
  70. package/dist/processor/html.js +256 -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.js +2029 -0
  98. package/vendors/index.src.js +9 -0
  99. package/dist/builder.d.ts.map +0 -1
  100. package/dist/builder.js.map +0 -1
  101. package/dist/config.d.ts.map +0 -1
  102. package/dist/config.js.map +0 -1
  103. package/dist/epub.d.ts +0 -6
  104. package/dist/epub.d.ts.map +0 -1
  105. package/dist/epub.js +0 -18
  106. package/dist/epub.js.map +0 -1
  107. package/dist/html.d.ts +0 -17
  108. package/dist/html.d.ts.map +0 -1
  109. package/dist/html.js +0 -60
  110. package/dist/html.js.map +0 -1
  111. package/dist/input.d.ts.map +0 -1
  112. package/dist/input.js.map +0 -1
  113. package/dist/markdown.d.ts.map +0 -1
  114. package/dist/markdown.js.map +0 -1
  115. package/dist/output.d.ts.map +0 -1
  116. package/dist/output.js.map +0 -1
  117. package/dist/pdf.d.ts.map +0 -1
  118. package/dist/pdf.js.map +0 -1
  119. package/dist/postprocess.d.ts.map +0 -1
  120. package/dist/postprocess.js.map +0 -1
  121. package/dist/theme.d.ts.map +0 -1
  122. package/dist/theme.js.map +0 -1
  123. package/dist/webbook.d.ts +0 -7
  124. package/dist/webbook.d.ts.map +0 -1
  125. package/dist/webbook.js +0 -99
  126. package/dist/webbook.js.map +0 -1
  127. /package/dist/{markdown.d.ts → processor/markdown.d.ts} +0 -0
  128. /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 { 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.');
@@ -393,13 +393,14 @@ export async function mergeConfig(cliFlags, config, context) {
393
393
  ? await composeSingleInputConfig(commonOpts, cliFlags, config)
394
394
  : await composeProjectConfig(commonOpts, cliFlags, config, context);
395
395
  debug('parsedConfig', parsedConfig);
396
- checkUnusedCliFlags(parsedConfig, cliFlags);
397
396
  return parsedConfig;
398
397
  }
399
398
  async function composeSingleInputConfig(otherConfig, cliFlags, config) {
400
399
  debug('entering single entry config mode');
401
400
  let sourcePath;
402
401
  let input;
402
+ const title = cliFlags.title ?? config?.title;
403
+ const author = cliFlags.author ?? config?.author;
403
404
  const workspaceDir = otherConfig.workspaceDir;
404
405
  const entries = [];
405
406
  const exportAliases = [];
@@ -409,7 +410,7 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
409
410
  input = { format: 'webbook', entry: sourcePath };
410
411
  }
411
412
  else {
412
- sourcePath = path.resolve(cliFlags.input);
413
+ sourcePath = upath.resolve(cliFlags.input);
413
414
  input = detectInputFormat(sourcePath);
414
415
  // Check file exists
415
416
  statFileSync(sourcePath);
@@ -418,9 +419,9 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
418
419
  // Single input file; create temporary file
419
420
  const type = detectManuscriptMediaType(sourcePath);
420
421
  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)}`)
422
+ const relDir = upath.relative(otherConfig.entryContextDir, upath.dirname(sourcePath));
423
+ const target = upath
424
+ .resolve(workspaceDir, relDir, `${tmpPrefix}${upath.basename(sourcePath)}`)
424
425
  .replace(/\.md$/, '.html');
425
426
  await touchTmpFile(target);
426
427
  const themes = metadata.themes ?? [...otherConfig.rootThemes];
@@ -434,35 +435,41 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
434
435
  });
435
436
  exportAliases.push({
436
437
  source: target,
437
- target: path.resolve(path.dirname(target), path.basename(sourcePath).replace(/\.md$/, '.html')),
438
+ target: upath.resolve(upath.dirname(target), upath.basename(sourcePath).replace(/\.md$/, '.html')),
438
439
  });
439
440
  }
441
+ let fallbackTitle;
440
442
  const manifestDeclaration = await (async () => {
441
443
  if (input.format === 'markdown') {
442
444
  // create temporary manifest file
443
- const manifestPath = path.resolve(workspaceDir, `${tmpPrefix}${MANIFEST_FILENAME}`);
445
+ const manifestPath = upath.resolve(workspaceDir, `${tmpPrefix}${MANIFEST_FILENAME}`);
444
446
  await touchTmpFile(manifestPath);
445
447
  exportAliases.push({
446
448
  source: manifestPath,
447
- target: path.resolve(workspaceDir, MANIFEST_FILENAME),
449
+ target: upath.resolve(workspaceDir, MANIFEST_FILENAME),
448
450
  });
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
- };
451
+ fallbackTitle =
452
+ entries.length === 1 && entries[0].title
453
+ ? entries[0].title
454
+ : upath.basename(sourcePath);
455
+ return { manifestPath, needToGenerateManifest: true };
460
456
  }
461
457
  else if (input.format === 'html' || input.format === 'webbook') {
462
- return { webbookEntryPath: input.entry };
458
+ const url = isUrlString(input.entry)
459
+ ? new URL(input.entry)
460
+ : pathToFileURL(input.entry);
461
+ // Ensures trailing slash or explicit HTML extensions
462
+ if ((url.protocol === 'http:' || url.protocol === 'https:') &&
463
+ !url.pathname.endsWith('/') &&
464
+ !/\.html?$/.test(url.pathname)) {
465
+ url.pathname = `${url.pathname}/`;
466
+ }
467
+ return {
468
+ webbookEntryUrl: url.href,
469
+ };
463
470
  }
464
471
  else if (input.format === 'pub-manifest') {
465
- return { manifestPath: input.entry, manifestAutoGenerate: null };
472
+ return { manifestPath: input.entry };
466
473
  }
467
474
  else if (input.format === 'epub-opf') {
468
475
  return { epubOpfPath: input.entry };
@@ -481,19 +488,21 @@ async function composeSingleInputConfig(otherConfig, cliFlags, config) {
481
488
  entries,
482
489
  input,
483
490
  exportAliases,
491
+ title: title || fallbackTitle,
492
+ author: author,
484
493
  };
485
494
  }
486
495
  async function composeProjectConfig(otherConfig, cliFlags, config, context) {
487
496
  debug('entering project config mode');
488
497
  const { entryContextDir, workspaceDir, themesDir, themeIndexes, rootThemes, outputs, } = otherConfig;
489
- const pkgJsonPath = path.resolve(entryContextDir, 'package.json');
498
+ const pkgJsonPath = upath.resolve(entryContextDir, 'package.json');
490
499
  const pkgJson = fs.existsSync(pkgJsonPath)
491
500
  ? readJSON(pkgJsonPath)
492
501
  : undefined;
493
502
  if (pkgJson) {
494
503
  debug('located package.json path', pkgJsonPath);
495
504
  }
496
- const autoGeneratedTocPath = path.resolve(workspaceDir, typeof config?.toc === 'string' ? config.toc : TOC_FILENAME);
505
+ const autoGeneratedTocPath = upath.resolve(workspaceDir, typeof config?.toc === 'string' ? config.toc : TOC_FILENAME);
497
506
  const projectTitle = cliFlags.title ?? config?.title ?? pkgJson?.name;
498
507
  const projectAuthor = cliFlags.author ?? config?.author ?? pkgJson?.author;
499
508
  function parseEntry(entry) {
@@ -514,9 +523,9 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
514
523
  themes,
515
524
  };
516
525
  }
517
- const sourcePath = path.resolve(entryContextDir, entry.path); // abs
518
- const contextEntryPath = path.relative(entryContextDir, sourcePath); // rel
519
- const targetPath = path
526
+ const sourcePath = upath.resolve(entryContextDir, entry.path); // abs
527
+ const contextEntryPath = upath.relative(entryContextDir, sourcePath); // rel
528
+ const targetPath = upath
520
529
  .resolve(workspaceDir, contextEntryPath)
521
530
  .replace(/\.md$/, '.html');
522
531
  if (!isUrlString(sourcePath)) {
@@ -554,13 +563,13 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
554
563
  if (!entries.length) {
555
564
  throw new Error('The entry fields seems to be empty. Make sure your Vivliostyle configuration.');
556
565
  }
557
- let fallbackProjectTitle = '';
566
+ let fallbackProjectTitle;
558
567
  if (!projectTitle) {
559
568
  if (entries.length === 1 && entries[0].title) {
560
569
  fallbackProjectTitle = entries[0].title;
561
570
  }
562
571
  else {
563
- fallbackProjectTitle = path.basename(outputs[0].path);
572
+ fallbackProjectTitle = upath.basename(outputs[0].path);
564
573
  log(`\n${chalk.yellow('Could not find any appropriate publication title. We set ')}${chalk.bold.yellow(`"${fallbackProjectTitle}"`)}${chalk.yellow(' as a fallback.')}`);
565
574
  }
566
575
  }
@@ -577,37 +586,13 @@ async function composeProjectConfig(otherConfig, cliFlags, config, context) {
577
586
  entries,
578
587
  input: {
579
588
  format: 'pub-manifest',
580
- entry: path.join(workspaceDir, MANIFEST_FILENAME),
589
+ entry: upath.join(workspaceDir, MANIFEST_FILENAME),
581
590
  },
582
591
  exportAliases: [],
583
- manifestPath: path.join(workspaceDir, MANIFEST_FILENAME),
584
- manifestAutoGenerate: {
585
- title: projectTitle || fallbackProjectTitle,
586
- author: projectAuthor || '',
587
- },
592
+ manifestPath: upath.join(workspaceDir, MANIFEST_FILENAME),
593
+ title: projectTitle || fallbackProjectTitle,
594
+ author: projectAuthor,
595
+ needToGenerateManifest: true,
588
596
  };
589
597
  }
590
- export function checkUnusedCliFlags(config, cliFlags) {
591
- const unusedFlags = [];
592
- if (!config.manifestPath) {
593
- if (cliFlags.theme) {
594
- unusedFlags.push('--theme');
595
- }
596
- if (cliFlags.title) {
597
- unusedFlags.push('--title');
598
- }
599
- if (cliFlags.author) {
600
- unusedFlags.push('--author');
601
- }
602
- if (cliFlags.language) {
603
- unusedFlags.push('--language');
604
- }
605
- }
606
- if (unusedFlags.length) {
607
- log('\n');
608
- unusedFlags.forEach((flag) => {
609
- log(`${chalk.bold.yellow(flag)}${chalk.bold.yellow(` flag seems to be set but the current export setting doesn't support this. This option will be ignored.`)}`);
610
- });
611
- }
612
- }
613
598
  //# sourceMappingURL=config.js.map
@@ -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"}