gutterpress 0.11.17-alpha.6 → 0.11.17-alpha.8
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.
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.js +3 -1
- package/dist/{build-yswp3npj.js → build-szv6yb9b.js} +3 -3
- package/dist/{cli-0wtnw98y.js → cli-cxxc73t3.js} +1 -1
- package/dist/{cli-jjbeqx94.js → cli-fq80qyy2.js} +1 -1
- package/dist/{cli-an3pxzzk.js → cli-vtb897de.js} +116 -10
- package/dist/cli.js +12 -12
- package/dist/{doctor-xjgxr88y.js → doctor-nymyn4ht.js} +2 -2
- package/dist/{ext-n664e0ka.js → ext-eqy2brat.js} +3 -3
- package/dist/{index-2vd5b3vy.js → index-4qx2z7rm.js} +140 -12
- package/dist/index.js +3 -1
- package/dist/lib/markdown/assemble.d.ts +3 -1
- package/dist/lib/markdown/markers.d.ts +27 -162
- package/dist/lib/markdown/renderer.d.ts +10 -1
- package/dist/lib/snippets.d.ts +23 -0
- package/dist/{new-8xwac8nd.js → new-6728wa4h.js} +3 -3
- package/dist/{preflight-62c2r37w.js → preflight-q2z645kv.js} +3 -3
- package/dist/{preview-qdby30fx.js → preview-7j7praqt.js} +3 -3
- package/dist/{publish-v9tdq7kc.js → publish-r3gd2pgd.js} +3 -3
- package/dist/render.js +114 -8
- package/dist/{validate-9nszbckg.js → validate-neh48dk8.js} +3 -3
- package/package.json +1 -1
package/dist/api/index.d.ts
CHANGED
|
@@ -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-
|
|
139
|
+
} from "../index-4qx2z7rm.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-
|
|
4
|
+
} from "./cli-vtb897de.js";
|
|
5
5
|
import {
|
|
6
6
|
log
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-cxxc73t3.js";
|
|
8
8
|
import {
|
|
9
9
|
UsageError,
|
|
10
10
|
parseFormat,
|
|
11
11
|
parsePdfxFlavor,
|
|
12
12
|
rejectExtraPositionals,
|
|
13
13
|
rejectUnknownFlags
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-fq80qyy2.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.
|
|
7
|
+
version: "0.11.17-alpha.8",
|
|
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-
|
|
16
|
+
} from "./cli-cxxc73t3.js";
|
|
17
17
|
import {
|
|
18
18
|
DEBOUNCE,
|
|
19
19
|
UsageError,
|
|
20
20
|
resolvePort
|
|
21
|
-
} from "./cli-
|
|
21
|
+
} from "./cli-fq80qyy2.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 =
|
|
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
|
|
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",
|
|
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:
|
|
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
|
|
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
|
-
|
|
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",
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
UsageError,
|
|
7
7
|
package_default,
|
|
8
8
|
rejectUnknownFlags
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-fq80qyy2.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-
|
|
22
|
-
preview: () => import("./preview-
|
|
23
|
-
build: () => import("./build-
|
|
24
|
-
publish: () => import("./publish-
|
|
25
|
-
validate: () => import("./validate-
|
|
26
|
-
preflight: () => import("./preflight-
|
|
27
|
-
doctor: () => import("./doctor-
|
|
28
|
-
ext: () => import("./ext-
|
|
21
|
+
new: () => import("./new-6728wa4h.js").then((m) => m.default),
|
|
22
|
+
preview: () => import("./preview-7j7praqt.js").then((m) => m.default),
|
|
23
|
+
build: () => import("./build-szv6yb9b.js").then((m) => m.default),
|
|
24
|
+
publish: () => import("./publish-r3gd2pgd.js").then((m) => m.default),
|
|
25
|
+
validate: () => import("./validate-neh48dk8.js").then((m) => m.default),
|
|
26
|
+
preflight: () => import("./preflight-q2z645kv.js").then((m) => m.default),
|
|
27
|
+
doctor: () => import("./doctor-nymyn4ht.js").then((m) => m.default),
|
|
28
|
+
ext: () => import("./ext-eqy2brat.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-
|
|
53
|
+
const { newArgs } = await import("./new-6728wa4h.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-
|
|
65
|
+
const { preflightArgs } = await import("./preflight-q2z645kv.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-
|
|
85
|
+
const { EXT_SUBCOMMANDS, extAddArgs, extRemoveArgs, extEnableArgs, extDisableArgs } = await import("./ext-eqy2brat.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-
|
|
4
|
+
} from "./cli-cxxc73t3.js";
|
|
5
5
|
import {
|
|
6
6
|
UsageError,
|
|
7
7
|
rejectExtraPositionals,
|
|
8
8
|
rejectUnknownFlags
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-fq80qyy2.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-
|
|
16
|
-
import"./cli-
|
|
15
|
+
} from "./cli-vtb897de.js";
|
|
16
|
+
import"./cli-cxxc73t3.js";
|
|
17
17
|
import {
|
|
18
18
|
UsageError,
|
|
19
19
|
exitForUsage,
|
|
20
20
|
rejectExtraPositionals,
|
|
21
21
|
rejectUnknownFlags,
|
|
22
22
|
resolveProjectDir
|
|
23
|
-
} from "./cli-
|
|
23
|
+
} from "./cli-fq80qyy2.js";
|
|
24
24
|
import"./cli-ht1bcqdd.js";
|
|
25
25
|
import"./cli-ycbg7mxk.js";
|
|
26
26
|
import {
|