@kensio/colophon 2.5.0 → 2.6.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 (622) hide show
  1. package/README.md +91 -13
  2. package/dist/astro/index.d.ts +49 -0
  3. package/dist/astro/index.d.ts.map +1 -0
  4. package/dist/astro/index.js +42 -0
  5. package/dist/astro/index.js.map +1 -0
  6. package/dist/cli/args/command.d.ts +13 -0
  7. package/dist/cli/args/command.d.ts.map +1 -0
  8. package/dist/cli/args/command.js +22 -0
  9. package/dist/cli/args/command.js.map +1 -0
  10. package/dist/cli/args/index.d.ts +28 -0
  11. package/dist/cli/args/index.d.ts.map +1 -0
  12. package/dist/cli/args/index.js +75 -0
  13. package/dist/cli/args/index.js.map +1 -0
  14. package/dist/cli/args/switches.d.ts +18 -0
  15. package/dist/cli/args/switches.d.ts.map +1 -0
  16. package/dist/cli/args/switches.js +42 -0
  17. package/dist/cli/args/switches.js.map +1 -0
  18. package/dist/cli/args/usage.d.ts +3 -0
  19. package/dist/cli/args/usage.d.ts.map +1 -0
  20. package/dist/cli/args/usage.js +34 -0
  21. package/dist/cli/args/usage.js.map +1 -0
  22. package/dist/cli/args/values.d.ts +11 -0
  23. package/dist/cli/args/values.d.ts.map +1 -0
  24. package/dist/cli/args/values.js +29 -0
  25. package/dist/cli/args/values.js.map +1 -0
  26. package/dist/cli/build.d.ts +10 -0
  27. package/dist/cli/build.d.ts.map +1 -0
  28. package/dist/cli/build.js +41 -0
  29. package/dist/cli/build.js.map +1 -0
  30. package/dist/cli/eject/adapters.d.ts +20 -0
  31. package/dist/cli/eject/adapters.d.ts.map +1 -0
  32. package/dist/cli/eject/adapters.js +29 -0
  33. package/dist/cli/eject/adapters.js.map +1 -0
  34. package/dist/cli/eject/astro.d.ts +13 -0
  35. package/dist/cli/eject/astro.d.ts.map +1 -0
  36. package/dist/cli/eject/astro.js +35 -0
  37. package/dist/cli/eject/astro.js.map +1 -0
  38. package/dist/cli/eject/hugo.d.ts +19 -0
  39. package/dist/cli/eject/hugo.d.ts.map +1 -0
  40. package/dist/cli/eject/hugo.js +127 -0
  41. package/dist/cli/eject/hugo.js.map +1 -0
  42. package/dist/cli/eject/index.d.ts +15 -0
  43. package/dist/cli/eject/index.d.ts.map +1 -0
  44. package/dist/cli/eject/index.js +46 -0
  45. package/dist/cli/eject/index.js.map +1 -0
  46. package/dist/cli/index.js +25 -20
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/init/fs.d.ts +5 -0
  49. package/dist/cli/init/fs.d.ts.map +1 -0
  50. package/dist/cli/init/fs.js +19 -0
  51. package/dist/cli/init/fs.js.map +1 -0
  52. package/dist/cli/init/guess.d.ts +9 -0
  53. package/dist/cli/init/guess.d.ts.map +1 -0
  54. package/dist/cli/init/guess.js +27 -0
  55. package/dist/cli/init/guess.js.map +1 -0
  56. package/dist/cli/init/index.d.ts +11 -0
  57. package/dist/cli/init/index.d.ts.map +1 -0
  58. package/dist/cli/init/index.js +36 -0
  59. package/dist/cli/init/index.js.map +1 -0
  60. package/dist/cli/init/module.d.ts +12 -0
  61. package/dist/cli/init/module.d.ts.map +1 -0
  62. package/dist/cli/init/module.js +45 -0
  63. package/dist/cli/init/module.js.map +1 -0
  64. package/dist/cli/init/scaffold.d.ts +10 -0
  65. package/dist/cli/init/scaffold.d.ts.map +1 -0
  66. package/dist/cli/init/scaffold.js +52 -0
  67. package/dist/cli/init/scaffold.js.map +1 -0
  68. package/dist/cli/message.d.ts +7 -0
  69. package/dist/cli/message.d.ts.map +1 -0
  70. package/dist/cli/message.js +9 -0
  71. package/dist/cli/message.js.map +1 -0
  72. package/dist/cli/preview/index.d.ts +13 -0
  73. package/dist/cli/preview/index.d.ts.map +1 -0
  74. package/dist/cli/preview/index.js +27 -0
  75. package/dist/cli/preview/index.js.map +1 -0
  76. package/dist/cli/preview/open.d.ts +10 -0
  77. package/dist/cli/preview/open.d.ts.map +1 -0
  78. package/dist/cli/preview/open.js +32 -0
  79. package/dist/cli/preview/open.js.map +1 -0
  80. package/dist/cli/preview/render.d.ts +23 -0
  81. package/dist/cli/preview/render.d.ts.map +1 -0
  82. package/dist/cli/preview/render.js +40 -0
  83. package/dist/cli/preview/render.js.map +1 -0
  84. package/dist/cli/preview/root.d.ts +17 -0
  85. package/dist/cli/preview/root.d.ts.map +1 -0
  86. package/dist/cli/preview/root.js +22 -0
  87. package/dist/cli/preview/root.js.map +1 -0
  88. package/dist/cli/preview/size.d.ts +7 -0
  89. package/dist/cli/preview/size.d.ts.map +1 -0
  90. package/dist/cli/preview/size.js +13 -0
  91. package/dist/cli/preview/size.js.map +1 -0
  92. package/dist/cli/report.d.ts +6 -0
  93. package/dist/cli/report.d.ts.map +1 -0
  94. package/dist/cli/report.js +23 -0
  95. package/dist/cli/report.js.map +1 -0
  96. package/dist/cli/watch/filter.d.ts +14 -0
  97. package/dist/cli/watch/filter.d.ts.map +1 -0
  98. package/dist/cli/watch/filter.js +16 -0
  99. package/dist/cli/watch/filter.js.map +1 -0
  100. package/dist/cli/watch/index.d.ts +27 -0
  101. package/dist/cli/watch/index.d.ts.map +1 -0
  102. package/dist/cli/watch/index.js +38 -0
  103. package/dist/cli/watch/index.js.map +1 -0
  104. package/dist/cli/watch/queue.d.ts +24 -0
  105. package/dist/cli/watch/queue.d.ts.map +1 -0
  106. package/dist/cli/watch/queue.js +57 -0
  107. package/dist/cli/watch/queue.js.map +1 -0
  108. package/dist/config/defaults.d.ts +39 -1
  109. package/dist/config/defaults.d.ts.map +1 -1
  110. package/dist/config/defaults.js +38 -0
  111. package/dist/config/defaults.js.map +1 -1
  112. package/dist/config/index.d.ts +1 -1
  113. package/dist/config/index.d.ts.map +1 -1
  114. package/dist/config/index.js +18 -4
  115. package/dist/config/index.js.map +1 -1
  116. package/dist/config/output.d.ts +26 -0
  117. package/dist/config/output.d.ts.map +1 -0
  118. package/dist/config/output.js +45 -0
  119. package/dist/config/output.js.map +1 -0
  120. package/dist/config/resolve.d.ts +10 -0
  121. package/dist/config/resolve.d.ts.map +1 -1
  122. package/dist/config/resolve.js +20 -1
  123. package/dist/config/resolve.js.map +1 -1
  124. package/dist/content/index.d.ts +1 -0
  125. package/dist/content/index.d.ts.map +1 -1
  126. package/dist/content/index.js +1 -0
  127. package/dist/content/index.js.map +1 -1
  128. package/dist/content/read.d.ts +15 -0
  129. package/dist/content/read.d.ts.map +1 -0
  130. package/dist/content/read.js +36 -0
  131. package/dist/content/read.js.map +1 -0
  132. package/dist/content/walk.d.ts.map +1 -1
  133. package/dist/content/walk.js +4 -30
  134. package/dist/content/walk.js.map +1 -1
  135. package/dist/core/index.d.ts +37 -0
  136. package/dist/core/index.d.ts.map +1 -0
  137. package/dist/core/index.js +13 -0
  138. package/dist/core/index.js.map +1 -0
  139. package/dist/encode/fit.d.ts +16 -0
  140. package/dist/encode/fit.d.ts.map +1 -0
  141. package/dist/encode/fit.js +23 -0
  142. package/dist/encode/fit.js.map +1 -0
  143. package/dist/encode/format.d.ts +12 -0
  144. package/dist/encode/format.d.ts.map +1 -0
  145. package/dist/encode/format.js +40 -0
  146. package/dist/encode/format.js.map +1 -0
  147. package/dist/encode/index.d.ts +14 -0
  148. package/dist/encode/index.d.ts.map +1 -0
  149. package/dist/encode/index.js +52 -0
  150. package/dist/encode/index.js.map +1 -0
  151. package/dist/encode/sharp.d.ts +19 -0
  152. package/dist/encode/sharp.d.ts.map +1 -0
  153. package/dist/encode/sharp.js +57 -0
  154. package/dist/encode/sharp.js.map +1 -0
  155. package/dist/encode/warn.d.ts +10 -0
  156. package/dist/encode/warn.d.ts.map +1 -0
  157. package/dist/encode/warn.js +31 -0
  158. package/dist/encode/warn.js.map +1 -0
  159. package/dist/fonts/resolve.d.ts.map +1 -1
  160. package/dist/fonts/resolve.js +2 -8
  161. package/dist/fonts/resolve.js.map +1 -1
  162. package/dist/generate/index.d.ts +4 -0
  163. package/dist/generate/index.d.ts.map +1 -1
  164. package/dist/generate/index.js +10 -4
  165. package/dist/generate/index.js.map +1 -1
  166. package/dist/generate/options.d.ts +11 -1
  167. package/dist/generate/options.d.ts.map +1 -1
  168. package/dist/generate/options.js.map +1 -1
  169. package/dist/generate/output-path.d.ts +6 -2
  170. package/dist/generate/output-path.d.ts.map +1 -1
  171. package/dist/generate/output-path.js +7 -2
  172. package/dist/generate/output-path.js.map +1 -1
  173. package/dist/generate/plan.d.ts.map +1 -1
  174. package/dist/generate/plan.js +3 -3
  175. package/dist/generate/plan.js.map +1 -1
  176. package/dist/generate/render-image.d.ts +6 -0
  177. package/dist/generate/render-image.d.ts.map +1 -1
  178. package/dist/generate/render-image.js +14 -4
  179. package/dist/generate/render-image.js.map +1 -1
  180. package/dist/image/index.d.ts +3 -1
  181. package/dist/image/index.d.ts.map +1 -1
  182. package/dist/image/index.js +4 -3
  183. package/dist/image/index.js.map +1 -1
  184. package/dist/image/jpeg.d.ts +5 -4
  185. package/dist/image/jpeg.d.ts.map +1 -1
  186. package/dist/image/jpeg.js +13 -36
  187. package/dist/image/jpeg.js.map +1 -1
  188. package/dist/image/load.d.ts.map +1 -1
  189. package/dist/image/load.js +4 -15
  190. package/dist/image/load.js.map +1 -1
  191. package/dist/image/resolve.d.ts.map +1 -1
  192. package/dist/image/resolve.js +2 -8
  193. package/dist/image/resolve.js.map +1 -1
  194. package/dist/image/uri.d.ts.map +1 -1
  195. package/dist/image/uri.js +2 -3
  196. package/dist/image/uri.js.map +1 -1
  197. package/dist/index.d.ts +8 -4
  198. package/dist/index.d.ts.map +1 -1
  199. package/dist/index.js +10 -3
  200. package/dist/index.js.map +1 -1
  201. package/dist/jpeg/index.d.ts +10 -0
  202. package/dist/jpeg/index.d.ts.map +1 -0
  203. package/dist/jpeg/index.js +2 -0
  204. package/dist/jpeg/index.js.map +1 -0
  205. package/dist/jpeg/segments.d.ts +32 -0
  206. package/dist/jpeg/segments.d.ts.map +1 -0
  207. package/dist/jpeg/segments.js +66 -0
  208. package/dist/jpeg/segments.js.map +1 -0
  209. package/dist/layout/draw.d.ts +20 -0
  210. package/dist/layout/draw.d.ts.map +1 -0
  211. package/dist/layout/draw.js +32 -0
  212. package/dist/layout/draw.js.map +1 -0
  213. package/dist/layout/extent.d.ts +19 -0
  214. package/dist/layout/extent.d.ts.map +1 -0
  215. package/dist/layout/extent.js +24 -0
  216. package/dist/layout/extent.js.map +1 -0
  217. package/dist/layout/index.d.ts +7 -4
  218. package/dist/layout/index.d.ts.map +1 -1
  219. package/dist/layout/index.js +5 -3
  220. package/dist/layout/index.js.map +1 -1
  221. package/dist/layout/lines.d.ts +0 -17
  222. package/dist/layout/lines.d.ts.map +1 -1
  223. package/dist/layout/lines.js +2 -35
  224. package/dist/layout/lines.js.map +1 -1
  225. package/dist/measure/faces.d.ts.map +1 -1
  226. package/dist/measure/faces.js +8 -2
  227. package/dist/measure/faces.js.map +1 -1
  228. package/dist/meta/index.d.ts +1 -0
  229. package/dist/meta/index.d.ts.map +1 -1
  230. package/dist/meta/index.js +1 -0
  231. package/dist/meta/index.js.map +1 -1
  232. package/dist/meta/path.d.ts +24 -0
  233. package/dist/meta/path.d.ts.map +1 -0
  234. package/dist/meta/path.js +41 -0
  235. package/dist/meta/path.js.map +1 -0
  236. package/dist/meta/tags.d.ts.map +1 -1
  237. package/dist/meta/tags.js +6 -1
  238. package/dist/meta/tags.js.map +1 -1
  239. package/dist/placement/index.d.ts +7 -2
  240. package/dist/placement/index.d.ts.map +1 -1
  241. package/dist/placement/index.js +9 -3
  242. package/dist/placement/index.js.map +1 -1
  243. package/dist/placement/relative.d.ts +8 -3
  244. package/dist/placement/relative.d.ts.map +1 -1
  245. package/dist/placement/relative.js +12 -5
  246. package/dist/placement/relative.js.map +1 -1
  247. package/dist/platform/base64.d.ts +13 -0
  248. package/dist/platform/base64.d.ts.map +1 -0
  249. package/dist/platform/base64.js +35 -0
  250. package/dist/platform/base64.js.map +1 -0
  251. package/dist/platform/rasteriser.browser.d.ts +16 -0
  252. package/dist/platform/rasteriser.browser.d.ts.map +1 -0
  253. package/dist/platform/rasteriser.browser.js +20 -0
  254. package/dist/platform/rasteriser.browser.js.map +1 -0
  255. package/dist/platform/rasteriser.node.d.ts +2 -0
  256. package/dist/platform/rasteriser.node.d.ts.map +1 -0
  257. package/dist/platform/rasteriser.node.js +2 -0
  258. package/dist/platform/rasteriser.node.js.map +1 -0
  259. package/dist/platform/read-file.browser.d.ts +17 -0
  260. package/dist/platform/read-file.browser.d.ts.map +1 -0
  261. package/dist/platform/read-file.browser.js +23 -0
  262. package/dist/platform/read-file.browser.js.map +1 -0
  263. package/dist/platform/read-file.node.d.ts +19 -0
  264. package/dist/platform/read-file.node.d.ts.map +1 -0
  265. package/dist/platform/read-file.node.js +31 -0
  266. package/dist/platform/read-file.node.js.map +1 -0
  267. package/dist/png/chunk.d.ts +23 -0
  268. package/dist/png/chunk.d.ts.map +1 -0
  269. package/dist/png/chunk.js +48 -0
  270. package/dist/png/chunk.js.map +1 -0
  271. package/dist/png/index.d.ts +13 -0
  272. package/dist/png/index.d.ts.map +1 -0
  273. package/dist/png/index.js +3 -0
  274. package/dist/png/index.js.map +1 -0
  275. package/dist/png/recompress.d.ts +23 -0
  276. package/dist/png/recompress.d.ts.map +1 -0
  277. package/dist/png/recompress.js +81 -0
  278. package/dist/png/recompress.js.map +1 -0
  279. package/dist/props.d.ts +11 -0
  280. package/dist/props.d.ts.map +1 -1
  281. package/dist/props.js +16 -0
  282. package/dist/props.js.map +1 -1
  283. package/dist/render/image.d.ts +20 -0
  284. package/dist/render/image.d.ts.map +1 -0
  285. package/dist/render/image.js +29 -0
  286. package/dist/render/image.js.map +1 -0
  287. package/dist/render/index.d.ts +2 -1
  288. package/dist/render/index.d.ts.map +1 -1
  289. package/dist/render/index.js +5 -4
  290. package/dist/render/index.js.map +1 -1
  291. package/dist/render/png.d.ts +14 -4
  292. package/dist/render/png.d.ts.map +1 -1
  293. package/dist/render/png.js +22 -23
  294. package/dist/render/png.js.map +1 -1
  295. package/dist/render/rasterise.d.ts +15 -0
  296. package/dist/render/rasterise.d.ts.map +1 -0
  297. package/dist/render/rasterise.js +34 -0
  298. package/dist/render/rasterise.js.map +1 -0
  299. package/dist/render/svg.d.ts.map +1 -1
  300. package/dist/render/svg.js +1 -0
  301. package/dist/render/svg.js.map +1 -1
  302. package/dist/sign/base64url.d.ts +16 -0
  303. package/dist/sign/base64url.d.ts.map +1 -0
  304. package/dist/sign/base64url.js +24 -0
  305. package/dist/sign/base64url.js.map +1 -0
  306. package/dist/sign/index.d.ts +49 -0
  307. package/dist/sign/index.d.ts.map +1 -0
  308. package/dist/sign/index.js +133 -0
  309. package/dist/sign/index.js.map +1 -0
  310. package/dist/stamp/carrier/index.d.ts +7 -0
  311. package/dist/stamp/carrier/index.d.ts.map +1 -0
  312. package/dist/stamp/carrier/index.js +27 -0
  313. package/dist/stamp/carrier/index.js.map +1 -0
  314. package/dist/stamp/carrier/isobmff.d.ts +7 -0
  315. package/dist/stamp/carrier/isobmff.d.ts.map +1 -0
  316. package/dist/stamp/carrier/isobmff.js +55 -0
  317. package/dist/stamp/carrier/isobmff.js.map +1 -0
  318. package/dist/stamp/carrier/jpeg.d.ts +4 -0
  319. package/dist/stamp/carrier/jpeg.d.ts.map +1 -0
  320. package/dist/stamp/carrier/jpeg.js +76 -0
  321. package/dist/stamp/carrier/jpeg.js.map +1 -0
  322. package/dist/stamp/carrier/png.d.ts +7 -0
  323. package/dist/stamp/carrier/png.d.ts.map +1 -0
  324. package/dist/stamp/carrier/png.js +50 -0
  325. package/dist/stamp/carrier/png.js.map +1 -0
  326. package/dist/stamp/carrier/riff.d.ts +4 -0
  327. package/dist/stamp/carrier/riff.d.ts.map +1 -0
  328. package/dist/stamp/carrier/riff.js +54 -0
  329. package/dist/stamp/carrier/riff.js.map +1 -0
  330. package/dist/stamp/carrier/types.d.ts +25 -0
  331. package/dist/stamp/carrier/types.d.ts.map +1 -0
  332. package/dist/stamp/carrier/types.js +2 -0
  333. package/dist/stamp/carrier/types.js.map +1 -0
  334. package/dist/stamp/chunk.d.ts +0 -2
  335. package/dist/stamp/chunk.d.ts.map +1 -1
  336. package/dist/stamp/chunk.js +10 -18
  337. package/dist/stamp/chunk.js.map +1 -1
  338. package/dist/stamp/config-digest.d.ts +18 -0
  339. package/dist/stamp/config-digest.d.ts.map +1 -1
  340. package/dist/stamp/config-digest.js +24 -0
  341. package/dist/stamp/config-digest.js.map +1 -1
  342. package/dist/stamp/index.d.ts +2 -2
  343. package/dist/stamp/index.d.ts.map +1 -1
  344. package/dist/stamp/index.js +2 -2
  345. package/dist/stamp/index.js.map +1 -1
  346. package/dist/stamp/payload.d.ts +28 -0
  347. package/dist/stamp/payload.d.ts.map +1 -0
  348. package/dist/stamp/payload.js +42 -0
  349. package/dist/stamp/payload.js.map +1 -0
  350. package/dist/stamp/read.d.ts +5 -4
  351. package/dist/stamp/read.d.ts.map +1 -1
  352. package/dist/stamp/read.js +26 -43
  353. package/dist/stamp/read.js.map +1 -1
  354. package/dist/stamp/window.d.ts +11 -0
  355. package/dist/stamp/window.d.ts.map +1 -0
  356. package/dist/stamp/window.js +11 -0
  357. package/dist/stamp/window.js.map +1 -0
  358. package/dist/stamp/write.d.ts +21 -0
  359. package/dist/stamp/write.d.ts.map +1 -0
  360. package/dist/stamp/write.js +31 -0
  361. package/dist/stamp/write.js.map +1 -0
  362. package/dist/templates/article/bottom.d.ts +15 -0
  363. package/dist/templates/article/bottom.d.ts.map +1 -0
  364. package/dist/templates/article/bottom.js +61 -0
  365. package/dist/templates/article/bottom.js.map +1 -0
  366. package/dist/templates/article/index.d.ts +12 -0
  367. package/dist/templates/article/index.d.ts.map +1 -0
  368. package/dist/templates/article/index.js +42 -0
  369. package/dist/templates/article/index.js.map +1 -0
  370. package/dist/templates/article/lines.d.ts +27 -0
  371. package/dist/templates/article/lines.d.ts.map +1 -0
  372. package/dist/templates/article/lines.js +53 -0
  373. package/dist/templates/article/lines.js.map +1 -0
  374. package/dist/templates/article/tags.d.ts +25 -0
  375. package/dist/templates/article/tags.d.ts.map +1 -0
  376. package/dist/templates/article/tags.js +63 -0
  377. package/dist/templates/article/tags.js.map +1 -0
  378. package/dist/templates/attribution.d.ts +2 -6
  379. package/dist/templates/attribution.d.ts.map +1 -1
  380. package/dist/templates/attribution.js +8 -22
  381. package/dist/templates/attribution.js.map +1 -1
  382. package/dist/templates/banner/version.d.ts.map +1 -1
  383. package/dist/templates/banner/version.js +4 -4
  384. package/dist/templates/banner/version.js.map +1 -1
  385. package/dist/templates/bottom.d.ts +23 -0
  386. package/dist/templates/bottom.d.ts.map +1 -0
  387. package/dist/templates/bottom.js +37 -0
  388. package/dist/templates/bottom.js.map +1 -0
  389. package/dist/templates/byline.d.ts +19 -0
  390. package/dist/templates/byline.d.ts.map +1 -0
  391. package/dist/templates/byline.js +45 -0
  392. package/dist/templates/byline.js.map +1 -0
  393. package/dist/templates/code/clip.js +1 -1
  394. package/dist/templates/code/clip.js.map +1 -1
  395. package/dist/templates/code/fit.js +1 -1
  396. package/dist/templates/code/fit.js.map +1 -1
  397. package/dist/templates/code/warn.d.ts +1 -1
  398. package/dist/templates/code/warn.d.ts.map +1 -1
  399. package/dist/templates/code/warn.js +2 -2
  400. package/dist/templates/code/warn.js.map +1 -1
  401. package/dist/templates/docs/chrome.d.ts +17 -0
  402. package/dist/templates/docs/chrome.d.ts.map +1 -0
  403. package/dist/templates/docs/chrome.js +44 -0
  404. package/dist/templates/docs/chrome.js.map +1 -0
  405. package/dist/templates/docs/crumbs.d.ts +14 -0
  406. package/dist/templates/docs/crumbs.d.ts.map +1 -0
  407. package/dist/templates/docs/crumbs.js +32 -0
  408. package/dist/templates/docs/crumbs.js.map +1 -0
  409. package/dist/templates/docs/index.d.ts +13 -0
  410. package/dist/templates/docs/index.d.ts.map +1 -0
  411. package/dist/templates/docs/index.js +47 -0
  412. package/dist/templates/docs/index.js.map +1 -0
  413. package/dist/templates/docs/lines.d.ts +14 -0
  414. package/dist/templates/docs/lines.d.ts.map +1 -0
  415. package/dist/templates/docs/lines.js +29 -0
  416. package/dist/templates/docs/lines.js.map +1 -0
  417. package/dist/templates/event/index.d.ts +12 -0
  418. package/dist/templates/event/index.d.ts.map +1 -0
  419. package/dist/templates/event/index.js +59 -0
  420. package/dist/templates/event/index.js.map +1 -0
  421. package/dist/templates/event/lines.d.ts +14 -0
  422. package/dist/templates/event/lines.d.ts.map +1 -0
  423. package/dist/templates/event/lines.js +29 -0
  424. package/dist/templates/event/lines.js.map +1 -0
  425. package/dist/templates/event/plate.d.ts +16 -0
  426. package/dist/templates/event/plate.d.ts.map +1 -0
  427. package/dist/templates/event/plate.js +36 -0
  428. package/dist/templates/event/plate.js.map +1 -0
  429. package/dist/templates/frame.d.ts +68 -0
  430. package/dist/templates/frame.d.ts.map +1 -0
  431. package/dist/templates/frame.js +63 -0
  432. package/dist/templates/frame.js.map +1 -0
  433. package/dist/templates/index.d.ts +9 -0
  434. package/dist/templates/index.d.ts.map +1 -1
  435. package/dist/templates/index.js +27 -0
  436. package/dist/templates/index.js.map +1 -1
  437. package/dist/templates/photo/index.d.ts +17 -0
  438. package/dist/templates/photo/index.d.ts.map +1 -0
  439. package/dist/templates/photo/index.js +51 -0
  440. package/dist/templates/photo/index.js.map +1 -0
  441. package/dist/templates/photo/lines.d.ts +21 -0
  442. package/dist/templates/photo/lines.d.ts.map +1 -0
  443. package/dist/templates/photo/lines.js +36 -0
  444. package/dist/templates/photo/lines.js.map +1 -0
  445. package/dist/templates/pill.d.ts +33 -0
  446. package/dist/templates/pill.d.ts.map +1 -0
  447. package/dist/templates/pill.js +50 -0
  448. package/dist/templates/pill.js.map +1 -0
  449. package/dist/templates/portrait.d.ts +40 -0
  450. package/dist/templates/portrait.d.ts.map +1 -0
  451. package/dist/templates/portrait.js +56 -0
  452. package/dist/templates/portrait.js.map +1 -0
  453. package/dist/templates/quote/index.d.ts +11 -0
  454. package/dist/templates/quote/index.d.ts.map +1 -0
  455. package/dist/templates/quote/index.js +60 -0
  456. package/dist/templates/quote/index.js.map +1 -0
  457. package/dist/templates/quote/lines.d.ts +24 -0
  458. package/dist/templates/quote/lines.d.ts.map +1 -0
  459. package/dist/templates/quote/lines.js +35 -0
  460. package/dist/templates/quote/lines.js.map +1 -0
  461. package/dist/templates/quote/mark.d.ts +13 -0
  462. package/dist/templates/quote/mark.d.ts.map +1 -0
  463. package/dist/templates/quote/mark.js +39 -0
  464. package/dist/templates/quote/mark.js.map +1 -0
  465. package/dist/templates/quote/speaker.d.ts +18 -0
  466. package/dist/templates/quote/speaker.d.ts.map +1 -0
  467. package/dist/templates/quote/speaker.js +41 -0
  468. package/dist/templates/quote/speaker.js.map +1 -0
  469. package/dist/templates/release/block.d.ts +8 -0
  470. package/dist/templates/release/block.d.ts.map +1 -0
  471. package/dist/templates/release/block.js +16 -0
  472. package/dist/templates/release/block.js.map +1 -0
  473. package/dist/templates/release/changes.d.ts +23 -0
  474. package/dist/templates/release/changes.d.ts.map +1 -0
  475. package/dist/templates/release/changes.js +45 -0
  476. package/dist/templates/release/changes.js.map +1 -0
  477. package/dist/templates/release/index.d.ts +11 -0
  478. package/dist/templates/release/index.d.ts.map +1 -0
  479. package/dist/templates/release/index.js +55 -0
  480. package/dist/templates/release/index.js.map +1 -0
  481. package/dist/templates/release/lines.d.ts +21 -0
  482. package/dist/templates/release/lines.d.ts.map +1 -0
  483. package/dist/templates/release/lines.js +36 -0
  484. package/dist/templates/release/lines.js.map +1 -0
  485. package/dist/templates/stat/index.d.ts +11 -0
  486. package/dist/templates/stat/index.d.ts.map +1 -0
  487. package/dist/templates/stat/index.js +43 -0
  488. package/dist/templates/stat/index.js.map +1 -0
  489. package/dist/templates/stat/lines.d.ts +23 -0
  490. package/dist/templates/stat/lines.d.ts.map +1 -0
  491. package/dist/templates/stat/lines.js +47 -0
  492. package/dist/templates/stat/lines.js.map +1 -0
  493. package/dist/templates/terminal/index.d.ts +16 -0
  494. package/dist/templates/terminal/index.d.ts.map +1 -0
  495. package/dist/templates/terminal/index.js +62 -0
  496. package/dist/templates/terminal/index.js.map +1 -0
  497. package/dist/templates/terminal/session.d.ts +17 -0
  498. package/dist/templates/terminal/session.d.ts.map +1 -0
  499. package/dist/templates/terminal/session.js +86 -0
  500. package/dist/templates/terminal/session.js.map +1 -0
  501. package/dist/templates/terminal/window.d.ts +14 -0
  502. package/dist/templates/terminal/window.d.ts.map +1 -0
  503. package/dist/templates/terminal/window.js +84 -0
  504. package/dist/templates/terminal/window.js.map +1 -0
  505. package/dist/templates/version.d.ts +16 -0
  506. package/dist/templates/version.d.ts.map +1 -0
  507. package/dist/templates/version.js +23 -0
  508. package/dist/templates/version.js.map +1 -0
  509. package/dist/templates/wordmark/index.d.ts +13 -0
  510. package/dist/templates/wordmark/index.d.ts.map +1 -0
  511. package/dist/templates/wordmark/index.js +53 -0
  512. package/dist/templates/wordmark/index.js.map +1 -0
  513. package/dist/templates/wordmark/lines.d.ts +22 -0
  514. package/dist/templates/wordmark/lines.d.ts.map +1 -0
  515. package/dist/templates/wordmark/lines.js +61 -0
  516. package/dist/templates/wordmark/lines.js.map +1 -0
  517. package/dist/templates/wordmark/mark.d.ts +16 -0
  518. package/dist/templates/wordmark/mark.d.ts.map +1 -0
  519. package/dist/templates/wordmark/mark.js +30 -0
  520. package/dist/templates/wordmark/mark.js.map +1 -0
  521. package/dist/text/clamp.d.ts +12 -0
  522. package/dist/text/clamp.d.ts.map +1 -0
  523. package/dist/text/clamp.js +41 -0
  524. package/dist/text/clamp.js.map +1 -0
  525. package/dist/text/ellipsis.d.ts +3 -0
  526. package/dist/text/ellipsis.d.ts.map +1 -0
  527. package/dist/text/ellipsis.js +3 -0
  528. package/dist/text/ellipsis.js.map +1 -0
  529. package/dist/text/index.d.ts +2 -0
  530. package/dist/text/index.d.ts.map +1 -1
  531. package/dist/text/index.js +2 -0
  532. package/dist/text/index.js.map +1 -1
  533. package/dist/types.d.ts +158 -6
  534. package/dist/types.d.ts.map +1 -1
  535. package/dist/validate/collect.d.ts.map +1 -1
  536. package/dist/validate/collect.js +2 -1
  537. package/dist/validate/collect.js.map +1 -1
  538. package/dist/validate/keys.d.ts +6 -0
  539. package/dist/validate/keys.d.ts.map +1 -1
  540. package/dist/validate/keys.js +17 -0
  541. package/dist/validate/keys.js.map +1 -1
  542. package/dist/validate/values.d.ts +6 -0
  543. package/dist/validate/values.d.ts.map +1 -1
  544. package/dist/validate/values.js +12 -1
  545. package/dist/validate/values.js.map +1 -1
  546. package/package.json +16 -2
  547. package/dist/background.d.ts +0 -13
  548. package/dist/background.d.ts.map +0 -1
  549. package/dist/background.js +0 -65
  550. package/dist/background.js.map +0 -1
  551. package/dist/cli/args.d.ts +0 -14
  552. package/dist/cli/args.d.ts.map +0 -1
  553. package/dist/cli/args.js +0 -67
  554. package/dist/cli/args.js.map +0 -1
  555. package/dist/cli.d.ts +0 -3
  556. package/dist/cli.d.ts.map +0 -1
  557. package/dist/cli.js +0 -102
  558. package/dist/cli.js.map +0 -1
  559. package/dist/config.d.ts +0 -95
  560. package/dist/config.d.ts.map +0 -1
  561. package/dist/config.js +0 -208
  562. package/dist/config.js.map +0 -1
  563. package/dist/fonts.d.ts +0 -18
  564. package/dist/fonts.d.ts.map +0 -1
  565. package/dist/fonts.js +0 -102
  566. package/dist/fonts.js.map +0 -1
  567. package/dist/generate.d.ts +0 -63
  568. package/dist/generate.d.ts.map +0 -1
  569. package/dist/generate.js +0 -109
  570. package/dist/generate.js.map +0 -1
  571. package/dist/highlight.d.ts +0 -75
  572. package/dist/highlight.d.ts.map +0 -1
  573. package/dist/highlight.js +0 -137
  574. package/dist/highlight.js.map +0 -1
  575. package/dist/render.d.ts +0 -24
  576. package/dist/render.d.ts.map +0 -1
  577. package/dist/render.js +0 -77
  578. package/dist/render.js.map +0 -1
  579. package/dist/stamp.d.ts +0 -29
  580. package/dist/stamp.d.ts.map +0 -1
  581. package/dist/stamp.js +0 -198
  582. package/dist/stamp.js.map +0 -1
  583. package/dist/templates/banner.d.ts +0 -9
  584. package/dist/templates/banner.d.ts.map +0 -1
  585. package/dist/templates/banner.js +0 -115
  586. package/dist/templates/banner.js.map +0 -1
  587. package/dist/templates/card.d.ts +0 -7
  588. package/dist/templates/card.d.ts.map +0 -1
  589. package/dist/templates/card.js +0 -72
  590. package/dist/templates/card.js.map +0 -1
  591. package/dist/templates/code.d.ts +0 -12
  592. package/dist/templates/code.d.ts.map +0 -1
  593. package/dist/templates/code.js +0 -275
  594. package/dist/templates/code.js.map +0 -1
  595. package/dist/templates/measure.d.ts +0 -11
  596. package/dist/templates/measure.d.ts.map +0 -1
  597. package/dist/templates/measure.js +0 -11
  598. package/dist/templates/measure.js.map +0 -1
  599. package/dist/templates/props.d.ts +0 -7
  600. package/dist/templates/props.d.ts.map +0 -1
  601. package/dist/templates/props.js +0 -17
  602. package/dist/templates/props.js.map +0 -1
  603. package/dist/templates/text.d.ts +0 -37
  604. package/dist/templates/text.d.ts.map +0 -1
  605. package/dist/templates/text.js +0 -26
  606. package/dist/templates/text.js.map +0 -1
  607. package/dist/text/stack.d.ts +0 -24
  608. package/dist/text/stack.d.ts.map +0 -1
  609. package/dist/text/stack.js +0 -18
  610. package/dist/text/stack.js.map +0 -1
  611. package/dist/text.d.ts +0 -56
  612. package/dist/text.d.ts.map +0 -1
  613. package/dist/text.js +0 -78
  614. package/dist/text.js.map +0 -1
  615. package/dist/validate/sizes.d.ts +0 -9
  616. package/dist/validate/sizes.d.ts.map +0 -1
  617. package/dist/validate/sizes.js +0 -27
  618. package/dist/validate/sizes.js.map +0 -1
  619. package/dist/validate.d.ts +0 -15
  620. package/dist/validate.d.ts.map +0 -1
  621. package/dist/validate.js +0 -300
  622. package/dist/validate.js.map +0 -1
