gutterpress 0.10.9 → 0.10.10-alpha.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.
- package/README.md +66 -5
- package/dist/{README-jntqyj1z.md → README-3zk4tgnj.md} +4 -4
- package/dist/{README-6c7fda1s.md → README-7x5akcns.md} +5 -4
- package/dist/api/index.d.ts +7 -4
- package/dist/api/index.js +22 -12
- package/dist/{audit-fq7s1gsz.js → audit-ek36tf4q.js} +5 -5
- package/dist/{build-dyat3fqd.js → build-bxavfz3j.js} +6 -6
- package/dist/{cli-ypfvnhag.js → cli-12epgrva.js} +1 -1
- package/dist/{cli-8pg731p5.js → cli-5fqr02je.js} +4914 -4707
- package/dist/{cli-bzxqtvrk.js → cli-75qkn0k5.js} +1 -1
- package/dist/{cli-bx950tb4.js → cli-k8f9eb12.js} +22 -26
- package/dist/{cli-rh05byck.js → cli-tvpq2ht9.js} +1 -1
- package/dist/{cli-w692g6dx.js → cli-vje8g3w8.js} +88 -1
- package/dist/cli.js +16 -16
- package/dist/{components-0mmswvvm.yaml → components-dhgv2sm7.yaml} +2 -2
- package/dist/{doctor-yr85n080.js → doctor-tgmedr7g.js} +2 -2
- package/dist/{engine-d46wgg99.js → engine-pt2acjb5.js} +2 -2
- package/dist/{engine-19mshh07.js → engine-qtmvaqt7.js} +1 -1
- package/dist/{ext-jrg8c48s.js → ext-jjzmafve.js} +52 -8
- package/dist/{index-zwcv1njy.js → index-5dgxeevv.js} +22 -26
- package/dist/{index-dhgzkhs7.js → index-a0e2253t.js} +1 -1
- package/dist/{index-mey5vraz.js → index-d4wrww4b.js} +918 -796
- package/dist/{index-dtrftayr.js → index-f833dtg9.js} +88 -1
- package/dist/index.js +102 -15
- package/dist/lib/build-error.d.ts +6 -5
- package/dist/lib/build-preflight.d.ts +11 -1
- package/dist/lib/build-runner.d.ts +49 -16
- package/dist/lib/extension-import.d.ts +4 -4
- package/dist/lib/extension-manager.d.ts +3 -3
- package/dist/lib/extension-manifest.d.ts +91 -87
- package/dist/lib/extension-scaffold.d.ts +1 -1
- package/dist/lib/extension-search.d.ts +46 -0
- package/dist/lib/host-policy.d.ts +10 -12
- package/dist/lib/lint-runner.d.ts +16 -9
- package/dist/lib/npm-registry.d.ts +22 -0
- package/dist/lib/source-provider.d.ts +58 -0
- package/dist/lib/validation-exec.d.ts +11 -0
- package/dist/{lint-enasqbqx.js → lint-5vbq6yjb.js} +5 -5
- package/dist/{new-r9c99wsn.js → new-qws45t02.js} +6 -6
- package/dist/package-97gm31sg.json +10 -0
- package/dist/{package-rm9d2tht.json → package-9rv69pxm.json} +4 -1
- package/dist/package-aenwjew3.json +28 -0
- package/dist/package-gag6ykwn.json +10 -0
- package/dist/package-nrhkwf2m.json +10 -0
- package/dist/{plugin.test.js-npnfhyca.tpl → plugin.test.js-k2r87k04.tpl} +9 -8
- package/dist/{preflight-shk7vqbs.js → preflight-4ywt3399.js} +5 -5
- package/dist/{preview-52918mxk.js → preview-4c3tcsn4.js} +6 -6
- package/dist/{publish-8s60vhx7.js → publish-m6bme9a8.js} +5 -5
- package/dist/{source-provider-2j5x2hyw.js → source-provider-2cnc5hry.js} +7 -1
- package/dist/{source-provider-kn41jmbs.js → source-provider-y1kscr1h.js} +7 -1
- package/dist/{tokens-e4xk3x4v.css → tokens-2sracx1w.css} +1 -1
- package/dist/{validate-awccx32r.js → validate-avtb9drn.js} +5 -5
- package/package.json +1 -1
- package/dist/gutterpress-m98e2w2d.json +0 -8
- package/dist/gutterpress-x2ycdsb8.json +0 -17
- package/dist/theme-etj4gxck.json +0 -9
- package/dist/theme-s2rg7xe7.json +0 -9
- package/dist/theme-vktedy8q.json +0 -9
|
@@ -18,7 +18,7 @@ var previewArgs = {
|
|
|
18
18
|
icc: { type: "string", description: "Path to ICC profile (required for --format pdfx)" },
|
|
19
19
|
manifest: { type: "string", description: "Path to manifest.yaml (pdf|pdfx only)" },
|
|
20
20
|
"strip-annotations": { type: "boolean", description: "Strip PDF annotations for PDF/X compliance (pdfx only)" },
|
|
21
|
-
"skip-lint": { type: "boolean", description: "Skip CSS
|
|
21
|
+
"skip-lint": { type: "boolean", description: "Skip the CSS print-safety check (pdf|pdfx only)" },
|
|
22
22
|
"skip-pre-validate": { type: "boolean", description: "Skip pre-build validation (pdf|pdfx only)" },
|
|
23
23
|
"skip-post-validate": { type: "boolean", description: "Skip post-build PDF/X validation (pdfx only)" },
|
|
24
24
|
"allow-shrink": { type: "boolean", description: "Build anyway when content is wider than the page content box, instead of failing. Chromium then scales the WHOLE book down to fit; the scale and each offender are reported as warnings. (pdf|pdfx only)" }
|
|
@@ -1468,14 +1468,11 @@ var manifest_default3 = "./manifest-n1gh3qw5.yaml";
|
|
|
1468
1468
|
// src/assets/templates/technical/chapter-01.md
|
|
1469
1469
|
var chapter_01_default3 = "./chapter-01-6fn9pvd0.md";
|
|
1470
1470
|
|
|
1471
|
-
// src/assets/extension-templates/plugin/gutterpress.json
|
|
1472
|
-
var gutterpress_default = "./gutterpress-m98e2w2d.json";
|
|
1473
|
-
|
|
1474
1471
|
// src/assets/extension-templates/plugin/package.json
|
|
1475
|
-
var package_default = "./package-
|
|
1472
|
+
var package_default = "./package-9rv69pxm.json";
|
|
1476
1473
|
|
|
1477
1474
|
// src/assets/extension-templates/plugin/README.md
|
|
1478
|
-
var README_default = "./README-
|
|
1475
|
+
var README_default = "./README-3zk4tgnj.md";
|
|
1479
1476
|
|
|
1480
1477
|
// src/assets/extension-templates/plugin/plugin.js.tpl
|
|
1481
1478
|
var plugin_js_default = "./plugin.js-aszz0zgh.tpl";
|
|
@@ -1493,22 +1490,22 @@ var fixture_default = "./fixture-2qnyqgb5.md";
|
|
|
1493
1490
|
var expected_default = "./expected-ycmacem8.html";
|
|
1494
1491
|
|
|
1495
1492
|
// src/assets/extension-templates/plugin/test/plugin.test.js.tpl
|
|
1496
|
-
var plugin_test_js_default = "./plugin.test.js-
|
|
1493
|
+
var plugin_test_js_default = "./plugin.test.js-k2r87k04.tpl";
|
|
1497
1494
|
|
|
1498
|
-
// src/assets/extension-templates/theme/
|
|
1499
|
-
var
|
|
1495
|
+
// src/assets/extension-templates/theme/package.json
|
|
1496
|
+
var package_default2 = "./package-aenwjew3.json";
|
|
1500
1497
|
|
|
1501
1498
|
// src/assets/extension-templates/theme/README.md
|
|
1502
|
-
var README_default2 = "./README-
|
|
1499
|
+
var README_default2 = "./README-7x5akcns.md";
|
|
1503
1500
|
|
|
1504
1501
|
// src/assets/extension-templates/theme/components.yaml
|
|
1505
|
-
var components_default = "./components-
|
|
1502
|
+
var components_default = "./components-dhgv2sm7.yaml";
|
|
1506
1503
|
|
|
1507
1504
|
// src/assets/extension-templates/theme/snippets/callout.md
|
|
1508
1505
|
var callout_default = "./callout-hv56m16h.md";
|
|
1509
1506
|
|
|
1510
1507
|
// src/assets/extension-templates/theme/styles/tokens.css
|
|
1511
|
-
var tokens_default = "./tokens-
|
|
1508
|
+
var tokens_default = "./tokens-2sracx1w.css";
|
|
1512
1509
|
|
|
1513
1510
|
// src/assets/extension-templates/theme/styles/base.css
|
|
1514
1511
|
var base_default = "./base-ypqh9n7f.css";
|
|
@@ -1528,20 +1525,20 @@ var book_default = "./book-ted3tzrp.css";
|
|
|
1528
1525
|
// src/assets/themes/clean-book/theme.css
|
|
1529
1526
|
var theme_default = "./theme-j2bagrfx.css";
|
|
1530
1527
|
|
|
1531
|
-
// src/assets/themes/clean-book/
|
|
1532
|
-
var
|
|
1528
|
+
// src/assets/themes/clean-book/package.json
|
|
1529
|
+
var package_default3 = "./package-97gm31sg.json";
|
|
1533
1530
|
|
|
1534
1531
|
// src/assets/themes/zine/theme.css
|
|
1535
|
-
var
|
|
1532
|
+
var theme_default2 = "./theme-h5recz6c.css";
|
|
1536
1533
|
|
|
1537
|
-
// src/assets/themes/zine/
|
|
1538
|
-
var
|
|
1534
|
+
// src/assets/themes/zine/package.json
|
|
1535
|
+
var package_default4 = "./package-gag6ykwn.json";
|
|
1539
1536
|
|
|
1540
1537
|
// src/assets/themes/technical-doc/theme.css
|
|
1541
|
-
var
|
|
1538
|
+
var theme_default3 = "./theme-nn6d53zy.css";
|
|
1542
1539
|
|
|
1543
|
-
// src/assets/themes/technical-doc/
|
|
1544
|
-
var
|
|
1540
|
+
// src/assets/themes/technical-doc/package.json
|
|
1541
|
+
var package_default5 = "./package-nrhkwf2m.json";
|
|
1545
1542
|
|
|
1546
1543
|
// src/lib/embedded-assets.ts
|
|
1547
1544
|
var __libdir = dirname(fileURLToPath(import.meta.url));
|
|
@@ -1562,7 +1559,6 @@ var EMBEDDED_ASSETS = {
|
|
|
1562
1559
|
"templates/zine/chapter-01.md": abs(filePath(chapter_01_default2)),
|
|
1563
1560
|
"templates/technical/manifest.yaml": abs(filePath(manifest_default3)),
|
|
1564
1561
|
"templates/technical/chapter-01.md": abs(filePath(chapter_01_default3)),
|
|
1565
|
-
"extension-templates/plugin/gutterpress.json": abs(filePath(gutterpress_default)),
|
|
1566
1562
|
"extension-templates/plugin/package.json": abs(filePath(package_default)),
|
|
1567
1563
|
"extension-templates/plugin/README.md": abs(filePath(README_default)),
|
|
1568
1564
|
"extension-templates/plugin/plugin.js.tpl": abs(filePath(plugin_js_default)),
|
|
@@ -1571,7 +1567,7 @@ var EMBEDDED_ASSETS = {
|
|
|
1571
1567
|
"extension-templates/plugin/test/fixture.md": abs(filePath(fixture_default)),
|
|
1572
1568
|
"extension-templates/plugin/test/expected.html": abs(filePath(expected_default)),
|
|
1573
1569
|
"extension-templates/plugin/test/plugin.test.js.tpl": abs(filePath(plugin_test_js_default)),
|
|
1574
|
-
"extension-templates/theme/
|
|
1570
|
+
"extension-templates/theme/package.json": abs(filePath(package_default2)),
|
|
1575
1571
|
"extension-templates/theme/README.md": abs(filePath(README_default2)),
|
|
1576
1572
|
"extension-templates/theme/components.yaml": abs(filePath(components_default)),
|
|
1577
1573
|
"extension-templates/theme/snippets/callout.md": abs(filePath(callout_default)),
|
|
@@ -1582,11 +1578,11 @@ var EMBEDDED_ASSETS = {
|
|
|
1582
1578
|
"extension-templates/theme/styles/page-rules.css": abs(filePath(page_rules_default)),
|
|
1583
1579
|
"extension-templates/theme/styles/book.css": abs(filePath(book_default)),
|
|
1584
1580
|
"themes/clean-book/theme.css": abs(filePath(theme_default)),
|
|
1585
|
-
"themes/clean-book/
|
|
1586
|
-
"themes/zine/theme.css": abs(filePath(
|
|
1587
|
-
"themes/zine/
|
|
1588
|
-
"themes/technical-doc/theme.css": abs(filePath(
|
|
1589
|
-
"themes/technical-doc/
|
|
1581
|
+
"themes/clean-book/package.json": abs(filePath(package_default3)),
|
|
1582
|
+
"themes/zine/theme.css": abs(filePath(theme_default2)),
|
|
1583
|
+
"themes/zine/package.json": abs(filePath(package_default4)),
|
|
1584
|
+
"themes/technical-doc/theme.css": abs(filePath(theme_default3)),
|
|
1585
|
+
"themes/technical-doc/package.json": abs(filePath(package_default5))
|
|
1590
1586
|
};
|
|
1591
1587
|
var extractPromise = null;
|
|
1592
1588
|
async function extractAssets() {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "gutterpress",
|
|
7
|
-
version: "0.10.
|
|
7
|
+
version: "0.10.10-alpha.1",
|
|
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",
|
|
@@ -503,5 +503,92 @@ async function restoreVersionWithBackup(options) {
|
|
|
503
503
|
return { restoredId: id, backupId };
|
|
504
504
|
});
|
|
505
505
|
}
|
|
506
|
+
var SWITCH_BRANCH_SNAPSHOT_MESSAGE = "Saved before switching copy";
|
|
507
|
+
async function listLocalBranches(dir) {
|
|
508
|
+
const source = await detectProjectSource(dir);
|
|
509
|
+
if (source.type !== "local-git-folder")
|
|
510
|
+
return null;
|
|
511
|
+
const repoDir = gitScopeFor(source);
|
|
512
|
+
const [branches, current] = await Promise.all([
|
|
513
|
+
git.listBranches({ fs: gitFs, dir: repoDir }),
|
|
514
|
+
git.currentBranch({ fs: gitFs, dir: repoDir, fullname: false }).catch(() => {
|
|
515
|
+
return;
|
|
516
|
+
})
|
|
517
|
+
]);
|
|
518
|
+
return { current: current ?? null, branches };
|
|
519
|
+
}
|
|
520
|
+
function isCheckoutConflictError(e) {
|
|
521
|
+
return e?.code === "CheckoutConflictError";
|
|
522
|
+
}
|
|
523
|
+
async function diffCommitPaths(dir, fromOid, toOid, cache) {
|
|
524
|
+
const changed = [];
|
|
525
|
+
await git.walk({
|
|
526
|
+
fs: gitFs,
|
|
527
|
+
dir,
|
|
528
|
+
cache,
|
|
529
|
+
trees: [git.TREE({ ref: fromOid }), git.TREE({ ref: toOid })],
|
|
530
|
+
map: async (filepath, [from, to]) => {
|
|
531
|
+
if (filepath === ".")
|
|
532
|
+
return;
|
|
533
|
+
const [fType, tType] = await Promise.all([
|
|
534
|
+
from ? from.type() : Promise.resolve(undefined),
|
|
535
|
+
to ? to.type() : Promise.resolve(undefined)
|
|
536
|
+
]);
|
|
537
|
+
if (fType === "tree" || tType === "tree")
|
|
538
|
+
return;
|
|
539
|
+
if (!fType && !tType)
|
|
540
|
+
return;
|
|
541
|
+
if (!fType || !tType) {
|
|
542
|
+
changed.push(filepath);
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
const [fOid, tOid] = await Promise.all([from.oid(), to.oid()]);
|
|
546
|
+
if (fOid !== tOid)
|
|
547
|
+
changed.push(filepath);
|
|
548
|
+
}
|
|
549
|
+
});
|
|
550
|
+
return changed;
|
|
551
|
+
}
|
|
552
|
+
async function switchBranch(options) {
|
|
553
|
+
const { projectDir, branch, authorName, authorEmail } = options;
|
|
554
|
+
const source = await detectProjectSource(projectDir);
|
|
555
|
+
if (source.type !== "local-git-folder") {
|
|
556
|
+
throw new Error("This project has no version history yet. Enable version history first.");
|
|
557
|
+
}
|
|
558
|
+
const repoDir = gitScopeFor(source);
|
|
559
|
+
return withRepoLock(repoDir, async () => {
|
|
560
|
+
const cache = {};
|
|
561
|
+
try {
|
|
562
|
+
await snapshotWorkingTreeUnlocked({
|
|
563
|
+
projectDir,
|
|
564
|
+
repoRoot: repoDir,
|
|
565
|
+
message: SWITCH_BRANCH_SNAPSHOT_MESSAGE,
|
|
566
|
+
authorName,
|
|
567
|
+
authorEmail,
|
|
568
|
+
cache
|
|
569
|
+
});
|
|
570
|
+
} catch (e) {
|
|
571
|
+
if (!isNoChangesError(e))
|
|
572
|
+
throw e;
|
|
573
|
+
}
|
|
574
|
+
const fromOid = await git.resolveRef({ fs: gitFs, dir: repoDir, ref: "HEAD" }).catch(() => {
|
|
575
|
+
return;
|
|
576
|
+
});
|
|
577
|
+
const toOid = await git.resolveRef({ fs: gitFs, dir: repoDir, ref: branch });
|
|
578
|
+
try {
|
|
579
|
+
await git.checkout({ fs: gitFs, dir: repoDir, cache, ref: branch, force: false });
|
|
580
|
+
} catch (e) {
|
|
581
|
+
if (isCheckoutConflictError(e)) {
|
|
582
|
+
throw new Error("Couldn't switch copies — some files changed on disk right as the switch " + "started. Try again.", { cause: e });
|
|
583
|
+
}
|
|
584
|
+
throw e;
|
|
585
|
+
}
|
|
586
|
+
const changedPaths = fromOid && fromOid !== toOid ? await diffCommitPaths(repoDir, fromOid, toOid, cache) : [];
|
|
587
|
+
return {
|
|
588
|
+
current: branch,
|
|
589
|
+
changedFiles: changedPaths.map((p) => path2.join(repoDir, p))
|
|
590
|
+
};
|
|
591
|
+
});
|
|
592
|
+
}
|
|
506
593
|
|
|
507
|
-
export { gitScopeFor, HISTORY_PAGE_LIMIT, withRepoLock, __repoLockQueueSizeForTests, resolveGitAuthor, listWorkdirChanges, stageChanges, hasPendingChanges, hasUncommittedChanges, snapshotWorkingTreeUnlocked, isNoChangesError, providerFor, gitDirFor, snapshotStagingMarkerPath, RESTORE_BACKUP_MESSAGE, AUTO_SNAPSHOT_MESSAGE, restoreVersionWithBackup };
|
|
594
|
+
export { gitScopeFor, HISTORY_PAGE_LIMIT, withRepoLock, __repoLockQueueSizeForTests, resolveGitAuthor, listWorkdirChanges, stageChanges, hasPendingChanges, hasUncommittedChanges, snapshotWorkingTreeUnlocked, isNoChangesError, providerFor, gitDirFor, snapshotStagingMarkerPath, RESTORE_BACKUP_MESSAGE, AUTO_SNAPSHOT_MESSAGE, restoreVersionWithBackup, SWITCH_BRANCH_SNAPSHOT_MESSAGE, listLocalBranches, switchBranch };
|
package/dist/cli.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
previewArgs
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-75qkn0k5.js";
|
|
5
5
|
import {
|
|
6
6
|
UsageError,
|
|
7
7
|
package_default,
|
|
8
8
|
rejectUnknownFlags
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-tvpq2ht9.js";
|
|
10
10
|
import {
|
|
11
11
|
EXIT_CODES
|
|
12
12
|
} from "./cli-46ycxe6r.js";
|
|
@@ -18,16 +18,16 @@ 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
|
-
lint: () => import("./lint-
|
|
26
|
-
validate: () => import("./validate-
|
|
27
|
-
audit: () => import("./audit-
|
|
28
|
-
preflight: () => import("./preflight-
|
|
29
|
-
doctor: () => import("./doctor-
|
|
30
|
-
ext: () => import("./ext-
|
|
21
|
+
new: () => import("./new-qws45t02.js").then((m) => m.default),
|
|
22
|
+
preview: () => import("./preview-4c3tcsn4.js").then((m) => m.default),
|
|
23
|
+
build: () => import("./build-bxavfz3j.js").then((m) => m.default),
|
|
24
|
+
publish: () => import("./publish-m6bme9a8.js").then((m) => m.default),
|
|
25
|
+
lint: () => import("./lint-5vbq6yjb.js").then((m) => m.default),
|
|
26
|
+
validate: () => import("./validate-avtb9drn.js").then((m) => m.default),
|
|
27
|
+
audit: () => import("./audit-ek36tf4q.js").then((m) => m.default),
|
|
28
|
+
preflight: () => import("./preflight-4ywt3399.js").then((m) => m.default),
|
|
29
|
+
doctor: () => import("./doctor-tgmedr7g.js").then((m) => m.default),
|
|
30
|
+
ext: () => import("./ext-jjzmafve.js").then((m) => m.default)
|
|
31
31
|
};
|
|
32
32
|
var VERSION = package_default.version;
|
|
33
33
|
var main = defineCommand({
|
|
@@ -52,7 +52,7 @@ async function preflightRequiredInvocations(rawArgs) {
|
|
|
52
52
|
const [command, ...commandArgs] = rawArgs;
|
|
53
53
|
try {
|
|
54
54
|
if (command === "new") {
|
|
55
|
-
const { newArgs } = await import("./new-
|
|
55
|
+
const { newArgs } = await import("./new-qws45t02.js");
|
|
56
56
|
rejectUnknownFlags(commandArgs, newArgs, "new");
|
|
57
57
|
const parsed = parseArgs(commandArgs, {
|
|
58
58
|
...newArgs,
|
|
@@ -64,7 +64,7 @@ async function preflightRequiredInvocations(rawArgs) {
|
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
if (command === "preflight") {
|
|
67
|
-
const { preflightArgs } = await import("./preflight-
|
|
67
|
+
const { preflightArgs } = await import("./preflight-4ywt3399.js");
|
|
68
68
|
rejectUnknownFlags(commandArgs, preflightArgs, "preflight");
|
|
69
69
|
const parsed = parseArgs(commandArgs, {
|
|
70
70
|
...preflightArgs,
|
|
@@ -84,11 +84,11 @@ async function preflightRequiredInvocations(rawArgs) {
|
|
|
84
84
|
}
|
|
85
85
|
if (subcommand.startsWith("-"))
|
|
86
86
|
return;
|
|
87
|
-
const { EXT_SUBCOMMANDS, extAddArgs, extRemoveArgs, extEnableArgs, extDisableArgs } = await import("./ext-
|
|
87
|
+
const { EXT_SUBCOMMANDS, extAddArgs, extRemoveArgs, extEnableArgs, extDisableArgs } = await import("./ext-jjzmafve.js");
|
|
88
88
|
if (!EXT_SUBCOMMANDS.includes(subcommand)) {
|
|
89
89
|
throw new UsageError(`gutterpress ext: unknown command "${subcommand}"`);
|
|
90
90
|
}
|
|
91
|
-
if (subcommand === "list")
|
|
91
|
+
if (subcommand === "list" || subcommand === "search")
|
|
92
92
|
return;
|
|
93
93
|
const [positionalKey, positionalLabel, commandArgsDef] = subcommand === "add" ? ["source", "SOURCE", extAddArgs] : subcommand === "remove" ? ["specifier", "SPECIFIER", extRemoveArgs] : subcommand === "enable" ? ["specifier", "SPECIFIER", extEnableArgs] : ["specifier", "SPECIFIER", extDisableArgs];
|
|
94
94
|
rejectUnknownFlags(subcommandArgs, commandArgsDef, `ext ${subcommand}`);
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
# is the thing a new author browses, and the thing to check a component
|
|
6
6
|
# against when you change it.
|
|
7
7
|
#
|
|
8
|
-
# Gutterpress reads this file's PRESENCE today (
|
|
9
|
-
# `components
|
|
8
|
+
# Gutterpress reads this file's PRESENCE today (package.json's
|
|
9
|
+
# `gutterpress.components` field points here, and a missing file fails at apply time
|
|
10
10
|
# rather than silently at render time). Nothing yet reads the entries — the
|
|
11
11
|
# registry that will is not built. So treat the shape below as this theme's
|
|
12
12
|
# own convention, useful to you now, and expect to adjust it when core grows
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getSystemDiagnostics,
|
|
3
3
|
log
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-12epgrva.js";
|
|
5
5
|
import {
|
|
6
6
|
UsageError,
|
|
7
7
|
rejectExtraPositionals,
|
|
8
8
|
rejectUnknownFlags
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-tvpq2ht9.js";
|
|
10
10
|
import"./cli-c41yr7he.js";
|
|
11
11
|
import"./cli-46ycxe6r.js";
|
|
12
12
|
import"./cli-37x76zdn.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
build
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-a0e2253t.js";
|
|
4
4
|
import {
|
|
5
5
|
BuildError,
|
|
6
6
|
RENDER_TIMEOUT_MS,
|
|
7
7
|
assertMilestone,
|
|
8
8
|
connectChromium,
|
|
9
9
|
getBrowser
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-5dgxeevv.js";
|
|
11
11
|
import"./index-37x76zdn.js";
|
|
12
12
|
|
|
13
13
|
// src/lib/engine.ts
|
|
@@ -8,22 +8,23 @@ import {
|
|
|
8
8
|
listProjectExtensions,
|
|
9
9
|
parseExtensionSpecifier,
|
|
10
10
|
removeExtension,
|
|
11
|
+
searchNpmExtensions,
|
|
11
12
|
setExtensionEnabled
|
|
12
|
-
} from "./cli-
|
|
13
|
-
import"./cli-
|
|
13
|
+
} from "./cli-5fqr02je.js";
|
|
14
|
+
import"./cli-12epgrva.js";
|
|
14
15
|
import {
|
|
15
16
|
UsageError,
|
|
16
17
|
exitForUsage,
|
|
17
18
|
rejectExtraPositionals,
|
|
18
19
|
rejectUnknownFlags,
|
|
19
20
|
resolveProjectDir
|
|
20
|
-
} from "./cli-
|
|
21
|
-
import"./cli-
|
|
21
|
+
} from "./cli-tvpq2ht9.js";
|
|
22
|
+
import"./cli-k8f9eb12.js";
|
|
22
23
|
import"./cli-c41yr7he.js";
|
|
23
24
|
import {
|
|
24
25
|
EXIT_CODES
|
|
25
26
|
} from "./cli-46ycxe6r.js";
|
|
26
|
-
import"./cli-
|
|
27
|
+
import"./cli-vje8g3w8.js";
|
|
27
28
|
import"./cli-v5mp7a6q.js";
|
|
28
29
|
import"./cli-37x76zdn.js";
|
|
29
30
|
|
|
@@ -63,7 +64,14 @@ var extAddArgs = {
|
|
|
63
64
|
var extRemoveArgs = { specifier: specifierArg, dir: dirArg };
|
|
64
65
|
var extEnableArgs = { specifier: specifierArg, dir: dirArg };
|
|
65
66
|
var extDisableArgs = { specifier: specifierArg, dir: dirArg };
|
|
66
|
-
var
|
|
67
|
+
var extSearchArgs = {
|
|
68
|
+
query: {
|
|
69
|
+
type: "positional",
|
|
70
|
+
description: "Words to search npm for; omit to list the most relevant tagged packages",
|
|
71
|
+
required: false
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
var EXT_SUBCOMMANDS = ["list", "add", "remove", "enable", "disable", "search"];
|
|
67
75
|
var parentArgs = {};
|
|
68
76
|
function rejectParentFlags(rawArgs) {
|
|
69
77
|
const first = rawArgs[0];
|
|
@@ -102,6 +110,11 @@ function describeLine(entry) {
|
|
|
102
110
|
const label = entry.label !== entry.name ? ` ${entry.label}` : "";
|
|
103
111
|
return ` ${entry.use}${state} [${entry.kind}; ${carriesLabel(entry)}]${label}`;
|
|
104
112
|
}
|
|
113
|
+
function describeMatchLine(match) {
|
|
114
|
+
const kind = match.kind === "gutterpress" ? "gutterpress" : "markdown-it plugin";
|
|
115
|
+
const description = match.description ? ` ${match.description}` : "";
|
|
116
|
+
return ` ${match.name}@${match.version} [${kind}]${description}`;
|
|
117
|
+
}
|
|
105
118
|
function printAdded(entry, projectDir, warnings = []) {
|
|
106
119
|
if (entry.kind === "npm") {
|
|
107
120
|
console.log(`Installed ${entry.use}`);
|
|
@@ -246,18 +259,49 @@ var disable = specifierCommand("disable", "Turn a configured extension off witho
|
|
|
246
259
|
await setExtensionEnabled(projectDir, specifier, false);
|
|
247
260
|
return `Disabled ${specifier}`;
|
|
248
261
|
});
|
|
262
|
+
var search = defineCommand({
|
|
263
|
+
meta: {
|
|
264
|
+
name: "search",
|
|
265
|
+
description: "Search npm for extensions (network; not project-scoped)"
|
|
266
|
+
},
|
|
267
|
+
args: extSearchArgs,
|
|
268
|
+
async run({ args, rawArgs }) {
|
|
269
|
+
try {
|
|
270
|
+
rejectUnknownFlags(rawArgs, extSearchArgs, "ext search");
|
|
271
|
+
rejectExtraPositionals(args._, 1, "ext search");
|
|
272
|
+
} catch (error) {
|
|
273
|
+
exitForUsage(error);
|
|
274
|
+
}
|
|
275
|
+
const query = typeof args.query === "string" ? args.query.trim() : "";
|
|
276
|
+
try {
|
|
277
|
+
const { matches, total } = await searchNpmExtensions(query);
|
|
278
|
+
if (matches.length === 0) {
|
|
279
|
+
console.log(query ? `No extensions on npm match "${query}".` : "No extensions found on npm.");
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const scope = query ? ` matching "${query}"` : "";
|
|
283
|
+
console.log(`Extensions on npm${scope} (showing ${matches.length} of ${total}):`);
|
|
284
|
+
for (const match of matches)
|
|
285
|
+
console.log(describeMatchLine(match));
|
|
286
|
+
console.log("Add one with: gutterpress ext add <name>");
|
|
287
|
+
} catch (error) {
|
|
288
|
+
failPipeline("Could not search npm", error);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
});
|
|
249
292
|
var ext_default = defineCommand({
|
|
250
293
|
meta: {
|
|
251
294
|
name: "ext",
|
|
252
|
-
description: "List, add, remove, enable,
|
|
295
|
+
description: "List, add, remove, enable, disable the project's extensions, or search npm"
|
|
253
296
|
},
|
|
254
297
|
args: parentArgs,
|
|
255
298
|
setup({ rawArgs }) {
|
|
256
299
|
rejectParentFlags(rawArgs);
|
|
257
300
|
},
|
|
258
|
-
subCommands: { list, add, remove, enable, disable }
|
|
301
|
+
subCommands: { list, add, remove, enable, disable, search }
|
|
259
302
|
});
|
|
260
303
|
export {
|
|
304
|
+
extSearchArgs,
|
|
261
305
|
extRemoveArgs,
|
|
262
306
|
extListArgs,
|
|
263
307
|
extEnableArgs,
|
|
@@ -631,14 +631,11 @@ var manifest_default3 = "./manifest-n1gh3qw5.yaml";
|
|
|
631
631
|
// src/assets/templates/technical/chapter-01.md
|
|
632
632
|
var chapter_01_default3 = "./chapter-01-6fn9pvd0.md";
|
|
633
633
|
|
|
634
|
-
// src/assets/extension-templates/plugin/gutterpress.json
|
|
635
|
-
var gutterpress_default = "./gutterpress-m98e2w2d.json";
|
|
636
|
-
|
|
637
634
|
// src/assets/extension-templates/plugin/package.json
|
|
638
|
-
var package_default = "./package-
|
|
635
|
+
var package_default = "./package-9rv69pxm.json";
|
|
639
636
|
|
|
640
637
|
// src/assets/extension-templates/plugin/README.md
|
|
641
|
-
var README_default = "./README-
|
|
638
|
+
var README_default = "./README-3zk4tgnj.md";
|
|
642
639
|
|
|
643
640
|
// src/assets/extension-templates/plugin/plugin.js.tpl
|
|
644
641
|
var plugin_js_default = "./plugin.js-aszz0zgh.tpl";
|
|
@@ -656,22 +653,22 @@ var fixture_default = "./fixture-2qnyqgb5.md";
|
|
|
656
653
|
var expected_default = "./expected-ycmacem8.html";
|
|
657
654
|
|
|
658
655
|
// src/assets/extension-templates/plugin/test/plugin.test.js.tpl
|
|
659
|
-
var plugin_test_js_default = "./plugin.test.js-
|
|
656
|
+
var plugin_test_js_default = "./plugin.test.js-k2r87k04.tpl";
|
|
660
657
|
|
|
661
|
-
// src/assets/extension-templates/theme/
|
|
662
|
-
var
|
|
658
|
+
// src/assets/extension-templates/theme/package.json
|
|
659
|
+
var package_default2 = "./package-aenwjew3.json";
|
|
663
660
|
|
|
664
661
|
// src/assets/extension-templates/theme/README.md
|
|
665
|
-
var README_default2 = "./README-
|
|
662
|
+
var README_default2 = "./README-7x5akcns.md";
|
|
666
663
|
|
|
667
664
|
// src/assets/extension-templates/theme/components.yaml
|
|
668
|
-
var components_default = "./components-
|
|
665
|
+
var components_default = "./components-dhgv2sm7.yaml";
|
|
669
666
|
|
|
670
667
|
// src/assets/extension-templates/theme/snippets/callout.md
|
|
671
668
|
var callout_default = "./callout-hv56m16h.md";
|
|
672
669
|
|
|
673
670
|
// src/assets/extension-templates/theme/styles/tokens.css
|
|
674
|
-
var tokens_default = "./tokens-
|
|
671
|
+
var tokens_default = "./tokens-2sracx1w.css";
|
|
675
672
|
|
|
676
673
|
// src/assets/extension-templates/theme/styles/base.css
|
|
677
674
|
var base_default = "./base-ypqh9n7f.css";
|
|
@@ -691,20 +688,20 @@ var book_default = "./book-ted3tzrp.css";
|
|
|
691
688
|
// src/assets/themes/clean-book/theme.css
|
|
692
689
|
var theme_default = "./theme-j2bagrfx.css";
|
|
693
690
|
|
|
694
|
-
// src/assets/themes/clean-book/
|
|
695
|
-
var
|
|
691
|
+
// src/assets/themes/clean-book/package.json
|
|
692
|
+
var package_default3 = "./package-97gm31sg.json";
|
|
696
693
|
|
|
697
694
|
// src/assets/themes/zine/theme.css
|
|
698
|
-
var
|
|
695
|
+
var theme_default2 = "./theme-h5recz6c.css";
|
|
699
696
|
|
|
700
|
-
// src/assets/themes/zine/
|
|
701
|
-
var
|
|
697
|
+
// src/assets/themes/zine/package.json
|
|
698
|
+
var package_default4 = "./package-gag6ykwn.json";
|
|
702
699
|
|
|
703
700
|
// src/assets/themes/technical-doc/theme.css
|
|
704
|
-
var
|
|
701
|
+
var theme_default3 = "./theme-nn6d53zy.css";
|
|
705
702
|
|
|
706
|
-
// src/assets/themes/technical-doc/
|
|
707
|
-
var
|
|
703
|
+
// src/assets/themes/technical-doc/package.json
|
|
704
|
+
var package_default5 = "./package-nrhkwf2m.json";
|
|
708
705
|
|
|
709
706
|
// src/lib/embedded-assets.ts
|
|
710
707
|
var __libdir = dirname(fileURLToPath(import.meta.url));
|
|
@@ -725,7 +722,6 @@ var EMBEDDED_ASSETS = {
|
|
|
725
722
|
"templates/zine/chapter-01.md": abs(filePath(chapter_01_default2)),
|
|
726
723
|
"templates/technical/manifest.yaml": abs(filePath(manifest_default3)),
|
|
727
724
|
"templates/technical/chapter-01.md": abs(filePath(chapter_01_default3)),
|
|
728
|
-
"extension-templates/plugin/gutterpress.json": abs(filePath(gutterpress_default)),
|
|
729
725
|
"extension-templates/plugin/package.json": abs(filePath(package_default)),
|
|
730
726
|
"extension-templates/plugin/README.md": abs(filePath(README_default)),
|
|
731
727
|
"extension-templates/plugin/plugin.js.tpl": abs(filePath(plugin_js_default)),
|
|
@@ -734,7 +730,7 @@ var EMBEDDED_ASSETS = {
|
|
|
734
730
|
"extension-templates/plugin/test/fixture.md": abs(filePath(fixture_default)),
|
|
735
731
|
"extension-templates/plugin/test/expected.html": abs(filePath(expected_default)),
|
|
736
732
|
"extension-templates/plugin/test/plugin.test.js.tpl": abs(filePath(plugin_test_js_default)),
|
|
737
|
-
"extension-templates/theme/
|
|
733
|
+
"extension-templates/theme/package.json": abs(filePath(package_default2)),
|
|
738
734
|
"extension-templates/theme/README.md": abs(filePath(README_default2)),
|
|
739
735
|
"extension-templates/theme/components.yaml": abs(filePath(components_default)),
|
|
740
736
|
"extension-templates/theme/snippets/callout.md": abs(filePath(callout_default)),
|
|
@@ -745,11 +741,11 @@ var EMBEDDED_ASSETS = {
|
|
|
745
741
|
"extension-templates/theme/styles/page-rules.css": abs(filePath(page_rules_default)),
|
|
746
742
|
"extension-templates/theme/styles/book.css": abs(filePath(book_default)),
|
|
747
743
|
"themes/clean-book/theme.css": abs(filePath(theme_default)),
|
|
748
|
-
"themes/clean-book/
|
|
749
|
-
"themes/zine/theme.css": abs(filePath(
|
|
750
|
-
"themes/zine/
|
|
751
|
-
"themes/technical-doc/theme.css": abs(filePath(
|
|
752
|
-
"themes/technical-doc/
|
|
744
|
+
"themes/clean-book/package.json": abs(filePath(package_default3)),
|
|
745
|
+
"themes/zine/theme.css": abs(filePath(theme_default2)),
|
|
746
|
+
"themes/zine/package.json": abs(filePath(package_default4)),
|
|
747
|
+
"themes/technical-doc/theme.css": abs(filePath(theme_default3)),
|
|
748
|
+
"themes/technical-doc/package.json": abs(filePath(package_default5))
|
|
753
749
|
};
|
|
754
750
|
var extractPromise = null;
|
|
755
751
|
async function extractAssets() {
|