@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,40 +1,31 @@
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 { imageSize } from 'image-size';
6
3
  import { lookup as mime } from 'mime-types';
7
4
  import fs from 'node:fs';
8
- import shelljs from 'shelljs';
9
- import path from 'upath';
10
- import { TOC_TITLE } from './const.js';
5
+ import { TOC_TITLE } from '../const.js';
6
+ import { DetailError, assertPubManifestSchema, copy, debug, log, pathContains, pathEquals, remove, safeGlob, startLogging, upath, useTmpDirectory, } from '../util.js';
11
7
  import { generateTocHtml, isTocHtml, processManuscriptHtml } from './html.js';
12
8
  import { processMarkdown } from './markdown.js';
13
- import { publicationSchema, publicationSchemas } from './schema/pubManifest.js';
14
9
  import { checkThemeInstallationNecessity, installThemeDependencies, } from './theme.js';
15
- import { debug, DetailError, filterRelevantAjvErrors, log, pathContains, pathEquals, safeGlob, startLogging, useTmpDirectory, } from './util.js';
16
- // FIXME: https://github.com/ajv-validator/ajv/issues/2047
17
- const Ajv = AjvModule.default;
18
- const addFormats = AjvFormatsModule.default;
19
10
  function locateThemePath(theme, from) {
20
11
  if (theme.type === 'uri') {
21
12
  return theme.location;
22
13
  }
23
14
  if (theme.type === 'file') {
24
- return path.relative(from, theme.location);
15
+ return upath.relative(from, theme.location);
25
16
  }
26
17
  if (theme.importPath) {
27
18
  return [theme.importPath].flat().map((locator) => {
28
- const resolvedPath = path.resolve(theme.location, locator);
19
+ const resolvedPath = upath.resolve(theme.location, locator);
29
20
  if (!pathContains(theme.location, resolvedPath) ||
30
21
  !fs.existsSync(resolvedPath)) {
31
22
  throw new Error(`Could not find a style path ${theme.importPath} for the theme: ${theme.name}.`);
32
23
  }
33
- return path.relative(from, resolvedPath);
24
+ return upath.relative(from, resolvedPath);
34
25
  });
35
26
  }
36
27
  else {
37
- const pkgJsonPath = path.join(theme.location, 'package.json');
28
+ const pkgJsonPath = upath.join(theme.location, 'package.json');
38
29
  const packageJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
39
30
  const maybeStyle = packageJson?.vivliostyle?.theme?.style ??
40
31
  packageJson.style ??
@@ -42,7 +33,7 @@ function locateThemePath(theme, from) {
42
33
  if (!maybeStyle) {
43
34
  throw new DetailError(`Could not find a style file for the theme: ${theme.name}.`, 'Please ensure this package satisfies a `vivliostyle.theme.style` propertiy.');
44
35
  }
45
- return path.relative(from, path.join(theme.location, maybeStyle));
36
+ return upath.relative(from, upath.join(theme.location, maybeStyle));
46
37
  }
47
38
  }
48
39
  export async function cleanupWorkspace({ entryContextDir, workspaceDir, themesDir, }) {
@@ -55,12 +46,12 @@ export async function cleanupWorkspace({ entryContextDir, workspaceDir, themesDi
55
46
  let movedThemePath;
56
47
  if (pathContains(workspaceDir, themesDir) && fs.existsSync(themesDir)) {
57
48
  [movedThemePath] = await useTmpDirectory();
58
- shelljs.cp('-rf', themesDir, movedThemePath);
49
+ await copy(themesDir, movedThemePath);
59
50
  }
60
- shelljs.rm('-rf', workspaceDir);
51
+ await remove(workspaceDir);
61
52
  if (movedThemePath) {
62
- shelljs.mkdir('-p', workspaceDir);
63
- shelljs.cp('-rf', path.join(movedThemePath, path.basename(themesDir)), workspaceDir);
53
+ fs.mkdirSync(upath.dirname(themesDir), { recursive: true });
54
+ await copy(movedThemePath, themesDir);
64
55
  }
65
56
  }
66
57
  export async function prepareThemeDirectory({ themesDir, themeIndexes, }) {
@@ -72,8 +63,8 @@ export async function prepareThemeDirectory({ themesDir, themeIndexes, }) {
72
63
  // copy theme files
73
64
  for (const theme of themeIndexes) {
74
65
  if (theme.type === 'file' && !pathEquals(theme.source, theme.location)) {
75
- shelljs.mkdir('-p', path.dirname(theme.location));
76
- shelljs.cp(theme.source, theme.location);
66
+ fs.mkdirSync(upath.dirname(theme.location), { recursive: true });
67
+ await copy(theme.source, theme.location);
77
68
  }
78
69
  }
79
70
  }
@@ -81,15 +72,19 @@ export async function prepareThemeDirectory({ themesDir, themeIndexes, }) {
81
72
  export function generateManifest(outputPath, entryContextDir, options) {
82
73
  const entries = options.entries.map((entry) => ({
83
74
  url: encodeURI(entry.path),
84
- name: entry.title,
75
+ ...(entry.title && { name: entry.title }),
85
76
  ...(entry.encodingFormat && { encodingFormat: entry.encodingFormat }),
86
77
  ...(entry.rel && { rel: entry.rel }),
87
78
  ...(entry.rel === 'contents' && { type: 'LinkedResource' }),
88
79
  }));
89
- const links = [];
90
- const resources = [];
80
+ const links = [
81
+ options.links || [],
82
+ ].flat();
83
+ const resources = [
84
+ options.resources || [],
85
+ ].flat();
91
86
  if (options.cover) {
92
- const { width, height, type } = imageSize(path.resolve(entryContextDir, options.cover));
87
+ const { width, height, type } = imageSize(upath.resolve(entryContextDir, options.cover));
93
88
  let mimeType = false;
94
89
  if (type) {
95
90
  mimeType = mime(type);
@@ -111,36 +106,33 @@ export function generateManifest(outputPath, entryContextDir, options) {
111
106
  '@context': ['https://schema.org', 'https://www.w3.org/ns/pub-context'],
112
107
  type: 'Book',
113
108
  conformsTo: 'https://github.com/vivliostyle/vivliostyle-cli',
114
- author: options.author,
109
+ ...(options.title && { name: options.title }),
110
+ ...(options.author && { author: options.author }),
115
111
  ...(options.language && { inLanguage: options.language }),
116
112
  ...(options.readingProgression && {
117
113
  readingProgression: options.readingProgression,
118
114
  }),
119
115
  dateModified: options.modified,
120
- name: options.title,
121
116
  readingOrder: entries,
122
117
  resources,
123
118
  links,
124
119
  };
125
120
  const publicationJson = JSON.stringify(publication, null, 2);
126
- fs.writeFileSync(outputPath, publicationJson);
127
- const ajv = new Ajv({ strict: false });
128
- addFormats(ajv);
129
- ajv.addSchema(publicationSchemas);
130
- const validate = ajv.compile(publicationSchema);
131
- const valid = validate(publication);
132
- if (!valid) {
133
- const message = `Validation of pubManifest failed. Please check the schema: ${outputPath}`;
134
- const detailMessage = validate.errors &&
135
- betterAjvErrors(publicationSchemas, publication, filterRelevantAjvErrors(validate.errors), {
136
- json: publicationJson,
137
- });
138
- throw detailMessage
139
- ? new DetailError(message, detailMessage)
140
- : new Error(message);
121
+ try {
122
+ assertPubManifestSchema(publication, {
123
+ json: publicationJson,
124
+ });
141
125
  }
126
+ catch (error) {
127
+ const thrownError = error;
128
+ throw new DetailError(`Validation of pubManifest failed. Please check the schema: ${outputPath}`, typeof thrownError === 'string'
129
+ ? thrownError
130
+ : thrownError.stack ?? thrownError.message);
131
+ }
132
+ fs.writeFileSync(outputPath, publicationJson);
133
+ return publication;
142
134
  }
143
- export async function compile({ entryContextDir, workspaceDir, manifestPath, manifestAutoGenerate, entries, language, readingProgression, cover, vfmOptions, }) {
135
+ export async function compile({ entryContextDir, workspaceDir, manifestPath, needToGenerateManifest, title, author, entries, language, readingProgression, cover, vfmOptions, }) {
144
136
  const generativeContentsEntry = entries.find((e) => !('source' in e) && e.rel === 'contents');
145
137
  if (generativeContentsEntry &&
146
138
  fs.existsSync(generativeContentsEntry.target) &&
@@ -149,9 +141,9 @@ export async function compile({ entryContextDir, workspaceDir, manifestPath, man
149
141
  }
150
142
  const contentEntries = entries.filter((e) => 'source' in e);
151
143
  for (const entry of contentEntries) {
152
- shelljs.mkdir('-p', path.dirname(entry.target));
144
+ fs.mkdirSync(upath.dirname(entry.target), { recursive: true });
153
145
  // calculate style path
154
- const style = entry.themes.flatMap((theme) => locateThemePath(theme, path.dirname(entry.target)));
146
+ const style = entry.themes.flatMap((theme) => locateThemePath(theme, upath.dirname(entry.target)));
155
147
  if (entry.type === 'text/markdown') {
156
148
  // compile markdown
157
149
  const vfile = processMarkdown(entry.source, {
@@ -177,7 +169,7 @@ export async function compile({ entryContextDir, workspaceDir, manifestPath, man
177
169
  }
178
170
  else {
179
171
  if (!pathEquals(entry.source, entry.target)) {
180
- shelljs.cp(entry.source, entry.target);
172
+ await copy(entry.source, entry.target);
181
173
  }
182
174
  }
183
175
  }
@@ -187,23 +179,24 @@ export async function compile({ entryContextDir, workspaceDir, manifestPath, man
187
179
  const tocString = generateTocHtml({
188
180
  entries: contentEntries,
189
181
  manifestPath,
190
- distDir: path.dirname(generativeContentsEntry.target),
191
- title: manifestAutoGenerate?.title,
182
+ distDir: upath.dirname(generativeContentsEntry.target),
183
+ title,
192
184
  tocTitle: generativeContentsEntry.title ?? TOC_TITLE,
193
185
  style,
194
186
  });
195
187
  fs.writeFileSync(generativeContentsEntry.target, tocString);
196
188
  }
197
189
  // generate manifest
198
- if (manifestAutoGenerate) {
190
+ if (needToGenerateManifest) {
199
191
  generateManifest(manifestPath, entryContextDir, {
200
- ...manifestAutoGenerate,
192
+ title,
193
+ author,
201
194
  language,
202
195
  readingProgression,
203
- cover: cover && path.relative(entryContextDir, cover),
196
+ cover: cover && upath.relative(entryContextDir, cover),
204
197
  entries: entries.map((entry) => ({
205
198
  title: entry.title,
206
- path: path.relative(workspaceDir, entry.target),
199
+ path: upath.relative(workspaceDir, entry.target),
207
200
  encodingFormat: !('type' in entry) ||
208
201
  entry.type === 'text/markdown' ||
209
202
  entry.type === 'text/html'
@@ -219,7 +212,7 @@ export async function copyAssets({ entryContextDir, workspaceDir, includeAssets,
219
212
  if (pathEquals(entryContextDir, workspaceDir)) {
220
213
  return;
221
214
  }
222
- const relWorkspaceDir = path.relative(entryContextDir, workspaceDir);
215
+ const relWorkspaceDir = upath.relative(entryContextDir, workspaceDir);
223
216
  const assets = await safeGlob(includeAssets, {
224
217
  cwd: entryContextDir,
225
218
  ignore: [
@@ -227,10 +220,10 @@ export async function copyAssets({ entryContextDir, workspaceDir, includeAssets,
227
220
  ...outputs.flatMap(({ format, path: p }) => !pathContains(entryContextDir, p)
228
221
  ? []
229
222
  : format === 'webpub'
230
- ? path.join(path.relative(entryContextDir, p), '**')
231
- : path.relative(entryContextDir, p)),
223
+ ? upath.join(upath.relative(entryContextDir, p), '**')
224
+ : upath.relative(entryContextDir, p)),
232
225
  // don't copy workspace itself
233
- ...(relWorkspaceDir ? [path.join(relWorkspaceDir, '**')] : []),
226
+ ...(relWorkspaceDir ? [upath.join(relWorkspaceDir, '**')] : []),
234
227
  ],
235
228
  caseSensitiveMatch: false,
236
229
  followSymbolicLinks: false,
@@ -238,9 +231,9 @@ export async function copyAssets({ entryContextDir, workspaceDir, includeAssets,
238
231
  });
239
232
  debug('assets', assets);
240
233
  for (const asset of assets) {
241
- const target = path.join(workspaceDir, asset);
242
- shelljs.mkdir('-p', path.dirname(target));
243
- shelljs.cp(path.resolve(entryContextDir, asset), target);
234
+ const target = upath.join(workspaceDir, asset);
235
+ fs.mkdirSync(upath.dirname(target), { recursive: true });
236
+ await copy(upath.resolve(entryContextDir, asset), target);
244
237
  }
245
238
  }
246
239
  export function checkOverwriteViolation({ entryContextDir, workspaceDir }, target, fileInformation) {
@@ -252,4 +245,4 @@ export function checkOverwriteViolation({ entryContextDir, workspaceDir }, targe
252
245
  throw new Error(`${target} is set as output destination of ${fileInformation}, however, this output path will overwrite the working directory of Vivliostyle. Please specify other paths.`);
253
246
  }
254
247
  }
255
- //# sourceMappingURL=builder.js.map
248
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/processor/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import jsdom, { ResourceLoader as BaseResourceLoader, JSDOM } from '@vivliostyle/jsdom';
3
+ import { ManuscriptEntry } from '../input/config.js';
4
+ import type { PublicationManifest } from '../schema/publication.schema.js';
5
+ export declare class ResourceLoader extends BaseResourceLoader {
6
+ fetcherMap: Map<string, jsdom.AbortablePromise<Buffer>>;
7
+ fetch(url: string, options?: jsdom.FetchOptions): jsdom.AbortablePromise<Buffer> | null;
8
+ }
9
+ export declare function getJsdomFromUrlOrFile(src: string, resourceLoader?: ResourceLoader): Promise<{
10
+ dom: JSDOM;
11
+ }>;
12
+ export declare function generateTocHtml({ entries, manifestPath, distDir, title, tocTitle, style, }: {
13
+ entries: Pick<ManuscriptEntry, 'target' | 'title'>[];
14
+ manifestPath: string;
15
+ distDir: string;
16
+ title?: string;
17
+ tocTitle: string;
18
+ style?: string[];
19
+ }): string;
20
+ export declare function processManuscriptHtml(filepath: string, { title, style, contentType, language, }: {
21
+ title?: string;
22
+ style?: string[];
23
+ contentType?: 'text/html' | 'application/xhtml+xml';
24
+ language?: string | null;
25
+ }): string;
26
+ export declare function isTocHtml(filepath: string): boolean;
27
+ export declare function fetchLinkedPublicationManifest({ dom, resourceLoader, baseUrl, }: {
28
+ dom: JSDOM;
29
+ resourceLoader: ResourceLoader;
30
+ baseUrl: string;
31
+ }): Promise<PublicationManifest | null>;
32
+ export type TocResourceTreeItem = {
33
+ element: HTMLElement;
34
+ label: HTMLElement;
35
+ children?: TocResourceTreeItem[];
36
+ };
37
+ export type TocResourceTreeRoot = {
38
+ element: HTMLElement;
39
+ heading?: HTMLElement;
40
+ children: TocResourceTreeItem[];
41
+ };
42
+ export declare function parseTocDocument(dom: JSDOM): TocResourceTreeRoot | null;
43
+ export type PageListResourceTreeItem = {
44
+ element: HTMLElement;
45
+ };
46
+ export type PageListResourceTreeRoot = {
47
+ element: HTMLElement;
48
+ heading?: HTMLElement;
49
+ children: PageListResourceTreeItem[];
50
+ };
51
+ export declare function parsePageListDocument(dom: JSDOM): PageListResourceTreeRoot | null;
52
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/processor/html.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EACZ,cAAc,IAAI,kBAAkB,EACpC,KAAK,EACN,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AA0C3E,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,UAAU,8CAAqD;IAE/D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY;CAQhD;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;IACT,GAAG,EAAE,KAAK,CAAC;CACZ,CAAC,CAsBD;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,YAAY,EACZ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE;IACD,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,MAAM,CAiCT;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,EACE,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACA,MAAM,CA4BR;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUnD;AAED,wBAAsB,8BAA8B,CAAC,EACnD,GAAG,EACH,cAAc,EACd,OAAO,GACR,EAAE;IACD,GAAG,EAAE,KAAK,CAAC;IACX,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAuDtC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,KAAK,GAAG,mBAAmB,GAAG,IAAI,CA6DvE;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,KAAK,GACT,wBAAwB,GAAG,IAAI,CAkCjC"}
@@ -0,0 +1,256 @@
1
+ import jsdom, { ResourceLoader as BaseResourceLoader, JSDOM, } from '@vivliostyle/jsdom';
2
+ import chalk from 'chalk';
3
+ import cheerio from 'cheerio';
4
+ import toHTML from 'hast-util-to-html';
5
+ import h from 'hastscript';
6
+ import fs from 'node:fs';
7
+ import { fileURLToPath, pathToFileURL } from 'node:url';
8
+ import prettier from 'prettier';
9
+ import { DetailError, assertPubManifestSchema, debug, isUrlString, logWarn, upath, } from '../util.js';
10
+ const virtualConsole = new jsdom.VirtualConsole();
11
+ /* c8 ignore start */
12
+ virtualConsole.on('error', (message) => {
13
+ debug('[JSDOM Console] error:', message);
14
+ });
15
+ virtualConsole.on('warn', (message) => {
16
+ debug('[JSDOM Console] warn:', message);
17
+ });
18
+ virtualConsole.on('log', (message) => {
19
+ debug('[JSDOM Console] log:', message);
20
+ });
21
+ virtualConsole.on('info', (message) => {
22
+ debug('[JSDOM Console] info:', message);
23
+ });
24
+ virtualConsole.on('dir', (message) => {
25
+ debug('[JSDOM Console] dir:', message);
26
+ });
27
+ virtualConsole.on('jsdomError', (error) => {
28
+ // Most of CSS using Paged media will be failed to run CSS parser of JSDOM.
29
+ // We just ignore it because we don't use CSS parse results.
30
+ // https://github.com/jsdom/jsdom/blob/a39e0ec4ce9a8806692d986a7ed0cd565ec7498a/lib/jsdom/living/helpers/stylesheets.js#L33-L44
31
+ // see also: https://github.com/jsdom/jsdom/issues/2005
32
+ if (error.message === 'Could not parse CSS stylesheet') {
33
+ return;
34
+ }
35
+ throw new DetailError('Error occurred when loading HTML', error.stack ?? error.message);
36
+ });
37
+ /* c8 ignore end */
38
+ export class ResourceLoader extends BaseResourceLoader {
39
+ fetcherMap = new Map();
40
+ fetch(url, options) {
41
+ debug(`[JSDOM] Fetching resource: ${url}`);
42
+ const fetcher = super.fetch(url, options);
43
+ if (fetcher) {
44
+ this.fetcherMap.set(url, fetcher);
45
+ }
46
+ return fetcher;
47
+ }
48
+ }
49
+ export async function getJsdomFromUrlOrFile(src, resourceLoader) {
50
+ const url = isUrlString(src) ? new URL(src) : pathToFileURL(src);
51
+ let dom;
52
+ if (url.protocol === 'http:' || url.protocol === 'https:') {
53
+ dom = await JSDOM.fromURL(src, {
54
+ virtualConsole,
55
+ resources: resourceLoader,
56
+ });
57
+ }
58
+ else if (url.protocol === 'file:') {
59
+ if (resourceLoader) {
60
+ const file = resourceLoader._readFile(fileURLToPath(url));
61
+ resourceLoader.fetcherMap.set(url.href, file);
62
+ }
63
+ dom = await JSDOM.fromFile(fileURLToPath(url), {
64
+ virtualConsole,
65
+ resources: resourceLoader,
66
+ contentType: 'text/html; charset=UTF-8',
67
+ });
68
+ }
69
+ else {
70
+ throw new Error(`Unsupported protocol: ${url.protocol}`);
71
+ }
72
+ return { dom };
73
+ }
74
+ export function generateTocHtml({ entries, manifestPath, distDir, title, tocTitle, style, }) {
75
+ const items = entries.map((entry) => h('li', h('a', { href: encodeURI(upath.relative(distDir, entry.target)) }, entry.title || upath.basename(entry.target, '.html'))));
76
+ const toc = h('html', h('head', ...[
77
+ h('meta', { charset: 'utf-8' }),
78
+ h('title', title ?? ''),
79
+ h('link', {
80
+ href: encodeURI(upath.relative(distDir, manifestPath)),
81
+ rel: 'publication',
82
+ type: 'application/ld+json',
83
+ }),
84
+ ...(style || []).map((s) => h('link', { href: s, rel: 'stylesheet' })),
85
+ ].filter((n) => !!n)), h('body', h('h1', title || ''), h('nav#toc', { role: 'doc-toc' }, h('h2', tocTitle), h('ol', items))));
86
+ return prettier.format(toHTML(toc), { parser: 'html' });
87
+ }
88
+ export function processManuscriptHtml(filepath, { title, style, contentType, language, }) {
89
+ const $ = cheerio.load(fs.readFileSync(filepath, 'utf8'), {
90
+ xmlMode: contentType === 'application/xhtml+xml',
91
+ });
92
+ if (title) {
93
+ if (!$('title')) {
94
+ $('head').append($('<title></title>'));
95
+ }
96
+ $('title').text(title);
97
+ }
98
+ for (const s of style ?? []) {
99
+ $('head').append(`<link rel="stylesheet" />`);
100
+ $('head > *:last-child').attr('href', s);
101
+ }
102
+ if (language) {
103
+ if (contentType === 'application/xhtml+xml') {
104
+ if (!$('html').attr('xml:lang')) {
105
+ $('html').attr('lang', language);
106
+ $('html').attr('xml:lang', language);
107
+ }
108
+ }
109
+ else {
110
+ if (!$('html').attr('lang')) {
111
+ $('html').attr('lang', language);
112
+ }
113
+ }
114
+ }
115
+ let processed = $.html();
116
+ return processed;
117
+ }
118
+ export function isTocHtml(filepath) {
119
+ try {
120
+ const $ = cheerio.load(fs.readFileSync(filepath, 'utf8'));
121
+ return ($('[role="doc-toc"], [role="directory"], nav, .toc, #toc').length > 0);
122
+ }
123
+ catch (err) {
124
+ // seems not to be a html file
125
+ return false;
126
+ }
127
+ }
128
+ export async function fetchLinkedPublicationManifest({ dom, resourceLoader, baseUrl, }) {
129
+ const { document } = dom.window;
130
+ const linkEl = document.querySelector('link[href][rel="publication"]');
131
+ if (!linkEl) {
132
+ return null;
133
+ }
134
+ const href = linkEl.getAttribute('href').trim();
135
+ let manifest;
136
+ let manifestJson;
137
+ if (href.startsWith('#')) {
138
+ const scriptEl = document.getElementById(href.slice(1));
139
+ if (scriptEl?.getAttribute('type') !== 'application/ld+json') {
140
+ return null;
141
+ }
142
+ debug(`Found embedded publication manifest: ${href}`);
143
+ try {
144
+ manifest = JSON.parse(scriptEl.innerHTML);
145
+ }
146
+ catch (error) {
147
+ const thrownError = error;
148
+ throw new DetailError('Failed to parse manifest data', typeof thrownError.stack ?? thrownError.message);
149
+ }
150
+ manifestJson = JSON.stringify(manifest, null, 2);
151
+ }
152
+ else {
153
+ debug(`Found linked publication manifest: ${href}`);
154
+ const url = new URL(href, baseUrl);
155
+ const buffer = await resourceLoader.fetch(url.href);
156
+ if (!buffer) {
157
+ throw new Error(`Failed to fetch manifest JSON file: ${url.href}`);
158
+ }
159
+ manifestJson = buffer.toString();
160
+ try {
161
+ manifest = JSON.parse(manifestJson);
162
+ }
163
+ catch (error) {
164
+ const thrownError = error;
165
+ throw new DetailError('Failed to parse manifest data', typeof thrownError.stack ?? thrownError.message);
166
+ }
167
+ }
168
+ try {
169
+ assertPubManifestSchema(manifest, { json: manifestJson });
170
+ }
171
+ catch (error) {
172
+ logWarn(`${chalk.yellowBright('Publication manifest validation failed. Processing continues, but some problems may occur.')}\n${error}`);
173
+ }
174
+ return manifest;
175
+ }
176
+ export function parseTocDocument(dom) {
177
+ const { document } = dom.window;
178
+ const docTocEl = document.querySelectorAll('[role="doc-toc"]');
179
+ if (docTocEl.length === 0) {
180
+ return null;
181
+ }
182
+ const tocRoot = docTocEl.item(0);
183
+ const parseTocItem = (element) => {
184
+ if (element.tagName !== 'LI') {
185
+ return null;
186
+ }
187
+ const label = element.children.item(0);
188
+ const ol = element.children.item(1);
189
+ if (!label || (label.tagName !== 'A' && label.tagName !== 'SPAN')) {
190
+ return null;
191
+ }
192
+ if (!ol || ol.tagName !== 'OL') {
193
+ return { element: element, label: label };
194
+ }
195
+ const children = Array.from(ol.children).reduce((acc, val) => {
196
+ if (!acc) {
197
+ return acc;
198
+ }
199
+ const res = parseTocItem(val);
200
+ return res && [...acc, res];
201
+ }, []);
202
+ return (children && {
203
+ element: element,
204
+ label: label,
205
+ children,
206
+ });
207
+ };
208
+ let heading;
209
+ for (let child of Array.from(tocRoot.children)) {
210
+ if (child.tagName === 'OL') {
211
+ const children = Array.from(child.children).reduce((acc, val) => {
212
+ if (!acc) {
213
+ return acc;
214
+ }
215
+ const res = parseTocItem(val);
216
+ return res && [...acc, res];
217
+ }, []);
218
+ return children && { element: tocRoot, heading, children };
219
+ }
220
+ else if (['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HGROUP'].includes(child.tagName)) {
221
+ heading = child;
222
+ }
223
+ else {
224
+ return null;
225
+ }
226
+ }
227
+ return null;
228
+ }
229
+ export function parsePageListDocument(dom) {
230
+ const { document } = dom.window;
231
+ const docPageListEl = document.querySelectorAll('[role="doc-pagelist"]');
232
+ if (docPageListEl.length === 0) {
233
+ return null;
234
+ }
235
+ const pageListRoot = docPageListEl.item(0);
236
+ let heading;
237
+ for (let child of Array.from(pageListRoot.children)) {
238
+ if (child.tagName === 'OL') {
239
+ const children = Array.from(child.children).reduce((acc, element) => {
240
+ return (acc &&
241
+ (element.tagName === 'LI'
242
+ ? [...acc, { element: element }]
243
+ : null));
244
+ }, []);
245
+ return (children && { element: pageListRoot, heading, children });
246
+ }
247
+ else if (['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HGROUP'].includes(child.tagName)) {
248
+ heading = child;
249
+ }
250
+ else {
251
+ return null;
252
+ }
253
+ }
254
+ return null;
255
+ }
256
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/processor/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/processor/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,wBAAwB,EAEzB,MAAM,kBAAkB,CAAC;AAE1B,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,WAAW,MAAO,SAAQ,KAAK;IACnC,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAOR;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAE/D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/processor/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAgB,MAAM,OAAO,CAAC;AASrC,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,UAAoC,EAAE;IAEtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAC/B,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAC1C,CAAC;IACZ,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,OAAO,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import npa from 'npm-package-arg';
2
- import { MergedConfig } from './config.js';
2
+ import type { MergedConfig } from '../input/config.js';
3
3
  export declare function checkThemeInstallationNecessity({ themesDir, themeIndexes, }: Pick<MergedConfig, 'themesDir' | 'themeIndexes'>): Promise<boolean>;
4
4
  export declare function installThemeDependencies({ themesDir, themeIndexes, }: Pick<MergedConfig, 'themesDir' | 'themeIndexes'>): Promise<void>;
5
5
  export declare function parsePackageName(specifier: string, cwd: string): npa.Result | null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/processor/theme.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgCvD,wBAAsB,+BAA+B,CAAC,EACpD,SAAS,EACT,YAAY,GACb,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBrE;AAED,wBAAsB,wBAAwB,CAAC,EAC7C,SAAS,EACT,YAAY,GACb,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkClE;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,GAAG,CAAC,MAAM,GAAG,IAAI,CAYnB"}