package/README.md CHANGED
@@ -72,6 +72,8 @@ export default defineConfig({
72
72
  });
73
73
  ```
74
74
 
75
+ `colophon init` writes that file for you, guessing where your content lives.
76
+
75
77
  Run it over a content tree:
76
78
 
77
79
  ```bash
@@ -80,7 +82,12 @@ colophon content --config colophon.config.ts
80
82
 
81
83
  For every file that declares `meta_img_props`, Colophon writes one PNG per
82
84
  output size next to it, named `<slug>-<size>.png`, so `post/index.md` produces
83
- `post/post-og.png` and `post/post-square.png`.
85
+ `post/post-og.png` and `post/post-square.png`. Set `format` to `webp`, `jpeg` or
86
+ `avif` for a quarter of the bytes.
87
+
88
+ While tuning a template, `colophon preview <file>` renders one post and opens
89
+ it, `--watch` rebuilds on every change, and `--dry-run` reports what would
90
+ change without writing anything.
84
91
 
85
92
  There is also a programmatic API. `renderMetaImages` takes props and config and
86
93
  returns rendered bytes, and `generate` ties walking, rendering and writing
@@ -91,21 +98,27 @@ together.
91
98
  Full documentation is in [`docs/`](./docs/).
92
99
 
93
100
  - [Getting started](./docs/getting-started/ "Install, frontmatter, config and the CLI")
