gutterpress 0.11.23-alpha.7 → 0.11.23-beta.2

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 (69) hide show
  1. package/README.md +3 -1
  2. package/dist/{README-syg2hn83.md → README-8rct3axy.md} +2 -2
  3. package/dist/api/index.d.ts +3 -3
  4. package/dist/api/index.js +8 -6
  5. package/dist/{build-w572wq10.js → build-3e18wnqj.js} +9 -8
  6. package/dist/{cli-mmgtqnmr.js → cli-0ep11b0q.js} +1 -1
  7. package/dist/cli-65gy8ask.js +82 -0
  8. package/dist/{cli-6pv84kf3.js → cli-88arpdke.js} +6 -84
  9. package/dist/{cli-eatdqx3z.js → cli-9n9kg58f.js} +1 -1
  10. package/dist/{cli-58fsk6d7.js → cli-pd2cje5b.js} +187 -44
  11. package/dist/{cli-3cvq3n1c.js → cli-pnrararp.js} +189 -85
  12. package/dist/{cli-wyg7qstd.js → cli-tgnyvra3.js} +15 -5
  13. package/dist/{cli-31anr0r9.js → cli-v0evdpdf.js} +68 -28
  14. package/dist/{cli-5ba6bm6z.js → cli-x7gcdg6w.js} +1 -1
  15. package/dist/cli.js +12 -12
  16. package/dist/{doctor-2f3zqmza.js → doctor-2f4s9dyn.js} +3 -3
  17. package/dist/engine/compiler/postprocess.d.ts +3 -0
  18. package/dist/engine/shared/page-vars.d.ts +32 -0
  19. package/dist/engine/shared/pdf-inspect.d.ts +33 -0
  20. package/dist/{engine-4rabsgwq.js → engine-c4pxz79g.js} +2 -1
  21. package/dist/{engine-wm4fggac.js → engine-cs5g2ez0.js} +3 -3
  22. package/dist/{ext-0cgky8n3.js → ext-70gv86v5.js} +9 -8
  23. package/dist/{extension-restore-vghc58vx.js → extension-restore-chj5nx3t.js} +3 -3
  24. package/dist/{extension-restore-e7je32pr.js → extension-restore-pd87p8r2.js} +5 -4
  25. package/dist/{gutterpress-agent-d29ry3ak.js → gutterpress-agent-wyryqehx.js} +13 -4
  26. package/dist/{gutterpress-viewer-mafsby5k.js → gutterpress-viewer-ywkf49q5.js} +90 -166
  27. package/dist/{index-nfysshcc.js → index-0k43evt0.js} +309 -155
  28. package/dist/{index-wm4x7xbf.js → index-2t1gdma7.js} +178 -35
  29. package/dist/{index-cw03e9p4.js → index-7j3hkwya.js} +68 -28
  30. package/dist/{index-fp7xwvpr.js → index-80vg3ed6.js} +15 -5
  31. package/dist/{index-2vxzxyyj.js → index-swfdgn2n.js} +10 -10
  32. package/dist/index-tayzfr9c.js +99 -0
  33. package/dist/{index-hphcn7th.js → index-ytjkvwy5.js} +5 -85
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.js +234 -7
  36. package/dist/lib/book-css.d.ts +56 -0
  37. package/dist/lib/markdown/assemble.d.ts +58 -0
  38. package/dist/lib/markdown/gutterpress-css.d.ts +1 -1
  39. package/dist/lib/publish/google-drive.d.ts +12 -4
  40. package/dist/lib/publish/manifest-publish.d.ts +6 -0
  41. package/dist/lib/publish/providers/gdrive-folder.d.ts +30 -0
  42. package/dist/lib/publish/run-publish.d.ts +6 -1
  43. package/dist/lib/publish/types.d.ts +52 -5
  44. package/dist/lib/remote-auth/converge-merge.d.ts +3 -3
  45. package/dist/lib/remote-auth/sync-messages.d.ts +2 -2
  46. package/dist/lib/root-tokens.d.ts +76 -0
  47. package/dist/lib/source-provider.d.ts +27 -0
  48. package/dist/lib/version-changes.d.ts +26 -16
  49. package/dist/{manifest-79zsgkpn.yaml → manifest-0vwaskj2.yaml} +1 -1
  50. package/dist/{manifest-2kc56wvw.yaml → manifest-aya31jwt.yaml} +1 -1
  51. package/dist/{manifest-41ddzm13.yaml → manifest-mffah3hr.yaml} +1 -1
  52. package/dist/{manifest-sqzm4681.yaml → manifest-wbcv8cbp.yaml} +2 -2
  53. package/dist/{manifest.schema-93sd7zje.json → manifest.schema-0jgj0jt1.json} +1 -1
  54. package/dist/{new-88rkrv71.js → new-d61n5cn0.js} +9 -8
  55. package/dist/{page-rules-ytj9p04v.css → page-rules-vnja6grt.css} +2 -2
  56. package/dist/{plugins-3aj0wc5h.js → plugins-0hhw6s17.js} +1 -1
  57. package/dist/{plugins-sprxsz5d.js → plugins-e0n46s6m.js} +3 -3
  58. package/dist/{preflight-11dg1qkk.js → preflight-fjayhjr5.js} +9 -8
  59. package/dist/{preview-nftp782j.js → preview-h815jrfb.js} +9 -8
  60. package/dist/{publish-6tgxfck9.js → publish-ft39zgma.js} +25 -9
  61. package/dist/render.js +77 -26
  62. package/dist/schema/manifest.types.d.ts +2 -1
  63. package/dist/{source-provider-n7vehh6t.js → source-provider-j1w7byeq.js} +5 -1
  64. package/dist/{source-provider-tgzet3j5.js → source-provider-tjaf303m.js} +5 -1
  65. package/dist/test-helpers/vocabulary.d.ts +12 -0
  66. package/dist/{tokens-n82t4k9h.css → tokens-a7grv940.css} +4 -5
  67. package/dist/{validate-pktqrye5.js → validate-b201dbrb.js} +9 -8
  68. package/package.json +1 -1
  69. package/dist/index-46ycxe6r.js +0 -18
