@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,71 @@
1
+ import { checkEach, checkKeys, isRecord } from "./check.js";
2
+ import { backgroundTypes, gradientBackgroundKeys, gradientPointKeys, backgroundFits, gradientStopKeys, imageBackgroundKeys, imageSourceKeys, scrimKeys, slugStrategies, solidBackgroundKeys, } from "./keys.js";
3
+ import { nearestName } from "./suggest.js";
4
+ /**
5
+ * Report a value that is not one of the names a field accepts. `noun` names
6
+ * the field, `plural` heads the list of what it does accept.
7
+ */
8
+ export function describeUnknownValue(noun, plural, value, known) {
9
+ const suggestion = nearestName(value, known);
10
+ return suggestion === undefined
11
+ ? `Unknown ${noun} "${value}". Valid ${plural}: ${known.join(", ")}.`
12
+ : `Unknown ${noun} "${value}". Did you mean "${suggestion}"?`;
13
+ }
14
+ /**
15
+ * Check a background against the keys of whichever variant it declares.
16
+ *
17
+ * A misspelt `type` is worth reporting on its own: `backgroundSvg` treats
18
+ * anything that is not `solid` as a gradient, so `gradiant` silently becomes
19
+ * one and then falls over on the stops it does not have. A background with no
20
+ * `type` at all is left alone, since the type is what says which keys apply,
21
+ * and guessing would report the keys rather than the omission.
22
+ */
23
+ export function checkBackground(background, path, problems) {
24
+ if (!isRecord(background)) {
25
+ return;
26
+ }
27
+ const { type, stops, from, to } = background;
28
+ if (type === "solid") {
29
+ checkKeys(background, path, solidBackgroundKeys, problems);
30
+ return;
31
+ }
32
+ if (type === "image") {
33
+ checkKeys(background, path, imageBackgroundKeys, problems);
34
+ checkKeys(background["source"], `${path}.source`, imageSourceKeys, problems);
35
+ checkKeys(background["scrim"], `${path}.scrim`, scrimKeys, problems);
36
+ checkFit(background["fit"], problems);
37
+ return;
38
+ }
39
+ if (type === "gradient") {
40
+ checkKeys(background, path, gradientBackgroundKeys, problems);
41
+ checkEach(stops, `${path}.stops`, gradientStopKeys, problems);
42
+ checkKeys(from, `${path}.from`, gradientPointKeys, problems);
43
+ checkKeys(to, `${path}.to`, gradientPointKeys, problems);
44
+ return;
45
+ }
46
+ if (typeof type === "string") {
47
+ problems.push(describeUnknownValue("background type", "types", type, backgroundTypes));
48
+ }
49
+ }
50
+ /** Check a background image's fit names one of the two there are. */
51
+ function checkFit(fit, problems) {
52
+ if (typeof fit !== "string" || backgroundFits.includes(fit)) {
53
+ return;
54
+ }
55
+ problems.push(describeUnknownValue("background fit", "fits", fit, backgroundFits));
56
+ }
57
+ /**
58
+ * Check the slug strategy names a real one. Only a string can be a strategy;
59
+ * anything else is a shape the type checker already covers, as elsewhere here.
60
+ */
61
+ export function checkSlugStrategy(content, problems) {
62
+ if (!isRecord(content)) {
63
+ return;
64
+ }
65
+ const strategy = content["slugStrategy"];
66
+ if (typeof strategy !== "string" || slugStrategies.includes(strategy)) {
67
+ return;
68
+ }
69
+ problems.push(describeUnknownValue("slug strategy", "strategies", strategy, slugStrategies));
70
+ }
71
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/validate/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ColophonConfig } from "./types.js";
2
+ /**
3
+ * Reject a config carrying options Colophon does not know.
4
+ *
5
+ * An unrecognised key is otherwise ignored in silence: the build succeeds, the
6
+ * option does nothing, and the images come out with the defaults in its place.
7
+ * That is at its worst across an upgrade, where a config that still reads
8
+ * correctly is describing images nobody is rendering.
9
+ *
10
+ * Only the closed parts of the config are checked. The names in `templates`
11
+ * are the project's own, and a post's props are open by design — a template
12
+ * reads whatever fields it understands.
13
+ */
14
+ export declare function validateConfig(config: ColophonConfig): void;
15
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,cAAc,EAMf,MAAM,YAAY,CAAC;AAsWpB;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAkC3D"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * The keys of one config object, as a list to check incoming keys against.
3
+ *
4
+ * Taking a `Record<keyof T, true>` rather than a plain array of strings is
5
+ * what keeps the list honest: adding an option to `types.ts` without listing
6
+ * it here fails the build, which is much better than the new option quietly
7
+ * becoming an unknown one.
8
+ */
9
+ function knownKeys(shape) {
10
+ return Object.keys(shape);
11
+ }
12
+ const configKeys = knownKeys({
13
+ colors: true,
14
+ background: true,
15
+ fonts: true,
16
+ systemFonts: true,
17
+ fontFamily: true,
18
+ footer: true,
19
+ badge: true,
20
+ code: true,
21
+ onWarning: true,
22
+ sizes: true,
23
+ templates: true,
24
+ content: true,
25
+ });
26
+ const contentKeys = knownKeys({
27
+ propsKey: true,
28
+ templateField: true,
29
+ defaultTemplate: true,
30
+ props: true,
31
+ slugField: true,
32
+ slugStrategy: true,
33
+ extensions: true,
34
+ });
35
+ const colorKeys = knownKeys({
36
+ brand: true,
37
+ brandDark: true,
38
+ brandWarm: true,
39
+ foreground: true,
40
+ });
41
+ const badgeKeys = knownKeys({
42
+ text: true,
43
+ color: true,
44
+ background: true,
45
+ });
46
+ const codeKeys = knownKeys({
47
+ theme: true,
48
+ fontFamily: true,
49
+ charWidthRatio: true,
50
+ lineHeight: true,
51
+ tabSize: true,
52
+ cornerScale: true,
53
+ maxFontScale: true,
54
+ minFontScale: true,
55
+ });
56
+ const sizeKeys = knownKeys({
57
+ name: true,
58
+ width: true,
59
+ height: true,
60
+ colors: true,
61
+ background: true,
62
+ fontFamily: true,
63
+ footer: true,
64
+ badge: true,
65
+ code: true,
66
+ });
67
+ /**
68
+ * Both font variants at once. Which of `path` and `data` a font may carry is
69
+ * `fonts.ts`'s ruling to make, and it has a better message for it than a list
70
+ * of keys could.
71
+ */
72
+ const fontKeys = [
73
+ ...new Set([
74
+ ...knownKeys({ family: true, path: true }),
75
+ ...knownKeys({ family: true, data: true }),
76
+ ]),
77
+ ];
78
+ const solidBackgroundKeys = knownKeys({
79
+ type: true,
80
+ color: true,
81
+ });
82
+ const gradientBackgroundKeys = knownKeys({
83
+ type: true,
84
+ stops: true,
85
+ from: true,
86
+ to: true,
87
+ });
88
+ const gradientStopKeys = knownKeys({
89
+ offset: true,
90
+ color: true,
91
+ });
92
+ const gradientPointKeys = knownKeys({ x: true, y: true });
93
+ /**
94
+ * The background variants, as values to check a declared `type` against. Typed
95
+ * against the union for the same reason the key lists are: a variant added to
96
+ * `Background` and not listed here would otherwise be reported as an unknown
97
+ * type, rejecting a config that is perfectly valid.
98
+ */
99
+ const backgroundTypes = knownKeys({
100
+ solid: true,
101
+ gradient: true,
102
+ });
103
+ /**
104
+ * The slug strategies, for the same reason as {@link backgroundTypes}:
105
+ * `slugFromPath` treats anything that is not `basename` as a route, so a
106
+ * mistyped `rout` would quietly re-slug a whole site rather than complain.
107
+ */
108
+ const slugStrategies = knownKeys({
109
+ basename: true,
110
+ route: true,
111
+ });
112
+ /**
113
+ * Options that have been renamed, keyed by where the old name turns up.
114
+ * Edit distance cannot connect a rename that changed the word — `dimensions`
115
+ * became `sizes` — and a config carried over from an older version is exactly
116
+ * where a bare "unknown option" helps least.
117
+ */
118
+ const renamedOptions = new Map([["dimensions", "sizes"]]);
119
+ function isRecord(value) {
120
+ return typeof value === "object" && value !== null && !Array.isArray(value);
121
+ }
122
+ function isList(value) {
123
+ return Array.isArray(value);
124
+ }
125
+ /**
126
+ * Levenshtein distance between two strings, used to work out which option a
127
+ * typo was aiming at. Both strings are option names and the lists are a
128
+ * handful of entries long, so the plain two-row dynamic program is ample.
129
+ */
130
+ function editDistance(a, b) {
131
+ let previous = Array.from({ length: b.length + 1 }, (_, index) => index);
132
+ for (let row = 1; row <= a.length; row += 1) {
133
+ const current = [row];
134
+ for (let column = 1; column <= b.length; column += 1) {
135
+ const cost = a[row - 1] === b[column - 1] ? 0 : 1;
136
+ // Every index here is within the row by construction; the fallbacks are
137
+ // there for `noUncheckedIndexedAccess` rather than for any real case.
138
+ current.push(Math.min((previous[column - 1] ?? 0) + cost, (previous[column] ?? 0) + 1, (current[column - 1] ?? 0) + 1));
139
+ }
140
+ previous = current;
141
+ }
142
+ return previous[b.length] ?? 0;
143
+ }
144
+ /**
145
+ * The known name a mistyped one was most likely meant to be, or `undefined`
146
+ * when nothing is close enough. A confident suggestion of something unrelated
147
+ * is worse than none, so the tolerance stays under the length of the name:
148
+ * a slip of a key or two earns a suggestion, a different word does not.
149
+ */
150
+ function nearestName(name, known) {
151
+ const tolerance = Math.min(name.length - 1, Math.max(2, Math.ceil(name.length / 4)));
152
+ let nearest;
153
+ let shortest = Infinity;
154
+ for (const candidate of known) {
155
+ // Case-insensitive: `tabsize` for `tabSize` is the same slip as a typo.
156
+ const distance = editDistance(name.toLowerCase(), candidate.toLowerCase());
157
+ if (distance < shortest) {
158
+ nearest = candidate;
159
+ shortest = distance;
160
+ }
161
+ }
162
+ return shortest <= tolerance ? nearest : undefined;
163
+ }
164
+ function describeUnknownOption(path, key, known) {
165
+ const suggestion = renamedOptions.get(path) ?? nearestName(key, known);
166
+ if (suggestion !== undefined) {
167
+ return `Unknown option "${path}". Did you mean "${suggestion}"?`;
168
+ }
169
+ return `Unknown option "${path}". Valid options here: ${known.join(", ")}.`;
170
+ }
171
+ /**
172
+ * Report every key of one config object that is not a known option. Anything
173
+ * that is not an object is left alone: the shape of a value is the type
174
+ * checker's business, and there are no keys to judge either way.
175
+ */
176
+ function checkKeys(value, path, known, problems) {
177
+ if (!isRecord(value)) {
178
+ return;
179
+ }
180
+ for (const key of Object.keys(value)) {
181
+ if (!known.includes(key)) {
182
+ problems.push(describeUnknownOption(path === "" ? key : `${path}.${key}`, key, known));
183
+ }
184
+ }
185
+ }
186
+ /** Check every entry of a list, naming each by its index. */
187
+ function checkEach(values, path, known, problems) {
188
+ if (!isList(values)) {
189
+ return;
190
+ }
191
+ for (const [index, value] of values.entries()) {
192
+ checkKeys(value, `${path}[${String(index)}]`, known, problems);
193
+ }
194
+ }
195
+ /**
196
+ * Check a background against the keys of whichever variant it declares.
197
+ *
198
+ * A misspelt `type` is worth reporting on its own: `backgroundSvg` treats
199
+ * anything that is not `solid` as a gradient, so `gradiant` silently becomes
200
+ * one and then falls over on the stops it does not have. A background with no
201
+ * `type` at all is left alone — the type is what says which keys apply, and
202
+ * guessing would report the keys rather than the omission.
203
+ */
204
+ function checkBackground(background, path, problems) {
205
+ if (!isRecord(background)) {
206
+ return;
207
+ }
208
+ const { type, stops, from, to } = background;
209
+ if (type === "solid") {
210
+ checkKeys(background, path, solidBackgroundKeys, problems);
211
+ return;
212
+ }
213
+ if (type === "gradient") {
214
+ checkKeys(background, path, gradientBackgroundKeys, problems);
215
+ checkEach(stops, `${path}.stops`, gradientStopKeys, problems);
216
+ checkKeys(from, `${path}.from`, gradientPointKeys, problems);
217
+ checkKeys(to, `${path}.to`, gradientPointKeys, problems);
218
+ return;
219
+ }
220
+ if (typeof type === "string") {
221
+ const suggestion = nearestName(type, backgroundTypes);
222
+ problems.push(suggestion === undefined
223
+ ? `Unknown background type "${type}". Valid types: ${backgroundTypes.join(", ")}.`
224
+ : `Unknown background type "${type}". Did you mean "${suggestion}"?`);
225
+ }
226
+ }
227
+ /**
228
+ * Check the slug strategy names a real one. Only a string can be a strategy;
229
+ * anything else is a shape the type checker already covers, as elsewhere here.
230
+ */
231
+ function checkSlugStrategy(content, problems) {
232
+ if (!isRecord(content)) {
233
+ return;
234
+ }
235
+ const strategy = content["slugStrategy"];
236
+ if (typeof strategy !== "string" || slugStrategies.includes(strategy)) {
237
+ return;
238
+ }
239
+ const suggestion = nearestName(strategy, slugStrategies);
240
+ problems.push(suggestion === undefined
241
+ ? `Unknown slug strategy "${strategy}". Valid strategies: ${slugStrategies.join(", ")}.`
242
+ : `Unknown slug strategy "${strategy}". Did you mean "${suggestion}"?`);
243
+ }
244
+ /**
245
+ * Check each output size, and the overrides it carries.
246
+ *
247
+ * A size is the one place the same option names appear twice over, so the paths
248
+ * matter more here than anywhere else: `sizes[1].code.minFontScal` has to say
249
+ * which size it is talking about to be worth reading at all.
250
+ */
251
+ function checkSizes(sizes, problems) {
252
+ if (!isList(sizes)) {
253
+ return;
254
+ }
255
+ for (const [index, size] of sizes.entries()) {
256
+ const path = `sizes[${String(index)}]`;
257
+ checkKeys(size, path, sizeKeys, problems);
258
+ if (!isRecord(size)) {
259
+ continue;
260
+ }
261
+ checkKeys(size["colors"], `${path}.colors`, colorKeys, problems);
262
+ checkKeys(size["badge"], `${path}.badge`, badgeKeys, problems);
263
+ checkKeys(size["code"], `${path}.code`, codeKeys, problems);
264
+ checkBackground(size["background"], `${path}.background`, problems);
265
+ }
266
+ }
267
+ /**
268
+ * Reject a config carrying options Colophon does not know.
269
+ *
270
+ * An unrecognised key is otherwise ignored in silence: the build succeeds, the
271
+ * option does nothing, and the images come out with the defaults in its place.
272
+ * That is at its worst across an upgrade, where a config that still reads
273
+ * correctly is describing images nobody is rendering.
274
+ *
275
+ * Only the closed parts of the config are checked. The names in `templates`
276
+ * are the project's own, and a post's props are open by design — a template
277
+ * reads whatever fields it understands.
278
+ */
279
+ export function validateConfig(config) {
280
+ // The types say what should be here; validation exists for when it is not.
281
+ const raw = config;
282
+ const problems = [];
283
+ checkKeys(config, "", configKeys, problems);
284
+ checkKeys(raw.colors, "colors", colorKeys, problems);
285
+ checkKeys(raw.badge, "badge", badgeKeys, problems);
286
+ checkKeys(raw.code, "code", codeKeys, problems);
287
+ checkKeys(raw.content, "content", contentKeys, problems);
288
+ checkSlugStrategy(raw.content, problems);
289
+ checkSizes(raw.sizes, problems);
290
+ checkEach(raw.fonts, "fonts", fontKeys, problems);
291
+ checkBackground(raw.background, "background", problems);
292
+ const [first, ...rest] = problems;
293
+ if (first === undefined) {
294
+ return;
295
+ }
296
+ throw new Error(rest.length === 0
297
+ ? first
298
+ : `Invalid config:\n${problems.map((problem) => ` - ${problem}`).join("\n")}`);
299
+ }
300
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,12 +8,12 @@
8
8
  },
