@vivliostyle/cli 9.9.0 → 10.0.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 (55) hide show
  1. package/README.md +74 -30
  2. package/dist/{chunk-WELNNHOB.js → chunk-CKAJY2BE.js} +415 -384
  3. package/dist/chunk-CKAJY2BE.js.map +1 -0
  4. package/dist/{chunk-UYKCTF6F.js → chunk-CKXFRCPH.js} +445 -228
  5. package/dist/chunk-CKXFRCPH.js.map +1 -0
  6. package/dist/{chunk-3O3N2V7D.js → chunk-IOFOZNLZ.js} +6 -7
  7. package/dist/chunk-IOFOZNLZ.js.map +1 -0
  8. package/dist/{chunk-OZ4XTSAH.js → chunk-LVS2NLYC.js} +2 -2
  9. package/dist/chunk-LVS2NLYC.js.map +1 -0
  10. package/dist/{chunk-6UU7DEUR.js → chunk-RJO22WHX.js} +32 -33
  11. package/dist/chunk-RJO22WHX.js.map +1 -0
  12. package/dist/chunk-RKU7H2GS.js +1076 -0
  13. package/dist/chunk-RKU7H2GS.js.map +1 -0
  14. package/dist/{chunk-QWX5MAON.js → chunk-SPTG2DFV.js} +16 -17
  15. package/dist/chunk-SPTG2DFV.js.map +1 -0
  16. package/dist/{chunk-G3GROLBN.js → chunk-T2VWLU2I.js} +397 -88
  17. package/dist/chunk-T2VWLU2I.js.map +1 -0
  18. package/dist/chunk-ZEBXHUJX.js +334 -0
  19. package/dist/chunk-ZEBXHUJX.js.map +1 -0
  20. package/dist/{chunk-FXUEYQRY.js → chunk-ZIK6DINS.js} +3 -3
  21. package/dist/chunk-ZIK6DINS.js.map +1 -0
  22. package/dist/cli.js +7 -8
  23. package/dist/cli.js.map +1 -1
  24. package/dist/commands/build.js +29 -17
  25. package/dist/commands/build.js.map +1 -1
  26. package/dist/commands/create.d.ts +2 -0
  27. package/dist/commands/create.js +64 -0
  28. package/dist/commands/create.js.map +1 -0
  29. package/dist/commands/init.js +23 -14
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/preview.js +26 -20
  32. package/dist/commands/preview.js.map +1 -1
  33. package/dist/config/schema.d.ts +8370 -4567
  34. package/dist/config/schema.js +16 -4
  35. package/dist/index.d.ts +46 -7
  36. package/dist/index.js +24 -16
  37. package/dist/index.js.map +1 -1
  38. package/dist/node-modules.d.ts +5 -5
  39. package/dist/node-modules.js +1 -1
  40. package/dist/vite-adapter.d.ts +1 -0
  41. package/dist/vite-adapter.js +6 -6
  42. package/package.json +37 -26
  43. package/dist/chunk-3O3N2V7D.js.map +0 -1
  44. package/dist/chunk-4IIM6RSG.js +0 -71
  45. package/dist/chunk-4IIM6RSG.js.map +0 -1
  46. package/dist/chunk-6KEOMYDZ.js +0 -89
  47. package/dist/chunk-6KEOMYDZ.js.map +0 -1
  48. package/dist/chunk-6UU7DEUR.js.map +0 -1
  49. package/dist/chunk-FXUEYQRY.js.map +0 -1
  50. package/dist/chunk-G3GROLBN.js.map +0 -1
  51. package/dist/chunk-OZ4XTSAH.js.map +0 -1
  52. package/dist/chunk-QWX5MAON.js.map +0 -1
  53. package/dist/chunk-UYKCTF6F.js.map +0 -1
  54. package/dist/chunk-WELNNHOB.js.map +0 -1
  55. package/types/playwright.d.ts +0 -49
@@ -1,17 +1,19 @@
1
1
  import {
2
2
  build
3
- } from "../chunk-6UU7DEUR.js";
4
- import "../chunk-OZ4XTSAH.js";
5
- import "../chunk-WELNNHOB.js";
6
- import "../chunk-FXUEYQRY.js";
3
+ } from "../chunk-RJO22WHX.js";
4
+ import "../chunk-LVS2NLYC.js";
5
+ import "../chunk-CKAJY2BE.js";
7
6
  import {
8
7
  Logger,
8
+ createParserProgram,
9
9
  gracefulError,
10
- isInContainer,
11
- parseFlagsToInlineConfig
12
- } from "../chunk-G3GROLBN.js";
13
- import "../chunk-UYKCTF6F.js";
14
- import "../chunk-4IIM6RSG.js";
10
+ isInContainer
11
+ } from "../chunk-T2VWLU2I.js";
12
+ import "../chunk-CKXFRCPH.js";
13
+ import {
14
+ versionForDisplay
15
+ } from "../chunk-ZEBXHUJX.js";
16
+ import "../chunk-ZIK6DINS.js";
15
17
  import "../chunk-I7BWSAN6.js";
16
18
 
17
19
  // src/commands/build.ts
@@ -19,6 +21,7 @@ import process from "node:process";
19
21
 
20
22
  // src/commands/build.parser.ts
21
23
  import { Command, Option } from "commander";