@@ -1,28 +1,29 @@
1
1
  import {
2
2
  executeValidation,
3
3
  reportMissingTools
4
- } from "./cli-3cvq3n1c.js";
5
- import"./cli-mmgtqnmr.js";
4
+ } from "./cli-pnrararp.js";
5
+ import"./cli-0ep11b0q.js";
6
6
  import"./cli-ht1bcqdd.js";
7
- import"./cli-58fsk6d7.js";
7
+ import"./cli-pd2cje5b.js";
8
8
  import"./cli-5crpmz42.js";
9
9
  import"./cli-eyyggect.js";
10
10
  import"./cli-asap4t1z.js";
11
- import"./cli-31anr0r9.js";
11
+ import"./cli-v0evdpdf.js";
12
12
  import"./cli-v5mp7a6q.js";
13
13
  import {
14
14
  publishTargetFor
15
- } from "./cli-6pv84kf3.js";
16
- import"./cli-wyg7qstd.js";
15
+ } from "./cli-88arpdke.js";
16
+ import"./cli-tgnyvra3.js";
17
17
  import {
18
18
  log
19
- } from "./cli-eatdqx3z.js";
19
+ } from "./cli-9n9kg58f.js";
20
20
  import {
21
21
  UsageError,
22
22
  rejectExtraPositionals,
23
23
  rejectUnknownFlags
24
24
  } from "./cli-d8xjns66.js";
25
- import"./cli-5ba6bm6z.js";
25
+ import"./cli-x7gcdg6w.js";
26
+ import"./cli-65gy8ask.js";
26
27
  import {
27
28
  BuildError,
28
29
  EXIT_CODES
@@ -3,23 +3,23 @@ import {
3
3
  runBuild,
4
4
  splitOutPath,
5
5
  startPreviewServer
6
- } from "./cli-3cvq3n1c.js";
7
- import"./cli-mmgtqnmr.js";
6
+ } from "./cli-pnrararp.js";
7
+ import"./cli-0ep11b0q.js";
8
8
  import {
9
9
  previewArgs
10
10
  } from "./cli-75qkn0k5.js";
11
11
  import"./cli-ht1bcqdd.js";
12
- import"./cli-58fsk6d7.js";
12
+ import"./cli-pd2cje5b.js";
13
13
  import"./cli-5crpmz42.js";
