gutterpress 0.11.23-beta.2 → 0.11.23-beta.3

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 (58) hide show
  1. package/README.md +12 -2
  2. package/dist/api/index.d.ts +5 -5
  3. package/dist/api/index.js +19 -7
  4. package/dist/{build-3e18wnqj.js → build-fq3mexhy.js} +9 -9
  5. package/dist/checks/asset/approved-fonts.d.ts +8 -0
  6. package/dist/checks/asset/extensions.d.ts +1 -1
  7. package/dist/checks/asset/index.d.ts +1 -0
  8. package/dist/{cli-88arpdke.js → cli-5zbdb6mt.js} +296 -65
  9. package/dist/{cli-tgnyvra3.js → cli-7mt0dftw.js} +35 -16
  10. package/dist/{cli-pnrararp.js → cli-ah93yyzb.js} +162 -55
  11. package/dist/{cli-v0evdpdf.js → cli-eymdsefg.js} +1 -1
  12. package/dist/{cli-9n9kg58f.js → cli-fh685nqs.js} +1 -1
  13. package/dist/{cli-pd2cje5b.js → cli-fsjre61x.js} +1 -1
  14. package/dist/{cli-x7gcdg6w.js → cli-q7t04gjt.js} +1 -1
  15. package/dist/{cli-0ep11b0q.js → cli-rybz2dfs.js} +1 -1
  16. package/dist/cli.js +12 -12
  17. package/dist/{doctor-2f4s9dyn.js → doctor-tg9ht1n3.js} +3 -3
  18. package/dist/{engine-c4pxz79g.js → engine-17v87vq5.js} +1 -1
  19. package/dist/{engine-cs5g2ez0.js → engine-y9fnarfa.js} +2 -2
  20. package/dist/{ext-70gv86v5.js → ext-esz03jz4.js} +27 -10
  21. package/dist/{extension-restore-chj5nx3t.js → extension-restore-91gy1e28.js} +3 -3
  22. package/dist/{extension-restore-pd87p8r2.js → extension-restore-q70wqah5.js} +5 -5
  23. package/dist/{index-80vg3ed6.js → index-67g8f7r4.js} +35 -16
  24. package/dist/{index-swfdgn2n.js → index-d9w3r89w.js} +1 -1
  25. package/dist/{index-ytjkvwy5.js → index-fntpr44x.js} +321 -66
  26. package/dist/{index-5x42amh8.js → index-g3te5ey1.js} +2 -1
  27. package/dist/{index-7j3hkwya.js → index-kw4tbthz.js} +1 -1
  28. package/dist/{index-2t1gdma7.js → index-santcs4q.js} +1 -1
  29. package/dist/{index-0k43evt0.js → index-z6vzj3s5.js} +186 -60
  30. package/dist/index.js +35 -8
  31. package/dist/lib/check-options.d.ts +70 -0
  32. package/dist/lib/extension-manager.d.ts +16 -1
  33. package/dist/lib/extension-scaffold.d.ts +15 -2
  34. package/dist/lib/extension-specifier.d.ts +8 -1
  35. package/dist/lib/manifest-config.d.ts +3 -1
  36. package/dist/lib/manifest-old-spellings.d.ts +32 -9
  37. package/dist/lib/markdown/math.d.ts +1 -1
  38. package/dist/lib/markdown/typography.d.ts +1 -0
  39. package/dist/lib/page-size.d.ts +12 -4
  40. package/dist/lib/plugin-vendor.d.ts +6 -0
  41. package/dist/lib/presets.d.ts +2 -2
  42. package/dist/lib/root-tokens.d.ts +2 -1
  43. package/dist/lib/style-resolver.d.ts +2 -1
  44. package/dist/lib/version-changes.d.ts +9 -3
  45. package/dist/{manifest.schema-0jgj0jt1.json → manifest.schema-5cm13vr3.json} +215 -5
  46. package/dist/{new-d61n5cn0.js → new-rmfyb7va.js} +22 -15
  47. package/dist/{plugins-0hhw6s17.js → plugins-gs21xz5s.js} +2 -2
  48. package/dist/{plugins-e0n46s6m.js → plugins-tqv1s16f.js} +4 -4
  49. package/dist/{preflight-fjayhjr5.js → preflight-bjyeeq0d.js} +9 -9
  50. package/dist/{preview-h815jrfb.js → preview-ke03fk5d.js} +9 -9
  51. package/dist/{publish-ft39zgma.js → publish-wpnz0qng.js} +9 -9
  52. package/dist/render.js +43 -11
  53. package/dist/schema/manifest.types.d.ts +45 -7
  54. package/dist/{source-provider-j1w7byeq.js → source-provider-3g3yrn1f.js} +2 -2
  55. package/dist/{source-provider-tjaf303m.js → source-provider-azg9ywhb.js} +2 -2
  56. package/dist/{validate-b201dbrb.js → validate-zcwykb43.js} +9 -9
  57. package/package.json +1 -1
  58. /package/dist/{cli-y28j019d.js → cli-1dha1nxk.js} +0 -0
