gutterpress 0.11.17-alpha.6 → 0.11.17-alpha.7

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.
@@ -32,8 +32,8 @@ export { TARGETS, TARGET_IDS, publishTargetFor } from "../lib/targets.ts";
32
32
  export type { PublishTarget, TargetOverlay } from "../lib/targets.ts";
33
33
  export { listBuiltInTemplates, listCustomTemplates, saveProjectAsTemplate, importTemplateFromFolder, BUILT_IN_TEMPLATE_IDS, } from "../lib/project-templates.ts";
34
34
  export type { TemplateInfo, SaveProjectAsTemplateOptions, } from "../lib/project-templates.ts";
35
- export { extractVariables, substituteVariables, listSnippets, saveSnippet, deleteSnippet, listMergedSnippets, listMarkerComponents, SNIPPETS_DIR, } from "../lib/snippets.ts";
36
- export type { MarkerComponent, SnippetEntry, SnippetSource } from "../lib/snippets.ts";
35
+ export { extractVariables, substituteVariables, listSnippets, saveSnippet, deleteSnippet, listMergedSnippets, listMarkerComponents, listLocationVariants, SNIPPETS_DIR, } from "../lib/snippets.ts";
36
+ export type { LocationVariant, MarkerComponent, SnippetEntry, SnippetSource } from "../lib/snippets.ts";
37
37
  export { listProjectExtensions, describeExtension, addExtension, checkExtensionUpdates, listNpmVersions, updateExtensions, removeExtension, setExtensionEnabled, reorderExtensions, validateProjectExtensions, readExtensionCss, listBuiltInStyleSets, addBuiltInStyleSet, sameExtension, RECOMMENDED_EXTENSIONS, BUILT_IN_STYLE_SET_IDS, EXTENSIONS_DIR, PLUGINS_DIR, } from "../lib/extension-manager.ts";
38
38
  export type { ProjectExtensionEntry, ExtensionValidationResult, RecommendedExtension, ExtensionSourceKind, BuiltInStyleSet, BuiltInStyleSetId, AddExtensionOptions, ExtensionUpdateCheck, ExtensionUpdateResult, CheckExtensionUpdatesOptions, UpdateExtensionsOptions, } from "../lib/extension-manager.ts";
39
39
  export { BUNDLED_EXTENSIONS, isBundledExtension, isPathSpecifier, parseExtensionSpecifier, } from "../lib/extension-specifier.ts";
package/dist/api/index.js CHANGED
@@ -70,6 +70,7 @@ import {
70
70
  listCustomTemplates,
71
71
  listGitHubBranches,
72
72
  listGitHubRepositories,
73
+ listLocationVariants,
73
74
  listMarkerComponents,
74
75
  listMergedSnippets,
75
76
  listNpmVersions,
@@ -135,7 +136,7 @@ import {
135
136
  testRemoteAccess,
136
137
  updateExtensions,
137
138
  validateProjectExtensions
138
- } from "../index-2vd5b3vy.js";
139
+ } from "../index-k0k4syyd.js";
139
140
  import"../index-ht1bcqdd.js";
140
141
  import {
141
142
  BuildError
@@ -242,6 +243,7 @@ export {
242
243
  listNpmVersions,
243
244
  listMergedSnippets,
244
245
  listMarkerComponents,
246
+ listLocationVariants,
245
247
  listLocalBranches,
246
248
  listGitHubRepositories,
247
249
  listGitHubBranches,
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  runBuild,
3
3
  splitOutPath
4
- } from "./cli-an3pxzzk.js";
4
+ } from "./cli-v3xmpvs8.js";
5
5
  import {
6
6
  log
7
- } from "./cli-0wtnw98y.js";
7
+ } from "./cli-vsgj1n9s.js";
8
8
  import {
9
9
  UsageError,
10
10
  parseFormat,
11
11
  parsePdfxFlavor,
12
12
  rejectExtraPositionals,
13
13
  rejectUnknownFlags
14
- } from "./cli-jjbeqx94.js";
14
+ } from "./cli-2yvrfr58.js";
15
15
  import"./cli-ht1bcqdd.js";
16
16
  import"./cli-ycbg7mxk.js";