14
14
  import"./cli-eyyggect.js";
15
15
  import"./cli-asap4t1z.js";
16
- import"./cli-31anr0r9.js";
16
+ import"./cli-v0evdpdf.js";
17
17
  import"./cli-v5mp7a6q.js";
18
- import"./cli-6pv84kf3.js";
19
- import"./cli-wyg7qstd.js";
18
+ import"./cli-88arpdke.js";
19
+ import"./cli-tgnyvra3.js";
20
20
  import {
21
21
  log
22
- } from "./cli-eatdqx3z.js";
22
+ } from "./cli-9n9kg58f.js";
23
23
  import {
24
24
  UsageError,
25
25
  parseFormat,
@@ -28,7 +28,8 @@ import {
28
28
  rejectUnknownFlags,
29
29
  resolvePort
30
30
  } from "./cli-d8xjns66.js";
31
- import"./cli-5ba6bm6z.js";
31
+ import"./cli-x7gcdg6w.js";
32
+ import"./cli-65gy8ask.js";
32
33
  import {
33
34
  BuildError
34
35
  } from "./cli-46ycxe6r.js";
@@ -10,30 +10,31 @@ import {
10
10
  resolvePublishFormat,
11
11
  resolvePublishProvider,
12
12
  runPublish
13
- } from "./cli-3cvq3n1c.js";
13
+ } from "./cli-pnrararp.js";
14
14
  import {
15
15
  FileTokenStore
16
- } from "./cli-mmgtqnmr.js";
16
+ } from "./cli-0ep11b0q.js";
17
17
  import"./cli-ht1bcqdd.js";
18
- import"./cli-58fsk6d7.js";
18
+ import"./cli-pd2cje5b.js";
19
19
  import"./cli-5crpmz42.js";
20
20
  import"./cli-eyyggect.js";
21
21
  import"./cli-asap4t1z.js";
22
- import"./cli-31anr0r9.js";
22
+ import"./cli-v0evdpdf.js";
23
23
  import"./cli-v5mp7a6q.js";
24
24
  import {
25
25
  loadManifestWithPath
26
- } from "./cli-6pv84kf3.js";
27
- import"./cli-wyg7qstd.js";
26
+ } from "./cli-88arpdke.js";
27
+ import"./cli-tgnyvra3.js";
28
28
  import {
29
29
  log
30
- } from "./cli-eatdqx3z.js";
30
+ } from "./cli-9n9kg58f.js";
31
31
  import {
32
32
  UsageError,
33
33
  rejectExtraPositionals,
34
34
  rejectUnknownFlags
35
35
  } from "./cli-d8xjns66.js";
36
- import"./cli-5ba6bm6z.js";
36
+ import"./cli-x7gcdg6w.js";
37
+ import"./cli-65gy8ask.js";
37
38
  import {
38
39
  BuildError,
39
40
  EXIT_CODES
@@ -128,6 +129,14 @@ var commandArgs = {
128
129
  type: "string",
129
130
  description: "Artifact to publish (PDF path, or HTML export dir). Default: the manifest's output location"
130
131
  },
132
+ "folder-id": {
133
+ type: "string",
134
+ description: "Google Drive: publish to this folder id for this run only (the manifest is not changed)"
135
+ },
136
+ folder: {
137
+ type: "string",
138
+ description: "Google Drive: publish to the folder with this name in your own Drive, found or created, for this run only (the manifest is not changed)"
139
+ },
131
140
  manifest: { type: "string", description: "Path to manifest.yaml" },
132
141
  "dry-run": { type: "boolean", description: "Preflight only; don't contact the platform" },
133
142
  json: { type: "boolean", description: "Machine-readable JSON output (CI)" },
@@ -274,6 +283,12 @@ Create one at: ${provider.info.credential.tokenUrl}` : ""));
274
283
  log.success(`Connected ${provider.info.label}${account ? ` (${account})` : ""}. The key is stored in your user config, not the book.`);
275
284
  return;
276
285
  }
286
+ const folderId = typeof args["folder-id"] === "string" ? args["folder-id"].trim() : "";
287
+ const folder = typeof args.folder === "string" ? args.folder.trim() : "";
288
+ if ((folderId || folder) && provider.info.id !== "gdrive") {
289
+ log.error("--folder-id and --folder are for --provider gdrive.");
290
+ process.exit(EXIT_CODES.USAGE);
291
+ }
277
292
  let result;
278
293
  try {
279
294
  result = await runPublish({
@@ -282,7 +297,8 @@ Create one at: ${provider.info.credential.tokenUrl}` : ""));
282
297
  provider,