package/README.md CHANGED
@@ -151,7 +151,7 @@ Scaffold a new book, plugin or look from an embedded starter template — the fa
151
151
  ```sh
152
152
  gutterpress new <name> [--kind <id>] [options]
153
153
 
154
- --kind <id> What to create: book (default), plugin, look
154
+ --kind <id> What to create: book (default), plugin, look (theme is look's older name)
155
155
  --prefix <str> Class/custom-property prefix an extension claims (default: its slug, e.g. "field-notes-"); --kind plugin|look only
156
156
  --description <text> One-line description recorded in the extension's metadata; --kind plugin|look only
157
157
  --preset <id> Preset the book is designed for: dtrpg, book, custom (default: the template's)
@@ -162,6 +162,7 @@ gutterpress new <name> [--kind <id>] [options]
162
162
  --targets <ids> Publish targets recorded in the manifest (comma-separated: dtrpg, itch; or "none") — default: the preset's
163
163
  --page-width <pt> Trim width in points, 72pt = 1in (required with --preset custom; optional override otherwise)
164
164
  --page-height <pt> Trim height in points, 72pt = 1in (required with --preset custom; optional override otherwise)
165
+ --page-tolerance <pt> Allowed trim deviation when validating a built PDF (default: 0.5); written as checks: { pdf.print.page-size: { tolerance } }
165
166
  --git Keep version history on this computer (default: true; use --no-git to skip)
166
167
  --no-git
167
168
  ```
@@ -404,7 +405,14 @@ Add an extension. What `SOURCE` is decides what happens:
404
405
  manifest-relative path, referenced in place — never copied;
405
406
  - a **`.zip` or `.css` file**, or an **http(s) URL**, is validated (every
406
407
  declared sheet must exist and parse; print-safety findings are warnings)
407
- and landed in `extensions/<id>/`, then listed as `./extensions/<id>`.
408
+ and landed in `extensions/<id>/`, then listed as `./extensions/<id>`;
409
+ - with `--look`, `SOURCE` is a built-in look (`clean-book`, `zine`,
410
+ `technical-doc`, `academic`), **copied** into `extensions/<id>/` (its
411
+ `theme.css` and a `package.json`) as the book's own editable files and
412
+ listed as `./extensions/<id>` — in the built-in's place when the book
413
+ already lists it by name, so the look is listed once. A folder already
414
+ there is kept as it is (your edits survive) and only referenced again. This
415
+ is what Book setup's **Make an editable copy** does.
408
416
 
409
417
  Adding something already listed re-pins or updates that entry instead of
410
418
  adding a second one.
@@ -438,6 +446,7 @@ folders it created and nothing else.
438
446
  gutterpress ext add <source> [dir] [options]
439
447
 
440
448
  --export <name> Named module export to use as the plugin function (npm and path extensions only)
449
+ --look Treat SOURCE as a built-in look (clean-book, zine, technical-doc, academic): copy it into extensions/ as your own files and list the copy
441
450
  ```
442
451
 
443
452
  ```sh
@@ -447,6 +456,7 @@ gutterpress ext add markdown-it-emoji@3.0.0 ./my-book --export full
447
456
  gutterpress ext add markdown-it-mark ./my-book
448
457
  gutterpress ext add ./plugins/field-notes ./my-book
449
458
  gutterpress ext add zine ./my-book
459
+ gutterpress ext add zine ./my-book --look
450
460
  gutterpress ext add ./parchment.zip ./my-book
451
461
  gutterpress ext add https://example.com/looks/cool/ ./my-book
