@heroiclands/package-build 22.15.0 → 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.
Files changed (223) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +39 -678
  3. package/bin/{content-build.mjs → content-commands.mjs} +197 -118
  4. package/bin/package-build.mjs +303 -42
  5. package/bin/report.mjs +1 -1
  6. package/ci/ci-docker.mjs +6 -3
  7. package/ci/ci-steps.mjs +6 -4
  8. package/ci/content-format-reference.mjs +106 -0
  9. package/config.mjs +22 -2
  10. package/content-config.mjs +74 -134
  11. package/docs/api.md +294 -234
  12. package/docs/authoring/assets.md +31 -0
  13. package/docs/authoring/dates-and-calendars.md +33 -0
  14. package/docs/authoring/first-note.md +48 -0
  15. package/docs/authoring/frontmatter.md +40 -0
  16. package/docs/authoring/links-and-markup.md +137 -0
  17. package/docs/commands.md +631 -162
  18. package/docs/configuration.md +176 -140
  19. package/docs/content-format.md +50 -4229
  20. package/docs/design.md +32 -0
  21. package/docs/diagnostics.md +29 -22
  22. package/docs/getting-started.md +21 -877
  23. package/docs/guides/book.md +153 -0
  24. package/docs/guides/e2e.md +143 -0
  25. package/docs/guides/icons.md +126 -0
  26. package/docs/guides/localization.md +120 -0
  27. package/docs/guides/module-project.md +915 -0
  28. package/docs/guides/packs.md +167 -0
  29. package/docs/guides/reference-pages.md +148 -0
  30. package/docs/guides/release-and-deploy.md +114 -0
  31. package/docs/guides/site.md +152 -0
  32. package/docs/guides/system-project.md +45 -0
  33. package/docs/index.md +16 -0
  34. package/docs/project-setup.md +54 -35
  35. package/docs/reference/format-details.md +4420 -0
  36. package/docs/reference/note-types.md +531 -0
  37. package/engine/address-render.mjs +26 -0
  38. package/engine/address.mjs +3 -20
  39. package/engine/anchors.mjs +15 -6
  40. package/engine/asset-bindings.mjs +6 -2
  41. package/engine/base-compiler.mjs +47 -11
  42. package/engine/being-measurements.mjs +70 -0
  43. package/engine/calendar-artifacts.mjs +1 -1
  44. package/engine/calendar-choice.mjs +32 -0
  45. package/engine/calendar-human.mjs +71 -0
  46. package/engine/calendar-notes.mjs +41 -3
  47. package/engine/calendars.mjs +8 -1
  48. package/engine/changelog-lint.mjs +2 -2
  49. package/engine/code-fences.mjs +23 -97
  50. package/engine/compile-corpus.mjs +6 -7
  51. package/engine/content-admonitions.mjs +114 -0
  52. package/engine/content-captions.mjs +181 -0
  53. package/engine/content-embeds.mjs +2 -2
  54. package/engine/content-footnotes.mjs +34 -0
  55. package/engine/content-format-check.mjs +2 -2
  56. package/engine/content-format.mjs +127 -73
  57. package/engine/content-format.yaml +745 -0
  58. package/engine/content-html.mjs +1 -1
  59. package/engine/content-icons.mjs +45 -92
  60. package/engine/content-images.mjs +22 -74
  61. package/engine/content-index.mjs +12 -3
  62. package/engine/content-links.mjs +21 -26
  63. package/engine/content-lint.mjs +1 -5
  64. package/engine/content-secrets.mjs +3 -1
  65. package/engine/content-tables.mjs +47 -1257
  66. package/engine/culture-choice.mjs +32 -0
  67. package/engine/date-conversion.mjs +47 -0
  68. package/engine/declaration-check.mjs +87 -0
  69. package/engine/docs-checks.mjs +140 -0
  70. package/engine/documentation-links.mjs +31 -0
  71. package/engine/exported-scene.mjs +1 -1
  72. package/engine/extension-attributes.mjs +74 -0
  73. package/engine/field-reference.mjs +1 -1
  74. package/engine/field-spec.mjs +4 -0
  75. package/engine/foreign-catalog.mjs +5 -5
  76. package/engine/format-generated.mjs +15 -0
  77. package/engine/foundry-entries.mjs +3 -1
  78. package/engine/frontmatter-lint.mjs +5 -1
  79. package/engine/frontmatter.mjs +10 -0
  80. package/engine/generate.mjs +2 -2
  81. package/engine/helpers.mjs +71 -117
  82. package/engine/homepage.mjs +2 -3
  83. package/engine/index-records.mjs +1 -0
  84. package/engine/index.mjs +18 -3
  85. package/engine/infobox-registry.mjs +3 -1
  86. package/engine/infobox.mjs +38 -20
  87. package/engine/item-compiler.mjs +10 -8
  88. package/engine/item-docs.mjs +7 -6
  89. package/engine/itinerary-scenes.mjs +4 -2
  90. package/engine/journals.mjs +51 -10
  91. package/engine/macros.mjs +1 -1
  92. package/engine/map-build.mjs +1 -1
  93. package/engine/map-dot.mjs +1 -1
  94. package/engine/map-raster.mjs +4 -2
  95. package/engine/markdown-expressions.mjs +117 -0
  96. package/engine/metadata-index.mjs +7 -3
  97. package/engine/note-addresses.mjs +1 -0
  98. package/engine/note-dates.mjs +283 -61
  99. package/engine/note-package.mjs +5 -25
  100. package/engine/note-state.mjs +6 -2
  101. package/engine/note-vocabulary.mjs +74 -19
  102. package/engine/number-words.mjs +75 -0
  103. package/engine/office-holders.mjs +188 -0
  104. package/engine/pack-config.mjs +2 -15
  105. package/engine/pack-router.mjs +24 -5
  106. package/engine/packages.mjs +3 -2
  107. package/engine/pathnames.mjs +21 -24
  108. package/engine/pdf-build.mjs +217 -55
  109. package/engine/pdf-fonts.mjs +2 -2
  110. package/engine/pdf-images.mjs +82 -0
  111. package/engine/pdf-render.mjs +174 -22
  112. package/engine/populations.mjs +3 -2
  113. package/engine/project-init.mjs +499 -0
  114. package/engine/prose-config.mjs +1 -1
  115. package/engine/prose-lint.mjs +7 -6
  116. package/engine/readability-lint.mjs +86 -0
  117. package/engine/reckoning-markers.mjs +205 -93
  118. package/engine/scenes.mjs +5 -2
  119. package/engine/schema-check.mjs +3 -3
  120. package/engine/site-build.mjs +87 -37
  121. package/engine/site-config.mjs +8 -8
  122. package/engine/site-index.mjs +4 -0
  123. package/engine/site-maps.mjs +1 -1
  124. package/engine/site-preview.mjs +19 -8
  125. package/engine/social-ties.mjs +5 -1
  126. package/engine/sql-tables.mjs +92 -22
  127. package/engine/web-wikilinks.mjs +15 -31
  128. package/engine/wikilink-syntax.mjs +4 -1
  129. package/engine/wikilinks.mjs +12 -14
  130. package/hm3/item-fields.mjs +1 -1
  131. package/hm3/items.mjs +12 -45
  132. package/index.mjs +2 -14
  133. package/manifest.mjs +31 -4
  134. package/markdownlint-config.mjs +1 -1
  135. package/package.json +32 -11
  136. package/prettier-config.mjs +1 -1
  137. package/sohl/being-info.mjs +3 -145
  138. package/sohl/index.mjs +1 -1
  139. package/sohl/infobox.mjs +2 -1
  140. package/sohl/item-builders.mjs +3 -27
  141. package/sohl/item-fields.mjs +61 -22
  142. package/sohl/kb-passes.mjs +2 -2
  143. package/sohl/note-schemas.mjs +0 -8
  144. package/stage.mjs +19 -0
  145. package/types/config.d.mts +12 -3
  146. package/types/content-config.d.mts +15 -81
  147. package/types/engine/address-render.d.mts +13 -0
  148. package/types/engine/address.d.mts +2 -11
  149. package/types/engine/anchors.d.mts +3 -4
  150. package/types/engine/asset-bindings.d.mts +9 -2
  151. package/types/engine/base-compiler.d.mts +1 -2
  152. package/types/engine/being-measurements.d.mts +16 -0
  153. package/types/engine/calendar-choice.d.mts +14 -0
  154. package/types/engine/calendar-human.d.mts +4 -0
  155. package/types/engine/calendar-notes.d.mts +2 -0
  156. package/types/engine/calendars.d.mts +5 -3
  157. package/types/engine/code-fences.d.mts +6 -72
  158. package/types/engine/compile-corpus.d.mts +1 -3
  159. package/types/engine/content-admonitions.d.mts +24 -0
  160. package/types/engine/content-captions.d.mts +45 -0
  161. package/types/engine/content-footnotes.d.mts +10 -0
  162. package/types/engine/content-format-check.d.mts +17 -4
  163. package/types/engine/content-format.d.mts +24 -11
  164. package/types/engine/content-icons.d.mts +14 -23
  165. package/types/engine/content-images.d.mts +2 -2
  166. package/types/engine/content-index.d.mts +9 -2
  167. package/types/engine/content-links.d.mts +3 -5
  168. package/types/engine/content-tables.d.mts +11 -140
  169. package/types/engine/culture-choice.d.mts +14 -0
  170. package/types/engine/date-conversion.d.mts +4 -0
  171. package/types/engine/declaration-check.d.mts +24 -0
  172. package/types/engine/docs-checks.d.mts +28 -0
  173. package/types/engine/documentation-links.d.mts +7 -0
  174. package/types/engine/exported-scene.d.mts +6 -2
  175. package/types/engine/extension-attributes.d.mts +14 -0
  176. package/types/engine/field-spec.d.mts +9 -0
  177. package/types/engine/format-generated.d.mts +7 -0
  178. package/types/engine/frontmatter.d.mts +14 -4
  179. package/types/engine/generate.d.mts +1 -1
  180. package/types/engine/helpers.d.mts +37 -92
  181. package/types/engine/homepage.d.mts +2 -3
  182. package/types/engine/index.d.mts +5 -0
  183. package/types/engine/infobox-registry.d.mts +3 -1
  184. package/types/engine/infobox.d.mts +17 -6
  185. package/types/engine/item-compiler.d.mts +4 -4
  186. package/types/engine/item-docs.d.mts +4 -3
  187. package/types/engine/journals.d.mts +10 -7
  188. package/types/engine/map-graphviz.d.mts +1 -1
  189. package/types/engine/markdown-expressions.d.mts +17 -0
  190. package/types/engine/note-dates.d.mts +47 -1
  191. package/types/engine/note-package.d.mts +3 -19
  192. package/types/engine/note-state.d.mts +2 -1
  193. package/types/engine/note-vocabulary.d.mts +9 -0
  194. package/types/engine/number-words.d.mts +4 -0
  195. package/types/engine/office-holders.d.mts +14 -0
  196. package/types/engine/pack-config.d.mts +1 -1
  197. package/types/engine/packages.d.mts +3 -2
  198. package/types/engine/pdf-images.d.mts +38 -0
  199. package/types/engine/populations.d.mts +2 -2
  200. package/types/engine/project-init.d.mts +17 -0
  201. package/types/engine/prose-config.d.mts +1 -1
  202. package/types/engine/prose-lint.d.mts +3 -2
  203. package/types/engine/readability-lint.d.mts +22 -0
  204. package/types/engine/reckoning-markers.d.mts +4 -2
  205. package/types/engine/schema-check.d.mts +3 -3
  206. package/types/engine/site-build.d.mts +38 -28
  207. package/types/engine/site-config.d.mts +2 -2
  208. package/types/engine/site-index.d.mts +4 -0
  209. package/types/engine/site-preview.d.mts +1 -1
  210. package/types/engine/social-ties.d.mts +8 -2
  211. package/types/engine/sql-tables.d.mts +13 -2
  212. package/types/engine/web-wikilinks.d.mts +2 -1
  213. package/types/engine/wikilinks.d.mts +7 -1
  214. package/types/hm3/items.d.mts +5 -6
  215. package/types/labels.d.mts +40 -0
  216. package/types/manifest.d.mts +3 -3
  217. package/types/sohl/actors.d.mts +2 -2
  218. package/types/sohl/being-info.d.mts +3 -43
  219. package/types/sohl/index.d.mts +1 -1
  220. package/types/sohl/infobox.d.mts +5 -2
  221. package/types/sohl/item-fields.d.mts +4 -13
  222. package/types/stage.d.mts +9 -0
  223. package/CONTENT.md +0 -3239