283
298
  manifestPath: typeof args.manifest === "string" ? args.manifest : undefined,
284
299
  artifactPath: typeof args.file === "string" ? args.file : undefined,
285
- dryRun: !!args["dry-run"]
300
+ dryRun: !!args["dry-run"],
301
+ ...folderId || folder ? { settings: { folderId, folder } } : {}
286
302
  }, deps);
287
303
  } catch (e) {
288
304
  if (e instanceof UsageError) {
package/dist/render.js CHANGED
@@ -1431,8 +1431,9 @@ img.gp-shape {
1431
1431
 
1432
1432
  /* Math (the bundled gutterpress-math feature, math.ts): MathJax's own rules
1433
1433
  for the <mjx-container> SVG output it emits, from its SVG output jax's
1434
- stylesheet, less the ones for its interactive menu and tooltips. Inert in
1435
- a book without formulas. */
1434
+ stylesheet, less the ones for its interactive menu and tooltips, plus one
1435
+ bound of ours on the hidden MathML copy (#469, below). Inert in a book
1436
+ without formulas. */
1436
1437
  mjx-container[jax="SVG"] { direction: ltr; }
1437
1438
  mjx-container[jax="SVG"] > svg { overflow: visible; min-height: 1px; min-width: 1px; }
1438
1439
  mjx-container[jax="SVG"] > svg a { fill: blue; stroke: blue; }
@@ -1449,6 +1450,15 @@ mjx-assistive-mml {
1449
1450
  border: 0px !important;
1450
1451
  display: block !important;
1451
1452
  width: auto !important;
1453
+ /* Ours (#469). The browser lays the copy out in whatever math font it has,
1454
+ so it can be wider than the formula's SVG; ending a line, it crossed the
1455
+ column edge and Chromium shrank the whole print to fit. MathJax makes the
1456
+ container position: relative with the copy at its top left, so 100% is
1457
+ the formula's width. Clip and overflow still hide the copy and its MathML
1458
+ still reaches screen readers; only its box changes. Not the 1px
1459
+ visually-hidden box MathJax 2 used: its docs note VoiceOver on iOS could
1460
+ not reach a formula by touch in it. */
1461
+ max-width: 100% !important;
1452
1462
  overflow: hidden !important;
1453
1463
  user-select: none;
1454
1464
  }
@@ -3008,6 +3018,7 @@ var UNITS_PER_PT = {
3008
3018
  var DEFAULT_PAGE_MARGIN_PT = 72;
3009
3019
 
3010
3020
  // src/lib/markdown/assemble.ts
3021
+ import postcss from "postcss";
3011
3022
  function pageGeometryCss(page) {
3012
3023
  if (!page || !isPositivePoints(page.width) || !isPositivePoints(page.height))
3013
3024
  return null;
@@ -3028,6 +3039,65 @@ function defaultPageMarginCss(page) {
3028
3039
  @page { margin: ${cssLength(DEFAULT_PAGE_MARGIN_PT)}; }
3029
3040
  }`;
3030
3041
  }
3042
+ function liftPageRules(css) {
3043
+ if (!/@page\b/i.test(css))
3044
+ return { layered: css, pages: "" };
3045
+ let root;
3046
+ try {
3047
+ root = postcss.parse(css);
3048
+ } catch {
3049
+ return { layered: css, pages: "" };
3050
+ }
3051
+ const found = [];
3052
+ root.walkAtRules(/^page$/i, (rule) => {
3053
+ found.push(rule);
3054
+ });
3055
+ const pages = found.map((rule) => {
3056
+ let lifted = rule.clone();
3057
+ for (let p = rule.parent;p instanceof postcss.AtRule || p instanceof postcss.Rule; p = p.parent) {
3058
+ if (p instanceof postcss.AtRule && p.name.toLowerCase() === "layer")
3059
+ continue;
3060
+ lifted = p.clone({ nodes: [] }).append(lifted);
3061
+ }
3062
+ rule.remove();
3063
+ return lifted.toString();
3064
+ });
3065
+ return { layered: root.toString(), pages: pages.join(`
3066
+ `) };
3067
+ }
3068
+ var CORE_MARKERS = liftPageRules(`${MARKER_CSS.trim()}
3069
+ ${TWO_VERSIONS_CSS.trim()}`);
3070
+ var CORE_VOCAB = liftPageRules(GUTTERPRESS_CSS.trim());
3071
+ function assembleCssChunks(opts) {
3072
+ const core = (css) => css ? [{ origin: { kind: "core" }, css }] : [];
3073
+ const headed = (title, chunks = []) => chunks.map((chunk, i) => i === 0 ? { ...chunk, css: `/* ${title} */
3074
+ ${chunk.css.trim()}` } : chunk);
3075
+ const pageGeometry = pageGeometryCss(opts.printArea);
3076
+ const defaultMargin = defaultPageMarginCss(opts.printArea);
3077
+ return [
3078
+ ...core("@layer gp.marker, gp.vocab;"),
3079
+ ...core(`/* gutterpress markers */
3080
+ @layer gp.marker {
3081
+ ${CORE_MARKERS.layered.trim()}
3082
+ }`),
3083
+ ...core(CORE_MARKERS.pages && `/* gutterpress markers: page rules */
3084
+ ${CORE_MARKERS.pages}`),
3085
+ ...core(`/* gutterpress */
3086
+ @layer gp.vocab {
3087
+ ${CORE_VOCAB.layered.trim()}
3088
+ }`),
3089
+ ...core(CORE_VOCAB.pages && `/* gutterpress: page rules */
3090
+ ${CORE_VOCAB.pages}`),
3091
+ ...core(defaultMargin && `/* page margins (default) */
3092
+ ${defaultMargin}`),
3093
+ ...headed("extension css", opts.extensions),
3094
+ ...core(`/* column alignment */
3095
+ ${TABLE_ALIGN_CSS.trim()}`),
3096
+ ...headed("project css", opts.book),
3097
+ ...core(pageGeometry && `/* page geometry (manifest) */
3098
+ ${pageGeometry}`)
3099
+ ];
3100
+ }
3031
3101
  async function assembleBookHtml(opts) {
3032
3102
  const title = opts.title ?? "Document";
3033
3103
  const projectCss = opts.projectCss ?? "";
@@ -3066,30 +3136,11 @@ async function assembleBookHtml(opts) {
3066
3136
  imageRefs.add(ref);
3067
3137
  opts.onImageRefs([...imageRefs]);
3068
3138
  }
3069
- const pageGeometry = pageGeometryCss(opts.printArea);
3070
- const defaultMargin = defaultPageMarginCss(opts.printArea);
3071
- const inlineCss = [
3072
- "@layer gp.marker, gp.vocab;",
3073
- `/* gutterpress markers */
3074
- @layer gp.marker {
3075
- ${MARKER_CSS.trim()}
3076
- ${TWO_VERSIONS_CSS.trim()}
3077
- }`,
3078
- `/* gutterpress */
3079
- @layer gp.vocab {
3080
- ${GUTTERPRESS_CSS.trim()}
3081
- }`,
3082
- defaultMargin ? `/* page margins (default) */
3083
- ${defaultMargin}` : null,
3084
- pluginCss ? `/* extension css */
3085
- ${pluginCss.trim()}` : null,
3086
- `/* column alignment */
3087
- ${TABLE_ALIGN_CSS.trim()}`,
3088
- projectCss ? `/* project css */
3089
- ${projectCss.trim()}` : null,
3090
- pageGeometry ? `/* page geometry (manifest) */
3091
- ${pageGeometry}` : null
3092
- ].filter(Boolean).join(`
3139
+ const inlineCss = assembleCssChunks({
3140
+ printArea: opts.printArea,
3141
+ extensions: pluginCss ? [{ origin: { kind: "extension" }, css: pluginCss }] : [],
3142
+ book: projectCss ? [{ origin: { kind: "book" }, css: projectCss }] : []
3143
+ }).map((chunk) => chunk.css).join(`
3093
3144
 
3094
3145
  `);
3095
3146
  const preloadTags = (opts.preloadImages ?? []).map((href) => `
@@ -266,7 +266,8 @@ export interface GutterpressManifest {
266
266
  * Page margins (pt), the space between the trim and the text on each
267
267
  * edge — `inside` is the binding edge, `outside` the other. Setup >
268
268
  * Details in the app writes it. When set, the book prints with these
269
- * margins and any `@page` margin in a stylesheet is overridden; left
269
+ * margins and any `@page` margin in a stylesheet is overridden, except
270
+ * where a named page sets its own (`@page full { margin: 0 }`); left
270
271
  * out, the stylesheets' `@page` margins apply (a look's design), else
271
272
  * 1in. All four edges are required together.
272
273
  */
@@ -16,6 +16,7 @@ import {
16
16
  isNoChangesError,
17
17
  listRevisions,
18
18
  listWorkdirChanges,
19
+ nextInHistory,
19
20
  providerFor,
20
21
  readRevisionRefs,
21
22
  resolveGitAuthor,
@@ -24,10 +25,11 @@ import {
24
25
  snapshotStagingMarkerPath,
25
26
  snapshotWorkingTreeUnlocked,
26
27
  stageChanges,
28
+ startHistoryWalk,
27
29
  switchBranch,
28
30
  whenGitIdle,
29
31
  withRepoLock
30
- } from "./cli-31anr0r9.js";
32
+ } from "./cli-v0evdpdf.js";
31
33
  import"./cli-v5mp7a6q.js";
32
34
  import"./cli-y28j019d.js";
33
35
  import"./cli-37x76zdn.js";
@@ -35,6 +37,7 @@ export {
35
37
  withRepoLock,
36
38
  whenGitIdle,
37
39
  switchBranch,
40
+ startHistoryWalk,
38
41
  stageChanges,
39
42
  snapshotWorkingTreeUnlocked,
40
43
  snapshotStagingMarkerPath,
@@ -43,6 +46,7 @@ export {
43
46
  resolveGitAuthor,
44
47
  readRevisionRefs,
45
48
  providerFor,
49
+ nextInHistory,
46
50
  listWorkdirChanges,
47
51
  listRevisions,
48
52
  isNoChangesError,
@@ -16,6 +16,7 @@ import {
16
16
  isNoChangesError,
17
17
  listRevisions,
18
18
  listWorkdirChanges,
19
+ nextInHistory,
19
20
  providerFor,
20
21
  readRevisionRefs,
21
22
  resolveGitAuthor,
@@ -24,10 +25,11 @@ import {
24
25
  snapshotStagingMarkerPath,
25
26
  snapshotWorkingTreeUnlocked,
26
27
  stageChanges,
28
+ startHistoryWalk,
27
29
  switchBranch,
28
30
  whenGitIdle,
29
31
  withRepoLock
30
- } from "./index-cw03e9p4.js";
32
+ } from "./index-7j3hkwya.js";
31
33
  import"./index-5x42amh8.js";
32
34
  import"./index-v5mp7a6q.js";
33
35
  import"./index-37x76zdn.js";
@@ -35,6 +37,7 @@ export {
35
37
  withRepoLock,
36
38
  whenGitIdle,
37
39
  switchBranch,
40
+ startHistoryWalk,
38
41
  stageChanges,
39
42
  snapshotWorkingTreeUnlocked,
40
43
  snapshotStagingMarkerPath,
@@ -43,6 +46,7 @@ export {
43
46
  resolveGitAuthor,
44
47
  readRevisionRefs,
45
48
  providerFor,
49
+ nextInHistory,
46
50
  listWorkdirChanges,
47
51
  listRevisions,
48
52
  isNoChangesError,
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The words a writer never sees, as ONE list for every vocabulary test (#448).
3
+ *
4
+ * TEST-ONLY, like testkit.ts. The rules are docs/ux-design-contract.md's
5
+ * "Vocabulary (what an Author reads)"; this is the list the tests hold
6
+ * writer-facing strings to, so a word is banned in one place. Each test keeps
7
+ * its own exceptions (an author's own note, the SSH hint's `git@…` address).
8
+ */
9
+ /** Matched against lowercased text. */
10
+ export declare const BANNED_TERMS: readonly RegExp[];
11
+ /** The banned terms `text` uses (lowercased); empty when it reads right. */
12
+ export declare function bannedTermsIn(text: string): string[];
@@ -4,9 +4,8 @@
4
4
  * OWNS
5
5
  * `:root` custom properties, and nothing else. The palette, the type scale,
6
6
  * the spacing scale, the measure. This is the file to edit to rebrand the
7
- * look. The desktop app's Book setup lists these tokens (the six shared
8
- * ones under Look, every one under Advanced) and saves a book's changes
9
- * to that book's own stylesheet, never to this file.
7
+ * look. The desktop app's Book setup lists these tokens and saves a
8
+ * book's changes to that book's own stylesheet, never to this file.
10
9
  *
11
10
  * MUST NOT CONTAIN
12
11
  * - Any selector other than `:root`. The moment a rule here targets `h1`,
@@ -18,12 +17,12 @@
18
17
  * waiting to happen.
19
18
  * - Anything a specific book needs. Book-specific values go in book.css.
20
19
  *
21
- * WHAT THE DESIGN TAB SHOWS is curated with comments. Right above one
20
+ * WHAT BOOK SETUP SHOWS is curated with comments. Right above one
22
21
  * declaration: `@label Accent color` (its plain-words name), `@group Paper`
23
22
  * (its heading), `@internal` (not shown). Right above a `:root` selector:
24
23
  * `@group` or `@internal` for the whole block, which a declaration's own
25
24
  * comment overrides. One `@internal` line above a block of component
26
- * defaults keeps them off the tab.
25
+ * defaults keeps them out of Book setup.
27
26
  *
28
27
  * LOADS FIRST, and therefore declares the layer order for the whole stack.
29
28
  * ======================================================================== */
@@ -1,25 +1,26 @@
1
1
  import {
2
2
  executeAndReport
3
- } from "./cli-3cvq3n1c.js";
4
- import"./cli-mmgtqnmr.js";
3
+ } from "./cli-pnrararp.js";
4
+ import"./cli-0ep11b0q.js";
5
5
  import"./cli-ht1bcqdd.js";
6
- import"./cli-58fsk6d7.js";
6
+ import"./cli-pd2cje5b.js";
7
7
  import"./cli-5crpmz42.js";
8
8
  import"./cli-eyyggect.js";
9
9
  import"./cli-asap4t1z.js";
10
- import"./cli-31anr0r9.js";
10
+ import"./cli-v0evdpdf.js";
11
11
  import"./cli-v5mp7a6q.js";
12
- import"./cli-6pv84kf3.js";
13
- import"./cli-wyg7qstd.js";
12
+ import"./cli-88arpdke.js";
13
+ import"./cli-tgnyvra3.js";
14
14
  import {
15
15
  log
16
- } from "./cli-eatdqx3z.js";
16
+ } from "./cli-9n9kg58f.js";
17
17
  import {
18
18
  UsageError,
19
19
  rejectExtraPositionals,
20
20
  rejectUnknownFlags
21
21
  } from "./cli-d8xjns66.js";
22
- import"./cli-5ba6bm6z.js";
22
+ import"./cli-x7gcdg6w.js";
23
+ import"./cli-65gy8ask.js";
23
24
  import {
24
25
  BuildError,
25
26
  EXIT_CODES
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gutterpress",
3
- "version": "0.11.23-alpha.7",
3
+ "version": "0.11.23-beta.2",
4
4
  "description": "Markdown-to-PDF converter for professional print layout using a native Chromium print engine and Ghostscript.",
5
5
  "author": "itlackey",
6
6
  "license": "MPL-2.0",
@@ -1,18 +0,0 @@
1
- // src/lib/build-error.ts
2
- var EXIT_CODES = {
3
- OK: 0,
4
- FINDINGS: 1,
5
- USAGE: 2,
6
- PIPELINE: 3
7
- };
8
-
9
- class BuildError extends Error {
10
- exitCode;
11
- constructor(message, exitCode = EXIT_CODES.PIPELINE, options) {
12
- super(message, options);
13
- this.name = "BuildError";
14
- this.exitCode = exitCode;
15
- }
16
- }
17
-
18
- export { EXIT_CODES, BuildError };