@heroiclands/package-build 22.15.1 → 22.16.0
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/CHANGELOG.md +95 -0
- package/README.md +39 -678
- package/bin/{content-build.mjs → content-commands.mjs} +197 -118
- package/bin/package-build.mjs +303 -42
- package/bin/report.mjs +1 -1
- package/ci/ci-docker.mjs +6 -3
- package/ci/ci-steps.mjs +6 -4
- package/ci/content-format-reference.mjs +106 -0
- package/config.mjs +22 -2
- package/content-config.mjs +74 -134
- package/docs/api.md +294 -234
- package/docs/authoring/assets.md +31 -0
- package/docs/authoring/dates-and-calendars.md +33 -0
- package/docs/authoring/first-note.md +48 -0
- package/docs/authoring/frontmatter.md +40 -0
- package/docs/authoring/links-and-markup.md +137 -0
- package/docs/commands.md +631 -162
- package/docs/configuration.md +176 -140
- package/docs/content-format.md +50 -4229
- package/docs/design.md +32 -0
- package/docs/diagnostics.md +29 -22
- package/docs/getting-started.md +21 -877
- package/docs/guides/book.md +153 -0
- package/docs/guides/e2e.md +143 -0
- package/docs/guides/icons.md +126 -0
- package/docs/guides/localization.md +120 -0
- package/docs/guides/module-project.md +915 -0
- package/docs/guides/packs.md +167 -0
- package/docs/guides/reference-pages.md +148 -0
- package/docs/guides/release-and-deploy.md +114 -0
- package/docs/guides/site.md +152 -0
- package/docs/guides/system-project.md +45 -0
- package/docs/index.md +16 -0
- package/docs/project-setup.md +54 -35
- package/docs/reference/format-details.md +4420 -0
- package/docs/reference/note-types.md +531 -0
- package/engine/address-render.mjs +26 -0
- package/engine/address.mjs +3 -20
- package/engine/anchors.mjs +15 -6
- package/engine/asset-bindings.mjs +6 -2
- package/engine/base-compiler.mjs +47 -11
- package/engine/being-measurements.mjs +70 -0
- package/engine/calendar-artifacts.mjs +1 -1
- package/engine/calendar-choice.mjs +32 -0
- package/engine/calendar-human.mjs +71 -0
- package/engine/calendar-notes.mjs +41 -3
- package/engine/calendars.mjs +8 -1
- package/engine/changelog-lint.mjs +2 -2
- package/engine/code-fences.mjs +23 -97
- package/engine/compile-corpus.mjs +6 -7
- package/engine/content-admonitions.mjs +114 -0
- package/engine/content-captions.mjs +181 -0
- package/engine/content-embeds.mjs +2 -2
- package/engine/content-footnotes.mjs +34 -0
- package/engine/content-format-check.mjs +2 -2
- package/engine/content-format.mjs +127 -73
- package/engine/content-format.yaml +745 -0
- package/engine/content-html.mjs +1 -1
- package/engine/content-icons.mjs +45 -92
- package/engine/content-images.mjs +22 -74
- package/engine/content-index.mjs +12 -3
- package/engine/content-links.mjs +21 -26
- package/engine/content-lint.mjs +1 -5
- package/engine/content-secrets.mjs +3 -1
- package/engine/content-tables.mjs +47 -1257
- package/engine/culture-choice.mjs +32 -0
- package/engine/date-conversion.mjs +47 -0
- package/engine/declaration-check.mjs +87 -0
- package/engine/docs-checks.mjs +140 -0
- package/engine/documentation-links.mjs +31 -0
- package/engine/exported-scene.mjs +1 -1
- package/engine/extension-attributes.mjs +74 -0
- package/engine/field-reference.mjs +1 -1
- package/engine/field-spec.mjs +4 -0
- package/engine/foreign-catalog.mjs +5 -5
- package/engine/format-generated.mjs +15 -0
- package/engine/foundry-entries.mjs +3 -1
- package/engine/frontmatter-lint.mjs +5 -1
- package/engine/frontmatter.mjs +10 -0
- package/engine/generate.mjs +2 -2
- package/engine/helpers.mjs +71 -117
- package/engine/homepage.mjs +2 -3
- package/engine/index-records.mjs +1 -0
- package/engine/index.mjs +18 -3
- package/engine/infobox-registry.mjs +3 -1
- package/engine/infobox.mjs +38 -20
- package/engine/item-compiler.mjs +10 -8
- package/engine/item-docs.mjs +7 -6
- package/engine/journals.mjs +51 -10
- package/engine/macros.mjs +1 -1
- package/engine/map-build.mjs +1 -1
- package/engine/map-dot.mjs +1 -1
- package/engine/markdown-expressions.mjs +117 -0
- package/engine/metadata-index.mjs +7 -3
- package/engine/note-addresses.mjs +1 -0
- package/engine/note-dates.mjs +283 -61
- package/engine/note-package.mjs +5 -25
- package/engine/note-state.mjs +6 -2
- package/engine/note-vocabulary.mjs +74 -19
- package/engine/number-words.mjs +75 -0
- package/engine/office-holders.mjs +188 -0
- package/engine/pack-config.mjs +2 -15
- package/engine/pack-router.mjs +24 -5
- package/engine/packages.mjs +3 -2
- package/engine/pathnames.mjs +21 -24
- package/engine/pdf-build.mjs +217 -55
- package/engine/pdf-fonts.mjs +2 -2
- package/engine/pdf-images.mjs +82 -0
- package/engine/pdf-render.mjs +174 -22
- package/engine/populations.mjs +3 -2
- package/engine/project-init.mjs +499 -0
- package/engine/prose-config.mjs +1 -1
- package/engine/prose-lint.mjs +7 -6
- package/engine/readability-lint.mjs +86 -0
- package/engine/reckoning-markers.mjs +205 -93
- package/engine/scenes.mjs +5 -2
- package/engine/schema-check.mjs +3 -3
- package/engine/site-build.mjs +87 -37
- package/engine/site-config.mjs +8 -8
- package/engine/site-index.mjs +4 -0
- package/engine/site-maps.mjs +1 -1
- package/engine/site-preview.mjs +19 -8
- package/engine/social-ties.mjs +5 -1
- package/engine/sql-tables.mjs +92 -22
- package/engine/web-wikilinks.mjs +15 -31
- package/engine/wikilink-syntax.mjs +4 -1
- package/engine/wikilinks.mjs +12 -14
- package/hm3/item-fields.mjs +1 -1
- package/hm3/items.mjs +12 -45
- package/index.mjs +2 -14
- package/manifest.mjs +31 -4
- package/markdownlint-config.mjs +1 -1
- package/package.json +32 -11
- package/prettier-config.mjs +1 -1
- package/sohl/being-info.mjs +3 -145
- package/sohl/index.mjs +1 -1
- package/sohl/infobox.mjs +2 -1
- package/sohl/item-builders.mjs +3 -27
- package/sohl/item-fields.mjs +61 -22
- package/sohl/kb-passes.mjs +2 -2
- package/sohl/note-schemas.mjs +0 -8
- package/stage.mjs +19 -0
- package/types/config.d.mts +12 -3
- package/types/content-config.d.mts +15 -81
- package/types/engine/address-render.d.mts +13 -0
- package/types/engine/address.d.mts +2 -11
- package/types/engine/anchors.d.mts +3 -4
- package/types/engine/asset-bindings.d.mts +9 -2
- package/types/engine/base-compiler.d.mts +1 -2
- package/types/engine/being-measurements.d.mts +16 -0
- package/types/engine/calendar-choice.d.mts +14 -0
- package/types/engine/calendar-human.d.mts +4 -0
- package/types/engine/calendar-notes.d.mts +2 -0
- package/types/engine/calendars.d.mts +5 -3
- package/types/engine/code-fences.d.mts +6 -72
- package/types/engine/compile-corpus.d.mts +1 -3
- package/types/engine/content-admonitions.d.mts +24 -0
- package/types/engine/content-captions.d.mts +45 -0
- package/types/engine/content-footnotes.d.mts +10 -0
- package/types/engine/content-format-check.d.mts +17 -4
- package/types/engine/content-format.d.mts +24 -11
- package/types/engine/content-icons.d.mts +14 -23
- package/types/engine/content-images.d.mts +2 -2
- package/types/engine/content-index.d.mts +9 -2
- package/types/engine/content-links.d.mts +3 -5
- package/types/engine/content-tables.d.mts +11 -140
- package/types/engine/culture-choice.d.mts +14 -0
- package/types/engine/date-conversion.d.mts +4 -0
- package/types/engine/declaration-check.d.mts +24 -0
- package/types/engine/docs-checks.d.mts +28 -0
- package/types/engine/documentation-links.d.mts +7 -0
- package/types/engine/exported-scene.d.mts +6 -2
- package/types/engine/extension-attributes.d.mts +14 -0
- package/types/engine/field-spec.d.mts +9 -0
- package/types/engine/format-generated.d.mts +7 -0
- package/types/engine/frontmatter.d.mts +14 -4
- package/types/engine/generate.d.mts +1 -1
- package/types/engine/helpers.d.mts +37 -92
- package/types/engine/homepage.d.mts +2 -3
- package/types/engine/index.d.mts +5 -0
- package/types/engine/infobox-registry.d.mts +3 -1
- package/types/engine/infobox.d.mts +17 -6
- package/types/engine/item-compiler.d.mts +4 -4
- package/types/engine/item-docs.d.mts +4 -3
- package/types/engine/journals.d.mts +10 -7
- package/types/engine/map-graphviz.d.mts +1 -1
- package/types/engine/markdown-expressions.d.mts +17 -0
- package/types/engine/note-dates.d.mts +47 -1
- package/types/engine/note-package.d.mts +3 -19
- package/types/engine/note-state.d.mts +2 -1
- package/types/engine/note-vocabulary.d.mts +9 -0
- package/types/engine/number-words.d.mts +4 -0
- package/types/engine/office-holders.d.mts +14 -0
- package/types/engine/pack-config.d.mts +1 -1
- package/types/engine/packages.d.mts +3 -2
- package/types/engine/pdf-images.d.mts +38 -0
- package/types/engine/populations.d.mts +2 -2
- package/types/engine/project-init.d.mts +17 -0
- package/types/engine/prose-config.d.mts +1 -1
- package/types/engine/prose-lint.d.mts +3 -2
- package/types/engine/readability-lint.d.mts +22 -0
- package/types/engine/reckoning-markers.d.mts +4 -2
- package/types/engine/schema-check.d.mts +3 -3
- package/types/engine/site-build.d.mts +38 -28
- package/types/engine/site-config.d.mts +2 -2
- package/types/engine/site-index.d.mts +4 -0
- package/types/engine/site-preview.d.mts +1 -1
- package/types/engine/social-ties.d.mts +8 -2
- package/types/engine/sql-tables.d.mts +13 -2
- package/types/engine/web-wikilinks.d.mts +2 -1
- package/types/engine/wikilinks.d.mts +7 -1
- package/types/hm3/items.d.mts +5 -6
- package/types/labels.d.mts +40 -0
- package/types/manifest.d.mts +3 -3
- package/types/sohl/actors.d.mts +2 -2
- package/types/sohl/being-info.d.mts +3 -43
- package/types/sohl/index.d.mts +1 -1
- package/types/sohl/infobox.d.mts +5 -2
- package/types/sohl/item-fields.d.mts +4 -13
- package/types/stage.d.mts +9 -0
- package/CONTENT.md +0 -3239
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimize staged raster images without changing their authored files.
|
|
3
|
+
*
|
|
4
|
+
* @param {Map<string, {from: string, to: string, relative: string, file: string,
|
|
5
|
+
* uses: Array<{width: number, height: number}>}>} candidates
|
|
6
|
+
* @param {string} outDir - PDF staging directory.
|
|
7
|
+
* @returns {Promise<object[]>} Image reports with the authored file location.
|
|
8
|
+
*/
|
|
9
|
+
export function resamplePdfImages(candidates: Map<string, {
|
|
10
|
+
from: string;
|
|
11
|
+
to: string;
|
|
12
|
+
relative: string;
|
|
13
|
+
file: string;
|
|
14
|
+
uses: Array<{
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}>;
|
|
18
|
+
}>, outDir: string): Promise<object[]>;
|
|
19
|
+
/** Print geometry in inches; Typst's default column gutter is 4% of the text width. */
|
|
20
|
+
export const PDF_PAGE: Readonly<{
|
|
21
|
+
width: 8.5;
|
|
22
|
+
height: 11;
|
|
23
|
+
margin: number;
|
|
24
|
+
dpi: 300;
|
|
25
|
+
quality: 82;
|
|
26
|
+
}>;
|
|
27
|
+
/** Named image widths in inches, matching the book renderer's Typst sizes. */
|
|
28
|
+
export const PDF_IMAGE_INCHES: Readonly<{
|
|
29
|
+
small: number;
|
|
30
|
+
medium: number;
|
|
31
|
+
large: number;
|
|
32
|
+
xlarge: number;
|
|
33
|
+
}>;
|
|
34
|
+
/** Usable width of a portrait page in inches. */
|
|
35
|
+
export const pdfTextWidth: number;
|
|
36
|
+
/** Usable height of a portrait page in inches. */
|
|
37
|
+
export const pdfTextHeight: number;
|
|
38
|
+
export function pdfColumnWidth(columns?: number): number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Read a fetched index entry into a node, or `null` where it takes no part.
|
|
3
3
|
*
|
|
4
|
-
* A fetched entry carries
|
|
5
|
-
*
|
|
4
|
+
* A fetched entry carries its author's figure when the published index has
|
|
5
|
+
* one. An older index without a figure contributes no population.
|
|
6
6
|
*
|
|
7
7
|
* @param {string} canonical - The entry's address.
|
|
8
8
|
* @param {object} entry - The entry.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate values before creating a target directory.
|
|
3
|
+
* @param {object} answers
|
|
4
|
+
*/
|
|
5
|
+
export function validateInitAnswers(answers: object): {
|
|
6
|
+
contentPackage: any;
|
|
7
|
+
};
|
|
8
|
+
/** Format every generated file with the toolchain's own conventions. */
|
|
9
|
+
export function renderProject(answers: any): Promise<Map<any, any>>;
|
|
10
|
+
/** Write a complete scaffold after collision checks; undo this run's files on failure. */
|
|
11
|
+
export function initializeProject(rootDir: any, answers: any): Promise<any[]>;
|
|
12
|
+
/** Report required structure and meaning in an existing package without writes. */
|
|
13
|
+
export function checkProject(rootDir: any): any[];
|
|
14
|
+
/** Package kinds the initializer can create. */
|
|
15
|
+
export const INIT_KINDS: readonly string[];
|
|
16
|
+
/** License templates the initializer can create. */
|
|
17
|
+
export const INIT_LICENSES: readonly string[];
|
|
@@ -136,7 +136,7 @@ export const PRETTIER_CONFIG: Readonly<object>;
|
|
|
136
136
|
*/
|
|
137
137
|
export const MARKDOWNLINT_CONFIG: Readonly<object>;
|
|
138
138
|
/**
|
|
139
|
-
* The globs `
|
|
139
|
+
* The globs `package-build markdown` checks when a consumer names no paths.
|
|
140
140
|
*
|
|
141
141
|
* Every markdown file the repository tracks, which is what a consumer means by
|
|
142
142
|
* "lint my markdown". What to *skip* is the repository's own business and comes
|
|
@@ -45,7 +45,7 @@ export function checkFormatting(root: string, opts?: {
|
|
|
45
45
|
*
|
|
46
46
|
* The no-configuration case is the sharper one and is reported even though the
|
|
47
47
|
* command itself behaves correctly there: with no config file the shared
|
|
48
|
-
* conventions reach `
|
|
48
|
+
* conventions reach `package-build format` and reach *nothing else*, so an
|
|
49
49
|
* editor's format-on-save and a bare `npx prettier --check .` apply Prettier's
|
|
50
50
|
* own defaults to the same tree, and the two take turns rewriting the same
|
|
51
51
|
* lines. That is not hypothetical — it is what the config files in
|
|
@@ -84,7 +84,8 @@ export function checkPrettierConventions(root: string, opts?: {
|
|
|
84
84
|
* and every per-rule option; but its `ignores` *replaces*
|
|
85
85
|
* {@link MARKDOWN_IGNORES} rather than extending it, so such a file must restate
|
|
86
86
|
* every shared entry it still wants. Omitting `CHANGELOG.md` there silently
|
|
87
|
-
* starts linting a generated file.
|
|
87
|
+
* starts linting a generated file. `node_modules` stays excluded by the
|
|
88
|
+
* command's glob even when a consumer replaces `ignores`.
|
|
88
89
|
*
|
|
89
90
|
* @param {string} root - Repository to lint.
|
|
90
91
|
* @param {object} [opts]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Files in a content tree, excluding configured directory names. */
|
|
2
|
+
export function proseFiles(root: any, skipDirectories?: any[]): any[];
|
|
3
|
+
/** Source-aligned findings for one Markdown note. */
|
|
4
|
+
export function analyzeProse(file: any, source: any, { age, threshold, minWords }?: {
|
|
5
|
+
age?: number | undefined;
|
|
6
|
+
threshold?: number | undefined;
|
|
7
|
+
minWords?: number | undefined;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
file: any;
|
|
10
|
+
line: any;
|
|
11
|
+
column: any;
|
|
12
|
+
severity: string;
|
|
13
|
+
message: string;
|
|
14
|
+
}[]>;
|
|
15
|
+
/** Analyze one note or the configured corpus without changing source files. */
|
|
16
|
+
export function lintProse(root: any, options: any, skipDirectories?: any[]): Promise<{
|
|
17
|
+
file: any;
|
|
18
|
+
line: any;
|
|
19
|
+
column: any;
|
|
20
|
+
severity: string;
|
|
21
|
+
message: string;
|
|
22
|
+
}[]>;
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @param {{notes?: readonly object[]}} index - The corpus link index.
|
|
6
6
|
* @param {number} daysPerYear - The world's year length.
|
|
7
|
-
* @returns {{markers: Map<string, object>, findings: object[]}} Resolved markers and errors.
|
|
7
|
+
* @returns {{eras: Map<string, object>, markers: Map<string, object>, findings: object[]}} Resolved eras, markers, and errors.
|
|
8
8
|
*/
|
|
9
9
|
export function resolveReckoningMarkers(index: {
|
|
10
10
|
notes?: readonly object[];
|
|
11
11
|
}, daysPerYear: number): {
|
|
12
|
+
eras: Map<string, object>;
|
|
12
13
|
markers: Map<string, object>;
|
|
13
14
|
findings: object[];
|
|
14
15
|
};
|
|
@@ -16,11 +17,12 @@ export function resolveReckoningMarkers(index: {
|
|
|
16
17
|
* Read the world's year length and its era markers from one corpus index.
|
|
17
18
|
*
|
|
18
19
|
* @param {{notes?: readonly object[]}|undefined} index - The corpus index.
|
|
19
|
-
* @returns {{markers: Map<string, object>, daysPerYear: number|undefined, findings: object[]}}
|
|
20
|
+
* @returns {{eras: Map<string, object>, markers: Map<string, object>, daysPerYear: number|undefined, findings: object[]}}
|
|
20
21
|
*/
|
|
21
22
|
export function reckoningContext(index: {
|
|
22
23
|
notes?: readonly object[];
|
|
23
24
|
} | undefined): {
|
|
25
|
+
eras: Map<string, object>;
|
|
24
26
|
markers: Map<string, object>;
|
|
25
27
|
daysPerYear: number | undefined;
|
|
26
28
|
findings: object[];
|
|
@@ -159,7 +159,7 @@ export function compareEmittedSystem({ system, artifact, documentType, subtype,
|
|
|
159
159
|
*
|
|
160
160
|
* - **A system**: its own `schema.json`, generated from its `src/` into
|
|
161
161
|
* `build/` by `package-build schema`.
|
|
162
|
-
* - **A module**: the copy cached by `
|
|
162
|
+
* - **A module**: the copy cached by `package-build deps fetch`, from the
|
|
163
163
|
* archive of the version it pins — which is what makes the comparison happen
|
|
164
164
|
* at `verified` rather than against whatever the system's `main` holds today.
|
|
165
165
|
* That distinction is the whole of the `affiliation.subType` case.
|
|
@@ -252,7 +252,7 @@ export function emittedUndeclaredMessage(finding: EmissionFinding): string;
|
|
|
252
252
|
* version released before the artifact existed, or a subtype the artifact does
|
|
253
253
|
* not name, produces no findings — the same stance `compareFields` takes, where
|
|
254
254
|
* an unknown subtype is a routing question rather than a field one. The
|
|
255
|
-
* whole-build check in `
|
|
255
|
+
* whole-build check in `package-build lint` is where a missing artifact is said
|
|
256
256
|
* out loud, once, instead of per note.
|
|
257
257
|
*
|
|
258
258
|
* @param {object} fm - The note's frontmatter.
|
|
@@ -289,7 +289,7 @@ export function checkAuthoredSystemData(fm: object, { block, documentType, subTy
|
|
|
289
289
|
* **Silent where there is nothing to check against**, exactly as its two
|
|
290
290
|
* siblings are: a module pinning a system version released before the artifact
|
|
291
291
|
* existed, or a subtype the artifact does not name, produces no findings.
|
|
292
|
-
* `
|
|
292
|
+
* `package-build lint` is where a missing artifact is said out loud, once.
|
|
293
293
|
*
|
|
294
294
|
* @param {object} emitted - The `system` block the compiler produced.
|
|
295
295
|
* @param {object} opts
|
|
@@ -16,11 +16,8 @@ export function collectContentPages(contentBase: string, ctx: object): {
|
|
|
16
16
|
/**
|
|
17
17
|
* The package's homepage notes — the authored page at `/<contentPackage>/`.
|
|
18
18
|
*
|
|
19
|
-
* A separate
|
|
20
|
-
*
|
|
21
|
-
* content tree is never read for pages at all, so the licensing constraint two
|
|
22
|
-
* packages ship under is a property of the code path rather than of a
|
|
23
|
-
* configuration that happens to be empty.
|
|
19
|
+
* A separate collection from {@link collectContentPages} keeps the homepage
|
|
20
|
+
* at the package root and leaves content pages at their note addresses.
|
|
24
21
|
*
|
|
25
22
|
* Returned as a list rather than as the one note there should be, because the
|
|
26
23
|
* count is what {@link checkHomepageCount} judges — this walk reports
|
|
@@ -28,8 +25,7 @@ export function collectContentPages(contentBase: string, ctx: object): {
|
|
|
28
25
|
*
|
|
29
26
|
* A homepage that declares no `shortcode` has no address, and is
|
|
30
27
|
* reported rather than written: it is the same finding a content page's missing
|
|
31
|
-
* shortcode produces, and it
|
|
32
|
-
* no other gate runs.
|
|
28
|
+
* shortcode produces, and it is reported even when the tree has no other notes.
|
|
33
29
|
*
|
|
34
30
|
* **It is still counted.** An unaddressable homepage is a homepage — dropping
|
|
35
31
|
* it from the list would make {@link checkHomepageCount} report a tree with one
|
|
@@ -50,13 +46,10 @@ export function collectHomepages(contentBase: string, ctx: object): {
|
|
|
50
46
|
*
|
|
51
47
|
* Its own writer, deliberately small. A homepage is authored markdown published
|
|
52
48
|
* verbatim — no table expansion and no link resolution — so routing it through
|
|
53
|
-
* {@link renderPages} would
|
|
54
|
-
* make homepage-only mode depend on the index, the foreign manifests and the
|
|
55
|
-
* table universe that mode exists to not build.
|
|
49
|
+
* {@link renderPages} would give it a pipeline it does not use.
|
|
56
50
|
*
|
|
57
51
|
* **Verbatim is the answer, not a gap.** A homepage's links could not be
|
|
58
|
-
* *resolved* here
|
|
59
|
-
* exists to not build, so they are **checked** instead:
|
|
52
|
+
* *resolved* here, so they are **checked** instead:
|
|
60
53
|
* {@link auditHomepageLinks} reads the body's markdown links, and reports a
|
|
61
54
|
* wikilink on the page rather than resolving one.
|
|
62
55
|
*
|
|
@@ -69,8 +62,8 @@ export function collectHomepages(contentBase: string, ctx: object): {
|
|
|
69
62
|
* both sides of the link graph: a content page reaches it through
|
|
70
63
|
* `[[homepage-root|Text]]`, and its own markdown links name content pages. So
|
|
71
64
|
* it carries the same `related` block every content page does — handed in by
|
|
72
|
-
* the caller, since the graph is read off the content render and
|
|
73
|
-
*
|
|
65
|
+
* the caller, since the graph is read off the content render and a tree with
|
|
66
|
+
* only a homepage has no such graph.
|
|
74
67
|
*
|
|
75
68
|
* @param {string} outRoot - The package's site root — the content mount's
|
|
76
69
|
* root, `build/hugo/content`, one level above the mount itself.
|
|
@@ -80,7 +73,7 @@ export function collectHomepages(contentBase: string, ctx: object): {
|
|
|
80
73
|
* @param {object} [options] - Options.
|
|
81
74
|
* @param {import("./related-pages.mjs").Related} [options.related] - The
|
|
82
75
|
* homepage's backlinks and mentions. Absent where nothing connects to it,
|
|
83
|
-
* and
|
|
76
|
+
* and when the tree contains only a homepage, where no content link resolves.
|
|
84
77
|
* @returns {number} How many pages were written.
|
|
85
78
|
*/
|
|
86
79
|
export function writeHomepages(outRoot: string, pages: readonly object[], config: object, { related }?: {
|
|
@@ -109,10 +102,12 @@ export function writeHomepages(outRoot: string, pages: readonly object[], config
|
|
|
109
102
|
* collection.
|
|
110
103
|
* @param {object} options
|
|
111
104
|
* @param {object} options.config - The resolved build configuration.
|
|
105
|
+
* @param {object[]} options.records - Content-index records.
|
|
112
106
|
* @returns {object} The gate results and, when they pass, the built index.
|
|
113
107
|
*/
|
|
114
108
|
export function siteGates(pages: object[], findings: object, { config, records }: {
|
|
115
109
|
config: object;
|
|
110
|
+
records: object[];
|
|
116
111
|
}): object;
|
|
117
112
|
/**
|
|
118
113
|
* The gate result of a build that ran none of them.
|
|
@@ -125,8 +120,20 @@ export function siteGates(pages: object[], findings: object, { config, records }
|
|
|
125
120
|
* @returns {object} An all-clear gate result.
|
|
126
121
|
*/
|
|
127
122
|
export function emptyGates(): object;
|
|
128
|
-
/**
|
|
129
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Whether any gate produced a finding.
|
|
125
|
+
* @param {{homepages: unknown[], frontmatterLinks: unknown[],
|
|
126
|
+
* addressErrors: unknown[], staleManifests: unknown[],
|
|
127
|
+
* unaddressable: unknown[]}} gates - Results of the site checks.
|
|
128
|
+
* @returns {boolean} Whether at least one check found an error.
|
|
129
|
+
*/
|
|
130
|
+
export function gatesFailed(gates: {
|
|
131
|
+
homepages: unknown[];
|
|
132
|
+
frontmatterLinks: unknown[];
|
|
133
|
+
addressErrors: unknown[];
|
|
134
|
+
staleManifests: unknown[];
|
|
135
|
+
unaddressable: unknown[];
|
|
136
|
+
}): boolean;
|
|
130
137
|
/**
|
|
131
138
|
* The universe a generated table searches, grouped by package.
|
|
132
139
|
*
|
|
@@ -219,12 +226,14 @@ export function pageFrontmatter(page: object, { decorate, webSrc, artSrc }: {
|
|
|
219
226
|
* `_index.md`, and the page's stated `url` keeps its address exactly where the
|
|
220
227
|
* flat file's was.
|
|
221
228
|
*
|
|
222
|
-
* @param {
|
|
229
|
+
* @param {{slug: string}} page - The page.
|
|
223
230
|
* @param {object} [opts]
|
|
224
231
|
* @param {boolean} [opts.bundle=false] - Whether the page carries a resource.
|
|
225
232
|
* @returns {string} The file, relative to the mount.
|
|
226
233
|
*/
|
|
227
|
-
export function pageDestination(page:
|
|
234
|
+
export function pageDestination(page: {
|
|
235
|
+
slug: string;
|
|
236
|
+
}, { bundle }?: {
|
|
228
237
|
bundle?: boolean | undefined;
|
|
229
238
|
}): string;
|
|
230
239
|
/** Transform one content page without writing the site mount. */
|
|
@@ -240,22 +249,23 @@ export function renderSitePage(page: any, { index, foreign, universe, pass, deco
|
|
|
240
249
|
artIndex: any;
|
|
241
250
|
}): {
|
|
242
251
|
page: any;
|
|
243
|
-
body:
|
|
252
|
+
body: any;
|
|
244
253
|
data: object;
|
|
245
254
|
resolved: any[];
|
|
246
|
-
tableErrors:
|
|
247
|
-
|
|
248
|
-
directive: string;
|
|
249
|
-
reason: string;
|
|
250
|
-
line: number;
|
|
251
|
-
column?: number;
|
|
252
|
-
}[];
|
|
255
|
+
tableErrors: object[];
|
|
256
|
+
expressionErrors: any[];
|
|
253
257
|
secretErrors: {
|
|
254
258
|
file: any;
|
|
255
259
|
line: number;
|
|
256
260
|
column: number;
|
|
257
261
|
message: string;
|
|
258
262
|
}[];
|
|
263
|
+
captionErrors: {
|
|
264
|
+
file: any;
|
|
265
|
+
line: any;
|
|
266
|
+
column: number;
|
|
267
|
+
message: string;
|
|
268
|
+
}[];
|
|
259
269
|
wikiErrors: any[];
|
|
260
270
|
imageErrors: any[];
|
|
261
271
|
};
|
|
@@ -266,7 +276,7 @@ export function renderSitePage(page: any, { index, foreign, universe, pass, deco
|
|
|
266
276
|
* compilers use:
|
|
267
277
|
*
|
|
268
278
|
* 1. **Tables expand first**, and outside code-fence protection. A table is
|
|
269
|
-
* authored as a fenced `
|
|
279
|
+
* authored as a fenced `sql` block, which `protectCode` would otherwise
|
|
270
280
|
* stash away before the expander saw it. Expanding first leaves an ordinary
|
|
271
281
|
* markdown table to walk, with every other fence still protected.
|
|
272
282
|
* 2. **Then, inside protection**: the consumer's `beforeLinks` pass, then
|
|
@@ -93,7 +93,7 @@ export function resolveThemesDir(rootDir: string): string;
|
|
|
93
93
|
* @param {string} options.themesDir - From {@link resolveThemesDir}.
|
|
94
94
|
* @returns {Record<string, any>} The configuration Hugo reads.
|
|
95
95
|
* @throws {TypeError} When `homepage` fails `checkHomepage`, or the
|
|
96
|
-
* configuration declares no `packageBuild.manifest.title`, no
|
|
96
|
+
* configuration declares no `site.title` or `packageBuild.manifest.title`, no
|
|
97
97
|
* `site.description`, or no `site.assets`.
|
|
98
98
|
*/
|
|
99
99
|
export function hugoConfig({ config, navigation, themesDir }: {
|
|
@@ -133,7 +133,7 @@ export function writeHugoConfig(config: object, generated?: Record<string, unkno
|
|
|
133
133
|
};
|
|
134
134
|
/** The Hugo source directory, relative to the repository root. */
|
|
135
135
|
export const HUGO_SOURCE: "build/hugo";
|
|
136
|
-
/** The content mount `
|
|
136
|
+
/** The content mount `package-build site` writes, relative to the repository root. */
|
|
137
137
|
export const HUGO_CONTENT: "build/hugo/content";
|
|
138
138
|
/**
|
|
139
139
|
* The directory that is deployed, relative to the repository root.
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* `contentIndex: false` — a Foundry dependency only, with no fetched index.
|
|
12
12
|
* A link naming one fails naming the key, rather than reading as prose or an
|
|
13
13
|
* ordinary dead address.
|
|
14
|
+
* @param {object[]} [options.records] - Content-index records.
|
|
15
|
+
* @param {Map<string, object>} [options.foreignReferences] - Foreign reference targets.
|
|
14
16
|
* @returns {SiteIndex} The index, and what could not be addressed unambiguously.
|
|
15
17
|
*/
|
|
16
18
|
export function buildSiteIndex(entries: readonly SiteEntry[], { foreignIndex, noIndexPackages, package: builderPackage, records, foreignReferences, }?: {
|
|
@@ -19,6 +21,8 @@ export function buildSiteIndex(entries: readonly SiteEntry[], { foreignIndex, no
|
|
|
19
21
|
type?: string;
|
|
20
22
|
}> | undefined;
|
|
21
23
|
noIndexPackages?: Set<string> | undefined;
|
|
24
|
+
records?: object[] | undefined;
|
|
25
|
+
foreignReferences?: Map<string, object> | undefined;
|
|
22
26
|
}): SiteIndex;
|
|
23
27
|
/**
|
|
24
28
|
* The per-page context a wikilink resolver takes.
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Validate a being's map of defining relationships.
|
|
3
|
+
* @param {object} note
|
|
4
|
+
* @param {{index?: object}} [options]
|
|
5
|
+
*/
|
|
6
|
+
export function checkSocialTies(note: object, { index }?: {
|
|
7
|
+
index?: object;
|
|
8
|
+
}): {
|
|
3
9
|
message: string;
|
|
4
10
|
severity: string;
|
|
5
11
|
line?: number;
|
|
@@ -60,15 +60,20 @@ export function findSqlBlocks(markdown: string): Array<{
|
|
|
60
60
|
* @param {string} [opts.dir] - Directory for the temporary file.
|
|
61
61
|
* @param {Array<{id: string, file: string}>} [opts.dependencies] - Each
|
|
62
62
|
* declared dependency's cached index, attached as a schema named `id`.
|
|
63
|
+
* @param {object} [opts.addressContext] - Address resolution context.
|
|
64
|
+
* @param {"all"|"public"} [opts.audience] - Whether to exclude GM notes from
|
|
65
|
+
* local and dependency relations.
|
|
63
66
|
* @returns {Promise<{query: (sql: string) => Promise<object[]>,
|
|
64
67
|
* close: () => Promise<void>}>} The open database.
|
|
65
68
|
*/
|
|
66
|
-
export function openNotesDatabase(records: object[], { dir, dependencies, addressContext }?: {
|
|
69
|
+
export function openNotesDatabase(records: object[], { dir, dependencies, addressContext, audience }?: {
|
|
67
70
|
dir?: string | undefined;
|
|
68
71
|
dependencies?: {
|
|
69
72
|
id: string;
|
|
70
73
|
file: string;
|
|
71
74
|
}[] | undefined;
|
|
75
|
+
addressContext?: object | undefined;
|
|
76
|
+
audience?: "all" | "public" | undefined;
|
|
72
77
|
}): Promise<{
|
|
73
78
|
query: (sql: string) => Promise<object[]>;
|
|
74
79
|
close: () => Promise<void>;
|
|
@@ -106,6 +111,7 @@ export function runSqlQuery(db: object, sql: string): Promise<{
|
|
|
106
111
|
* @param {(ref: string) => boolean} [opts.linkable] - Whether an address can be
|
|
107
112
|
* linked to; defaults to linking any non-empty `_ref`.
|
|
108
113
|
* @param {number} [opts.sectionLevel=2] - Heading level for `_section`.
|
|
114
|
+
* @param {object} [opts.addressContext] - Address resolution context.
|
|
109
115
|
* @returns {string} The markdown.
|
|
110
116
|
*/
|
|
111
117
|
export function renderSqlTable(result: {
|
|
@@ -114,6 +120,7 @@ export function renderSqlTable(result: {
|
|
|
114
120
|
}, { linkable, sectionLevel, addressContext }?: {
|
|
115
121
|
linkable?: ((ref: string) => boolean) | undefined;
|
|
116
122
|
sectionLevel?: number | undefined;
|
|
123
|
+
addressContext?: object | undefined;
|
|
117
124
|
}): string;
|
|
118
125
|
/**
|
|
119
126
|
* Run every `sql` directive in a set of note bodies, ahead of expansion.
|
|
@@ -150,6 +157,8 @@ export function prepareSqlTables(db: object, sources: Array<{
|
|
|
150
157
|
}>, { linkable }?: {
|
|
151
158
|
linkable?: ((ref: string) => boolean) | undefined;
|
|
152
159
|
}): Promise<Map<string, object[]>>;
|
|
160
|
+
/** Evaluate scalar SQL calls before synchronous Markdown renderers run. */
|
|
161
|
+
export function prepareInlineSqlExpressions(db: any, sources: any): Promise<Map<any, any>>;
|
|
153
162
|
/**
|
|
154
163
|
* Answer every `sql` directive in a content tree.
|
|
155
164
|
*
|
|
@@ -170,13 +179,15 @@ export function prepareSqlTables(db: object, sources: Array<{
|
|
|
170
179
|
* @param {object[]} [opts.records] - Index records the caller already derived.
|
|
171
180
|
* A command that also builds a link index holds them already, and deriving
|
|
172
181
|
* them twice is the duplicated-corpus failure this closes.
|
|
182
|
+
* @param {"all"|"public"} [opts.audience] - Whether to exclude GM notes.
|
|
173
183
|
* @returns {Promise<Map<string, object[]>|undefined>} Results by note path, or
|
|
174
184
|
* nothing when the tree has no such directive.
|
|
175
185
|
*/
|
|
176
|
-
export function prepareTreeSqlTables(contentBase: string, { config, skipDirectories, records }?: {
|
|
186
|
+
export function prepareTreeSqlTables(contentBase: string, { config, skipDirectories, records, audience }?: {
|
|
177
187
|
config?: object | undefined;
|
|
178
188
|
skipDirectories?: readonly string[] | undefined;
|
|
179
189
|
records?: object[] | undefined;
|
|
190
|
+
audience?: "all" | "public" | undefined;
|
|
180
191
|
}): Promise<Map<string, object[]> | undefined>;
|
|
181
192
|
/**
|
|
182
193
|
* Aliases the renderer reads rather than printing.
|
|
@@ -86,7 +86,8 @@ export function frontmatterWikilinks(fm: unknown): Array<{
|
|
|
86
86
|
*
|
|
87
87
|
* @param {string} body - The markdown body.
|
|
88
88
|
* @param {object} ctx - `{ index, assets, collide, contentTypes,
|
|
89
|
-
* packages, noIndexPackages, foreign, type, errors, src, file, resolved
|
|
89
|
+
* packages, noIndexPackages, foreign, type, errors, src, file, resolved,
|
|
90
|
+
* output }`. `output` is `"book"` for PDF Markdown and defaults to HTML.
|
|
90
91
|
* `packages` is every package an address may name, without which the leading
|
|
91
92
|
* package segment of a canonical address reads as an unknown type;
|
|
92
93
|
* `noIndexPackages` is every package declared `contentIndex: false`, so a
|
|
@@ -39,6 +39,8 @@ export function anchorPageId(noteId: string, anchorSlug: string): string;
|
|
|
39
39
|
* `contentIndex: false` — a Foundry dependency only. A link naming one fails
|
|
40
40
|
* with `no-content-index` rather than resolving, ambiguously, as either a
|
|
41
41
|
* typo or an undeclared package.
|
|
42
|
+
* @param {Map<string, object>} [opts.referenceTargets] - Local reference targets.
|
|
43
|
+
* @param {Map<string, object>} [opts.foreignReferences] - Foreign reference targets.
|
|
42
44
|
* @returns {{byShortcode: Map<string, object>, types: Set<string>}} `types` is
|
|
43
45
|
* every type the tree actually contains, so a qualifier naming no real type
|
|
44
46
|
* can be told apart from a missing target.
|
|
@@ -55,6 +57,8 @@ export function buildWikilinkIndex(docs: Array<{
|
|
|
55
57
|
}>, packageId: string, foreign?: Map<string, object>, contentPackage?: string, { assets, noIndexPackages, referenceTargets, foreignReferences }?: {
|
|
56
58
|
assets?: Map<string, object> | undefined;
|
|
57
59
|
noIndexPackages?: Set<string> | undefined;
|
|
60
|
+
referenceTargets?: Map<string, object> | undefined;
|
|
61
|
+
foreignReferences?: Map<string, object> | undefined;
|
|
58
62
|
}): {
|
|
59
63
|
byShortcode: Map<string, object>;
|
|
60
64
|
types: Set<string>;
|
|
@@ -86,6 +90,7 @@ export function buildWikilinkIndex(docs: Array<{
|
|
|
86
90
|
* entry landed in.
|
|
87
91
|
* @param {{byShortcode: Map, types: Set}} ctx.index - From
|
|
88
92
|
* {@link buildWikilinkIndex}.
|
|
93
|
+
* @param {Map<string, string>} [ctx.captionLabels] - Numbered caption references.
|
|
89
94
|
* @returns {{markdown: string, unresolved: Array<{link: string, target: string,
|
|
90
95
|
* offset: number, reason: string, packages?: string[], anchor?: string}>}}
|
|
91
96
|
* Each `reason` is one of {@link LINK_FINDING_REASONS}, the vocabulary all
|
|
@@ -94,7 +99,7 @@ export function buildWikilinkIndex(docs: Array<{
|
|
|
94
99
|
* position in `markdown`, which is what lets a caller report the line and
|
|
95
100
|
* column it sits on.
|
|
96
101
|
*/
|
|
97
|
-
export function convertWikilinks(markdown: string, { type, id, pack, docPack, index }: {
|
|
102
|
+
export function convertWikilinks(markdown: string, { type, id, pack, docPack, index, captionLabels }: {
|
|
98
103
|
type: string;
|
|
99
104
|
id: string;
|
|
100
105
|
pack?: string | undefined;
|
|
@@ -103,6 +108,7 @@ export function convertWikilinks(markdown: string, { type, id, pack, docPack, in
|
|
|
103
108
|
byShortcode: Map<any, any>;
|
|
104
109
|
types: Set<any>;
|
|
105
110
|
};
|
|
111
|
+
captionLabels?: Map<string, string> | undefined;
|
|
106
112
|
}): {
|
|
107
113
|
markdown: string;
|
|
108
114
|
unresolved: Array<{
|
package/types/hm3/items.d.mts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* HM3's Item compile pass.
|
|
3
3
|
*
|
|
4
4
|
* Declares HM3's note-type → document-subtype map, which decides the notes this
|
|
5
|
-
* pass claims and what each becomes, the one `system` key HM3 writes
|
|
5
|
+
* pass claims and what each becomes, the one `system` key HM3 writes as a page pointer,
|
|
6
6
|
* and the template-priority flag HM3's data model has no field for. Everything
|
|
7
7
|
* else is {@link module:engine/item-compiler}'s.
|
|
8
8
|
*/
|
|
@@ -15,16 +15,15 @@ export class Hm3Items extends SystemItemCompiler {
|
|
|
15
15
|
*/
|
|
16
16
|
static documentSubtypes: import("../engine/document-subtypes.mjs").DocumentSubtypeMap;
|
|
17
17
|
/**
|
|
18
|
-
* The `system.*` field HM3 writes
|
|
18
|
+
* The `system.*` field HM3 writes from the shared item-doc pointer.
|
|
19
19
|
*
|
|
20
20
|
* @param {object} fm - The note's frontmatter.
|
|
21
21
|
* @param {object} at - What the pass already knows about this note.
|
|
22
|
-
* @param {string} at.
|
|
23
|
-
* wikilinks resolved.
|
|
22
|
+
* @param {string} at.description - The resolved JournalEntryPage pointer.
|
|
24
23
|
* @returns {object} The shared `system` fields — `description`, or nothing.
|
|
25
24
|
*/
|
|
26
|
-
commonSystem(fm: object, {
|
|
27
|
-
|
|
25
|
+
commonSystem(fm: object, { description }: {
|
|
26
|
+
description: string;
|
|
28
27
|
}): object;
|
|
29
28
|
}
|
|
30
29
|
import { SystemItemCompiler } from "../engine/item-compiler.mjs";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The label names the documented §3 table lists.
|
|
3
|
+
*
|
|
4
|
+
* A registry row is a table row whose first cell is a backticked label name,
|
|
5
|
+
* which is narrow on purpose: §3 carries prose and other tables, and a looser
|
|
6
|
+
* match would read a heading or an example as a label.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} text - The documentation file's contents.
|
|
9
|
+
* @returns {{names: Set<string>, found: boolean}} The names, and whether §3 was
|
|
10
|
+
* located at all — an absent section is a different failure from an empty one.
|
|
11
|
+
*/
|
|
12
|
+
export function documentedLabels(text: string): {
|
|
13
|
+
names: Set<string>;
|
|
14
|
+
found: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Check the machine registry against the documented table.
|
|
18
|
+
*
|
|
19
|
+
* Findings are returned per file rather than merged, because each names a
|
|
20
|
+
* position in a different document and the caller reports them against the
|
|
21
|
+
* file they belong to.
|
|
22
|
+
*
|
|
23
|
+
* @param {object} sources
|
|
24
|
+
* @param {string} sources.registryText - `.github/labels.yml`.
|
|
25
|
+
* @param {string} sources.docText - `.github/ISSUE_REPORTING.md`.
|
|
26
|
+
* @param {string} [sources.docPath] - The doc's path, for the message naming it.
|
|
27
|
+
* @returns {{registry: object[], doc: object[], count: number}} Findings for
|
|
28
|
+
* each file, and how many labels the registry declares.
|
|
29
|
+
*/
|
|
30
|
+
export function checkLabelRegistry({ registryText, docText, docPath, }: {
|
|
31
|
+
registryText: string;
|
|
32
|
+
docText: string;
|
|
33
|
+
docPath?: string | undefined;
|
|
34
|
+
}): {
|
|
35
|
+
registry: object[];
|
|
36
|
+
doc: object[];
|
|
37
|
+
count: number;
|
|
38
|
+
};
|
|
39
|
+
/** GitHub rejects a label description beyond this with a 422. */
|
|
40
|
+
export const MAX_DESCRIPTION: 100;
|
package/types/manifest.d.mts
CHANGED
|
@@ -177,7 +177,7 @@ export function packFolderFindings({ packFolders, packs }: {
|
|
|
177
177
|
* unread: a key Foundry adds later should not need a release of this package.
|
|
178
178
|
*
|
|
179
179
|
* @param {Record<string, unknown>} relationships - The declared block, as
|
|
180
|
-
*
|
|
180
|
+
* package-build resolved it.
|
|
181
181
|
* @returns {Record<string, unknown>} It, without the build-only keys.
|
|
182
182
|
*/
|
|
183
183
|
export function publishedRelationships(relationships: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -271,7 +271,7 @@ export const HOMEPAGE_ORIGIN: string;
|
|
|
271
271
|
* package.
|
|
272
272
|
*
|
|
273
273
|
* `relationships` is the one manifest block with a second reader.
|
|
274
|
-
* `@heroiclands/
|
|
274
|
+
* `@heroiclands/package-build` consumes it too, and v1.8.0 added
|
|
275
275
|
* `itemCatalog: true` as an opt-in on a declared dependency: it selects that
|
|
276
276
|
* package's Item packs as a resolution
|
|
277
277
|
* source for the actors pass. That is an instruction to the build, not a fact
|
|
@@ -286,7 +286,7 @@ export const HOMEPAGE_ORIGIN: string;
|
|
|
286
286
|
* unlikely to be the last.
|
|
287
287
|
*
|
|
288
288
|
* A list is enough, and needs no prefix agreed between the two packages,
|
|
289
|
-
* because the input is already closed:
|
|
289
|
+
* because the input is already closed: package-build normalises a relationship
|
|
290
290
|
* to `id`, `type`, `manifest`, `compatibility` and its own build keys, and
|
|
291
291
|
* rejects anything else at configuration time. A key that reaches here is one
|
|
292
292
|
* the toolchain itself put there.
|
package/types/sohl/actors.d.mts
CHANGED
|
@@ -49,7 +49,7 @@ export class Actors extends SystemActorCompiler {
|
|
|
49
49
|
*/
|
|
50
50
|
openUnopenedSkills(items: object[], ctx: string): void;
|
|
51
51
|
buildBeing(itemsMap: any, fm: any, body: any): {
|
|
52
|
-
name:
|
|
52
|
+
name: string;
|
|
53
53
|
type: string;
|
|
54
54
|
img: string;
|
|
55
55
|
_id: any;
|
|
@@ -61,7 +61,7 @@ export class Actors extends SystemActorCompiler {
|
|
|
61
61
|
};
|
|
62
62
|
items: object[];
|
|
63
63
|
prototypeToken: {
|
|
64
|
-
name:
|
|
64
|
+
name: string;
|
|
65
65
|
displayName: number;
|
|
66
66
|
actorLink: boolean;
|
|
67
67
|
texture: {
|