101
+ - [The command line](./docs/cli/ "Every command and flag, including init, preview, eject, dry runs and watching")
94
102
  - [Templates](./docs/templates/ "The built-in layouts and how to register your own")
95
103
  - [The code template](./docs/code-template/ "Syntax-highlighted code images")
104
+ - [Astro](./docs/astro/ "The integration and the meta tags component")
105
+ - [The browser-safe core](./docs/core/ "Running the template layer outside Node")
96
106
  - [The layout toolkit](./docs/layout/ "The primitives templates are built from")
97
107
  - [Themes and background treatments](./docs/configuration/themes/ "Named looks, meshes, grain, dots and rules")
98
108
  - [Logos and photographs](./docs/configuration/images/ "Branding an image with a logo, avatar or background photo")
99
109
  - [Configuration](./docs/configuration/ "Every option, and what happens to an unknown one")
110
+ - [Output formats](./docs/configuration/formats/ "WebP, JPEG and AVIF, quality, size caps and the SVG source")
111
+ - [File size](./docs/configuration/compression/ "How hard the rendered PNGs are compressed, and what it costs")
100
112
  - [Rebuilds](./docs/rebuilds/ "How Colophon decides what to render again")
101
113
  - [Programmatic use](./docs/programmatic-use/ "The API behind the CLI")