17
17
  import {
@@ -4,7 +4,7 @@ import {
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "gutterpress",
7
- version: "0.11.17-alpha.6",
7
+ version: "0.11.17-alpha.7",
8
8
  description: "Markdown-to-PDF converter for professional print layout using a native Chromium print engine and Ghostscript.",
9
9
  author: "itlackey",
10
10
  license: "MPL-2.0",
@@ -13,12 +13,12 @@ import {
13
13
  stampCreator,
14
14
  stripAnnotations,
15
15
  warn
16
- } from "./cli-0wtnw98y.js";
16
+ } from "./cli-vsgj1n9s.js";
17
17
  import {
18
18
  DEBOUNCE,
19
19
  UsageError,
20
20
  resolvePort
21
- } from "./cli-jjbeqx94.js";
21
+ } from "./cli-2yvrfr58.js";
22
22
  import {
23
23
  blackTextToGray
24
24
  } from "./cli-ht1bcqdd.js";
@@ -1224,18 +1224,53 @@ var CORE_DECLARED_MARKERS = {
1224
1224
  class: "gp-columns",
1225
1225
  preset: { variant: "2" },
1226
1226
  variants: { 1: "gp-columns-1", 2: "gp-columns-2", 3: "gp-columns-3", 4: "gp-columns-4", 5: "gp-columns-5" }
1227
- }
1227
+ },
1228
+ page: { variants: { blank: "gp-page-blank", "full-bleed": "gp-page-full-bleed" } }
1228
1229
  };