9
9
  "homepage": "https://github.com/KensioSoftware/colophon#readme",
10
10
  "license": "Apache-2.0",
11
- "version": "2.2.0",
11
+ "version": "2.4.0",
12
12
  "type": "module",
13
13
  "main": "./dist/index.js",
14
14
  "types": "./dist/index.d.ts",
15
15
  "bin": {
16
- "colophon": "./dist/cli.js"
16
+ "colophon": "./dist/cli/index.js"
17
17
  },
18
18
  "exports": {
19
19
  ".": {
@@ -24,6 +24,14 @@
24
24
  "types": "./dist/content/index.d.ts",
25
25
  "import": "./dist/content/index.js"
26
26
  },
27
+ "./layout": {
28
+ "types": "./dist/layout/index.d.ts",
29
+ "import": "./dist/layout/index.js"
30
+ },
31
+ "./meta": {
32
+ "types": "./dist/meta/index.d.ts",
33
+ "import": "./dist/meta/index.js"
34
+ },
27
35
  "./package.json": "./package.json"
28
36
  },
29
37
  "files": [
@@ -36,7 +44,7 @@
36
44
  },
37
45
  "sideEffects": false,
38
46
  "engines": {
39
- "node": ">=22.0.0"
47
+ "node": ">=22.2.0"
40
48
  },