@@ -7,53 +7,13 @@
7
7
  export function isBeing(fm: {
8
8
  type?: unknown;
9
9
  } | null | undefined): boolean;
10
+ /** Shared being type and gear groups used by the SoHL infobox. @module */
10
11
  /**
11
- * Derive a being's info-block fields from its raw `sohl.items[]`.
12
- *
13
- * Each item's `shortcode` is resolved against `index` — keyed
14
- * `"<type>:<shortcode>"` — for a display name and a link to the item's own
15
- * page. `attributes` already match the sidebar shape and pass through
16
- * untouched.
17
- *
18
- * **Authored values win.** Only fields the author did not supply are derived,
19
- * so a note that hand-writes `sohl.skills` keeps exactly what it wrote. An
20
- * item's inline `name` beats the index, and an unresolved shortcode falls back
21
- * to *itself* rather than being dropped — a page that names an item the index
22
- * has not heard of is better than a page silently missing a row.
23
- *
24
- * Returns a new object; the input is not mutated.
25
- *
26
- * @param {object|null|undefined} sohl - The note's `sohl` frontmatter block.
27
- * @param {Map<string, {name?: string, url?: string}>} index - Content index,
28
- * `"<type>:<shortcode>"` → the item's page.
29
- * @returns {object|null} The block with its info-block fields filled in, or the
30
- * input unchanged when there is nothing to derive from — with an absent block
31
- * reported as `null`, the value an empty one already carries.
32
- */
33
- export function deriveBeingInfo(sohl: object | null | undefined, index: Map<string, {
34
- name?: string;
35
- url?: string;
36
- }>): object | null;
37
- /**
38
- * The note `type` whose pages carry a being info block.
39
- *
40
- * One name: `character` and `creature` are the `being` they
41
- * had always compiled into. The retired names are deliberately **not** accepted
42
- * as aliases: they throw elsewhere in the system, and tolerating them here
43
- * would hide the next drift of this kind rather than surface it.
12
+ * The note type for a being.
44
13
  */