102
114
  - [Upgrading](./docs/upgrading/ "The breaking changes in 2.0 and 3.0")
103
115
 
104
116
  ## Sample output
105
117
 
106
- These are generated by [`scripts/gen-samples.ts`](scripts/gen-samples.ts). Run
107
- `pnpm samples` to regenerate them after changing a template, then commit the
108
- updated PNGs so this gallery stays in sync.
118
+ These are generated by [`scripts/gen-samples.ts`](scripts/gen-samples.ts) from
119
+ the sample list in [`test/samples.ts`](test/samples.ts). Run `pnpm samples` to
120
+ regenerate them after changing a template, then commit the updated PNGs so this
121
+ gallery stays in sync.
109
122
 
110
123
  <table>
111
124
  <tr>
@@ -138,6 +151,53 @@ updated PNGs so this gallery stays in sync.
138
151
  <sub><code>code</code> · 1200×630 · TypeScript, <code>night-owl</code></sub>
139
152
  </td>
140
153
  </tr>
154
+ <tr>
155
+ <td>
156
+ <img src="docs/samples/article-wide.png" alt="article template, landscape" width="100%" /><br />
157
+ <sub><code>article</code> · 1200×630 · tags, headline, byline and avatar</sub>
158
+ </td>
159
+ <td>
160
+ <img src="docs/samples/terminal-wide.png" alt="terminal template, landscape" width="100%" /><br />
161
+ <sub><code>terminal</code> · 1200×630 · a command and its output</sub>
162
+ </td>
163
+ </tr>
164
+ <tr>
165
+ <td>
166
+ <img src="docs/samples/quote-square.png" alt="quote template, square" width="100%" /><br />
167
+ <sub><code>quote</code> · 1200×1200 · pull quote with attribution</sub>
168
+ </td>
169
+ <td>
170
+ <img src="docs/samples/release-square.png" alt="release template, square" width="100%" /><br />
171
+ <sub><code>release</code> · 1200×1200 · version and headline changes</sub>
172
+ </td>
173
+ </tr>
174
+ <tr>
175
+ <td>
176
+ <img src="docs/samples/stat-square.png" alt="stat template, square" width="100%" /><br />
177
+ <sub><code>stat</code> · 1200×1200 · one figure and a caption</sub>
178
+ </td>
179
+ <td>
180
+ <img src="docs/samples/event-square.png" alt="event template, square" width="100%" /><br />
181
+ <sub><code>event</code> · 1200×1200 · date, title and location</sub>
182
+ </td>
183
+ </tr>
184
+ <tr>
185
+ <td>
186
+ <img src="docs/samples/photo-wide.png" alt="photo template, landscape" width="100%" /><br />
187
+ <sub><code>photo</code> · 1200×630 · the post's own photograph, scrimmed</sub>
188
+ </td>
189
+ <td>
190
+ <img src="docs/samples/wordmark-wide.png" alt="wordmark template, landscape" width="100%" /><br />
191
+ <sub><code>wordmark</code> · 1200×630 · logo, name and tagline</sub>
192
+ </td>
193
+ </tr>
194
+ <tr>
195
+ <td>
196
+ <img src="docs/samples/docs-wide.png" alt="docs template, landscape" width="100%" /><br />
197
+ <sub><code>docs</code> · 1200×630 · breadcrumb, title and summary</sub>
198
+ </td>
199
+ <td></td>
200
+ </tr>
141
201
  </table>