24
+ import upath from "upath";
22
25
  function setupBuildParserProgram() {
23
26
  const targets = [];
24
27
  const outputOptionProcessor = (value, previous) => {
@@ -94,9 +97,7 @@ This option is equivalent with "--preflight press-ready"`
94
97
  `options for preflight process (ex: gray-scale, enforce-outline)
95
98
  Please refer the document of press-ready for further information.
96
99
  https://github.com/vibranthq/press-ready`
97
- ).addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).addOption(
98
- new Option("--no-sandbox", `launch chrome without sandbox`).hideHelp()
99
- ).option(
100
+ ).addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).option(
100
101
  "--executable-browser <path>",
101
102
  "specify a path of executable browser you installed"
102
103
  ).option("--image <image>", "specify a docker image to render").option(
@@ -106,6 +107,11 @@ It is useful that using own viewer that has staging features. (ex: https://vivli
106
107
  ).option(
107
108
  "--viewer-param <parameters>",
108
109
  `specify viewer parameters. (ex: "allowScripts=false&pixelRatio=16")`
110
+ ).addOption(
111
+ new Option(
112
+ "--browser <browser>",
113
+ `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`
114
+ )
109
115
  ).addOption(
110
116
  new Option(
111
117
  "--proxy-server <proxyServer>",
@@ -139,7 +145,7 @@ It is useful that using own viewer that has staging features. (ex: https://vivli
139
145
  ).option("--host <host>", "IP address the server should listen on").option("--port <port>", "port the server should listen on", parseInt).option("--no-enable-static-serve", "disable static file serving").option("--vite-config-file <path>", "Vite config file path").option(
140
146
  "--no-vite-config-file",
141
147
  "ignore Vite config file even if it exists"
142
- ).addOption(new Option("--executable-chromium <path>").hideHelp()).addOption(new Option("--verbose").hideHelp()).addOption(new Option("--http").hideHelp()).action((_arg, option) => {
148
+ ).version(versionForDisplay, "-v, --version").action((_arg, option) => {
143
149
  let invalid = targets.find((it) => !("path" in it));
144
150
  if (invalid) {
145
151
  throw new Error(
@@ -153,13 +159,19 @@ It is useful that using own viewer that has staging features. (ex: https://vivli
153
159
  function validateTimeoutFlag(val) {
154
160
  return Number.isFinite(+val) ? +val * 1e3 : void 0;
155
161
  }
162
+ var parseBuildCommand = createParserProgram({
163
+ setupProgram: setupBuildParserProgram,
164
+ parseArgs: (options, [input]) => {
165
+ if (input && !options.config && upath.basename(input).startsWith("vivliostyle.config")) {
166
+ return { ...options, config: input };
167
+ }
168
+ return { ...options, input };
169
+ }
170
+ });
156
171
 
157
172
  // src/commands/build.ts
158
173
  try {
159
- let inlineConfig = parseFlagsToInlineConfig(
160
- process.argv,
161
- setupBuildParserProgram
162
- );
174
+ let inlineConfig = parseBuildCommand(process.argv);
163
175
  let containerForkMode = false;
164
176
  if (isInContainer() && process.env.VS_CLI_BUILD_PDF_OPTIONS) {
165
177
  inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/build.ts","../../src/commands/build.parser.ts"],"sourcesContent":["import process from 'node:process';\nimport { build } from '../core/build.js';\nimport { Logger } from '../logger.js';\nimport { gracefulError, isInContainer } from '../util.js';\nimport { setupBuildParserProgram } from './build.parser.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\n\ntry {\n let inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupBuildParserProgram,\n );\n let containerForkMode = false;\n if (isInContainer() && process.env.VS_CLI_BUILD_PDF_OPTIONS) {\n inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS);\n containerForkMode = true;\n Logger.debug('bypassedPdfBuilderOption %O', inlineConfig);\n }\n await build(inlineConfig, { containerForkMode });\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n","import { Command, Option } from 'commander';\n\nexport function setupBuildParserProgram(): Command {\n // Provide an order-sensitive command parser\n // ex: \"-o foo -o bar -f baz\"\n // → [{path: \"foo\"}, {path:\"bar\", format: \"baz\"}]\n // ex: \"-f foo -o bar -o baz -f piyo\"\n // → [{path: \"bar\", format: \"foo\"}, {path: \"baz\", format: \"piyo\"}]\n const targets: {\n path?: string;\n format?: string;\n }[] = [];\n const outputOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'path' in targets[targets.length - 1]) {\n targets.push({ path: value });\n } else {\n targets[targets.length - 1].path = value;\n }\n return [...(previous || []), value];\n };\n const formatOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'format' in targets[targets.length - 1]) {\n targets.push({ format: value });\n } else {\n targets[targets.length - 1].format = value;\n }\n return [...(previous || []), value];\n };\n\n const program = new Command();\n program\n .name('vivliostyle build')\n .description('build and create PDF file')\n .arguments('[input]')\n .option(\n '-c, --config <config_file>',\n 'path to vivliostyle.config.js [vivliostyle.config.js]',\n )\n .option(\n '-o, --output <path>',\n `specify output file name or directory [<title>.pdf]\nThis option can be specified multiple, then each -o options can be supplied one -f option.\nex: -o output1 -f webpub -o output2.pdf -f pdf`,\n outputOptionProcessor,\n )\n .option(\n '-f, --format <format>',\n `specify output format corresponding output target\nIf an extension is specified on -o option, this field will be inferenced automatically.`,\n formatOptionProcessor,\n )\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option(\n '-p, --press-ready',\n `make generated PDF compatible with press ready PDF/X-1a [false]\nThis option is equivalent with \"--preflight press-ready\"`,\n )\n .option(\n '-t, --timeout <seconds>',\n `timeout limit for waiting Vivliostyle process [300]`,\n validateTimeoutFlag,\n )\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(\n new Option(\n '--render-mode <mode>',\n 'if docker is set, Vivliostyle try to render PDF on Docker container [local]',\n ).choices(['local', 'docker']),\n )\n .addOption(\n new Option(\n '--preflight <mode>',\n 'apply the process to generate PDF for printing',\n ).choices(['press-ready', 'press-ready-local']),\n )\n .option(\n '--preflight-option <options...>',\n `options for preflight process (ex: gray-scale, enforce-outline)\nPlease refer the document of press-ready for further information.\nhttps://github.com/vibranthq/press-ready`,\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .addOption(\n new Option('--no-sandbox', `launch chrome without sandbox`).hideHelp(),\n )\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option('--image <image>', 'specify a docker image to render')\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n // Hide --browser option for now. There's no choice other than Chromium.\n // .addOption(\n // new commander.Option(\n // '--browser <browser>',\n // `Specify a browser type to launch Vivliostyle viewer [chromium]\n // Currently, Firefox and Webkit support preview command only!`,\n // ).choices(['chromium', 'firefox', 'webkit']),\n // )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n // TODO: Remove it in the next major version up\n .addOption(new Option('--executable-chromium <path>').hideHelp())\n .addOption(new Option('--verbose').hideHelp())\n .addOption(new Option('--http').hideHelp())\n .action((_arg, option) => {\n let invalid = targets.find((it) => !('path' in it));\n if (invalid) {\n // -f is an optional option but -o is required one\n throw new Error(\n `Couldn't find the output option corresponding --format ${invalid.format} option. Please check the command options.`,\n );\n }\n option.output = targets;\n });\n\n return program;\n}\n\nfunction validateTimeoutFlag(val: string) {\n return Number.isFinite(+val) ? +val * 1000 : undefined;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/commands/build.ts","../../src/commands/build.parser.ts"],"sourcesContent":["import process from 'node:process';\nimport { build } from '../core/build.js';\nimport { Logger } from '../logger.js';\nimport { gracefulError, isInContainer } from '../util.js';\nimport { parseBuildCommand } from './build.parser.js';\n\ntry {\n let inlineConfig = parseBuildCommand(process.argv);\n let containerForkMode = false;\n if (isInContainer() && process.env.VS_CLI_BUILD_PDF_OPTIONS) {\n inlineConfig = JSON.parse(process.env.VS_CLI_BUILD_PDF_OPTIONS);\n containerForkMode = true;\n Logger.debug('bypassedPdfBuilderOption %O', inlineConfig);\n }\n await build(inlineConfig, { containerForkMode });\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n","import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupBuildParserProgram(): Command {\n // Provide an order-sensitive command parser\n // ex: \"-o foo -o bar -f baz\"\n // → [{path: \"foo\"}, {path:\"bar\", format: \"baz\"}]\n // ex: \"-f foo -o bar -o baz -f piyo\"\n // → [{path: \"bar\", format: \"foo\"}, {path: \"baz\", format: \"piyo\"}]\n const targets: {\n path?: string;\n format?: string;\n }[] = [];\n const outputOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'path' in targets[targets.length - 1]) {\n targets.push({ path: value });\n } else {\n targets[targets.length - 1].path = value;\n }\n return [...(previous || []), value];\n };\n const formatOptionProcessor = (\n value: string,\n previous?: string[],\n ): string[] => {\n if (targets.length === 0 || 'format' in targets[targets.length - 1]) {\n targets.push({ format: value });\n } else {\n targets[targets.length - 1].format = value;\n }\n return [...(previous || []), value];\n };\n\n const program = new Command();\n program\n .name('vivliostyle build')\n .description('build and create PDF file')\n .arguments('[input]')\n .option(\n '-c, --config <config_file>',\n 'path to vivliostyle.config.js [vivliostyle.config.js]',\n )\n .option(\n '-o, --output <path>',\n `specify output file name or directory [<title>.pdf]\nThis option can be specified multiple, then each -o options can be supplied one -f option.\nex: -o output1 -f webpub -o output2.pdf -f pdf`,\n outputOptionProcessor,\n )\n .option(\n '-f, --format <format>',\n `specify output format corresponding output target\nIf an extension is specified on -o option, this field will be inferenced automatically.`,\n formatOptionProcessor,\n )\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option(\n '-p, --press-ready',\n `make generated PDF compatible with press ready PDF/X-1a [false]\nThis option is equivalent with \"--preflight press-ready\"`,\n )\n .option(\n '-t, --timeout <seconds>',\n `timeout limit for waiting Vivliostyle process [300]`,\n validateTimeoutFlag,\n )\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(\n new Option(\n '--render-mode <mode>',\n 'if docker is set, Vivliostyle try to render PDF on Docker container [local]',\n ).choices(['local', 'docker']),\n )\n .addOption(\n new Option(\n '--preflight <mode>',\n 'apply the process to generate PDF for printing',\n ).choices(['press-ready', 'press-ready-local']),\n )\n .option(\n '--preflight-option <options...>',\n `options for preflight process (ex: gray-scale, enforce-outline)\nPlease refer the document of press-ready for further information.\nhttps://github.com/vibranthq/press-ready`,\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option('--image <image>', 'specify a docker image to render')\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n .addOption(\n new Option(\n '--browser <browser>',\n `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n .version(versionForDisplay, '-v, --version')\n .action((_arg, option) => {\n let invalid = targets.find((it) => !('path' in it));\n if (invalid) {\n // -f is an optional option but -o is required one\n throw new Error(\n `Couldn't find the output option corresponding --format ${invalid.format} option. Please check the command options.`,\n );\n }\n option.output = targets;\n });\n\n return program;\n}\n\nfunction validateTimeoutFlag(val: string) {\n return Number.isFinite(+val) ? +val * 1000 : undefined;\n}\n\nexport const parseBuildCommand = createParserProgram({\n setupProgram: setupBuildParserProgram,\n parseArgs: (options, [input]) => {\n if (\n input &&\n !options.config &&\n upath.basename(input).startsWith('vivliostyle.config')\n ) {\n // Load an input argument as a Vivliostyle config\n return { ...options, config: input };\n }\n return { ...options, input };\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,64 @@
1
+ import {
2
+ create
3
+ } from "../chunk-RKU7H2GS.js";
4
+ import {
5
+ createParserProgram,
6
+ gracefulError
7
+ } from "../chunk-T2VWLU2I.js";
8
+ import "../chunk-CKXFRCPH.js";
9
+ import {
10
+ versionForDisplay
11
+ } from "../chunk-ZEBXHUJX.js";
12
+ import "../chunk-ZIK6DINS.js";
13
+ import "../chunk-I7BWSAN6.js";
14
+
15
+ // src/commands/create.parser.ts
16
+ import { Command, Option } from "commander";
17
+ function setupCreateParserProgram() {
18
+ const program = new Command();
19
+ program.name("vivliostyle create").description("scaffold a new Vivliostyle project").arguments("[projectPath]").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").option("-s, --size <size>", "paper size").option("-T, --theme <theme>", "theme").option(
20
+ "--template <template>",
21
+ `Template source in the format of \`[provider]:repo[/subpath][#ref]\` or as a local directory to copy from.`
22
+ ).option(
23
+ "--create-config-file-only",
24
+ `Create a Vivliostyle config file without generating project template files.`
25
+ ).addOption(
26
+ new Option("--proxy-server <proxyServer>", `HTTP/SOCK proxy server url`)
27
+ ).addOption(
28
+ new Option(
29
+ "--proxy-bypass <proxyBypass>",
30
+ `optional comma-separated domains to bypass proxy`
31
+ )
32
+ ).addOption(
33
+ new Option(
34
+ "--proxy-user <proxyUser>",
35
+ `optional username for HTTP proxy authentication`
36
+ )
37
+ ).addOption(
38
+ new Option(
39
+ "--proxy-pass <proxyPass>",
40
+ `optional password for HTTP proxy authentication`
41
+ )
42
+ ).addOption(
43
+ new Option(
44
+ "--log-level <level>",
45
+ "specify a log level of console outputs"
46
+ ).choices(["silent", "info", "verbose", "debug"]).default("info")
47
+ ).version(versionForDisplay, "-v, --version");
48
+ return program;
49
+ }
50
+ var parseCreateCommand = createParserProgram({
51
+ setupProgram: setupCreateParserProgram,
52
+ parseArgs: (options, [projectPath]) => ({ ...options, projectPath })
53
+ });
54
+
55
+ // src/commands/create.ts
56
+ try {
57
+ const inlineConfig = parseCreateCommand(process.argv);
58
+ await create(inlineConfig);
59
+ } catch (err) {
60
+ if (err instanceof Error) {
61
+ gracefulError(err);
62
+ }
63
+ }
64
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/create.parser.ts","../../src/commands/create.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupCreateParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle create')\n .description('scaffold a new Vivliostyle project')\n .arguments('[projectPath]')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .option('-s, --size <size>', 'paper size')\n .option('-T, --theme <theme>', 'theme')\n .option(\n '--template <template>',\n `Template source in the format of \\`[provider]:repo[/subpath][#ref]\\` or as a local directory to copy from.`,\n )\n .option(\n '--create-config-file-only',\n `Create a Vivliostyle config file without generating project template files.`,\n )\n .addOption(\n new Option('--proxy-server <proxyServer>', `HTTP/SOCK proxy server url`),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .version(versionForDisplay, '-v, --version');\n return program;\n}\n\nexport const parseCreateCommand = createParserProgram({\n setupProgram: setupCreateParserProgram,\n parseArgs: (options, [projectPath]) => ({ ...options, projectPath }),\n});\n","import { create } from '../core/create.js';\nimport { gracefulError } from '../util.js';\nimport { parseCreateCommand } from './create.parser.js';\n\ntry {\n const inlineConfig = parseCreateCommand(process.argv);\n await create(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAIhC,SAAS,2BAAoC;AAC3C,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,oBAAoB,EACzB,YAAY,oCAAoC,EAChD,UAAU,eAAe,EACzB,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,qBAAqB,YAAY,EACxC,OAAO,uBAAuB,OAAO,EACrC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI,OAAO,gCAAgC,4BAA4B;AAAA,EACzE,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB,EACC,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAEO,IAAM,qBAAqB,oBAAoB;AAAA,EACpD,cAAc;AAAA,EACd,WAAW,CAAC,SAAS,CAAC,WAAW,OAAO,EAAE,GAAG,SAAS,YAAY;AACpE,CAAC;;;ACvDD,IAAI;AACF,QAAM,eAAe,mBAAmB,QAAQ,IAAI;AACpD,QAAM,OAAO,YAAY;AAC3B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
@@ -1,34 +1,43 @@
1
1
  import {
2
- init
3
- } from "../chunk-6KEOMYDZ.js";
2
+ create
3
+ } from "../chunk-RKU7H2GS.js";
4
4
  import {
5
- gracefulError,
6
- parseFlagsToInlineConfig
7
- } from "../chunk-G3GROLBN.js";
8
- import "../chunk-UYKCTF6F.js";
9
- import "../chunk-4IIM6RSG.js";
5
+ createParserProgram,
6
+ gracefulError
7
+ } from "../chunk-T2VWLU2I.js";
8
+ import "../chunk-CKXFRCPH.js";
9
+ import {
10
+ versionForDisplay
11
+ } from "../chunk-ZEBXHUJX.js";
12
+ import "../chunk-ZIK6DINS.js";
10
13
  import "../chunk-I7BWSAN6.js";
11
14
 
12
15
  // src/commands/init.parser.ts
13
16
  import { Command, Option } from "commander";
14
17
  function setupInitParserProgram() {
15
18
  const program = new Command();
16
- program.name("vivliostyle init").description("create vivliostyle config file").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").option("-s, --size <size>", "paper size").option("-T, --theme <theme>", "theme").addOption(
19
+ program.name("vivliostyle init").description("create vivliostyle config file").option("--title <title>", "title").option("--author <author>", "author").option("-l, --language <language>", "language").option("-s, --size <size>", "paper size").option("-T, --theme <theme>", "theme").addOption(
17
20
  new Option(
18
21
  "--log-level <level>",
19
22
  "specify a log level of console outputs"
20
23
  ).choices(["silent", "info", "verbose", "debug"]).default("info")
21
- );
24
+ ).version(versionForDisplay, "-v, --version");
22
25
  return program;
23
26
  }
27
+ var parseInitCommand = createParserProgram({
28
+ setupProgram: setupInitParserProgram,
29
+ parseArgs: (options) => ({
30
+ ...options,
31
+ projectPath: ".",
32
+ createConfigFileOnly: true,
33
+ template: void 0
34
+ })
35
+ });
24
36
 
25
37
  // src/commands/init.ts
26
38
  try {
27
- const inlineConfig = parseFlagsToInlineConfig(
28
- process.argv,
29
- setupInitParserProgram
30
- );
31
- await init(inlineConfig);
39
+ const inlineConfig = parseInitCommand(process.argv);
40
+ await create(inlineConfig);
32
41
  } catch (err) {
33
42
  if (err instanceof Error) {
34
43
  gracefulError(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/init.parser.ts","../../src/commands/init.ts"],"sourcesContent":["import { Command, Option } from 'commander';\n\nexport function setupInitParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle init')\n .description('create vivliostyle config file')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .option('-s, --size <size>', 'paper size')\n .option('-T, --theme <theme>', 'theme')\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n );\n return program;\n}\n","import { init } from '../core/init.js';\nimport { gracefulError } from '../util.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\nimport { setupInitParserProgram } from './init.parser.js';\n\ntry {\n const inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupInitParserProgram,\n );\n await init(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAEzB,SAAS,yBAAkC;AAChD,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,kBAAkB,EACvB,YAAY,gCAAgC,EAC5C,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,sBAAsB,YAAY,EACzC,OAAO,uBAAuB,OAAO,EACrC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB;AACF,SAAO;AACT;;;AChBA,IAAI;AACF,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,EACF;AACA,QAAM,KAAK,YAAY;AACzB,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/commands/init.parser.ts","../../src/commands/init.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupInitParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle init')\n .description('create vivliostyle config file')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .option('-s, --size <size>', 'paper size')\n .option('-T, --theme <theme>', 'theme')\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .version(versionForDisplay, '-v, --version');\n return program;\n}\n\n// The `init` command is actually an alias for `create --create-config-file-only`\nexport const parseInitCommand = createParserProgram({\n setupProgram: setupInitParserProgram,\n parseArgs: (options) => ({\n ...options,\n projectPath: '.',\n createConfigFileOnly: true,\n template: undefined,\n }),\n});\n","import { create } from '../core/create.js';\nimport { gracefulError } from '../util.js';\nimport { parseInitCommand } from './init.parser.js';\n\ntry {\n const inlineConfig = parseInitCommand(process.argv);\n await create(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAIhC,SAAS,yBAAkC;AACzC,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,kBAAkB,EACvB,YAAY,gCAAgC,EAC5C,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C,OAAO,qBAAqB,YAAY,EACxC,OAAO,uBAAuB,OAAO,EACrC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB,EACC,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAGO,IAAM,mBAAmB,oBAAoB;AAAA,EAClD,cAAc;AAAA,EACd,WAAW,CAAC,aAAa;AAAA,IACvB,GAAG;AAAA,IACH,aAAa;AAAA,IACb,sBAAsB;AAAA,IACtB,UAAU;AAAA,EACZ;AACF,CAAC;;;AC/BD,IAAI;AACF,QAAM,eAAe,iBAAiB,QAAQ,IAAI;AAClD,QAAM,OAAO,YAAY;AAC3B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
@@ -1,19 +1,22 @@
1
1
  import {
2
2
  preview
3
- } from "../chunk-3O3N2V7D.js";
4
- import "../chunk-OZ4XTSAH.js";
5
- import "../chunk-WELNNHOB.js";
6
- import "../chunk-FXUEYQRY.js";
3
+ } from "../chunk-IOFOZNLZ.js";
4
+ import "../chunk-LVS2NLYC.js";
5
+ import "../chunk-CKAJY2BE.js";
7
6
  import {
8
- gracefulError,
9
- parseFlagsToInlineConfig
10
- } from "../chunk-G3GROLBN.js";
11
- import "../chunk-UYKCTF6F.js";
12
- import "../chunk-4IIM6RSG.js";
7
+ createParserProgram,
8
+ gracefulError
9
+ } from "../chunk-T2VWLU2I.js";
10
+ import "../chunk-CKXFRCPH.js";
11
+ import {
12
+ versionForDisplay
13
+ } from "../chunk-ZEBXHUJX.js";
14
+ import "../chunk-ZIK6DINS.js";
13
15
  import "../chunk-I7BWSAN6.js";
14
16
 
15
17
  // src/commands/preview.parser.ts
16
18
  import { Command, Option } from "commander";
19
+ import upath from "upath";
17
20
  function setupPreviewParserProgram() {
18
21
  const program = new Command();
19
22
  program.name("vivliostyle preview").description("launch preview server").arguments("[input]").option("-c, --config <config_file>", "path to vivliostyle.config.js").option("-T, --theme <theme...>", "theme path or package name").option(
@@ -35,9 +38,7 @@ custom(comma separated): 182mm,257mm or 8.5in,11in`
35
38
  "--reading-progression <direction>",
36
39
  "Direction of reading progression"
37
40
  ).choices(["ltr", "rtl"])
38
- ).addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).addOption(
39
- new Option("--no-sandbox", `launch chrome without sandbox`).hideHelp()
40
- ).option(
41
+ ).addOption(new Option("--sandbox", `launch chrome with sandbox`).hideHelp()).option(
41
42
  "--executable-browser <path>",
42
43
  "specify a path of executable browser you installed"
43
44
  ).option(
@@ -50,9 +51,8 @@ It is useful that using own viewer that has staging features. (ex: https://vivli
50
51
  ).addOption(
51
52
  new Option(
52
53
  "--browser <browser>",
53
- `EXPERIMENTAL SUPPORT: Specify a browser type to launch Vivliostyle viewer [chromium]
54
- Currently, Firefox and Webkit support preview command only!`
55
- ).choices(["chromium", "firefox", "webkit"])
54
+ `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`
55
+ )
56
56
  ).addOption(
57
57
  new Option(
58
58
  "--proxy-server <proxyServer>",
@@ -86,16 +86,22 @@ Currently, Firefox and Webkit support preview command only!`
86
86
  ).option("--host <host>", "IP address the server should listen on").option("--port <port>", "port the server should listen on", parseInt).option("--no-open-viewer", "do not open viewer").option("--no-enable-static-serve", "disable static file serving").option("--no-enable-viewer-start-page", "disable viewer start page").option("--vite-config-file <path>", "Vite config file path").option(
87
87
  "--no-vite-config-file",
88
88
  "ignore Vite config file even if it exists"
89
- ).addOption(new Option("--executable-chromium <path>").hideHelp()).addOption(new Option("--verbose").hideHelp()).addOption(new Option("--http").hideHelp());
89
+ ).version(versionForDisplay, "-v, --version");
90
90
  return program;
91
91
  }
92
+ var parsePreviewCommand = createParserProgram({
93
+ setupProgram: setupPreviewParserProgram,
94
+ parseArgs: (options, [input]) => {
95
+ if (input && !options.config && upath.basename(input).startsWith("vivliostyle.config")) {
96
+ return { ...options, config: input };
97
+ }
98
+ return { ...options, input };
99
+ }
100
+ });
92
101
 
93
102
  // src/commands/preview.ts
94
103
  try {
95
- const inlineConfig = parseFlagsToInlineConfig(
96
- process.argv,
97
- setupPreviewParserProgram
98
- );
104
+ const inlineConfig = parsePreviewCommand(process.argv);
99
105
  await preview(inlineConfig);
100
106
  } catch (err) {
101
107
  if (err instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/preview.parser.ts","../../src/commands/preview.ts"],"sourcesContent":["import { Command, Option } from 'commander';\n\nexport function setupPreviewParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle preview')\n .description('launch preview server')\n .arguments('[input]')\n .option('-c, --config <config_file>', 'path to vivliostyle.config.js')\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option('-q, --quick', 'quick loading with rough page count')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .addOption(\n new Option('--no-sandbox', `launch chrome without sandbox`).hideHelp(),\n )\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n .addOption(\n new Option(\n '--browser <browser>',\n `EXPERIMENTAL SUPPORT: Specify a browser type to launch Vivliostyle viewer [chromium]\nCurrently, Firefox and Webkit support preview command only!`,\n ).choices(['chromium', 'firefox', 'webkit']),\n )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-open-viewer', 'do not open viewer')\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--no-enable-viewer-start-page', 'disable viewer start page')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n // TODO: Remove it in the next major version up\n .addOption(new Option('--executable-chromium <path>').hideHelp())\n .addOption(new Option('--verbose').hideHelp())\n .addOption(new Option('--http').hideHelp());\n return program;\n}\n","import { preview } from '../core/preview.js';\nimport { gracefulError } from '../util.js';\nimport { parseFlagsToInlineConfig } from './cli-flags.js';\nimport { setupPreviewParserProgram } from './preview.parser.js';\n\ntry {\n const inlineConfig = parseFlagsToInlineConfig(\n process.argv,\n setupPreviewParserProgram,\n );\n await preview(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAEzB,SAAS,4BAAqC;AACnD,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,qBAAqB,EAC1B,YAAY,uBAAuB,EACnC,UAAU,SAAS,EACnB,OAAO,8BAA8B,+BAA+B,EACpE,OAAO,0BAA0B,4BAA4B,EAC7D;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA,EAGF,EACC,OAAO,oBAAoB,kBAAkB,EAC7C;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,wBAAwB,mCAAmC,EAClE,OAAO,kCAAkC,6BAA6B,EACtE,OAAO,oBAAoB,4BAA4B,EACvD,OAAO,eAAe,qCAAqC,EAC3D,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,QAAQ,CAAC,OAAO,KAAK,CAAC;AAAA,EAC1B,EACC,UAAU,IAAI,OAAO,aAAa,4BAA4B,EAAE,SAAS,CAAC,EAC1E;AAAA,IACC,IAAI,OAAO,gBAAgB,+BAA+B,EAAE,SAAS;AAAA,EACvE,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA;AAAA,EAEF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA;AAAA,IAEF,EAAE,QAAQ,CAAC,YAAY,WAAW,QAAQ,CAAC;AAAA,EAC7C,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,OAAO,iBAAiB,wCAAwC,EAChE,OAAO,iBAAiB,oCAAoC,QAAQ,EACpE,OAAO,oBAAoB,oBAAoB,EAC/C,OAAO,4BAA4B,6BAA6B,EAChE,OAAO,iCAAiC,2BAA2B,EACnE,OAAO,6BAA6B,uBAAuB,EAC3D;AAAA,IACC;AAAA,IACA;AAAA,EACF,EAEC,UAAU,IAAI,OAAO,8BAA8B,EAAE,SAAS,CAAC,EAC/D,UAAU,IAAI,OAAO,WAAW,EAAE,SAAS,CAAC,EAC5C,UAAU,IAAI,OAAO,QAAQ,EAAE,SAAS,CAAC;AAC5C,SAAO;AACT;;;AClHA,IAAI;AACF,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,EACF;AACA,QAAM,QAAQ,YAAY;AAC5B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/commands/preview.parser.ts","../../src/commands/preview.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport upath from 'upath';\nimport { versionForDisplay } from '../const.js';\nimport { createParserProgram } from './cli-flags.js';\n\nfunction setupPreviewParserProgram(): Command {\n const program = new Command();\n program\n .name('vivliostyle preview')\n .description('launch preview server')\n .arguments('[input]')\n .option('-c, --config <config_file>', 'path to vivliostyle.config.js')\n .option('-T, --theme <theme...>', 'theme path or package name')\n .option(\n '-s, --size <size>',\n `output pdf size\npreset: A5, A4, A3, B5, B4, JIS-B5, JIS-B4, letter, legal, ledger\ncustom(comma separated): 182mm,257mm or 8.5in,11in`,\n )\n .option('-m, --crop-marks', 'print crop marks')\n .option(\n '--bleed <bleed>',\n 'extent of the bleed area for printing with crop marks [3mm]',\n )\n .option(\n '--crop-offset <offset>',\n 'distance between the edge of the trim size and the edge of the media size. [auto (13mm + bleed)]',\n )\n .option(\n '--css <CSS>',\n 'custom style CSS code. (ex: \":root {--my-color: lime;}\")',\n )\n .option('--style <stylesheet>', 'additional stylesheet URL or path')\n .option('--user-style <user_stylesheet>', 'user stylesheet URL or path')\n .option('-d, --single-doc', 'single HTML document input')\n .option('-q, --quick', 'quick loading with rough page count')\n .option('--title <title>', 'title')\n .option('--author <author>', 'author')\n .option('-l, --language <language>', 'language')\n .addOption(\n new Option(\n '--reading-progression <direction>',\n 'Direction of reading progression',\n ).choices(['ltr', 'rtl']),\n )\n .addOption(new Option('--sandbox', `launch chrome with sandbox`).hideHelp())\n .option(\n '--executable-browser <path>',\n 'specify a path of executable browser you installed',\n )\n .option(\n '--viewer <URL>',\n `specify a URL of displaying viewer instead of vivliostyle-cli's one\nIt is useful that using own viewer that has staging features. (ex: https://vivliostyle.vercel.app/)`,\n )\n .option(\n '--viewer-param <parameters>',\n `specify viewer parameters. (ex: \"allowScripts=false&pixelRatio=16\")`,\n )\n .addOption(\n new Option(\n '--browser <browser>',\n `Specify a browser type and version to launch the Vivliostyle viewer (ex: chrome@129, firefox) [chrome]`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-server <proxyServer>',\n `HTTP/SOCK proxy server url for underlying Playwright`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-bypass <proxyBypass>',\n `optional comma-separated domains to bypass proxy`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-user <proxyUser>',\n `optional username for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--proxy-pass <proxyPass>',\n `optional password for HTTP proxy authentication`,\n ),\n )\n .addOption(\n new Option(\n '--log-level <level>',\n 'specify a log level of console outputs',\n )\n .choices(['silent', 'info', 'verbose', 'debug'])\n .default('info'),\n )\n .addOption(\n new Option(\n '--ignore-https-errors',\n `true to ignore HTTPS errors when Playwright browser opens a new page`,\n ),\n )\n .option('--host <host>', 'IP address the server should listen on')\n .option('--port <port>', 'port the server should listen on', parseInt)\n .option('--no-open-viewer', 'do not open viewer')\n .option('--no-enable-static-serve', 'disable static file serving')\n .option('--no-enable-viewer-start-page', 'disable viewer start page')\n .option('--vite-config-file <path>', 'Vite config file path')\n .option(\n '--no-vite-config-file',\n 'ignore Vite config file even if it exists',\n )\n .version(versionForDisplay, '-v, --version');\n return program;\n}\n\nexport const parsePreviewCommand = createParserProgram({\n setupProgram: setupPreviewParserProgram,\n parseArgs: (options, [input]) => {\n if (\n input &&\n !options.config &&\n upath.basename(input).startsWith('vivliostyle.config')\n ) {\n // Load an input argument as a Vivliostyle config\n return { ...options, config: input };\n }\n return { ...options, input };\n },\n});\n","import { preview } from '../core/preview.js';\nimport { gracefulError } from '../util.js';\nimport { parsePreviewCommand } from './preview.parser.js';\n\ntry {\n const inlineConfig = parsePreviewCommand(process.argv);\n await preview(inlineConfig);\n} catch (err) {\n if (err instanceof Error) {\n gracefulError(err);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAS,SAAS,cAAc;AAChC,OAAO,WAAW;AAIlB,SAAS,4BAAqC;AAC5C,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,qBAAqB,EAC1B,YAAY,uBAAuB,EACnC,UAAU,SAAS,EACnB,OAAO,8BAA8B,+BAA+B,EACpE,OAAO,0BAA0B,4BAA4B,EAC7D;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA,EAGF,EACC,OAAO,oBAAoB,kBAAkB,EAC7C;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,OAAO,wBAAwB,mCAAmC,EAClE,OAAO,kCAAkC,6BAA6B,EACtE,OAAO,oBAAoB,4BAA4B,EACvD,OAAO,eAAe,qCAAqC,EAC3D,OAAO,mBAAmB,OAAO,EACjC,OAAO,qBAAqB,QAAQ,EACpC,OAAO,6BAA6B,UAAU,EAC9C;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,QAAQ,CAAC,OAAO,KAAK,CAAC;AAAA,EAC1B,EACC,UAAU,IAAI,OAAO,aAAa,4BAA4B,EAAE,SAAS,CAAC,EAC1E;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA;AAAA,EAEF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,QAAQ,WAAW,OAAO,CAAC,EAC9C,QAAQ,MAAM;AAAA,EACnB,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,OAAO,iBAAiB,wCAAwC,EAChE,OAAO,iBAAiB,oCAAoC,QAAQ,EACpE,OAAO,oBAAoB,oBAAoB,EAC/C,OAAO,4BAA4B,6BAA6B,EAChE,OAAO,iCAAiC,2BAA2B,EACnE,OAAO,6BAA6B,uBAAuB,EAC3D;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,QAAQ,mBAAmB,eAAe;AAC7C,SAAO;AACT;AAEO,IAAM,sBAAsB,oBAAoB;AAAA,EACrD,cAAc;AAAA,EACd,WAAW,CAAC,SAAS,CAAC,KAAK,MAAM;AAC/B,QACE,SACA,CAAC,QAAQ,UACT,MAAM,SAAS,KAAK,EAAE,WAAW,oBAAoB,GACrD;AAEA,aAAO,EAAE,GAAG,SAAS,QAAQ,MAAM;AAAA,IACrC;AACA,WAAO,EAAE,GAAG,SAAS,MAAM;AAAA,EAC7B;AACF,CAAC;;;AC9HD,IAAI;AACF,QAAM,eAAe,oBAAoB,QAAQ,IAAI;AACrD,QAAM,QAAQ,YAAY;AAC5B,SAAS,KAAK;AACZ,MAAI,eAAe,OAAO;AACxB,kBAAc,GAAG;AAAA,EACnB;AACF;","names":[]}