45
14
  export const BEING_TYPE: "being";
46
15
  /**
47
- * The sidebar group each gear item type is displayed under.
48
- *
49
- * Presentation naming, not data-model naming: the note type says `weapongear`,
50
- * the sidebar heading says "weapons". Kept as one table so a new gear type is
51
- * added in a single place rather than in each consumer's site build.
52
- *
53
- * Keyed by **note** type, which is what a being's embedded `(type, shortcode)`
54
- * references spell — and three of those are not the document
55
- * subtype they compile into. A reference still on a renamed spelling is
56
- * normalised at the lookup below rather than given a second row here.
16
+ * The infobox group displayed for each gear note type.
57
17
  *
58
18
  * @type {Readonly<Record<string, string>>}
59
19
  */
@@ -6,4 +6,4 @@ export * as kbPasses from "./kb-passes.mjs";
6
6
  export * as infobox from "./infobox.mjs";
7
7
  export { AFFILIATION_STANDINGS } from "./affiliation-standings.mjs";
8
8
  export { DEFAULT_ITEM_ART, defaultItemArt } from "./default-item-art.mjs";
9
- export { BEING_TYPE, GEAR_TYPE_TO_KEY, deriveBeingInfo, isBeing } from "./being-info.mjs";
9
+ export { BEING_TYPE, GEAR_TYPE_TO_KEY, isBeing } from "./being-info.mjs";
@@ -26,10 +26,13 @@ export function decodeItem(entry: object): {
26
26
  * sparse creature's box short rather than mostly empty.
27
27
  *
28
28
  * @param {object} fm - The note's frontmatter.
29
- * @param {object} ctx - `{ block, resolve }`.
29
+ * @param {{block: string, resolve?: Function}} ctx - Rendering context.
30
30
  * @returns {object[]} The sections.
31
31
  */
32
- export function beingSections(fm: object, { block, resolve }: object): object[];
32
+ export function beingSections(fm: object, { block, resolve }: {
33
+ block: string;
34
+ resolve?: Function;
35
+ }): object[];
33
36
  /**
34
37
  * Armour's box: whatever the note states, then the protection it gives.
35
38
  *
@@ -1,3 +1,7 @@
1
+ /** The strike mode required for combat techniques and omitted for other skills.
2
+ * @type {import("../engine/field-spec.mjs").FieldSpec}
3
+ */
4
+ export const COMBAT_TECHNIQUE_STRIKE_MODE: import("../engine/field-spec.mjs").FieldSpec;
1
5
  /**
2
6
  * Every item type's frontmatter vocabulary, in the order the `system` block
3
7
  * emits it.
@@ -13,16 +17,3 @@
13
17
  * @type {Readonly<Record<string, readonly import("../engine/field-spec.mjs").FieldSpec[]>>}
14
18
  */
15
19
  export const ITEM_FIELDS: Readonly<Record<string, readonly import("../engine/field-spec.mjs").FieldSpec[]>>;
16
- /**
17
- * The one conditional field in the vocabulary: a combat technique's strike
18
- * mode.
19
- *
20
- * A combat technique is authored as a `skill` of subtype `combattechnique` —
21
- * the standalone item type was merged into Skill — and carries an embedded,
22
- * discriminated strike mode. It is mandatory for that subtype and absent from
23
- * every other skill, which is a conditional a flat field list cannot state, so
24
- * it is applied after the declaration runs.
25
- *
26
- * @type {import("../engine/field-spec.mjs").FieldSpec}
27
- */
28
- export const COMBAT_TECHNIQUE_STRIKE_MODE: import("../engine/field-spec.mjs").FieldSpec;
package/types/stage.d.mts CHANGED
@@ -74,6 +74,15 @@ export function cleanBuildArtifacts(root: string, { extra, includeNodeModules }?
74
74
  extra?: readonly string[] | undefined;
75
75
  includeNodeModules?: boolean | undefined;
76
76
  }): string[];
77
+ /**
78
+ * Remove the configured Foundry stage before a complete build assembles it.
79
+ * Other build outputs, including the content index, remain available.
80
+ *
81
+ * @param {string} root - Repository root.
82
+ * @param {string} stageDir - Configured stage directory, relative to root.
83
+ * @returns {boolean} Whether the stage existed.
84
+ */
85
+ export function resetStage(root: string, stageDir: string): boolean;
77
86
  /**
78
87
  * Directories every HeroicLands repository regenerates and none commits.
79
88
  *