142
202
 
143
203
  ### Themes
@@ -187,15 +247,33 @@ theme sets and how to override part of one.
187
247
 
188
248
  ## Development
189
249
 
190
- | Script | What it does |
191
- | --------------------------------- | -------------------------------------------------------------------------- |
192
- | `pnpm build` | Compile to `dist/`. |
193
- | `pnpm test`, `pnpm test:coverage` | Run Vitest. |
194
- | `pnpm lint` | ESLint and Prettier check. |
195
- | `pnpm fmt` | Auto-fix. |
196
- | `pnpm samples` | Regenerate the sample images into `docs/samples/`. |
197
- | `pnpm fta` | [FTA](https://ftaproject.dev) scores, failing on any file 50 or above. |
198
- | `pnpm check` | Format, FTA, typecheck and test with coverage. Run this before committing. |
250
+ | Script | What it does |
251
+ | --------------------------------- | ---------------------------------------------------------------------------- |
252
+ | `pnpm build` | Compile to `dist/`. |
253
+ | `pnpm test`, `pnpm test:coverage` | Run Vitest. |
254
+ | `pnpm lint` | ESLint and Prettier check. |
255
+ | `pnpm fmt` | Auto-fix. |
256
+ | `pnpm samples` | Regenerate the sample images into `docs/samples/`. |
257
+ | `pnpm baselines` | Re-record the visual regression baselines in `test/baselines/`. |
258
+ | `pnpm fta` | [FTA](https://ftaproject.dev) scores, failing on any file 50 or above. |
259
+ | `pnpm check` | Format, FTA, typecheck, build and test with coverage. Run before committing. |
260
+
261
+ ### Visual regression
262
+
263
+ Templates are pictures, so `pnpm test` renders every sample and compares it
264
+ against a committed baseline in `test/baselines/`. A change to a template shows
265
+ up as a failure naming how far the image moved, and writes what it rendered to
266
+ `test/.visual/` so you can open the two side by side. CI uploads the same
267
+ images as an artifact when the check fails.
268
+
269
+ When the change was the point, run `pnpm baselines` and commit the new PNGs with
270
+ it. The diff is then the before and after, which is the review the check exists
271
+ to make possible.
272
+
273
+ The baselines are rendered with font files rather than whatever the machine has
274
+ installed, and at a fraction of the width they are laid out at, which keeps them
275
+ reproducible anywhere and small enough to live in the repository. The gallery
276
+ above is rendered separately, as a project would render it.
199
277
 
200
278
  ## License
201
279
 
@@ -0,0 +1,49 @@
1
+ import type { GenerateOptions } from "../generate/index.js";
2
+ /**
3
+ * The shape Astro wants an integration to be.
4
+ *
5
+ * Declared here rather than imported from `astro`, so that installing Colophon
6
+ * does not drag a framework in and a project on any Astro version can use this
7
+ * one. It is structural: what matters is that the object fits where an
8
+ * integration goes, and a zero-argument hook fits a slot expecting one that
9
+ * takes the build's context.
10
+ */
11
+ export interface AstroIntegration {
12
+ readonly name: string;
13
+ readonly hooks: {
14
+ readonly "astro:config:setup": () => Promise<void>;
15
+ };
16
+ }
17
+ /** What the integration needs, which is what `generate` needs. */
18
+ export type ColophonIntegrationOptions = GenerateOptions;
19
+ /**
20
+ * Render the site's meta images as part of an Astro build.
21
+ *
22
+ * ```js
23
+ * // astro.config.mjs
24
+ * import colophon from "@kensio/colophon/astro";
25
+ *
26
+ * export default defineConfig({
27
+ * integrations: [
28
+ * colophon({
29
+ * contentDir: "src/content",
30
+ * config: { manifest: "src/data/colophon.json", footer: "example.com" },
31
+ * }),
32
+ * ],
33
+ * });
34
+ * ```
35
+ *
36
+ * It runs on `astro:config:setup`, which is the one hook that fires for
37
+ * `astro dev` as well as `astro build`, and which runs before anything is
38
+ * rendered. Both matter: the manifest has to be on disk before a page that
39
+ * reads it is built, and a dev server should show the images the build will
40
+ * produce rather than whatever the last build left behind.
41
+ *
42
+ * Running on every dev start sounds expensive and is not, because of the
43
+ * rebuild stamps: a second run reads the content tree, compares digests and
44
+ * renders nothing. The manifest is rewritten either way, being a small file
45
+ * describing images that are already there. Only the first run in a session
46
+ * pays for rendering, and only for the images that changed.
47
+ */
48
+ export default function colophon(options: ColophonIntegrationOptions): AstroIntegration;
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/astro/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE;QAGd,QAAQ,CAAC,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,MAAM,0BAA0B,GAAG,eAAe,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,OAAO,EAAE,0BAA0B,GAClC,gBAAgB,CAUlB"}
@@ -0,0 +1,42 @@
1
+ import { generate } from "../generate/index.js";
2
+ /**
3
+ * Render the site's meta images as part of an Astro build.
4
+ *
5
+ * ```js
6
+ * // astro.config.mjs
7
+ * import colophon from "@kensio/colophon/astro";
8
+ *
9
+ * export default defineConfig({
10
+ * integrations: [
11
+ * colophon({
12
+ * contentDir: "src/content",
13
+ * config: { manifest: "src/data/colophon.json", footer: "example.com" },
14
+ * }),
15
+ * ],
16
+ * });
17
+ * ```
18
+ *
19
+ * It runs on `astro:config:setup`, which is the one hook that fires for
20
+ * `astro dev` as well as `astro build`, and which runs before anything is
21
+ * rendered. Both matter: the manifest has to be on disk before a page that
22
+ * reads it is built, and a dev server should show the images the build will
23
+ * produce rather than whatever the last build left behind.
24
+ *
25
+ * Running on every dev start sounds expensive and is not, because of the
26
+ * rebuild stamps: a second run reads the content tree, compares digests and
27
+ * renders nothing. The manifest is rewritten either way, being a small file
28
+ * describing images that are already there. Only the first run in a session
29
+ * pays for rendering, and only for the images that changed.
30
+ */
31
+ export default function colophon(options) {
32
+ return {
33
+ name: "@kensio/colophon",
34
+ hooks: {
35
+ // eslint-disable-next-line @typescript-eslint/naming-convention
36
+ "astro:config:setup": async () => {
37
+ await generate(options);
38
+ },
39
+ },
40
+ };
41
+ }
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/astro/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAwBhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,OAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE;YACL,gEAAgE;YAChE,oBAAoB,EAAE,KAAK,IAAmB,EAAE;gBAC9C,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** What the CLI has been asked to do. */
2
+ export type CliCommand = "generate" | "init" | "preview" | "eject";
3
+ /**
4
+ * Read the command out of the first argument.
5
+ *
6
+ * It is a command only where it names one: `colophon content` has always meant
7
+ * "build this tree", so a bare positional stays the content directory, and a
8
+ * subcommand is an addition to that rather than a replacement for it. The cost
9
+ * is that a content directory called `init` or `preview` has to be written as
10
+ * `./init`, which is worth saying in the help text and no more.
11
+ */
12
+ export declare function commandOf(first: string | undefined): CliCommand;
13
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/args/command.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAYnE;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAE/D"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The commands that are named on the command line. `generate` is not among
3
+ * them because it is what a run with no command does.
4
+ */
5
+ const named = {
6
+ init: "init",
7
+ preview: "preview",
8
+ eject: "eject",
9
+ };
10
+ /**
11
+ * Read the command out of the first argument.
12
+ *
13
+ * It is a command only where it names one: `colophon content` has always meant
14
+ * "build this tree", so a bare positional stays the content directory, and a
15
+ * subcommand is an addition to that rather than a replacement for it. The cost
16
+ * is that a content directory called `init` or `preview` has to be written as
17
+ * `./init`, which is worth saying in the help text and no more.
18
+ */
19
+ export function commandOf(first) {
20
+ return (first === undefined ? undefined : named[first]) ?? "generate";
21
+ }
22
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cli/args/command.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,KAAK,GAAyC;IAClD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAyB;IACjD,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC;AACxE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { CliCommand } from "./command.js";
2
+ export type { CliCommand } from "./command.js";
3
+ export { usage } from "./usage.js";
4
+ /**
5
+ * The parsed command line.
6
+ */
7
+ export interface CliArgs {
8
+ readonly command: CliCommand;
9
+ /**
10
+ * The content tree to build. `undefined` where the run named none, which
11
+ * `generate` reads as the default and `init` as an invitation to guess.
12
+ */
13
+ readonly contentDir: string | undefined;
14
+ /** The post `preview` renders. */
15
+ readonly file: string | undefined;
16
+ /** What `eject` writes, naming the generator it is for. */
17
+ readonly adapter: string | undefined;
18
+ readonly configPath: string | undefined;
19
+ readonly overwrite: boolean;
20
+ readonly dryRun: boolean;
21
+ readonly watch: boolean;
22
+ readonly concurrency: number | undefined;
23
+ /** Which configured size `preview` renders. */
24
+ readonly size: string | undefined;
25
+ }
26
+ /** Read the command line into the options each command takes. */
27
+ export declare function parseCliArgs(argv: readonly string[]): CliArgs;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/args/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM/C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AA2CD,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAyC7D"}
@@ -0,0 +1,75 @@
1
+ import { commandOf } from "./command.js";
2
+ import { assertKnownFlag, switchesFrom } from "./switches.js";
3
+ import { valueFlags, valueOf } from "./values.js";
4
+ export { usage } from "./usage.js";
5
+ /** Where each command's one positional goes: a path, or a generator's name. */
6
+ function target(command, positionals) {
7
+ const extra = positionals[1];
8
+ // Two positionals is a mistake worth naming rather than quietly resolving:
9
+ // taking the last would build a tree the run did not mean to name.
10
+ if (extra !== undefined) {
11
+ throw new Error(`Unexpected argument "${extra}".`);
12
+ }
13
+ const first = positionals[0];
14
+ const empty = { contentDir: undefined, file: undefined, adapter: undefined };
15
+ switch (command) {
16
+ case "preview": {
17
+ return { ...empty, file: first };
18
+ }
19
+ case "eject": {
20
+ return { ...empty, adapter: first };
21
+ }
22
+ case "generate":
23
+ case "init": {
24
+ return { ...empty, contentDir: first };
25
+ }
26
+ }
27
+ }
28
+ /**
29
+ * One argument split at its first `=`, so that `--config=x` and `--config x`
30
+ * are the same thing. A path is free to contain an `=` because the split is
31
+ * only believed where the part before it is a flag that takes a value.
32
+ */
33
+ function splitInline(arg) {
34
+ const at = arg.indexOf("=");
35
+ return at === -1 ? [arg, undefined] : [arg.slice(0, at), arg.slice(at + 1)];
36
+ }
37
+ /** Read the command line into the options each command takes. */
38
+ export function parseCliArgs(argv) {
39
+ const command = commandOf(argv[0]);
40
+ const rest = command === "generate" ? argv : argv.slice(1);
41
+ const positionals = [];
42
+ const flags = new Set();
43
+ let values = {};
44
+ for (let index = 0; index < rest.length; index += 1) {
45
+ const arg = rest[index] ?? "";
46
+ const [flag, inline] = splitInline(arg);
47
+ if (valueFlags.has(flag)) {
48
+ let value = inline;
49
+ if (value === undefined) {
50
+ index += 1;
51
+ value = rest[index];
52
+ }
53
+ if (value === undefined) {
54
+ throw new Error(`Missing value for ${flag}`);
55
+ }
56
+ values = { ...values, ...valueOf(flag, value) };
57
+ }
58
+ else if (arg.startsWith("-")) {
59
+ assertKnownFlag(flag);
60
+ flags.add(flag);
61
+ }
62
+ else {
63
+ positionals.push(arg);
64
+ }
65
+ }
66
+ return {
67
+ command,
68
+ ...target(command, positionals),
69
+ configPath: values.configPath,
70
+ concurrency: values.concurrency,
71
+ size: values.size,
72
+ ...switchesFrom(flags),
73
+ };
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/args/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAyBnC,+EAA+E;AAC/E,SAAS,MAAM,CACb,OAAmB,EACnB,WAA8B;IAE9B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7B,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAE7E,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,IAAuB;IAClD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,MAAM,GAAe,EAAE,CAAC;IAE5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,MAAM,CAAC;YAEnB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC;gBACX,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAClD,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,YAAY,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /** The flags that carry no value, each of which sets one boolean. */
2
+ export interface Switches {
3
+ readonly overwrite: boolean;
4
+ readonly dryRun: boolean;
5
+ readonly watch: boolean;
6
+ }
7
+ /**
8
+ * Reject an option the CLI does not have, suggesting what it looks like.
9
+ *
10
+ * Ignoring it silently is worse than it sounds: `--dry-runs` would then render
11
+ * and write a whole tree, which is the one thing the run was asking it not to
12
+ * do. The suggestion comes from the same edit distance the config validation
13
+ * uses, since a mistyped flag is the same slip as a mistyped option.
14
+ */
15
+ export declare function assertKnownFlag(flag: string): void;
16
+ /** Read the switches out of the flags a command line carried. */
17
+ export declare function switchesFrom(flags: ReadonlySet<string>): Switches;
18
+ //# sourceMappingURL=switches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switches.d.ts","sourceRoot":"","sources":["../../../src/cli/args/switches.ts"],"names":[],"mappings":"AAGA,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYlD;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CASjE"}
@@ -0,0 +1,42 @@
1
+ import { nearestName } from "../../validate/suggest.js";
2
+ import { valueFlags } from "./values.js";
3
+ /** `--overwrite` is kept as an alias so existing build scripts keep working. */
4
+ const forceFlags = ["-f", "--force", "-o", "--overwrite"];
5
+ const dryRunFlags = ["-n", "--dry-run"];
6
+ const watchFlags = ["-w", "--watch"];
7
+ const helpFlags = ["-h", "--help"];
8
+ const knownFlags = new Set([
9
+ ...forceFlags,
10
+ ...dryRunFlags,
11
+ ...watchFlags,
12
+ ...helpFlags,
13
+ ...valueFlags,
14
+ ]);
15
+ /**
16
+ * Reject an option the CLI does not have, suggesting what it looks like.
17
+ *
18
+ * Ignoring it silently is worse than it sounds: `--dry-runs` would then render
19
+ * and write a whole tree, which is the one thing the run was asking it not to
20
+ * do. The suggestion comes from the same edit distance the config validation
21
+ * uses, since a mistyped flag is the same slip as a mistyped option.
22
+ */
23
+ export function assertKnownFlag(flag) {
24
+ if (knownFlags.has(flag)) {
25
+ return;
26
+ }
27
+ const suggestion = nearestName(flag, [...knownFlags]);
28
+ const advice = suggestion === undefined
29
+ ? "Run colophon --help for the options."
30
+ : `Did you mean "${suggestion}"?`;
31
+ throw new Error(`Unknown option "${flag}". ${advice}`);
32
+ }
33
+ /** Read the switches out of the flags a command line carried. */
34
+ export function switchesFrom(flags) {
35
+ const hasAnyOf = (group) => group.some((flag) => flags.has(flag));
36
+ return {
37
+ overwrite: hasAnyOf(forceFlags),
38
+ dryRun: hasAnyOf(dryRunFlags),
39
+ watch: hasAnyOf(watchFlags),
40
+ };
41
+ }
42
+ //# sourceMappingURL=switches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switches.js","sourceRoot":"","sources":["../../../src/cli/args/switches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,gFAAgF;AAChF,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACxC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEnC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,GAAG,UAAU;IACb,GAAG,WAAW;IACd,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,UAAU;CACd,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GACV,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,sCAAsC;QACxC,CAAC,CAAC,iBAAiB,UAAU,IAAI,CAAC;IAEtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,KAA0B;IACrD,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAW,EAAE,CACrD,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAExC,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC/B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Help text for `--help`, and for a run that asks for nothing else. */
2
+ export declare const usage = "colophon: generate social meta images from frontmatter\n\nUsage:\n colophon [contentDir] [options] Render the images for a content tree\n colophon init [contentDir] Write a starter config module\n colophon preview <file> [options] Render one post and open it\n colophon eject hugo Write a Hugo partial that reads the\n manifest and emits the meta tags\n\nImages carry a stamp of the props, config and size they came from, so a rebuild\nrenders only the ones that have actually changed.\n\nOptions:\n -c, --config <path> Load a config module. Its default export is either a\n ColophonConfig or a function (async or not) returning\n one, for a config that has to compute something.\n -f, --force Re-render every image, ignoring the stamps. For init\n and eject, overwrite a file that is already there\n -o, --overwrite Alias for --force\n -n, --dry-run Report what would change and write nothing\n -w, --watch Rebuild whenever a content file changes\n --concurrency <n> How many images to render at once\n --size <name> Which configured size preview renders\n -h, --help Show this help\n\nDefaults:\n contentDir content\n --concurrency one per available CPU\n --size the first configured size\n\nThe first argument is a command where it names one, so a content directory\ncalled init, preview or eject has to be written as ./init.";
3
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/cli/args/usage.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,KAAK,qiDA+ByC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /** Help text for `--help`, and for a run that asks for nothing else. */
2
+ export const usage = `colophon: generate social meta images from frontmatter
3
+
4
+ Usage:
5
+ colophon [contentDir] [options] Render the images for a content tree
6
+ colophon init [contentDir] Write a starter config module
7
+ colophon preview <file> [options] Render one post and open it
8
+ colophon eject hugo Write a Hugo partial that reads the
9
+ manifest and emits the meta tags
10
+
11
+ Images carry a stamp of the props, config and size they came from, so a rebuild
12
+ renders only the ones that have actually changed.
13
+
14
+ Options:
15
+ -c, --config <path> Load a config module. Its default export is either a
16
+ ColophonConfig or a function (async or not) returning
17
+ one, for a config that has to compute something.
18
+ -f, --force Re-render every image, ignoring the stamps. For init
19
+ and eject, overwrite a file that is already there
20
+ -o, --overwrite Alias for --force
21
+ -n, --dry-run Report what would change and write nothing
22
+ -w, --watch Rebuild whenever a content file changes
23
+ --concurrency <n> How many images to render at once
24
+ --size <name> Which configured size preview renders
25
+ -h, --help Show this help
26
+
27
+ Defaults:
28
+ contentDir content
29
+ --concurrency one per available CPU
30
+ --size the first configured size
31
+
32
+ The first argument is a command where it names one, so a content directory
33
+ called init, preview or eject has to be written as ./init.`;
34
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/cli/args/usage.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2DA+BsC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** The options whose value is the argument after them. */
2
+ export interface FlagValues {
3
+ readonly configPath?: string;
4
+ readonly concurrency?: number;
5
+ readonly size?: string;
6
+ }
7
+ /** Flags that take the next argument as their value. */
8
+ export declare const valueFlags: Set<string>;
9
+ /** The one field a value flag sets, ready to be folded into the rest. */
10
+ export declare function valueOf(flag: string, value: string): FlagValues;
11
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/cli/args/values.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wDAAwD;AACxD,eAAO,MAAM,UAAU,aAKrB,CAAC;AAkBH,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAU/D"}
@@ -0,0 +1,29 @@
1
+ /** Flags that take the next argument as their value. */
2
+ export const valueFlags = new Set([
3
+ "-c",
4
+ "--config",
5
+ "--concurrency",
6
+ "--size",
7
+ ]);
8
+ /**
9
+ * A mistyped count would otherwise reach `generate` as `NaN` and be reported
10
+ * without naming the flag it came from, so it is rejected here instead.
11
+ */
12
+ function parseConcurrency(value) {
13
+ const parsed = Number(value);
14
+ if (!Number.isSafeInteger(parsed) || parsed < 1) {
15
+ throw new Error(`Invalid value for --concurrency: "${value}"; expected a positive integer.`);
16
+ }
17
+ return parsed;
18
+ }
19
+ /** The one field a value flag sets, ready to be folded into the rest. */
20
+ export function valueOf(flag, value) {
21
+ if (flag === "--concurrency") {
22
+ return { concurrency: parseConcurrency(value) };
23
+ }
24
+ if (flag === "--size") {
25
+ return { size: value };
26
+ }
27
+ return { configPath: value };
28
+ }
29
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/cli/args/values.ts"],"names":[],"mappings":"AAOA,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,IAAI;IACJ,UAAU;IACV,eAAe;IACf,QAAQ;CACT,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,iCAAiC,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,OAAO,EAAE,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CliArgs } from "./args/index.js";
2
+ /**
3
+ * Render the images for a content tree: the CLI's original and usual job.
4
+ *
5
+ * Under `--watch` the same build runs again on every content change. The config
6
+ * is loaded once, outside the loop, since a watch does not pick up changes to it
7
+ * in any case.
8
+ */
9
+ export declare function runBuild(args: CliArgs): Promise<void>;
10
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAQ/C;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B3D"}
@@ -0,0 +1,41 @@
1
+ import { defaultContentExtensions } from "../content/index.js";
2
+ import { generate } from "../generate/index.js";
3
+ import { loadConfig } from "./config.js";
4
+ import { reportImage, reportSummary } from "./report.js";
5
+ import { watchContent } from "./watch/index.js";
6
+ /** Where a run with no content directory named looks for one. */
7
+ const defaultContentDir = "content";
8
+ /**
9
+ * Render the images for a content tree: the CLI's original and usual job.
10
+ *
11
+ * Under `--watch` the same build runs again on every content change. The config
12
+ * is loaded once, outside the loop, since a watch does not pick up changes to it
13
+ * in any case.
14
+ */
15
+ export async function runBuild(args) {
16
+ const config = await loadConfig(args.configPath);
17
+ const contentDir = args.contentDir ?? defaultContentDir;
18
+ const build = async () => {
19
+ const results = await generate({
20
+ contentDir,
21
+ overwrite: args.overwrite,
22
+ dryRun: args.dryRun,
23
+ ...(config !== undefined && { config }),
24
+ ...(args.concurrency !== undefined && { concurrency: args.concurrency }),
25
+ onResult: (result) => {
26
+ reportImage(result, args.dryRun);
27
+ },
28
+ });
29
+ reportSummary(results, args.dryRun);
30
+ };
31
+ if (!args.watch) {
32
+ await build();
33
+ return;
34
+ }
35
+ await watchContent({
36
+ dir: contentDir,
37
+ extensions: config?.content?.extensions ?? defaultContentExtensions,
38
+ build,
39
+ });
40
+ }
41
+ //# sourceMappingURL=build.js.map