452
462
  ```
@@ -24,8 +24,8 @@ export type { ProjectSource, ProjectCapabilities, } from "../lib/project-source"
24
24
  export { scaffoldProject, adoptFolder, slugifyProjectName, escapeYamlScalar, } from "../lib/project-scaffold.ts";
25
25
  export { ensureProjectGitignore } from "../lib/project-gitignore.ts";
26
26
  export type { ProjectTemplateId, ProjectVersionHistoryMode, CreateProjectOptions, CustomPageOptions, AdoptFolderOptions, CreateProjectResult, CreateProjectErrorCode, CreateProjectError, } from "../lib/project-scaffold.ts";
27
- export { scaffoldExtension, resolveExtensionPrefix, EXTENSION_KINDS, RESERVED_PREFIX, } from "../lib/extension-scaffold.ts";
28
- export type { ExtensionKind, ScaffoldExtensionOptions, ScaffoldExtensionResult, } from "../lib/extension-scaffold.ts";
27
+ export { scaffoldExtension, resolveExtensionPrefix, EXTENSION_KINDS, EXTENSION_KIND_ALIASES, extensionKindFor, RESERVED_PREFIX, } from "../lib/extension-scaffold.ts";
28
+ export type { ExtensionKind, ExtensionKindAlias, ScaffoldExtensionOptions, ScaffoldExtensionResult, } from "../lib/extension-scaffold.ts";
29
29
  export { PRESET_IDS, PRESETS } from "../lib/presets.ts";
30
30
  export type { PresetId, VendorPreset } from "../lib/presets.ts";
31
31
  export { TARGETS, TARGET_IDS, publishTargetFor } from "../lib/targets.ts";
@@ -34,9 +34,9 @@ export { listBuiltInTemplates, listCustomTemplates, saveProjectAsTemplate, impor
34
34
  export type { TemplateInfo, SaveProjectAsTemplateOptions, } from "../lib/project-templates.ts";
35
35
  export { extractVariables, substituteVariables, listSnippets, saveSnippet, deleteSnippet, listMergedSnippets, listMarkerComponents, listLocationVariants, SNIPPETS_DIR, } from "../lib/snippets.ts";
36
36
  export type { LocationVariant, MarkerComponent, SnippetEntry, SnippetSource } from "../lib/snippets.ts";
37
- export { listProjectExtensions, describeExtension, addExtension, checkExtensionUpdates, listNpmVersions, updateExtensions, removeExtension, setExtensionEnabled, reorderExtensions, validateProjectExtensions, readExtensionCss, listBundledExtensions, sameExtension, EXTENSIONS_DIR, } from "../lib/extension-manager.ts";
37
+ export { listProjectExtensions, describeExtension, addExtension, checkExtensionUpdates, listNpmVersions, updateExtensions, removeExtension, setExtensionEnabled, reorderExtensions, validateProjectExtensions, readExtensionCss, listBundledExtensions, addBuiltInStyleSet, BUILT_IN_LOOKS, sameExtension, EXTENSIONS_DIR, PLUGINS_DIR, } from "../lib/extension-manager.ts";
38
38
  export type { ProjectExtensionEntry, ExtensionValidationResult, BundledExtensionInfo, ExtensionSourceKind, AddExtensionOptions, ExtensionUpdateCheck, ExtensionUpdateResult, CheckExtensionUpdatesOptions, UpdateExtensionsOptions, } from "../lib/extension-manager.ts";
39
- export { BUNDLED_EXTENSIONS, bundledExtension, isBundledExtension, isPathSpecifier, parseExtensionSpecifier, } from "../lib/extension-specifier.ts";
39
+ export { BUNDLED_EXTENSIONS, BUNDLED_EXTENSION_DETAILS, bundledExtension, isBundledExtension, isPathSpecifier, parseExtensionSpecifier, } from "../lib/extension-specifier.ts";
40
40
  export type { BundledExtension, ParsedExtensionSpecifier } from "../lib/extension-specifier.ts";
41
41
  export { restorePinnedExtensions, restoreFailureMessage } from "../lib/extension-restore.ts";
42
42
  export type { RestorePinnedOptions, RestoreResult, RestoreFailure, RestoreProgress } from "../lib/extension-restore.ts";
@@ -56,7 +56,7 @@ export type { PageMargin, PageSetup, PageSetupChange, PageSizeChoice, PageSizePo
56
56
  export { providerFor, restoreVersionWithBackup, isNoChangesError, countUnversionedChanges, whenGitIdle, AUTO_SNAPSHOT_MESSAGE, RESTORE_BACKUP_MESSAGE, HISTORY_PAGE_LIMIT, listRevisions, createRevision, revisionNameFrom, switchBranch, SWITCH_BRANCH_SNAPSHOT_MESSAGE, } from "../lib/source-provider.ts";
57
57
  export type { ListHistoryOptions, HistoryPage, UnversionedChanges, Revision, RevisionList, CreateRevisionOptions, SwitchBranchOptions, SwitchBranchResult, } from "../lib/source-provider.ts";
58
58
  export { describeVersions, listVersionChanges, listOnlineVersions, compareVersionFile, exportVersionTree, VERSION_CHANGES_SHOWN, } from "../lib/version-changes.ts";
59
- export type { VersionEntry, VersionChanges, VersionFileChange, CompareRow } from "../lib/version-changes.ts";
59
+ export type { VersionEntry, OnlineVersionEntry, VersionChanges, VersionFileChange, CompareRow } from "../lib/version-changes.ts";
60
60
  export { autoSnapshotDelayMs, autoSyncDelayMs, isGitInternalPath, AUTO_SNAPSHOT_DEFAULT_MINUTES, AUTO_SYNC_MIN_MINUTES, AUTO_SYNC_MAX_MINUTES, AUTO_SYNC_DEFAULT_MINUTES, AUTO_SYNC_PUSH_INTERVAL_MINUTES, } from "../lib/host-policy.ts";
61
61
  export type { AutoSnapshotPolicy, AutoSyncPolicy, } from "../lib/host-policy.ts";
62
62
  export { FileTokenStore, defaultConfigDir, extractUrlCredential, } from "../lib/remote-auth/token-store.ts";
package/dist/api/index.js CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  AUTO_SYNC_PUSH_INTERVAL_MINUTES,
7
7
  BUILT_IN_TEMPLATE_IDS,
8
8
  EXTENSION_KINDS,
9
+ EXTENSION_KIND_ALIASES,
9
10
  FileTokenStore,
10
11
  GDRIVE_HOST,
11
12
  GITHUB_HOST,
@@ -37,6 +38,7 @@ import {
37
38
  disconnectPublishCredential,
38
39
  escapeYamlScalar,
39
40
  exportVersionTree,
41
+ extensionKindFor,
40
42
  extractUrlCredential,
41
43
  extractVariables,
42
44
  forgeKindForHost,
@@ -105,14 +107,16 @@ import {
105
107
  substituteVariables,
106
108
  syncProject,
107
109
  testRemoteAccess
108
- } from "../index-0k43evt0.js";
110
+ } from "../index-z6vzj3s5.js";
109
111
  import {
112
+ BUILT_IN_LOOKS,
110
113
  DEFAULT_NPM_REGISTRY,
111
114
  MANIFEST_FILENAMES,
112
115
  PRESETS,
113
116
  PRESET_IDS,
114
117
  TARGETS,
115
118
  TARGET_IDS,
119
+ addBuiltInStyleSet,
116
120
  addExtension,
117
121
  checkExtensionUpdates,
118
122
  describeExtension,
@@ -134,9 +138,10 @@ import {
134
138
  setExtensionEnabled,
135
139
  updateExtensions,
136
140
  validateProjectExtensions
137
- } from "../index-ytjkvwy5.js";
141
+ } from "../index-fntpr44x.js";
138
142
  import {
139
143
  BUNDLED_EXTENSIONS,
144
+ BUNDLED_EXTENSION_DETAILS,
140
145
  EXTENSION_MANIFEST_FILENAME,
141
146
  assertExtensionContained,
142
147
  bundledExtension,
@@ -149,9 +154,9 @@ import {
149
154
  pathEscapesFolder,
150
155
  readExtensionMeta,
151
156
  resolveExtension
152
- } from "../index-80vg3ed6.js";
157
+ } from "../index-67g8f7r4.js";
153
158
  import"../index-ht1bcqdd.js";
154
- import"../index-swfdgn2n.js";
159
+ import"../index-d9w3r89w.js";
155
160
  import {
156
161
  BuildError
157
162
  } from "../index-tayzfr9c.js";
@@ -176,10 +181,11 @@ import {
176
181
  revisionNameFrom,
177
182
  switchBranch,
178
183
  whenGitIdle
179
- } from "../index-7j3hkwya.js";
184
+ } from "../index-kw4tbthz.js";
180
185
  import {
181
- EXTENSIONS_DIR
182
- } from "../index-5x42amh8.js";
186
+ EXTENSIONS_DIR,
187
+ PLUGINS_DIR
188
+ } from "../index-g3te5ey1.js";
183
189
  import {
184
190
  capabilitiesFor,
185
191
  detectProjectSource,
@@ -293,6 +299,7 @@ export {
293
299
  extractVariables,
294
300
  extractUrlCredential,
295
301
  extensionStyleList,
302
+ extensionKindFor,
296
303
  extensionEntry,
297
304
  extensionCarries,
298
305
  exportVersionTree,
@@ -323,6 +330,7 @@ export {
323
330
  assertExtensionContained,
324
331
  adoptFolder,
325
332
  addExtension,
333
+ addBuiltInStyleSet,
326
334
  VERSION_CHANGES_SHOWN,
327
335
  TARGET_IDS,
328
336
  TARGETS,
@@ -336,6 +344,7 @@ export {
336
344
  PublishSelectionsStore,
337
345
  PRESET_IDS,
338
346
  PRESETS,
347
+ PLUGINS_DIR,
339
348
  MAX_SEARCH_BYTES,
340
349
  MANIFEST_FILENAMES,
341
350
  HISTORY_PAGE_LIMIT,
@@ -346,13 +355,16 @@ export {
346
355
  GDRIVE_HOST,
347
356
  FileTokenStore,
348
357
  EXTENSION_MANIFEST_FILENAME,
358
+ EXTENSION_KIND_ALIASES,
349
359
  EXTENSION_KINDS,
350
360
  EXTENSIONS_DIR,
351
361
  DEFAULT_PRINT_OPTS,
352
362
  DEFAULT_NPM_REGISTRY,
353
363
  BuildError,
364
+ BUNDLED_EXTENSION_DETAILS,
354
365
  BUNDLED_EXTENSIONS,
355
366
  BUILT_IN_TEMPLATE_IDS,
367
+ BUILT_IN_LOOKS,
356
368
  AUTO_SYNC_PUSH_INTERVAL_MINUTES,
357
369
  AUTO_SYNC_MIN_MINUTES,
358
370
  AUTO_SYNC_MAX_MINUTES,
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  runBuild,
3
3
  splitOutPath
4
- } from "./cli-pnrararp.js";
5
- import"./cli-0ep11b0q.js";
4
+ } from "./cli-ah93yyzb.js";
5
+ import"./cli-rybz2dfs.js";
6
6
  import"./cli-ht1bcqdd.js";
7
- import"./cli-pd2cje5b.js";
7
+ import"./cli-fsjre61x.js";
8
8
  import"./cli-5crpmz42.js";
9
9
  import"./cli-eyyggect.js";
10
10
  import"./cli-asap4t1z.js";
11
- import"./cli-v0evdpdf.js";
11
+ import"./cli-eymdsefg.js";
12
12
  import"./cli-v5mp7a6q.js";
13
- import"./cli-88arpdke.js";
14
- import"./cli-tgnyvra3.js";
13
+ import"./cli-5zbdb6mt.js";
14
+ import"./cli-7mt0dftw.js";
15
15
  import {
16
16
  log
17
- } from "./cli-9n9kg58f.js";
17
+ } from "./cli-fh685nqs.js";
18
18
  import {
19
19
  UsageError,
20
20
  parseFormat,
@@ -22,12 +22,12 @@ import {
22
22
  rejectExtraPositionals,
23
23
  rejectUnknownFlags
24
24
  } from "./cli-d8xjns66.js";
25
- import"./cli-x7gcdg6w.js";
25
+ import"./cli-q7t04gjt.js";
26
26
  import"./cli-65gy8ask.js";
27
27
  import {
28
28
  BuildError
29
29
  } from "./cli-46ycxe6r.js";
30
- import"./cli-y28j019d.js";
30
+ import"./cli-1dha1nxk.js";
31
31
  import"./cli-37x76zdn.js";
32
32
 
33
33
  // src/commands/build.ts
@@ -0,0 +1,8 @@
1
+ import type { Check } from "../types";
2
+ /**
3
+ * The font files a book ships, against the list its manifest approves:
4
+ * `checks: { asset.font.approved-files: { approvedFontFiles: [<glob>, …] } }`
5
+ * (0.11.22's `validate.assets.approvedFontFiles`). No list, no findings.
6
+ */
7
+ declare const check: Check;
8
+ export default check;
@@ -28,7 +28,7 @@ export declare const ALL_IMAGE_EXTS: readonly ["png", "jpg", "jpeg", "tiff", "ti
28
28
  * the run has no book to resolve them from (a `--pdf`-only run).
29
29
  */
30
30
  export declare function shippedImages(ctx: CheckContext, exts: readonly string[]): string[];
31
- /** Font file extensions the font-license check looks for. */
31
+ /** Font file extensions shared by the approved-fonts and font-license checks. */
32
32
  export declare const FONT_EXTS: readonly ["woff", "woff2", "otf", "ttf", "eot"];
33
33
  /**
34
34
  * Directories no asset scan should ever descend into, as glob patterns.
@@ -1,3 +1,4 @@
1
1
  import "./image-file-size";
2
2
  import "./image-alpha";
3
+ import "./approved-fonts";
3
4
  import "./font-license";