1230
+ var LOCATION_KINDS = ["page", "chapter", "section"];
1231
+ var LOCATION_KEYS = ["variants", "label", "snippet"];
1232
+ function isLocationDeclaration(name, rawDecl) {
1233
+ return LOCATION_KINDS.includes(name) && rawDecl !== null && typeof rawDecl === "object" && !Array.isArray(rawDecl) && Object.hasOwn(rawDecl, "variants") && Object.keys(rawDecl).every((k) => LOCATION_KEYS.includes(k));
1234
+ }
1235
+ function addLocationVariants(kind, rawDecl, pluginName, into) {
1236
+ const { variants, label, snippet } = rawDecl;
1237
+ const where = `Plugin "${pluginName}" declares @${kind} variants`;
1238
+ if (variants === null || typeof variants !== "object" || Array.isArray(variants)) {
1239
+ throw new Error(`${where} that are not a plain object of { word: 'class' }.`);
1240
+ }
1241
+ if (label !== undefined && typeof label !== "string")
1242
+ throw new Error(`${where} with a \`label\` that is not a string.`);
1243
+ if (snippet !== undefined && typeof snippet !== "string")
1244
+ throw new Error(`${where} with a \`snippet\` that is not a string.`);
1245
+ for (const [word, cls] of Object.entries(variants)) {
1246
+ if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(word)) {
1247
+ throw new Error(`${where} with an invalid word "${word}" — use letters, digits, hyphens and underscores.`);
1248
+ }
1249
+ if (typeof cls !== "string" || !cls.trim()) {
1250
+ throw new Error(`${where}: variant "${word}" needs a non-empty class string.`);
1251
+ }
1252
+ const taken = into[kind].get(word);
1253
+ if (taken) {
1254
+ throw new Error(`@${kind} variant "${word}" is declared by both plugin "${taken.owner}" and plugin "${pluginName}". ` + `Variant words must be unique across every loaded plugin — rename one of them.`);
1255
+ }
1256
+ into[kind].set(word, { class: cls.trim(), owner: pluginName, ...label ? { label } : {}, ...snippet ? { snippet } : {} });
1257
+ }
1258
+ }
1229
1259
  function buildDeclaredMarkerRegistry(sources) {
1230
1260
  const rawRegistry = new Map;
1231
1261
  const originOf = new Map;
1262
+ const locationVariants = { page: new Map, chapter: new Map, section: new Map };
1232
1263
  for (const { pluginName, markers } of [{ pluginName: CORE_MARKER_OWNER, markers: CORE_DECLARED_MARKERS }, ...sources]) {
1233
1264
  if (!markers)
1234
1265
  continue;
1235
1266
  for (const [name, rawDecl] of Object.entries(markers)) {
1236
1267
  validateDeclaredMarkerName(name, pluginName);
1268
+ if (isLocationDeclaration(name, rawDecl)) {
1269
+ addLocationVariants(name, rawDecl, pluginName, locationVariants);
1270
+ continue;
1271
+ }
1237
1272
  if (KNOWN_KINDS.includes(name) || pluginName !== CORE_MARKER_OWNER && name in CORE_DECLARED_MARKERS) {
1238
- throw new Error(`Plugin "${pluginName}" declares marker "@${name}", which is a core Gutterpress marker name ` + `(${[...KNOWN_KINDS, ...Object.keys(CORE_DECLARED_MARKERS)].map((k) => `@${k}`).join(", ")}). ` + `Core marker names cannot be shadowed — ` + `rename the plugin's marker.`);
1273
+ throw new Error(`Plugin "${pluginName}" declares marker "@${name}", which is a core Gutterpress marker name ` + `(${[...KNOWN_KINDS, ...Object.keys(CORE_DECLARED_MARKERS).filter((k) => !KNOWN_KINDS.includes(k))].map((k) => `@${k}`).join(", ")}). ` + `Core marker names cannot be shadowed — ` + `rename the plugin's marker.`);
1239
1274
  }
1240
1275
  if (rawRegistry.has(name)) {
1241
1276
  throw new Error(`Marker "@${name}" is declared by both plugin "${originOf.get(name)}" and plugin "${pluginName}". ` + `Declared marker names must be unique across every loaded plugin — rename one of them.`);
@@ -1248,6 +1283,7 @@ function buildDeclaredMarkerRegistry(sources) {
1248
1283
  for (const [name, rawDecl] of rawRegistry) {
1249
1284
  resolved.set(name, resolveMarkerDeclaration(name, rawDecl, rawRegistry, originOf));
1250
1285
  }
1286
+ resolved.locationVariants = locationVariants;
1251
1287
  return resolved;
1252
1288
  }
1253
1289
  function declaredKindWords(declaredMarkers) {
@@ -1303,6 +1339,9 @@ function scanForUnknownDeclaredMarkers(state, declaredMarkers) {
1303
1339
  function variantClassFor(decl, word) {
1304
1340
  return word && decl.variants && Object.hasOwn(decl.variants, word) ? decl.variants[word] : "";
1305
1341
  }
1342
+ function nearVariant(word, variants) {
1343
+ return variants.find((v) => v.toLowerCase() === word.toLowerCase()) || (word.length >= 3 ? nearestDeclaredMarkerName(word, variants) : null);
1344
+ }
1306
1345
  function warnUnknownVariant(env, meta, decl) {
1307
1346
  const word = meta.name;
1308
1347
  if (!word)
@@ -1310,9 +1349,16 @@ function warnUnknownVariant(env, meta, decl) {
1310
1349
  const variants = Object.keys(decl.variants || {});
1311
1350
  if (variants.includes(word))
1312
1351
  return;
1313
- const near = variants.find((v) => v.toLowerCase() === word.toLowerCase()) || (word.length >= 3 ? nearestDeclaredMarkerName(word, variants) : null);
1352
+ const near = nearVariant(word, variants);
1314
1353
  warn2(env, meta.__line, "unknown_variant", `"${word}" is not a variant of @${meta.kind}, so it adds no styling. ` + (variants.length ? `Variants: ${variants.join(", ")}.` : `@${meta.kind} has no variants.`) + (near ? ` Did you mean "${near}"?` : ""), meta);
1315
1354
  }
1355
+ function warnNearMissVariant(env, meta, kind, variants) {
1356
+ const words = [...variants.keys()];
1357
+ const near = nearVariant(meta.name, words);
1358
+ if (!near)
1359
+ return;
1360
+ warn2(env, meta.__line, "unknown_variant", `"${meta.name}" is not a variant of @${kind}, so it is only a ${kind} name and adds no styling. ` + `Variants: ${words.join(", ")}. Did you mean "${near}"?`, meta);
1361
+ }
1316
1362
  function plugin(md, pluginOptions = {}) {
1317
1363
  const options = {
1318
1364
  preferPagesInSpreads: false,
@@ -1320,6 +1366,7 @@ function plugin(md, pluginOptions = {}) {
1320
1366
  };
1321
1367
  const declaredMarkers = options.declaredMarkers instanceof Map && options.declaredMarkers.size > 0 ? options.declaredMarkers : buildDeclaredMarkerRegistry([]);
1322
1368
  const declaredWords = declaredKindWords(declaredMarkers);
1369
+ const locationVariants = declaredMarkers.locationVariants || buildDeclaredMarkerRegistry([]).locationVariants;
1323
1370
  function markerBlock(state, startLine, endLine, silent) {
1324
1371
  const pos = state.bMarks[startLine] + state.tShift[startLine];
1325
1372
  const max = state.eMarks[startLine];
@@ -1503,14 +1550,16 @@ function plugin(md, pluginOptions = {}) {
1503
1550
  function openChapter(meta) {
1504
1551
  const t = new state.Token("layout_chapter_open", "div", 1);
1505
1552
  t.meta = { line: meta.__line };
1506
- const classes = meta.attrs?.class || "";
1553
+ const variant = locationVariants.chapter.get(meta.name);
1554
+ const label = variant ? "" : meta.name;
1555
+ const classes = [variant?.class, meta.attrs?.class].filter(Boolean).join(" ");
1507
1556
  addClasses(t, "chapter", classes);
1508
- attachDataAttrs(t, "chapter", meta.name, meta.attrs || {});
1557
+ attachDataAttrs(t, "chapter", label, meta.attrs || {});
1509
1558
  const explicit = (classes.match(/(?:^|\s)(chapter-\d+)(?=\s|$)/) || [])[1] || "";
1510
1559
  const fromAttr = meta.attrs?.ch ? `chapter-${meta.attrs.ch}` : "";
1511
1560
  stack.open({
1512
1561
  kind: "chapter",
1513
- label: meta.name || "",
1562
+ label: label || "",
1514
1563
  counterClass: explicit || fromAttr,
1515
1564
  openerEmitted: false
1516
1565
  }, t);
@@ -1534,7 +1583,11 @@ function plugin(md, pluginOptions = {}) {
1534
1583
  const explicit = meta.attrs && meta.attrs.class ? meta.attrs.class : "";
1535
1584
  const counterClass = chapter ? chapter.counterClass : "";
1536
1585
  const tokens = explicit ? explicit.split(/\s+/) : [];
1537
- const merged = counterClass && !tokens.includes(counterClass) ? explicit ? `${explicit} ${counterClass}` : counterClass : explicit;
1586
+ const withCounter = counterClass && !tokens.includes(counterClass) ? explicit ? `${explicit} ${counterClass}` : counterClass : explicit;
1587
+ const variant = locationVariants.page.get(meta.name);
1588
+ if (!variant && meta.name)
1589
+ warnNearMissVariant(state.env, meta, "page", locationVariants.page);
1590
+ const merged = [variant?.class, withCounter].filter(Boolean).join(" ");
1538
1591
  addClasses(t, "page", merged);
1539
1592
  attachDataAttrs(t, "page", meta.name, meta.attrs || {});
1540
1593
  const label = chapter ? chapter.label : "";
@@ -1573,7 +1626,8 @@ function plugin(md, pluginOptions = {}) {
1573
1626
  function openSection(meta, inColumns = false) {
1574
1627
  const t = new state.Token("layout_section_open", "div", 1);
1575
1628
  const component = meta.__component || null;
1576
- addClasses(t, "section", meta.attrs && meta.attrs.class ? meta.attrs.class : "");
1629
+ const variant = component ? null : locationVariants.section.get(meta.name);
1630
+ addClasses(t, "section", [variant?.class, meta.attrs && meta.attrs.class].filter(Boolean).join(" "));
1577
1631
  if (component)
1578
1632
  attachDataAttrs(t, component.kind, component.variant, meta.attrs || {});
1579
1633
  else
@@ -1660,6 +1714,9 @@ function plugin(md, pluginOptions = {}) {
1660
1714
  if (spread && spread.noPagesYet) {
1661
1715
  warn2(state.env, line, "spread_without_pages", "@section inside a spread without an explicit @page. Allowed (adhoc spread), but explicit @page markers give stronger control.", meta);
1662
1716
  }
1717
+ if (meta.name && !locationVariants.section.has(meta.name)) {
1718
+ warnNearMissVariant(state.env, meta, "section", locationVariants.section);
1719
+ }
1663
1720
  openSection(meta, keep > 0);
1664
1721
  continue;
1665
1722
  }
@@ -1784,6 +1841,25 @@ function plugin(md, pluginOptions = {}) {
1784
1841
  };
1785
1842
  md.renderer.rules.layout_marker = () => "";
1786
1843
  }
1844
+ var NO_MARGIN_BOXES = [
1845
+ "top-left-corner",
1846
+ "top-left",
1847
+ "top-center",
1848
+ "top-right",
1849
+ "top-right-corner",
1850
+ "bottom-left-corner",
1851
+ "bottom-left",
1852
+ "bottom-center",
1853
+ "bottom-right",
1854
+ "bottom-right-corner",
1855
+ "left-top",
1856
+ "left-middle",
1857
+ "left-bottom",
1858
+ "right-top",
1859
+ "right-middle",
1860
+ "right-bottom"
1861
+ ].map((box) => ` @${box} { content: none; }`).join(`
1862
+ `);
1787
1863
  var MARKER_CSS = `
1788
1864
  /* The UA default of 8px body margin is a screen affordance with no meaning
1789
1865
  in paged media, and engines disagree about it: a polyfill that treats the
@@ -1818,6 +1894,34 @@ body { margin: 0; }
1818
1894
  :where(p) > :where(img:not([class])) { max-height: calc(var(--gp-content-h) - 4px); object-fit: contain; }
1819
1895
  :where(figure) { break-inside: avoid; }
1820
1896
 
1897
+ /* Core page variants — \`@page blank\` and \`@page full-bleed\` (CORE_DECLARED_MARKERS).
1898
+ Each is the \`.page\` the marker already emits plus one class; the class
1899
+ assigns the page to a NAMED page, and the named \`@page\` block below is
1900
+ plain CSS Paged Media. Authors never write these names.
1901
+
1902
+ SPEC GAP FILLED: none. Named pages (\`@page <name>\`, \`page:\`) and margin
1903
+ box \`content: none\` are standard and implemented in Chromium; this is
1904
+ author vocabulary that expands to them (permanent, like @columns), not a
1905
+ shim, so nothing here is deleted when Chrome catches up. Both pages are
1906
+ named \`gp-\`, which the shrink-to-fit audit (engine/compiler/build.ts)
1907
+ leaves out of its per-page limits, so they cannot loosen it for other pages.
1908
+
1909
+ The folio still COUNTS on these pages (only what is drawn is cleared), and
1910
+ a book that assigns \`page:\` to every \`.page\` in its own unlayered CSS
1911
+ overrides the assignment, as any unlayered rule overrides this layer. */
1912
+ @page gp-page-blank {
1913
+ ${NO_MARGIN_BOXES}
1914
+ }
1915
+ .page.gp-page-blank { page: gp-page-blank; }
1916
+
1917
+ /* full-bleed: zero page margin, so the content box IS the sheet. The margin
1918
+ boxes are cleared too — with zero margins they would land on the trim line. */
1919
+ @page gp-page-full-bleed {
1920
+ margin: 0;
1921
+ ${NO_MARGIN_BOXES}
1922
+ }
1923
+ .page.gp-page-full-bleed { page: gp-page-full-bleed; }
1924
+
1821
1925
  `;
1822
1926
 
1823
1927
  // src/lib/markdown/gutterpress-css.ts
@@ -2061,6 +2165,8 @@ var GP_CLASSES = new Set([
2061
2165
  "gp-columns-3",
2062
2166
  "gp-columns-4",
2063
2167
  "gp-columns-5",
2168
+ "gp-page-blank",
2169
+ "gp-page-full-bleed",
2064
2170
  "gp-no-break",
2065
2171
  "gp-break-before",
2066
2172
  "gp-shape",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "./cli-jjbeqx94.js";
3
+ } from "./cli-2yvrfr58.js";
4
4
  import {
5
5
  execCapture,
6
6
  findTool,
package/dist/cli.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  UsageError,
7
7
  package_default,
8
8
  rejectUnknownFlags
9
- } from "./cli-jjbeqx94.js";
9
+ } from "./cli-2yvrfr58.js";
10
10
  import {
11
11
  EXIT_CODES
12
12
  } from "./cli-46ycxe6r.js";
@@ -18,14 +18,14 @@ import {
18
18
  import { defineCommand, parseArgs, runMain } from "citty";
19
19
  import { statSync } from "node:fs";
20
20
  var SUBCOMMANDS = {
21
- new: () => import("./new-8xwac8nd.js").then((m) => m.default),
22
- preview: () => import("./preview-qdby30fx.js").then((m) => m.default),
23
- build: () => import("./build-yswp3npj.js").then((m) => m.default),
24
- publish: () => import("./publish-v9tdq7kc.js").then((m) => m.default),
25
- validate: () => import("./validate-9nszbckg.js").then((m) => m.default),
26
- preflight: () => import("./preflight-62c2r37w.js").then((m) => m.default),
27
- doctor: () => import("./doctor-xjgxr88y.js").then((m) => m.default),
28
- ext: () => import("./ext-n664e0ka.js").then((m) => m.default)
21
+ new: () => import("./new-mvtamd8q.js").then((m) => m.default),
22
+ preview: () => import("./preview-xzvwzsyz.js").then((m) => m.default),
23
+ build: () => import("./build-nbwgzcgv.js").then((m) => m.default),
24
+ publish: () => import("./publish-2x100s48.js").then((m) => m.default),
25
+ validate: () => import("./validate-nrpa6kah.js").then((m) => m.default),
26
+ preflight: () => import("./preflight-et7fnz7v.js").then((m) => m.default),
27
+ doctor: () => import("./doctor-dmagdmyw.js").then((m) => m.default),
28
+ ext: () => import("./ext-twnqxfba.js").then((m) => m.default)
29
29
  };
30
30
  var VERSION = package_default.version;
31
31
  var main = defineCommand({
@@ -50,7 +50,7 @@ async function preflightRequiredInvocations(rawArgs) {
50
50
  const [command, ...commandArgs] = rawArgs;
51
51
  try {
52
52
  if (command === "new") {
53
- const { newArgs } = await import("./new-8xwac8nd.js");
53
+ const { newArgs } = await import("./new-mvtamd8q.js");
54
54
  rejectUnknownFlags(commandArgs, newArgs, "new");
55
55
  const parsed = parseArgs(commandArgs, {
56
56
  ...newArgs,
@@ -62,7 +62,7 @@ async function preflightRequiredInvocations(rawArgs) {
62
62
  return;
63
63
  }
64
64
  if (command === "preflight") {
65
- const { preflightArgs } = await import("./preflight-62c2r37w.js");
65
+ const { preflightArgs } = await import("./preflight-et7fnz7v.js");
66
66
  rejectUnknownFlags(commandArgs, preflightArgs, "preflight");
67
67
  const parsed = parseArgs(commandArgs, {
68
68
  ...preflightArgs,
@@ -82,7 +82,7 @@ async function preflightRequiredInvocations(rawArgs) {
82
82
  }
83
83
  if (subcommand.startsWith("-"))
84
84
  return;
85
- const { EXT_SUBCOMMANDS, extAddArgs, extRemoveArgs, extEnableArgs, extDisableArgs } = await import("./ext-n664e0ka.js");
85
+ const { EXT_SUBCOMMANDS, extAddArgs, extRemoveArgs, extEnableArgs, extDisableArgs } = await import("./ext-twnqxfba.js");
86
86
  if (!EXT_SUBCOMMANDS.includes(subcommand)) {
87
87
  throw new UsageError(`gutterpress ext: unknown command "${subcommand}"`);
88
88
  }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getSystemDiagnostics,
3
3
  log
4
- } from "./cli-0wtnw98y.js";
4
+ } from "./cli-vsgj1n9s.js";
5
5
  import {
6
6
  UsageError,
7
7
  rejectExtraPositionals,
8
8
  rejectUnknownFlags
9
- } from "./cli-jjbeqx94.js";
9
+ } from "./cli-2yvrfr58.js";
10
10
  import"./cli-46ycxe6r.js";
11
11
  import"./cli-7fkhgtfn.js";
12
12
  import"./cli-37x76zdn.js";
@@ -12,15 +12,15 @@ import {
12
12
  searchNpmExtensions,
13
13
  setExtensionEnabled,
14
14
  updateExtensions
15
- } from "./cli-an3pxzzk.js";
16
- import"./cli-0wtnw98y.js";
15
+ } from "./cli-v3xmpvs8.js";
16
+ import"./cli-vsgj1n9s.js";
17
17
  import {
18
18
  UsageError,
19
19
  exitForUsage,
20
20
  rejectExtraPositionals,
21
21
  rejectUnknownFlags,
22
22
  resolveProjectDir
23
- } from "./cli-jjbeqx94.js";
23
+ } from "./cli-2yvrfr58.js";
24
24
  import"./cli-ht1bcqdd.js";
25
25
  import"./cli-ycbg7mxk.js";
26
26
  import {