@kensio/colophon 2.2.0 → 2.4.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 (492) hide show
  1. package/README.md +62 -265
  2. package/dist/background.d.ts +7 -2
  3. package/dist/background.d.ts.map +1 -1
  4. package/dist/background.js +44 -1
  5. package/dist/background.js.map +1 -1
  6. package/dist/cli/args.d.ts +14 -0
  7. package/dist/cli/args.d.ts.map +1 -0
  8. package/dist/cli/args.js +67 -0
  9. package/dist/cli/args.js.map +1 -0
  10. package/dist/cli/config.d.ts +12 -0
  11. package/dist/cli/config.d.ts.map +1 -0
  12. package/dist/cli/config.js +43 -0
  13. package/dist/cli/config.js.map +1 -0
  14. package/dist/cli/index.d.ts +3 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +35 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/cli.js +34 -6
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config/defaults.d.ts +65 -0
  21. package/dist/config/defaults.d.ts.map +1 -0
  22. package/dist/config/defaults.js +64 -0
  23. package/dist/config/defaults.js.map +1 -0
  24. package/dist/config/index.d.ts +22 -0
  25. package/dist/config/index.d.ts.map +1 -0
  26. package/dist/config/index.js +54 -0
  27. package/dist/config/index.js.map +1 -0
  28. package/dist/config/resolve.d.ts +31 -0
  29. package/dist/config/resolve.d.ts.map +1 -0
  30. package/dist/config/resolve.js +82 -0
  31. package/dist/config/resolve.js.map +1 -0
  32. package/dist/config/size.d.ts +20 -0
  33. package/dist/config/size.d.ts.map +1 -0
  34. package/dist/config/size.js +47 -0
  35. package/dist/config/size.js.map +1 -0
  36. package/dist/config.d.ts +27 -1
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +78 -2
  39. package/dist/config.js.map +1 -1
  40. package/dist/content/index.d.ts +5 -51
  41. package/dist/content/index.d.ts.map +1 -1
  42. package/dist/content/index.js +3 -115
  43. package/dist/content/index.js.map +1 -1
  44. package/dist/content/props.d.ts +15 -0
  45. package/dist/content/props.d.ts.map +1 -0
  46. package/dist/content/props.js +71 -0
  47. package/dist/content/props.js.map +1 -0
  48. package/dist/content/slug.d.ts +23 -0
  49. package/dist/content/slug.d.ts.map +1 -0
  50. package/dist/content/slug.js +52 -0
  51. package/dist/content/slug.js.map +1 -0
  52. package/dist/content/walk.d.ts +17 -0
  53. package/dist/content/walk.d.ts.map +1 -0
  54. package/dist/content/walk.js +57 -0
  55. package/dist/content/walk.js.map +1 -0
  56. package/dist/fonts/index.d.ts +11 -0
  57. package/dist/fonts/index.d.ts.map +1 -0
  58. package/dist/fonts/index.js +12 -0
  59. package/dist/fonts/index.js.map +1 -0
  60. package/dist/fonts/materialise.d.ts +7 -0
  61. package/dist/fonts/materialise.d.ts.map +1 -0
  62. package/dist/fonts/materialise.js +47 -0
  63. package/dist/fonts/materialise.js.map +1 -0
  64. package/dist/fonts/resolve.d.ts +7 -0
  65. package/dist/fonts/resolve.d.ts.map +1 -0
  66. package/dist/fonts/resolve.js +50 -0
  67. package/dist/fonts/resolve.js.map +1 -0
  68. package/dist/fonts.d.ts +18 -0
  69. package/dist/fonts.d.ts.map +1 -0
  70. package/dist/fonts.js +102 -0
  71. package/dist/fonts.js.map +1 -0
  72. package/dist/generate/extra.d.ts +16 -0
  73. package/dist/generate/extra.d.ts.map +1 -0
  74. package/dist/generate/extra.js +60 -0
  75. package/dist/generate/extra.js.map +1 -0
  76. package/dist/generate/index.d.ts +19 -0
  77. package/dist/generate/index.d.ts.map +1 -0
  78. package/dist/generate/index.js +46 -0
  79. package/dist/generate/index.js.map +1 -0
  80. package/dist/generate/job.d.ts +35 -0
  81. package/dist/generate/job.d.ts.map +1 -0
  82. package/dist/generate/job.js +2 -0
  83. package/dist/generate/job.js.map +1 -0
  84. package/dist/generate/options.d.ts +56 -0
  85. package/dist/generate/options.d.ts.map +1 -0
  86. package/dist/generate/options.js +17 -0
  87. package/dist/generate/options.js.map +1 -0
  88. package/dist/generate/output-path.d.ts +12 -0
  89. package/dist/generate/output-path.d.ts.map +1 -0
  90. package/dist/generate/output-path.js +18 -0
  91. package/dist/generate/output-path.js.map +1 -0
  92. package/dist/generate/outputs.d.ts +28 -0
  93. package/dist/generate/outputs.d.ts.map +1 -0
  94. package/dist/generate/outputs.js +71 -0
  95. package/dist/generate/outputs.js.map +1 -0
  96. package/dist/generate/plan.d.ts +21 -0
  97. package/dist/generate/plan.d.ts.map +1 -0
  98. package/dist/generate/plan.js +72 -0
  99. package/dist/generate/plan.js.map +1 -0
  100. package/dist/generate/render-image.d.ts +11 -0
  101. package/dist/generate/render-image.d.ts.map +1 -0
  102. package/dist/generate/render-image.js +27 -0
  103. package/dist/generate/render-image.js.map +1 -0
  104. package/dist/generate.d.ts +27 -6
  105. package/dist/generate.d.ts.map +1 -1
  106. package/dist/generate.js +69 -15
  107. package/dist/generate.js.map +1 -1
  108. package/dist/highlight/color.d.ts +9 -0
  109. package/dist/highlight/color.d.ts.map +1 -0
  110. package/dist/highlight/color.js +15 -0
  111. package/dist/highlight/color.js.map +1 -0
  112. package/dist/highlight/grid.d.ts +14 -0
  113. package/dist/highlight/grid.d.ts.map +1 -0
  114. package/dist/highlight/grid.js +36 -0
  115. package/dist/highlight/grid.js.map +1 -0
  116. package/dist/highlight/index.d.ts +12 -0
  117. package/dist/highlight/index.d.ts.map +1 -0
  118. package/dist/highlight/index.js +31 -0
  119. package/dist/highlight/index.js.map +1 -0
  120. package/dist/highlight/language.d.ts +13 -0
  121. package/dist/highlight/language.d.ts.map +1 -0
  122. package/dist/highlight/language.js +41 -0
  123. package/dist/highlight/language.js.map +1 -0
  124. package/dist/highlight/normalise.d.ts +17 -0
  125. package/dist/highlight/normalise.d.ts.map +1 -0
  126. package/dist/highlight/normalise.js +37 -0
  127. package/dist/highlight/normalise.js.map +1 -0
  128. package/dist/highlight/types.d.ts +40 -0
  129. package/dist/highlight/types.d.ts.map +1 -0
  130. package/dist/highlight/types.js +2 -0
  131. package/dist/highlight/types.js.map +1 -0
  132. package/dist/image/index.d.ts +18 -0
  133. package/dist/image/index.d.ts.map +1 -0
  134. package/dist/image/index.js +42 -0
  135. package/dist/image/index.js.map +1 -0
  136. package/dist/image/jpeg.d.ts +10 -0
  137. package/dist/image/jpeg.d.ts.map +1 -0
  138. package/dist/image/jpeg.js +57 -0
  139. package/dist/image/jpeg.js.map +1 -0
  140. package/dist/image/load.d.ts +4 -0
  141. package/dist/image/load.d.ts.map +1 -0
  142. package/dist/image/load.js +60 -0
  143. package/dist/image/load.js.map +1 -0
  144. package/dist/image/media.d.ts +10 -0
  145. package/dist/image/media.d.ts.map +1 -0
  146. package/dist/image/media.js +37 -0
  147. package/dist/image/media.js.map +1 -0
  148. package/dist/image/resolve.d.ts +13 -0
  149. package/dist/image/resolve.d.ts.map +1 -0
  150. package/dist/image/resolve.js +38 -0
  151. package/dist/image/resolve.js.map +1 -0
  152. package/dist/image/size.d.ts +22 -0
  153. package/dist/image/size.d.ts.map +1 -0
  154. package/dist/image/size.js +60 -0
  155. package/dist/image/size.js.map +1 -0
  156. package/dist/image/svg.d.ts +12 -0
  157. package/dist/image/svg.d.ts.map +1 -0
  158. package/dist/image/svg.js +61 -0
  159. package/dist/image/svg.js.map +1 -0
  160. package/dist/image/uri.d.ts +9 -0
  161. package/dist/image/uri.d.ts.map +1 -0
  162. package/dist/image/uri.js +22 -0
  163. package/dist/image/uri.js.map +1 -0
  164. package/dist/index.d.ts +19 -9
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +13 -5
  167. package/dist/index.js.map +1 -1
  168. package/dist/layout/block.d.ts +37 -0
  169. package/dist/layout/block.d.ts.map +1 -0
  170. package/dist/layout/block.js +26 -0
  171. package/dist/layout/block.js.map +1 -0
  172. package/dist/layout/box.d.ts +20 -0
  173. package/dist/layout/box.d.ts.map +1 -0
  174. package/dist/layout/box.js +61 -0
  175. package/dist/layout/box.js.map +1 -0
  176. package/dist/layout/distribute.d.ts +15 -0
  177. package/dist/layout/distribute.d.ts.map +1 -0
  178. package/dist/layout/distribute.js +30 -0
  179. package/dist/layout/distribute.js.map +1 -0
  180. package/dist/layout/image.d.ts +42 -0
  181. package/dist/layout/image.d.ts.map +1 -0
  182. package/dist/layout/image.js +34 -0
  183. package/dist/layout/image.js.map +1 -0
  184. package/dist/layout/index.d.ts +40 -0
  185. package/dist/layout/index.d.ts.map +1 -0
  186. package/dist/layout/index.js +30 -0
  187. package/dist/layout/index.js.map +1 -0
  188. package/dist/layout/lines.d.ts +45 -0
  189. package/dist/layout/lines.d.ts.map +1 -0
  190. package/dist/layout/lines.js +71 -0
  191. package/dist/layout/lines.js.map +1 -0
  192. package/dist/layout/measure.d.ts +11 -0
  193. package/dist/layout/measure.d.ts.map +1 -0
  194. package/dist/layout/measure.js +11 -0
  195. package/dist/layout/measure.js.map +1 -0
  196. package/dist/layout/panel.d.ts +20 -0
  197. package/dist/layout/panel.d.ts.map +1 -0
  198. package/dist/layout/panel.js +22 -0
  199. package/dist/layout/panel.js.map +1 -0
  200. package/dist/layout/row.d.ts +15 -0
  201. package/dist/layout/row.d.ts.map +1 -0
  202. package/dist/layout/row.js +20 -0
  203. package/dist/layout/row.js.map +1 -0
  204. package/dist/layout/scrim.d.ts +23 -0
  205. package/dist/layout/scrim.d.ts.map +1 -0
  206. package/dist/layout/scrim.js +38 -0
  207. package/dist/layout/scrim.js.map +1 -0
  208. package/dist/layout/stack.d.ts +14 -0
  209. package/dist/layout/stack.d.ts.map +1 -0
  210. package/dist/layout/stack.js +19 -0
  211. package/dist/layout/stack.js.map +1 -0
  212. package/dist/layout/types.d.ts +49 -0
  213. package/dist/layout/types.d.ts.map +1 -0
  214. package/dist/layout/types.js +2 -0
  215. package/dist/layout/types.js.map +1 -0
  216. package/dist/manifest/build.d.ts +14 -0
  217. package/dist/manifest/build.d.ts.map +1 -0
  218. package/dist/manifest/build.js +43 -0
  219. package/dist/manifest/build.js.map +1 -0
  220. package/dist/manifest/index.d.ts +27 -0
  221. package/dist/manifest/index.d.ts.map +1 -0
  222. package/dist/manifest/index.js +31 -0
  223. package/dist/manifest/index.js.map +1 -0
  224. package/dist/manifest/order.d.ts +12 -0
  225. package/dist/manifest/order.d.ts.map +1 -0
  226. package/dist/manifest/order.js +17 -0
  227. package/dist/manifest/order.js.map +1 -0
  228. package/dist/manifest/page.d.ts +24 -0
  229. package/dist/manifest/page.d.ts.map +1 -0
  230. package/dist/manifest/page.js +55 -0
  231. package/dist/manifest/page.js.map +1 -0
  232. package/dist/measure/estimate.d.ts +10 -0
  233. package/dist/measure/estimate.d.ts.map +1 -0
  234. package/dist/measure/estimate.js +58 -0
  235. package/dist/measure/estimate.js.map +1 -0
  236. package/dist/measure/faces.d.ts +15 -0
  237. package/dist/measure/faces.d.ts.map +1 -0
  238. package/dist/measure/faces.js +70 -0
  239. package/dist/measure/faces.js.map +1 -0
  240. package/dist/measure/index.d.ts +16 -0
  241. package/dist/measure/index.d.ts.map +1 -0
  242. package/dist/measure/index.js +0 -0
  243. package/dist/measure/index.js.map +1 -0
  244. package/dist/measure/runs.d.ts +17 -0
  245. package/dist/measure/runs.d.ts.map +1 -0
  246. package/dist/measure/runs.js +39 -0
  247. package/dist/measure/runs.js.map +1 -0
  248. package/dist/measure/select.d.ts +13 -0
  249. package/dist/measure/select.d.ts.map +1 -0
  250. package/dist/measure/select.js +47 -0
  251. package/dist/measure/select.js.map +1 -0
  252. package/dist/meta/html.d.ts +14 -0
  253. package/dist/meta/html.d.ts.map +1 -0
  254. package/dist/meta/html.js +24 -0
  255. package/dist/meta/html.js.map +1 -0
  256. package/dist/meta/index.d.ts +11 -0
  257. package/dist/meta/index.d.ts.map +1 -0
  258. package/dist/meta/index.js +11 -0
  259. package/dist/meta/index.js.map +1 -0
  260. package/dist/meta/tags.d.ts +21 -0
  261. package/dist/meta/tags.d.ts.map +1 -0
  262. package/dist/meta/tags.js +72 -0
  263. package/dist/meta/tags.js.map +1 -0
  264. package/dist/meta/url.d.ts +15 -0
  265. package/dist/meta/url.d.ts.map +1 -0
  266. package/dist/meta/url.js +34 -0
  267. package/dist/meta/url.js.map +1 -0
  268. package/dist/placement/check.d.ts +16 -0
  269. package/dist/placement/check.d.ts.map +1 -0
  270. package/dist/placement/check.js +40 -0
  271. package/dist/placement/check.js.map +1 -0
  272. package/dist/placement/index.d.ts +29 -0
  273. package/dist/placement/index.d.ts.map +1 -0
  274. package/dist/placement/index.js +61 -0
  275. package/dist/placement/index.js.map +1 -0
  276. package/dist/placement/relative.d.ts +31 -0
  277. package/dist/placement/relative.d.ts.map +1 -0
  278. package/dist/placement/relative.js +53 -0
  279. package/dist/placement/relative.js.map +1 -0
  280. package/dist/pool.d.ts +18 -0
  281. package/dist/pool.d.ts.map +1 -0
  282. package/dist/pool.js +56 -0
  283. package/dist/pool.js.map +1 -0
  284. package/dist/props.d.ts +7 -0
  285. package/dist/props.d.ts.map +1 -0
  286. package/dist/props.js +17 -0
  287. package/dist/props.js.map +1 -0
  288. package/dist/render/index.d.ts +10 -0
  289. package/dist/render/index.d.ts.map +1 -0
  290. package/dist/render/index.js +27 -0
  291. package/dist/render/index.js.map +1 -0
  292. package/dist/render/png.d.ts +10 -0
  293. package/dist/render/png.d.ts.map +1 -0
  294. package/dist/render/png.js +30 -0
  295. package/dist/render/png.js.map +1 -0
  296. package/dist/render/svg.d.ts +12 -0
  297. package/dist/render/svg.d.ts.map +1 -0
  298. package/dist/render/svg.js +35 -0
  299. package/dist/render/svg.js.map +1 -0
  300. package/dist/render/template.d.ts +9 -0
  301. package/dist/render/template.d.ts.map +1 -0
  302. package/dist/render/template.js +17 -0
  303. package/dist/render/template.js.map +1 -0
  304. package/dist/render.d.ts +6 -2
  305. package/dist/render.d.ts.map +1 -1
  306. package/dist/render.js +31 -10
  307. package/dist/render.js.map +1 -1
  308. package/dist/stamp/chunk.d.ts +16 -0
  309. package/dist/stamp/chunk.d.ts.map +1 -0
  310. package/dist/stamp/chunk.js +46 -0
  311. package/dist/stamp/chunk.js.map +1 -0
  312. package/dist/stamp/config-digest.d.ts +11 -0
  313. package/dist/stamp/config-digest.d.ts.map +1 -0
  314. package/dist/stamp/config-digest.js +62 -0
  315. package/dist/stamp/config-digest.js.map +1 -0
  316. package/dist/stamp/digest.d.ts +8 -0
  317. package/dist/stamp/digest.d.ts.map +1 -0
  318. package/dist/stamp/digest.js +20 -0
  319. package/dist/stamp/digest.js.map +1 -0
  320. package/dist/stamp/index.d.ts +20 -0
  321. package/dist/stamp/index.d.ts.map +1 -0
  322. package/dist/stamp/index.js +40 -0
  323. package/dist/stamp/index.js.map +1 -0
  324. package/dist/stamp/read.d.ts +7 -0
  325. package/dist/stamp/read.d.ts.map +1 -0
  326. package/dist/stamp/read.js +62 -0
  327. package/dist/stamp/read.js.map +1 -0
  328. package/dist/stamp.d.ts +29 -0
  329. package/dist/stamp.d.ts.map +1 -0
  330. package/dist/stamp.js +198 -0
  331. package/dist/stamp.js.map +1 -0
  332. package/dist/templates/attribution.d.ts +17 -0
  333. package/dist/templates/attribution.d.ts.map +1 -0
  334. package/dist/templates/attribution.js +39 -0
  335. package/dist/templates/attribution.js.map +1 -0
  336. package/dist/templates/banner/badge.d.ts +7 -0
  337. package/dist/templates/banner/badge.d.ts.map +1 -0
  338. package/dist/templates/banner/badge.js +21 -0
  339. package/dist/templates/banner/badge.js.map +1 -0
  340. package/dist/templates/banner/index.d.ts +12 -0
  341. package/dist/templates/banner/index.d.ts.map +1 -0
  342. package/dist/templates/banner/index.js +68 -0
  343. package/dist/templates/banner/index.js.map +1 -0
  344. package/dist/templates/banner/lines.d.ts +22 -0
  345. package/dist/templates/banner/lines.d.ts.map +1 -0
  346. package/dist/templates/banner/lines.js +35 -0
  347. package/dist/templates/banner/lines.js.map +1 -0
  348. package/dist/templates/banner/version.d.ts +9 -0
  349. package/dist/templates/banner/version.d.ts.map +1 -0
  350. package/dist/templates/banner/version.js +21 -0
  351. package/dist/templates/banner/version.js.map +1 -0
  352. package/dist/templates/card/index.d.ts +10 -0
  353. package/dist/templates/card/index.d.ts.map +1 -0
  354. package/dist/templates/card/index.js +55 -0
  355. package/dist/templates/card/index.js.map +1 -0
  356. package/dist/templates/card/lines.d.ts +21 -0
  357. package/dist/templates/card/lines.d.ts.map +1 -0
  358. package/dist/templates/card/lines.js +36 -0
  359. package/dist/templates/card/lines.js.map +1 -0
  360. package/dist/templates/code/chrome.d.ts +13 -0
  361. package/dist/templates/code/chrome.d.ts.map +1 -0
  362. package/dist/templates/code/chrome.js +33 -0
  363. package/dist/templates/code/chrome.js.map +1 -0
  364. package/dist/templates/code/clip.d.ts +18 -0
  365. package/dist/templates/code/clip.d.ts.map +1 -0
  366. package/dist/templates/code/clip.js +44 -0
  367. package/dist/templates/code/clip.js.map +1 -0
  368. package/dist/templates/code/ellipsis.d.ts +3 -0
  369. package/dist/templates/code/ellipsis.d.ts.map +1 -0
  370. package/dist/templates/code/ellipsis.js +3 -0
  371. package/dist/templates/code/ellipsis.js.map +1 -0
  372. package/dist/templates/code/fit.d.ts +27 -0
  373. package/dist/templates/code/fit.d.ts.map +1 -0
  374. package/dist/templates/code/fit.js +59 -0
  375. package/dist/templates/code/fit.js.map +1 -0
  376. package/dist/templates/code/index.d.ts +12 -0
  377. package/dist/templates/code/index.d.ts.map +1 -0
  378. package/dist/templates/code/index.js +65 -0
  379. package/dist/templates/code/index.js.map +1 -0
  380. package/dist/templates/code/layout.d.ts +21 -0
  381. package/dist/templates/code/layout.d.ts.map +1 -0
  382. package/dist/templates/code/layout.js +21 -0
  383. package/dist/templates/code/layout.js.map +1 -0
  384. package/dist/templates/code/panel.d.ts +30 -0
  385. package/dist/templates/code/panel.d.ts.map +1 -0
  386. package/dist/templates/code/panel.js +52 -0
  387. package/dist/templates/code/panel.js.map +1 -0
  388. package/dist/templates/code/plate.d.ts +17 -0
  389. package/dist/templates/code/plate.d.ts.map +1 -0
  390. package/dist/templates/code/plate.js +34 -0
  391. package/dist/templates/code/plate.js.map +1 -0
  392. package/dist/templates/code/spans.d.ts +19 -0
  393. package/dist/templates/code/spans.d.ts.map +1 -0
  394. package/dist/templates/code/spans.js +36 -0
  395. package/dist/templates/code/spans.js.map +1 -0
  396. package/dist/templates/code/warn.d.ts +11 -0
  397. package/dist/templates/code/warn.d.ts.map +1 -0
  398. package/dist/templates/code/warn.js +24 -0
  399. package/dist/templates/code/warn.js.map +1 -0
  400. package/dist/templates/code/width.d.ts +10 -0
  401. package/dist/templates/code/width.d.ts.map +1 -0
  402. package/dist/templates/code/width.js +26 -0
  403. package/dist/templates/code/width.js.map +1 -0
  404. package/dist/templates/footer.d.ts +29 -0
  405. package/dist/templates/footer.d.ts.map +1 -0
  406. package/dist/templates/footer.js +35 -0
  407. package/dist/templates/footer.js.map +1 -0
  408. package/dist/templates/index.d.ts +4 -4
  409. package/dist/templates/index.d.ts.map +1 -1
  410. package/dist/templates/index.js +7 -7
  411. package/dist/templates/index.js.map +1 -1
  412. package/dist/templates/logo.d.ts +15 -0
  413. package/dist/templates/logo.d.ts.map +1 -0
  414. package/dist/templates/logo.js +30 -0
  415. package/dist/templates/logo.js.map +1 -0
  416. package/dist/templates/measure.d.ts +11 -0
  417. package/dist/templates/measure.d.ts.map +1 -0
  418. package/dist/templates/measure.js +11 -0
  419. package/dist/templates/measure.js.map +1 -0
  420. package/dist/templates/props.d.ts +2 -2
  421. package/dist/templates/props.js +2 -2
  422. package/dist/templates/text.d.ts +37 -0
  423. package/dist/templates/text.d.ts.map +1 -0
  424. package/dist/templates/text.js +26 -0
  425. package/dist/templates/text.js.map +1 -0
  426. package/dist/text/break.d.ts +11 -0
  427. package/dist/text/break.d.ts.map +1 -0
  428. package/dist/text/break.js +30 -0
  429. package/dist/text/break.js.map +1 -0
  430. package/dist/text/element.d.ts +18 -0
  431. package/dist/text/element.d.ts.map +1 -0
  432. package/dist/text/element.js +19 -0
  433. package/dist/text/element.js.map +1 -0
  434. package/dist/text/escape.d.ts +5 -0
  435. package/dist/text/escape.d.ts.map +1 -0
  436. package/dist/text/escape.js +12 -0
  437. package/dist/text/escape.js.map +1 -0
  438. package/dist/text/fit.d.ts +30 -0
  439. package/dist/text/fit.d.ts.map +1 -0
  440. package/dist/text/fit.js +29 -0
  441. package/dist/text/fit.js.map +1 -0
  442. package/dist/text/index.d.ts +9 -0
  443. package/dist/text/index.d.ts.map +1 -0
  444. package/dist/text/index.js +6 -0
  445. package/dist/text/index.js.map +1 -0
  446. package/dist/text/stack.d.ts +24 -0
  447. package/dist/text/stack.d.ts.map +1 -0
  448. package/dist/text/stack.js +18 -0
  449. package/dist/text/stack.js.map +1 -0
  450. package/dist/text/wrap.d.ts +22 -0
  451. package/dist/text/wrap.d.ts.map +1 -0
  452. package/dist/text/wrap.js +41 -0
  453. package/dist/text/wrap.js.map +1 -0
  454. package/dist/types.d.ts +458 -18
  455. package/dist/types.d.ts.map +1 -1
  456. package/dist/validate/check.d.ts +13 -0
  457. package/dist/validate/check.d.ts.map +1 -0
  458. package/dist/validate/check.js +34 -0
  459. package/dist/validate/check.js.map +1 -0
  460. package/dist/validate/index.d.ts +15 -0
  461. package/dist/validate/index.d.ts.map +1 -0
  462. package/dist/validate/index.js +42 -0
  463. package/dist/validate/index.js.map +1 -0
  464. package/dist/validate/keys.d.ts +75 -0
  465. package/dist/validate/keys.d.ts.map +1 -0
  466. package/dist/validate/keys.js +203 -0
  467. package/dist/validate/keys.js.map +1 -0
  468. package/dist/validate/overrides.d.ts +5 -0
  469. package/dist/validate/overrides.d.ts.map +1 -0
  470. package/dist/validate/overrides.js +43 -0
  471. package/dist/validate/overrides.js.map +1 -0
  472. package/dist/validate/placement.d.ts +10 -0
  473. package/dist/validate/placement.d.ts.map +1 -0
  474. package/dist/validate/placement.js +38 -0
  475. package/dist/validate/placement.js.map +1 -0
  476. package/dist/validate/sizes.d.ts +9 -0
  477. package/dist/validate/sizes.d.ts.map +1 -0
  478. package/dist/validate/sizes.js +27 -0
  479. package/dist/validate/sizes.js.map +1 -0
  480. package/dist/validate/suggest.d.ts +10 -0
  481. package/dist/validate/suggest.d.ts.map +1 -0
  482. package/dist/validate/suggest.js +73 -0
  483. package/dist/validate/suggest.js.map +1 -0
  484. package/dist/validate/values.d.ts +21 -0
  485. package/dist/validate/values.d.ts.map +1 -0
  486. package/dist/validate/values.js +71 -0
  487. package/dist/validate/values.js.map +1 -0
  488. package/dist/validate.d.ts +15 -0
  489. package/dist/validate.d.ts.map +1 -0
  490. package/dist/validate.js +300 -0
  491. package/dist/validate.js.map +1 -0
  492. package/package.json +19 -6
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import { generate } from "../generate/index.js";
3
+ import { parseCliArgs, usage } from "./args.js";
4
+ import { loadConfig } from "./config.js";
5
+ async function main() {
6
+ const argv = process.argv.slice(2);
7
+ if (argv.includes("-h") || argv.includes("--help")) {
8
+ console.log(usage);
9
+ return;
10
+ }
11
+ const args = parseCliArgs(argv);
12
+ const config = await loadConfig(args.configPath);
13
+ const results = await generate({
14
+ contentDir: args.contentDir,
15
+ overwrite: args.overwrite,
16
+ ...(config !== undefined && { config }),
17
+ ...(args.concurrency !== undefined && { concurrency: args.concurrency }),
18
+ onResult: (result) => {
19
+ // The URL is the half of a placement nothing else on the command line
20
+ // would show, and the quickest way to see a `urlBase` is wrong.
21
+ const served = result.url === undefined ? "" : ` -> ${result.url}`;
22
+ console.log(`${result.skipped ? "skip " : "wrote"} ${result.outputPath}${served}`);
23
+ },
24
+ });
25
+ const written = results.filter((result) => !result.skipped).length;
26
+ console.log(`Done: ${String(written)} written, ${String(results.length - written)} skipped.`);
27
+ }
28
+ try {
29
+ await main();
30
+ }
31
+ catch (error) {
32
+ console.error(error instanceof Error ? error.message : String(error));
33
+ process.exitCode = 1;
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACxE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACnB,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;YACnE,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CACtE,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO,CAAC,GAAG,CACT,SAAS,MAAM,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CACjF,CAAC;AACJ,CAAC;AAED,IAAI,CAAC;IACH,MAAM,IAAI,EAAE,CAAC;AACf,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
package/dist/cli.js CHANGED
@@ -7,35 +7,62 @@ const usage = `colophon — generate social meta images from frontmatter
7
7
  Usage:
8
8
  colophon [contentDir] [options]
9
9
 
10
+ Images carry a stamp of the props, config and size they came from, so a rebuild
11
+ renders only the ones that have actually changed.
12
+
10
13
  Options:
11
14
  -c, --config <path> Load a config module (default export = ColophonConfig)
12
- -o, --overwrite Re-render images even if the output file exists
15
+ -f, --force Re-render every image, ignoring the stamps
16
+ -o, --overwrite Alias for --force
17
+ --concurrency <n> How many images to render at once
13
18
  -h, --help Show this help
14
19
 
15
20
  Defaults:
16
- contentDir content`;
21
+ contentDir content
22
+ --concurrency one per available CPU`;
23
+ /** `--overwrite` is kept as an alias so existing build scripts keep working. */
24
+ const forceFlags = new Set(["-f", "--force", "-o", "--overwrite"]);
25
+ /** Flags that take the next argument as their value. */
26
+ const valueFlags = new Set(["-c", "--config", "--concurrency"]);
27
+ /**
28
+ * A mistyped count would otherwise reach `generate` as `NaN` and be reported
29
+ * without naming the flag it came from, so it is rejected here instead.
30
+ */
31
+ function parseConcurrency(value) {
32
+ const parsed = Number(value);
33
+ if (!Number.isSafeInteger(parsed) || parsed < 1) {
34
+ throw new Error(`Invalid value for --concurrency: "${value}"; expected a positive integer.`);
35
+ }
36
+ return parsed;
37
+ }
17
38
  function parseCliArgs(argv) {
18
39
  let contentDir = "content";
19
40
  let configPath;
20
41
  let shouldOverwrite = false;
42
+ let concurrency;
21
43
  for (let index = 0; index < argv.length; index += 1) {
22
44
  const arg = argv[index];
23
- if (arg === "-c" || arg === "--config") {
45
+ if (arg !== undefined && valueFlags.has(arg)) {
24
46
  index += 1;
25
47
  const value = argv[index];
26
48
  if (value === undefined) {
27
49
  throw new Error(`Missing value for ${arg}`);
28
50
  }
29
- configPath = value;
51
+ if (arg === "--concurrency") {
52
+ concurrency = parseConcurrency(value);
53
+ }
54
+ else {
55
+ configPath = value;
56
+ }
30
57
  }
31
- else if (arg === "-o" || arg === "--overwrite") {
58
+ else if (arg !== undefined && forceFlags.has(arg)) {
32
59
  shouldOverwrite = true;
33
60
  }
34
61
  else if (arg !== undefined && !arg.startsWith("-")) {
35
62
  contentDir = arg;
36
63
  }
37
64
  }
38
- return { contentDir, configPath, overwrite: shouldOverwrite };
65
+ return { contentDir, configPath, overwrite: shouldOverwrite, concurrency };
39
66
  }
40
67
  async function loadConfig(configPath) {
41
68
  if (configPath === undefined) {
@@ -57,6 +84,7 @@ async function main() {
57
84
  contentDir: args.contentDir,
58
85
  overwrite: args.overwrite,
59
86
  ...(config !== undefined && { config }),
87
+ ...(args.concurrency !== undefined && { concurrency: args.concurrency }),
60
88
  onResult: (result) => {
61
89
  console.log(`${result.skipped ? "skip " : "wrote"} ${result.outputPath}`);
62
90
  },
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { BrandColors, CodeStyle, OutputSize } from "../types.js";
2
+ /**
3
+ * Named output-size presets covering the common social-image standards. Each
4
+ * `name` becomes the filename suffix (e.g. `my-post-og.png`).
5
+ *
6
+ * - `og`: 1.91:1, the Open Graph standard (`og:image`). Facebook, LinkedIn,
7
+ * Slack, Discord, WhatsApp, Mastodon, and the usual `twitter:image` reuse.
8
+ * - `square`: 1:1, X/Twitter `summary` card and a universal fallback.
9
+ * - `twitter`: 2:1, X/Twitter `summary_large_image` card.
10
+ * - `pinterest`: 2:3 tall pin.
11
+ */
12
+ export declare const SIZE_PRESETS: {
13
+ readonly og: {
14
+ readonly name: "og";
15
+ readonly width: 1200;
16
+ readonly height: 630;
17
+ };
18
+ readonly square: {
19
+ readonly name: "square";
20
+ readonly width: 1200;
21
+ readonly height: 1200;
22
+ };
23
+ readonly twitter: {
24
+ readonly name: "twitter";
25
+ readonly width: 1200;
26
+ readonly height: 600;
27
+ };
28
+ readonly pinterest: {
29
+ readonly name: "pinterest";
30
+ readonly width: 1000;
31
+ readonly height: 1500;
32
+ };
33
+ };
34
+ /**
35
+ * Default output sizes: the Open Graph landscape plus a square. Between them
36
+ * they satisfy `og:image` and both `twitter:image` card types.
37
+ */
38
+ export declare const DEFAULT_SIZES: readonly OutputSize[];
39
+ /**
40
+ * Default font stack, used when no fonts are configured. It names families and
41
+ * hopes the machine has them, which is exactly what `config.fonts` exists to
42
+ * avoid: supply a font file and the output stops depending on the machine.
43
+ */
44
+ export declare const DEFAULT_FONT_FAMILY = "Arial, Helvetica, sans-serif";
45
+ /** Neutral default palette, used when no `colors.brand` is supplied. */
46
+ export declare const DEFAULT_COLORS: Required<BrandColors>;
47
+ /**
48
+ * Default monospace stack for the `code` template. It ends in the generic
49
+ * `monospace` family so it always resolves to something, whatever fonts the
50
+ * machine running the build happens to have.
51
+ */
52
+ export declare const DEFAULT_CODE_FONT_FAMILY = "\"JetBrains Mono\", \"Source Code Pro\", \"DejaVu Sans Mono\", Menlo, Consolas, monospace";
53
+ /**
54
+ * Default `code` template styling. `lineHeight` sets the monospace grid the
55
+ * snippet is laid out on, along with the character width, which is measured
56
+ * from the font rather than configured. The font-size bounds are fractions of
57
+ * the image width so they hold at every output size.
58
+ *
59
+ * `minFontScale` of `0.025` is roughly 30px on a 1200px-wide image, which
60
+ * still reads when a feed shows that image at half size. A snippet too long to
61
+ * fit at that size is truncated rather than shrunk, so a long sample loses
62
+ * lines on the shorter landscape formats.
63
+ */
64
+ export declare const DEFAULT_CODE_STYLE: Required<CodeStyle>;
65
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;CACZ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAQlD,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Named output-size presets covering the common social-image standards. Each
3
+ * `name` becomes the filename suffix (e.g. `my-post-og.png`).
4
+ *
5
+ * - `og`: 1.91:1, the Open Graph standard (`og:image`). Facebook, LinkedIn,
6
+ * Slack, Discord, WhatsApp, Mastodon, and the usual `twitter:image` reuse.
7
+ * - `square`: 1:1, X/Twitter `summary` card and a universal fallback.
8
+ * - `twitter`: 2:1, X/Twitter `summary_large_image` card.
9
+ * - `pinterest`: 2:3 tall pin.
10
+ */
11
+ export const SIZE_PRESETS = {
12
+ og: { name: "og", width: 1200, height: 630 },
13
+ square: { name: "square", width: 1200, height: 1200 },
14
+ twitter: { name: "twitter", width: 1200, height: 600 },
15
+ pinterest: { name: "pinterest", width: 1000, height: 1500 },
16
+ };
17
+ /**
18
+ * Default output sizes: the Open Graph landscape plus a square. Between them
19
+ * they satisfy `og:image` and both `twitter:image` card types.
20
+ */
21
+ export const DEFAULT_SIZES = [
22
+ SIZE_PRESETS.og,
23
+ SIZE_PRESETS.square,
24
+ ];
25
+ /**
26
+ * Default font stack, used when no fonts are configured. It names families and
27
+ * hopes the machine has them, which is exactly what `config.fonts` exists to
28
+ * avoid: supply a font file and the output stops depending on the machine.
29
+ */
30
+ export const DEFAULT_FONT_FAMILY = "Arial, Helvetica, sans-serif";
31
+ /** Neutral default palette, used when no `colors.brand` is supplied. */
32
+ export const DEFAULT_COLORS = {
33
+ brand: "#4f46e5",
34
+ brandDark: "#3730a3",
35
+ brandWarm: "#db2777",
36
+ foreground: "#ffffff",
37
+ };
38
+ /**
39
+ * Default monospace stack for the `code` template. It ends in the generic
40
+ * `monospace` family so it always resolves to something, whatever fonts the
41
+ * machine running the build happens to have.
42
+ */
43
+ export const DEFAULT_CODE_FONT_FAMILY = '"JetBrains Mono", "Source Code Pro", "DejaVu Sans Mono", Menlo, Consolas, monospace';
44
+ /**
45
+ * Default `code` template styling. `lineHeight` sets the monospace grid the
46
+ * snippet is laid out on, along with the character width, which is measured
47
+ * from the font rather than configured. The font-size bounds are fractions of
48
+ * the image width so they hold at every output size.
49
+ *
50
+ * `minFontScale` of `0.025` is roughly 30px on a 1200px-wide image, which
51
+ * still reads when a feed shows that image at half size. A snippet too long to
52
+ * fit at that size is truncated rather than shrunk, so a long sample loses
53
+ * lines on the shorter landscape formats.
54
+ */
55
+ export const DEFAULT_CODE_STYLE = {
56
+ theme: "github-dark",
57
+ fontFamily: DEFAULT_CODE_FONT_FAMILY,
58
+ lineHeight: 1.55,
59
+ tabSize: 2,
60
+ cornerScale: 0.025,
61
+ maxFontScale: 0.075,
62
+ minFontScale: 0.025,
63
+ };
64
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACd,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,YAAY,CAAC,EAAE;IACf,YAAY,CAAC,MAAM;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,qFAAqF,CAAC;AAExF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,KAAK,EAAE,aAAa;IACpB,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,KAAK;CACpB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ColophonConfig, ColophonConfigFactory, ResolvedConfig } from "../types.js";
2
+ export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_FONT_FAMILY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
3
+ /**
4
+ * Identity helper that returns its argument typed as {@link ColophonConfig}.
5
+ * Use it in a config module to get editor completion and type-checking.
6
+ */
7
+ export declare function defineConfig(config: ColophonConfig): ColophonConfig;
8
+ /**
9
+ * Overload for a config module that computes its config rather than declaring
10
+ * it. The function is typed, not called: this is still just an identity
11
+ * helper, and whoever loads the module is the one who runs it.
12
+ */
13
+ export declare function defineConfig(factory: ColophonConfigFactory): ColophonConfigFactory;
14
+ /**
15
+ * Apply defaults to a user config. Safe to call with no argument.
16
+ *
17
+ * Unknown options are rejected before anything is resolved, so a config
18
+ * written against a different version of the package is a build error rather
19
+ * than a set of images quietly rendered with the defaults.
20
+ */
21
+ export declare function resolveConfig(config?: ColophonConfig): ResolvedConfig;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EAErB,cAAc,EACf,MAAM,aAAa,CAAC;AAYrB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAcvB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC;AACrE;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,qBAAqB,GAC7B,qBAAqB,CAAC;AAUzB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,cAAc,CAsBzE"}
@@ -0,0 +1,54 @@
1
+ import { resolveFonts } from "../fonts/index.js";
2
+ import { resolveOptionalImage } from "../image/index.js";
3
+ import { builtinTemplates } from "../templates/index.js";
4
+ import { validateConfig } from "../validate/index.js";
5
+ import { DEFAULT_FONT_FAMILY } from "./defaults.js";
6
+ import { defaultBackground, resolveBackground, resolveCode, resolveColors, resolveSizes, shouldLoadSystemFonts, } from "./resolve.js";
7
+ export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_FONT_FAMILY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
8
+ /**
9
+ * Default warning handler. Colophon runs at build time, so a compromise the
10
+ * renderer had to make belongs in the build log by default. Silence is opt-in
11
+ * via `config.onWarning`.
12
+ */
13
+ function warnToConsole(message) {
14
+ // The console is the point: this is the default sink, replaced wholesale by
15
+ // a caller-supplied `onWarning`.
16
+ // eslint-disable-next-line no-console
17
+ console.warn(`colophon: ${message}`);
18
+ }
19
+ /**
20
+ * Implementation signature. Two overloads rather than one union parameter, so
21
+ * an object literal is still checked against {@link ColophonConfig} for
22
+ * misspelled keys before it ever reaches `validateConfig`.
23
+ */
24
+ export function defineConfig(config) {
25
+ return config;
26
+ }
27
+ /**
28
+ * Apply defaults to a user config. Safe to call with no argument.
29
+ *
30
+ * Unknown options are rejected before anything is resolved, so a config
31
+ * written against a different version of the package is a build error rather
32
+ * than a set of images quietly rendered with the defaults.
33
+ */
34
+ export function resolveConfig(config = {}) {
35
+ validateConfig(config);
36
+ const colors = resolveColors(config.colors);
37
+ const fonts = resolveFonts(config.fonts);
38
+ return {
39
+ colors,
40
+ background: resolveBackground(config.background) ?? defaultBackground(colors),
41
+ fonts,
42
+ systemFonts: shouldLoadSystemFonts(config.systemFonts, fonts),
43
+ // A project that supplies one font should not have to name it twice.
44
+ fontFamily: config.fontFamily ?? fonts[0]?.family ?? DEFAULT_FONT_FAMILY,
45
+ footer: config.footer,
46
+ badge: config.badge,
47
+ logo: resolveOptionalImage(config.logo, "logo"),
48
+ code: resolveCode(config.code),
49
+ onWarning: config.onWarning ?? warnToConsole,
50
+ sizes: resolveSizes(config.sizes),
51
+ templates: { ...builtinTemplates, ...config.templates },
52
+ };
53
+ }
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,4EAA4E;IAC5E,iCAAiC;IACjC,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAM,GAAmB,EAAE;IACvD,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO;QACL,MAAM;QACN,UAAU,EACR,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;QACnE,KAAK;QACL,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;QAC7D,qEAAqE;QACrE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,mBAAmB;QACxE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,aAAa;QAC5C,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,SAAS,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Background, BrandColors, CodeStyle, FontSource, OutputSize } from "../types.js";
2
+ /**
3
+ * Fill in the palette a project did not name.
4
+ *
5
+ * When a project supplies only `brand`, use it for the whole gradient rather
6
+ * than mixing in the neutral defaults, which would clash.
7
+ */
8
+ export declare function resolveColors(colors: BrandColors | undefined): Required<BrandColors>;
9
+ /**
10
+ * Check a background's image up front, the way `fonts` and `logo` are checked.
11
+ * A background that cannot be read is every image in the build rendered as a
12
+ * flat colour, which is a failure worth hearing about before the build runs
13
+ * rather than after looking at the output.
14
+ */
15
+ export declare function resolveBackground(background: Background | undefined): Background | undefined;
16
+ /** The gradient a config with no background of its own is drawn on. */
17
+ export declare function defaultBackground(colors: Required<BrandColors>): Background;
18
+ /** Fill in the `code` styling a project did not name. */
19
+ export declare function resolveCode(code: CodeStyle | undefined): Required<CodeStyle>;
20
+ /**
21
+ * The sizes to render, rejecting a duplicate name: each size names a file, so
22
+ * two sizes sharing a name would have one overwrite the other.
23
+ */
24
+ export declare function resolveSizes(sizes: readonly OutputSize[] | undefined): readonly OutputSize[];
25
+ /**
26
+ * Whether to load the machine's own fonts. Configured fonts are meant to make
27
+ * the output the same everywhere, so supplying any turns system fonts off
28
+ * unless the project asks for them back.
29
+ */
30
+ export declare function shouldLoadSystemFonts(systemFonts: boolean | undefined, fonts: readonly FontSource[]): boolean;
31
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACX,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,QAAQ,CAAC,WAAW,CAAC,CAWvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,GAAG,SAAS,GACjC,UAAU,GAAG,SAAS,CASxB;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,UAAU,CAS3E;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAE5E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,GACvC,SAAS,UAAU,EAAE,CAgBvB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,OAAO,CAaT"}
@@ -0,0 +1,82 @@
1
+ import { resolveImageSource } from "../image/index.js";
2
+ import { DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_SIZES, } from "./defaults.js";
3
+ /**
4
+ * Fill in the palette a project did not name.
5
+ *
6
+ * When a project supplies only `brand`, use it for the whole gradient rather
7
+ * than mixing in the neutral defaults, which would clash.
8
+ */
9
+ export function resolveColors(colors) {
10
+ if (colors === undefined) {
11
+ return DEFAULT_COLORS;
12
+ }
13
+ return {
14
+ brand: colors.brand,
15
+ brandDark: colors.brandDark ?? colors.brand,
16
+ brandWarm: colors.brandWarm ?? colors.brand,
17
+ foreground: colors.foreground ?? DEFAULT_COLORS.foreground,
18
+ };
19
+ }
20
+ /**
21
+ * Check a background's image up front, the way `fonts` and `logo` are checked.
22
+ * A background that cannot be read is every image in the build rendered as a
23
+ * flat colour, which is a failure worth hearing about before the build runs
24
+ * rather than after looking at the output.
25
+ */
26
+ export function resolveBackground(background) {
27
+ if (background?.type !== "image") {
28
+ return background;
29
+ }
30
+ return {
31
+ ...background,
32
+ source: resolveImageSource(background.source, "background.source"),
33
+ };
34
+ }
35
+ /** The gradient a config with no background of its own is drawn on. */
36
+ export function defaultBackground(colors) {
37
+ return {
38
+ type: "gradient",
39
+ stops: [
40
+ { offset: "0%", color: colors.brandDark },
41
+ { offset: "55%", color: colors.brand },
42
+ { offset: "100%", color: colors.brandWarm },
43
+ ],
44
+ };
45
+ }
46
+ /** Fill in the `code` styling a project did not name. */
47
+ export function resolveCode(code) {
48
+ return { ...DEFAULT_CODE_STYLE, ...code };
49
+ }
50
+ /**
51
+ * The sizes to render, rejecting a duplicate name: each size names a file, so
52
+ * two sizes sharing a name would have one overwrite the other.
53
+ */
54
+ export function resolveSizes(sizes) {
55
+ if (sizes === undefined || sizes.length === 0) {
56
+ return DEFAULT_SIZES;
57
+ }
58
+ const seen = new Set();
59
+ for (const size of sizes) {
60
+ if (seen.has(size.name)) {
61
+ throw new Error(`Duplicate output size name "${size.name}"; names must be unique so each image gets a distinct filename.`);
62
+ }
63
+ seen.add(size.name);
64
+ }
65
+ return sizes;
66
+ }
67
+ /**
68
+ * Whether to load the machine's own fonts. Configured fonts are meant to make
69
+ * the output the same everywhere, so supplying any turns system fonts off
70
+ * unless the project asks for them back.
71
+ */
72
+ export function shouldLoadSystemFonts(systemFonts, fonts) {
73
+ if (systemFonts === undefined) {
74
+ return fonts.length === 0;
75
+ }
76
+ if (!systemFonts && fonts.length === 0) {
77
+ throw new Error("systemFonts is false and no fonts are configured, so no text could be" +
78
+ " rendered. Add fonts, or leave systemFonts unset.");
79
+ }
80
+ return systemFonts;
81
+ }
82
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA+B;IAE/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK;QAC3C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK;QAC3C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU;KAC3D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkC;IAElC,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,MAAM,EAAE,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE;YACL,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;YACzC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YACtC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,IAA2B;IACrD,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAwC;IAExC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,IAAI,iEAAiE,CAC1G,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAgC,EAChC,KAA4B;IAE5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,uEAAuE;YACrE,mDAAmD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ColophonConfig, OutputSize, ResolvedConfig } from "../types.js";
2
+ /**
3
+ * Apply a size's own overrides to a config and resolve the result: the config
4
+ * one image is actually rendered with.
5
+ *
6
+ * The overrides are folded into the user config and the whole thing resolved
7
+ * again, rather than patched onto an already-resolved config, so that anything
8
+ * derived stays consistent. A size that overrides `colors.brand` gets the
9
+ * default gradient rebuilt around its brand, exactly as a config setting the
10
+ * same colour at the top level would.
11
+ *
12
+ * `colors` and `code` merge over their config-level counterparts, because both
13
+ * are bags of independent settings and the point of the feature is to change
14
+ * one of them. The rest replace: a `background` is a union whose variants have
15
+ * different keys, so half of one over half of another is not a background at
16
+ * all, and `badge` carries a required `text` that a partial override could not
17
+ * supply.
18
+ */
19
+ export declare function resolveConfigForSize(config: ColophonConfig | undefined, size: OutputSize): ResolvedConfig;
20
+ //# sourceMappingURL=size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/config/size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,aAAa,CAAC;AAoBrB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAehB"}
@@ -0,0 +1,47 @@
1
+ import { DEFAULT_COLORS } from "./defaults.js";
2
+ import { resolveConfig } from "./index.js";
3
+ /**
4
+ * Merge a size's colour overrides onto the config's.
5
+ *
6
+ * A size may name any single shade, so the merge starts from the full default
7
+ * palette when the config sets no colours of its own. Starting from nothing
8
+ * instead would hand `resolveColors` a lone `foreground`, and its rule that a
9
+ * bare `brand` colours the whole gradient would then flatten the default
10
+ * gradient, so a size asking only for darker text would silently lose it.
11
+ */
12
+ function mergeColors(base, overrides) {
13
+ return { ...(base ?? DEFAULT_COLORS), ...overrides };
14
+ }
15
+ /**
16
+ * Apply a size's own overrides to a config and resolve the result: the config
17
+ * one image is actually rendered with.
18
+ *
19
+ * The overrides are folded into the user config and the whole thing resolved
20
+ * again, rather than patched onto an already-resolved config, so that anything
21
+ * derived stays consistent. A size that overrides `colors.brand` gets the
22
+ * default gradient rebuilt around its brand, exactly as a config setting the
23
+ * same colour at the top level would.
24
+ *
25
+ * `colors` and `code` merge over their config-level counterparts, because both
26
+ * are bags of independent settings and the point of the feature is to change
27
+ * one of them. The rest replace: a `background` is a union whose variants have
28
+ * different keys, so half of one over half of another is not a background at
29
+ * all, and `badge` carries a required `text` that a partial override could not
30
+ * supply.
31
+ */
32
+ export function resolveConfigForSize(config, size) {
33
+ const base = config ?? {};
34
+ return resolveConfig({
35
+ ...base,
36
+ ...(size.colors !== undefined && {
37
+ colors: mergeColors(base.colors, size.colors),
38
+ }),
39
+ ...(size.code !== undefined && { code: { ...base.code, ...size.code } }),
40
+ ...(size.background !== undefined && { background: size.background }),
41
+ ...(size.fontFamily !== undefined && { fontFamily: size.fontFamily }),
42
+ ...(size.footer !== undefined && { footer: size.footer }),
43
+ ...(size.badge !== undefined && { badge: size.badge }),
44
+ ...(size.logo !== undefined && { logo: size.logo }),
45
+ });
46
+ }
47
+ //# sourceMappingURL=size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/config/size.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;GAQG;AACH,SAAS,WAAW,CAClB,IAA6B,EAC7B,SAA+B;IAE/B,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkC,EAClC,IAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;IAE1B,OAAO,aAAa,CAAC;QACnB,GAAG,IAAI;QACP,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI;YAC/B,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;SAC9C,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;AACL,CAAC"}
package/dist/config.d.ts CHANGED
@@ -36,7 +36,11 @@ export declare const SIZE_PRESETS: {
36
36
  * they satisfy `og:image` and both `twitter:image` card types.
37
37
  */
38
38
  export declare const DEFAULT_SIZES: readonly OutputSize[];
39
- /** Default font stack. Override via `config.fontFamily` for branded fonts. */
39
+ /**
40
+ * Default font stack, used when no fonts are configured. It names families and
41
+ * hopes the machine has them, which is exactly what `config.fonts` exists to
42
+ * avoid: supply a font file and the output stops depending on the machine.
43
+ */
40
44
  export declare const DEFAULT_FONT_FAMILY = "Arial, Helvetica, sans-serif";
41
45
  /** Neutral default palette, used when no `colors.brand` is supplied. */
42
46
  export declare const DEFAULT_COLORS: Required<BrandColors>;
@@ -64,6 +68,28 @@ export declare const DEFAULT_CODE_STYLE: Required<CodeStyle>;
64
68
  export declare function defineConfig(config: ColophonConfig): ColophonConfig;
65
69
  /**
66
70
  * Apply defaults to a user config. Safe to call with no argument.
71
+ *
72
+ * Unknown options are rejected before anything is resolved, so a config
73
+ * written against a different version of the package is a build error rather
74
+ * than a set of images quietly rendered with the defaults.
67
75
  */
68
76
  export declare function resolveConfig(config?: ColophonConfig): ResolvedConfig;
77
+ /**
78
+ * Apply a size's own overrides to a config and resolve the result: the config
79
+ * one image is actually rendered with.
80
+ *
81
+ * The overrides are folded into the user config and the whole thing resolved
82
+ * again, rather than patched onto an already-resolved config, so that anything
83
+ * derived stays consistent — a size that overrides `colors.brand` gets the
84
+ * default gradient rebuilt around its brand, exactly as a config setting the
85
+ * same colour at the top level would.
86
+ *
87
+ * `colors` and `code` merge over their config-level counterparts, because both
88
+ * are bags of independent settings and the point of the feature is to change
89
+ * one of them. The rest replace: a `background` is a union whose variants have
90
+ * different keys, so half of one over half of another is not a background at
91
+ * all, and `badge` carries a required `text` that a partial override could not
92
+ * supply.
93
+ */
94
+ export declare function resolveConfigForSize(config: ColophonConfig | undefined, size: OutputSize): ResolvedConfig;
69
95
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;CACZ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CASlD,CAAC;AAWF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAEnE;AAoDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,cAAc,CAczE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EACX,SAAS,EACT,cAAc,EAEd,UAAU,EACV,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;CACZ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CASlD,CAAC;AAcF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAEnE;AA2ED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,cAAc,CAoBzE;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAchB"}