41
49
  "keywords": [
42
50
  "open-graph",
@@ -47,7 +55,7 @@
47
55
  "frontmatter",
48
56
  "static-site",
49
57
  "svg",
50
- "sharp",
58
+ "resvg",
51
59
  "syntax-highlighting",
52
60
  "code-image",
53
61
  "shiki"
@@ -56,16 +64,19 @@
56
64
  "@eslint/js": "^10.0.1",
57
65
  "@kensio/smartass": "^1.33.0",
58
66
  "@types/eslint-plugin-security": "^3.0.1",
67
+ "@types/fontkit": "^2.0.9",
59
68
  "@types/node": "^26.0.0",
60
69
  "@typescript/native": "npm:typescript@^7.0.2",
61
70
  "@vitest/coverage-v8": "^4.1.10",
62
71
  "@vitest/eslint-plugin": "^1.6.22",
72
+ "dejavu-fonts-ttf": "^2.37.3",
63
73
  "eslint": "^10.6.0",
64
74
  "eslint-config-prettier": "^10.1.8",
65
75
  "eslint-plugin-jsdoc": "^63.0.13",
66
76
  "eslint-plugin-no-secrets": "^2.3.3",
67
77
  "eslint-plugin-security": "^4.0.1",
68
78
  "eslint-plugin-unicorn": "^69.0.0",
79
+ "fta-cli": "^3.0.0",
69
80
  "globals": "^17.7.0",
70
81
  "jiti": "^2.7.0",
71
82
  "prettier": "^3.9.5",
@@ -74,8 +85,9 @@
74
85
  "vitest": "^4.1.10"
75
86
  },
76
87
  "dependencies": {
88
+ "@resvg/resvg-js": "^2.6.2",
89
+ "fontkit": "^2.0.4",
77
90
  "gray-matter": "^4.0.3",
78
- "sharp": "^0.35.3",
79
91
  "shiki": "^4.3.1"
80
92
  },
81
93
  "scripts": {
@@ -86,6 +98,7 @@
86
98
  "test": "vitest run",
87
99
  "test:coverage": "vitest run --coverage",
88
100
  "samples": "pnpm build && node scripts/gen-samples.ts",
89
- "check": "pnpm fmt && pnpm build:check && pnpm test:coverage"
101
+ "fta": "./scripts/sh/fta.sh",
102
+ "check": "pnpm fmt && pnpm fta && pnpm build:check && pnpm test:coverage"
90
103
  }
91
104
  }