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.
- package/README.md +12 -2
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.js +19 -7
- package/dist/{build-3e18wnqj.js → build-fq3mexhy.js} +9 -9
- package/dist/checks/asset/approved-fonts.d.ts +8 -0
- package/dist/checks/asset/extensions.d.ts +1 -1
- package/dist/checks/asset/index.d.ts +1 -0
- package/dist/{cli-88arpdke.js → cli-5zbdb6mt.js} +296 -65
- package/dist/{cli-tgnyvra3.js → cli-7mt0dftw.js} +35 -16
- package/dist/{cli-pnrararp.js → cli-ah93yyzb.js} +162 -55
- package/dist/{cli-v0evdpdf.js → cli-eymdsefg.js} +1 -1
- package/dist/{cli-9n9kg58f.js → cli-fh685nqs.js} +1 -1
- package/dist/{cli-pd2cje5b.js → cli-fsjre61x.js} +1 -1
- package/dist/{cli-x7gcdg6w.js → cli-q7t04gjt.js} +1 -1
- package/dist/{cli-0ep11b0q.js → cli-rybz2dfs.js} +1 -1
- package/dist/cli.js +12 -12
- package/dist/{doctor-2f4s9dyn.js → doctor-tg9ht1n3.js} +3 -3
- package/dist/{engine-c4pxz79g.js → engine-17v87vq5.js} +1 -1
- package/dist/{engine-cs5g2ez0.js → engine-y9fnarfa.js} +2 -2
- package/dist/{ext-70gv86v5.js → ext-esz03jz4.js} +27 -10
- package/dist/{extension-restore-chj5nx3t.js → extension-restore-91gy1e28.js} +3 -3
- package/dist/{extension-restore-pd87p8r2.js → extension-restore-q70wqah5.js} +5 -5
- package/dist/{index-80vg3ed6.js → index-67g8f7r4.js} +35 -16
- package/dist/{index-swfdgn2n.js → index-d9w3r89w.js} +1 -1
- package/dist/{index-ytjkvwy5.js → index-fntpr44x.js} +321 -66
- package/dist/{index-5x42amh8.js → index-g3te5ey1.js} +2 -1
- package/dist/{index-7j3hkwya.js → index-kw4tbthz.js} +1 -1
- package/dist/{index-2t1gdma7.js → index-santcs4q.js} +1 -1
- package/dist/{index-0k43evt0.js → index-z6vzj3s5.js} +186 -60
- package/dist/index.js +35 -8
- package/dist/lib/check-options.d.ts +70 -0
- package/dist/lib/extension-manager.d.ts +16 -1
- package/dist/lib/extension-scaffold.d.ts +15 -2
- package/dist/lib/extension-specifier.d.ts +8 -1
- package/dist/lib/manifest-config.d.ts +3 -1
- package/dist/lib/manifest-old-spellings.d.ts +32 -9
- package/dist/lib/markdown/math.d.ts +1 -1
- package/dist/lib/markdown/typography.d.ts +1 -0
- package/dist/lib/page-size.d.ts +12 -4
- package/dist/lib/plugin-vendor.d.ts +6 -0
- package/dist/lib/presets.d.ts +2 -2
- package/dist/lib/root-tokens.d.ts +2 -1
- package/dist/lib/style-resolver.d.ts +2 -1
- package/dist/lib/version-changes.d.ts +9 -3
- package/dist/{manifest.schema-0jgj0jt1.json → manifest.schema-5cm13vr3.json} +215 -5
- package/dist/{new-d61n5cn0.js → new-rmfyb7va.js} +22 -15
- package/dist/{plugins-0hhw6s17.js → plugins-gs21xz5s.js} +2 -2
- package/dist/{plugins-e0n46s6m.js → plugins-tqv1s16f.js} +4 -4
- package/dist/{preflight-fjayhjr5.js → preflight-bjyeeq0d.js} +9 -9
- package/dist/{preview-h815jrfb.js → preview-ke03fk5d.js} +9 -9
- package/dist/{publish-ft39zgma.js → publish-wpnz0qng.js} +9 -9
- package/dist/render.js +43 -11
- package/dist/schema/manifest.types.d.ts +45 -7
- package/dist/{source-provider-j1w7byeq.js → source-provider-3g3yrn1f.js} +2 -2
- package/dist/{source-provider-tjaf303m.js → source-provider-azg9ywhb.js} +2 -2
- package/dist/{validate-b201dbrb.js → validate-zcwykb43.js} +9 -9
- package/package.json +1 -1
- /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
|
```
|
package/dist/api/index.d.ts
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
157
|
+
} from "../index-67g8f7r4.js";
|
|
153
158
|
import"../index-ht1bcqdd.js";
|
|
154
|
-
import"../index-
|
|
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-
|
|
184
|
+
} from "../index-kw4tbthz.js";
|
|
180
185
|
import {
|
|
181
|
-
EXTENSIONS_DIR
|
|
182
|
-
|
|
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-
|
|
5
|
-
import"./cli-
|
|
4
|
+
} from "./cli-ah93yyzb.js";
|
|
5
|
+
import"./cli-rybz2dfs.js";
|
|
6
6
|
import"./cli-ht1bcqdd.js";
|
|
7
|
-
import"./cli-
|
|
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-
|
|
11
|
+
import"./cli-eymdsefg.js";
|
|
12
12
|
import"./cli-v5mp7a6q.js";
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
13
|
+
import"./cli-5zbdb6mt.js";
|
|
14
|
+
import"./cli-7mt0dftw.js";
|
|
15
15
|
import {
|
|
16
16
|
log
|
|
17
|
-
} from "./cli-
|
|
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-
|
|
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-
|
|
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
|
|
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.
|