@kensio/colophon 2.4.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 (687) hide show
  1. package/README.md +139 -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/background/gradient.d.ts +12 -0
  7. package/dist/background/gradient.d.ts.map +1 -0
  8. package/dist/background/gradient.js +21 -0
  9. package/dist/background/gradient.js.map +1 -0
  10. package/dist/background/image.d.ts +14 -0
  11. package/dist/background/image.d.ts.map +1 -0
  12. package/dist/background/image.js +36 -0
  13. package/dist/background/image.js.map +1 -0
  14. package/dist/{background.d.ts → background/index.d.ts} +5 -5
  15. package/dist/background/index.d.ts.map +1 -0
  16. package/dist/background/index.js +27 -0
  17. package/dist/background/index.js.map +1 -0
  18. package/dist/background/mesh.d.ts +12 -0
  19. package/dist/background/mesh.d.ts.map +1 -0
  20. package/dist/background/mesh.js +43 -0
  21. package/dist/background/mesh.js.map +1 -0
  22. package/dist/cli/args/command.d.ts +13 -0
  23. package/dist/cli/args/command.d.ts.map +1 -0
  24. package/dist/cli/args/command.js +22 -0
  25. package/dist/cli/args/command.js.map +1 -0
  26. package/dist/cli/args/index.d.ts +28 -0
  27. package/dist/cli/args/index.d.ts.map +1 -0
  28. package/dist/cli/args/index.js +75 -0
  29. package/dist/cli/args/index.js.map +1 -0
  30. package/dist/cli/args/switches.d.ts +18 -0
  31. package/dist/cli/args/switches.d.ts.map +1 -0
  32. package/dist/cli/args/switches.js +42 -0
  33. package/dist/cli/args/switches.js.map +1 -0
  34. package/dist/cli/args/usage.d.ts +3 -0
  35. package/dist/cli/args/usage.d.ts.map +1 -0
  36. package/dist/cli/args/usage.js +34 -0
  37. package/dist/cli/args/usage.js.map +1 -0
  38. package/dist/cli/args/values.d.ts +11 -0
  39. package/dist/cli/args/values.d.ts.map +1 -0
  40. package/dist/cli/args/values.js +29 -0
  41. package/dist/cli/args/values.js.map +1 -0
  42. package/dist/cli/build.d.ts +10 -0
  43. package/dist/cli/build.d.ts.map +1 -0
  44. package/dist/cli/build.js +41 -0
  45. package/dist/cli/build.js.map +1 -0
  46. package/dist/cli/eject/adapters.d.ts +20 -0
  47. package/dist/cli/eject/adapters.d.ts.map +1 -0
  48. package/dist/cli/eject/adapters.js +29 -0
  49. package/dist/cli/eject/adapters.js.map +1 -0
  50. package/dist/cli/eject/astro.d.ts +13 -0
  51. package/dist/cli/eject/astro.d.ts.map +1 -0
  52. package/dist/cli/eject/astro.js +35 -0
  53. package/dist/cli/eject/astro.js.map +1 -0
  54. package/dist/cli/eject/hugo.d.ts +19 -0
  55. package/dist/cli/eject/hugo.d.ts.map +1 -0
  56. package/dist/cli/eject/hugo.js +127 -0
  57. package/dist/cli/eject/hugo.js.map +1 -0
  58. package/dist/cli/eject/index.d.ts +15 -0
  59. package/dist/cli/eject/index.d.ts.map +1 -0
  60. package/dist/cli/eject/index.js +46 -0
  61. package/dist/cli/eject/index.js.map +1 -0
  62. package/dist/cli/index.js +25 -20
  63. package/dist/cli/index.js.map +1 -1
  64. package/dist/cli/init/fs.d.ts +5 -0
  65. package/dist/cli/init/fs.d.ts.map +1 -0
  66. package/dist/cli/init/fs.js +19 -0
  67. package/dist/cli/init/fs.js.map +1 -0
  68. package/dist/cli/init/guess.d.ts +9 -0
  69. package/dist/cli/init/guess.d.ts.map +1 -0
  70. package/dist/cli/init/guess.js +27 -0
  71. package/dist/cli/init/guess.js.map +1 -0
  72. package/dist/cli/init/index.d.ts +11 -0
  73. package/dist/cli/init/index.d.ts.map +1 -0
  74. package/dist/cli/init/index.js +36 -0
  75. package/dist/cli/init/index.js.map +1 -0
  76. package/dist/cli/init/module.d.ts +12 -0
  77. package/dist/cli/init/module.d.ts.map +1 -0
  78. package/dist/cli/init/module.js +45 -0
  79. package/dist/cli/init/module.js.map +1 -0
  80. package/dist/cli/init/scaffold.d.ts +10 -0
  81. package/dist/cli/init/scaffold.d.ts.map +1 -0
  82. package/dist/cli/init/scaffold.js +52 -0
  83. package/dist/cli/init/scaffold.js.map +1 -0
  84. package/dist/cli/message.d.ts +7 -0
  85. package/dist/cli/message.d.ts.map +1 -0
  86. package/dist/cli/message.js +9 -0
  87. package/dist/cli/message.js.map +1 -0
  88. package/dist/cli/preview/index.d.ts +13 -0
  89. package/dist/cli/preview/index.d.ts.map +1 -0
  90. package/dist/cli/preview/index.js +27 -0
  91. package/dist/cli/preview/index.js.map +1 -0
  92. package/dist/cli/preview/open.d.ts +10 -0
  93. package/dist/cli/preview/open.d.ts.map +1 -0
  94. package/dist/cli/preview/open.js +32 -0
  95. package/dist/cli/preview/open.js.map +1 -0
  96. package/dist/cli/preview/render.d.ts +23 -0
  97. package/dist/cli/preview/render.d.ts.map +1 -0
  98. package/dist/cli/preview/render.js +40 -0
  99. package/dist/cli/preview/render.js.map +1 -0
  100. package/dist/cli/preview/root.d.ts +17 -0
  101. package/dist/cli/preview/root.d.ts.map +1 -0
  102. package/dist/cli/preview/root.js +22 -0
  103. package/dist/cli/preview/root.js.map +1 -0
  104. package/dist/cli/preview/size.d.ts +7 -0
  105. package/dist/cli/preview/size.d.ts.map +1 -0
  106. package/dist/cli/preview/size.js +13 -0
  107. package/dist/cli/preview/size.js.map +1 -0
  108. package/dist/cli/report.d.ts +6 -0
  109. package/dist/cli/report.d.ts.map +1 -0
  110. package/dist/cli/report.js +23 -0
  111. package/dist/cli/report.js.map +1 -0
  112. package/dist/cli/watch/filter.d.ts +14 -0
  113. package/dist/cli/watch/filter.d.ts.map +1 -0
  114. package/dist/cli/watch/filter.js +16 -0
  115. package/dist/cli/watch/filter.js.map +1 -0
  116. package/dist/cli/watch/index.d.ts +27 -0
  117. package/dist/cli/watch/index.d.ts.map +1 -0
  118. package/dist/cli/watch/index.js +38 -0
  119. package/dist/cli/watch/index.js.map +1 -0
  120. package/dist/cli/watch/queue.d.ts +24 -0
  121. package/dist/cli/watch/queue.d.ts.map +1 -0
  122. package/dist/cli/watch/queue.js +57 -0
  123. package/dist/cli/watch/queue.js.map +1 -0
  124. package/dist/config/defaults.d.ts +39 -1
  125. package/dist/config/defaults.d.ts.map +1 -1
  126. package/dist/config/defaults.js +38 -0
  127. package/dist/config/defaults.js.map +1 -1
  128. package/dist/config/index.d.ts +2 -2
  129. package/dist/config/index.d.ts.map +1 -1
  130. package/dist/config/index.js +27 -6
  131. package/dist/config/index.js.map +1 -1
  132. package/dist/config/output.d.ts +26 -0
  133. package/dist/config/output.d.ts.map +1 -0
  134. package/dist/config/output.js +45 -0
  135. package/dist/config/output.js.map +1 -0
  136. package/dist/config/resolve.d.ts +10 -0
  137. package/dist/config/resolve.d.ts.map +1 -1
  138. package/dist/config/resolve.js +20 -1
  139. package/dist/config/resolve.js.map +1 -1
  140. package/dist/config/size.d.ts +6 -0
  141. package/dist/config/size.d.ts.map +1 -1
  142. package/dist/config/size.js +20 -8
  143. package/dist/config/size.js.map +1 -1
  144. package/dist/content/index.d.ts +1 -0
  145. package/dist/content/index.d.ts.map +1 -1
  146. package/dist/content/index.js +1 -0
  147. package/dist/content/index.js.map +1 -1
  148. package/dist/content/read.d.ts +15 -0
  149. package/dist/content/read.d.ts.map +1 -0
  150. package/dist/content/read.js +36 -0
  151. package/dist/content/read.js.map +1 -0
  152. package/dist/content/walk.d.ts.map +1 -1
  153. package/dist/content/walk.js +4 -30
  154. package/dist/content/walk.js.map +1 -1
  155. package/dist/core/index.d.ts +37 -0
  156. package/dist/core/index.d.ts.map +1 -0
  157. package/dist/core/index.js +13 -0
  158. package/dist/core/index.js.map +1 -0
  159. package/dist/encode/fit.d.ts +16 -0
  160. package/dist/encode/fit.d.ts.map +1 -0
  161. package/dist/encode/fit.js +23 -0
  162. package/dist/encode/fit.js.map +1 -0
  163. package/dist/encode/format.d.ts +12 -0
  164. package/dist/encode/format.d.ts.map +1 -0
  165. package/dist/encode/format.js +40 -0
  166. package/dist/encode/format.js.map +1 -0
  167. package/dist/encode/index.d.ts +14 -0
  168. package/dist/encode/index.d.ts.map +1 -0
  169. package/dist/encode/index.js +52 -0
  170. package/dist/encode/index.js.map +1 -0
  171. package/dist/encode/sharp.d.ts +19 -0
  172. package/dist/encode/sharp.d.ts.map +1 -0
  173. package/dist/encode/sharp.js +57 -0
  174. package/dist/encode/sharp.js.map +1 -0
  175. package/dist/encode/warn.d.ts +10 -0
  176. package/dist/encode/warn.d.ts.map +1 -0
  177. package/dist/encode/warn.js +31 -0
  178. package/dist/encode/warn.js.map +1 -0
  179. package/dist/fonts/resolve.d.ts.map +1 -1
  180. package/dist/fonts/resolve.js +2 -8
  181. package/dist/fonts/resolve.js.map +1 -1
  182. package/dist/generate/index.d.ts +4 -0
  183. package/dist/generate/index.d.ts.map +1 -1
  184. package/dist/generate/index.js +10 -4
  185. package/dist/generate/index.js.map +1 -1
  186. package/dist/generate/options.d.ts +11 -1
  187. package/dist/generate/options.d.ts.map +1 -1
  188. package/dist/generate/options.js.map +1 -1
  189. package/dist/generate/output-path.d.ts +6 -2
  190. package/dist/generate/output-path.d.ts.map +1 -1
  191. package/dist/generate/output-path.js +7 -2
  192. package/dist/generate/output-path.js.map +1 -1
  193. package/dist/generate/plan.d.ts.map +1 -1
  194. package/dist/generate/plan.js +3 -3
  195. package/dist/generate/plan.js.map +1 -1
  196. package/dist/generate/render-image.d.ts +6 -0
  197. package/dist/generate/render-image.d.ts.map +1 -1
  198. package/dist/generate/render-image.js +14 -4
  199. package/dist/generate/render-image.js.map +1 -1
  200. package/dist/image/index.d.ts +3 -1
  201. package/dist/image/index.d.ts.map +1 -1
  202. package/dist/image/index.js +4 -3
  203. package/dist/image/index.js.map +1 -1
  204. package/dist/image/jpeg.d.ts +5 -4
  205. package/dist/image/jpeg.d.ts.map +1 -1
  206. package/dist/image/jpeg.js +13 -36
  207. package/dist/image/jpeg.js.map +1 -1
  208. package/dist/image/load.d.ts.map +1 -1
  209. package/dist/image/load.js +4 -15
  210. package/dist/image/load.js.map +1 -1
  211. package/dist/image/resolve.d.ts.map +1 -1
  212. package/dist/image/resolve.js +2 -8
  213. package/dist/image/resolve.js.map +1 -1
  214. package/dist/image/uri.d.ts.map +1 -1
  215. package/dist/image/uri.js +2 -3
  216. package/dist/image/uri.js.map +1 -1
  217. package/dist/index.d.ts +10 -5
  218. package/dist/index.d.ts.map +1 -1
  219. package/dist/index.js +12 -4
  220. package/dist/index.js.map +1 -1
  221. package/dist/jpeg/index.d.ts +10 -0
  222. package/dist/jpeg/index.d.ts.map +1 -0
  223. package/dist/jpeg/index.js +2 -0
  224. package/dist/jpeg/index.js.map +1 -0
  225. package/dist/jpeg/segments.d.ts +32 -0
  226. package/dist/jpeg/segments.d.ts.map +1 -0
  227. package/dist/jpeg/segments.js +66 -0
  228. package/dist/jpeg/segments.js.map +1 -0
  229. package/dist/layout/draw.d.ts +20 -0
  230. package/dist/layout/draw.d.ts.map +1 -0
  231. package/dist/layout/draw.js +32 -0
  232. package/dist/layout/draw.js.map +1 -0
  233. package/dist/layout/extent.d.ts +19 -0
  234. package/dist/layout/extent.d.ts.map +1 -0
  235. package/dist/layout/extent.js +24 -0
  236. package/dist/layout/extent.js.map +1 -0
  237. package/dist/layout/index.d.ts +7 -4
  238. package/dist/layout/index.d.ts.map +1 -1
  239. package/dist/layout/index.js +5 -3
  240. package/dist/layout/index.js.map +1 -1
  241. package/dist/layout/lines.d.ts +0 -17
  242. package/dist/layout/lines.d.ts.map +1 -1
  243. package/dist/layout/lines.js +2 -35
  244. package/dist/layout/lines.js.map +1 -1
  245. package/dist/measure/faces.d.ts.map +1 -1
  246. package/dist/measure/faces.js +8 -2
  247. package/dist/measure/faces.js.map +1 -1
  248. package/dist/meta/index.d.ts +1 -0
  249. package/dist/meta/index.d.ts.map +1 -1
  250. package/dist/meta/index.js +1 -0
  251. package/dist/meta/index.js.map +1 -1
  252. package/dist/meta/path.d.ts +24 -0
  253. package/dist/meta/path.d.ts.map +1 -0
  254. package/dist/meta/path.js +41 -0
  255. package/dist/meta/path.js.map +1 -0
  256. package/dist/meta/tags.d.ts.map +1 -1
  257. package/dist/meta/tags.js +6 -1
  258. package/dist/meta/tags.js.map +1 -1
  259. package/dist/placement/index.d.ts +7 -2
  260. package/dist/placement/index.d.ts.map +1 -1
  261. package/dist/placement/index.js +9 -3
  262. package/dist/placement/index.js.map +1 -1
  263. package/dist/placement/relative.d.ts +8 -3
  264. package/dist/placement/relative.d.ts.map +1 -1
  265. package/dist/placement/relative.js +12 -5
  266. package/dist/placement/relative.js.map +1 -1
  267. package/dist/platform/base64.d.ts +13 -0
  268. package/dist/platform/base64.d.ts.map +1 -0
  269. package/dist/platform/base64.js +35 -0
  270. package/dist/platform/base64.js.map +1 -0
  271. package/dist/platform/rasteriser.browser.d.ts +16 -0
  272. package/dist/platform/rasteriser.browser.d.ts.map +1 -0
  273. package/dist/platform/rasteriser.browser.js +20 -0
  274. package/dist/platform/rasteriser.browser.js.map +1 -0
  275. package/dist/platform/rasteriser.node.d.ts +2 -0
  276. package/dist/platform/rasteriser.node.d.ts.map +1 -0
  277. package/dist/platform/rasteriser.node.js +2 -0
  278. package/dist/platform/rasteriser.node.js.map +1 -0
  279. package/dist/platform/read-file.browser.d.ts +17 -0
  280. package/dist/platform/read-file.browser.d.ts.map +1 -0
  281. package/dist/platform/read-file.browser.js +23 -0
  282. package/dist/platform/read-file.browser.js.map +1 -0
  283. package/dist/platform/read-file.node.d.ts +19 -0
  284. package/dist/platform/read-file.node.d.ts.map +1 -0
  285. package/dist/platform/read-file.node.js +31 -0
  286. package/dist/platform/read-file.node.js.map +1 -0
  287. package/dist/png/chunk.d.ts +23 -0
  288. package/dist/png/chunk.d.ts.map +1 -0
  289. package/dist/png/chunk.js +48 -0
  290. package/dist/png/chunk.js.map +1 -0
  291. package/dist/png/index.d.ts +13 -0
  292. package/dist/png/index.d.ts.map +1 -0
  293. package/dist/png/index.js +3 -0
  294. package/dist/png/index.js.map +1 -0
  295. package/dist/png/recompress.d.ts +23 -0
  296. package/dist/png/recompress.d.ts.map +1 -0
  297. package/dist/png/recompress.js +81 -0
  298. package/dist/png/recompress.js.map +1 -0
  299. package/dist/props.d.ts +11 -0
  300. package/dist/props.d.ts.map +1 -1
  301. package/dist/props.js +16 -0
  302. package/dist/props.js.map +1 -1
  303. package/dist/render/image.d.ts +20 -0
  304. package/dist/render/image.d.ts.map +1 -0
  305. package/dist/render/image.js +29 -0
  306. package/dist/render/image.js.map +1 -0
  307. package/dist/render/index.d.ts +2 -1
  308. package/dist/render/index.d.ts.map +1 -1
  309. package/dist/render/index.js +5 -4
  310. package/dist/render/index.js.map +1 -1
  311. package/dist/render/png.d.ts +14 -4
  312. package/dist/render/png.d.ts.map +1 -1
  313. package/dist/render/png.js +22 -23
  314. package/dist/render/png.js.map +1 -1
  315. package/dist/render/rasterise.d.ts +15 -0
  316. package/dist/render/rasterise.d.ts.map +1 -0
  317. package/dist/render/rasterise.js +34 -0
  318. package/dist/render/rasterise.js.map +1 -0
  319. package/dist/render/svg.d.ts.map +1 -1
  320. package/dist/render/svg.js +10 -2
  321. package/dist/render/svg.js.map +1 -1
  322. package/dist/sign/base64url.d.ts +16 -0
  323. package/dist/sign/base64url.d.ts.map +1 -0
  324. package/dist/sign/base64url.js +24 -0
  325. package/dist/sign/base64url.js.map +1 -0
  326. package/dist/sign/index.d.ts +49 -0
  327. package/dist/sign/index.d.ts.map +1 -0
  328. package/dist/sign/index.js +133 -0
  329. package/dist/sign/index.js.map +1 -0
  330. package/dist/stamp/carrier/index.d.ts +7 -0
  331. package/dist/stamp/carrier/index.d.ts.map +1 -0
  332. package/dist/stamp/carrier/index.js +27 -0
  333. package/dist/stamp/carrier/index.js.map +1 -0
  334. package/dist/stamp/carrier/isobmff.d.ts +7 -0
  335. package/dist/stamp/carrier/isobmff.d.ts.map +1 -0
  336. package/dist/stamp/carrier/isobmff.js +55 -0
  337. package/dist/stamp/carrier/isobmff.js.map +1 -0
  338. package/dist/stamp/carrier/jpeg.d.ts +4 -0
  339. package/dist/stamp/carrier/jpeg.d.ts.map +1 -0
  340. package/dist/stamp/carrier/jpeg.js +76 -0
  341. package/dist/stamp/carrier/jpeg.js.map +1 -0
  342. package/dist/stamp/carrier/png.d.ts +7 -0
  343. package/dist/stamp/carrier/png.d.ts.map +1 -0
  344. package/dist/stamp/carrier/png.js +50 -0
  345. package/dist/stamp/carrier/png.js.map +1 -0
  346. package/dist/stamp/carrier/riff.d.ts +4 -0
  347. package/dist/stamp/carrier/riff.d.ts.map +1 -0
  348. package/dist/stamp/carrier/riff.js +54 -0
  349. package/dist/stamp/carrier/riff.js.map +1 -0
  350. package/dist/stamp/carrier/types.d.ts +25 -0
  351. package/dist/stamp/carrier/types.d.ts.map +1 -0
  352. package/dist/stamp/carrier/types.js +2 -0
  353. package/dist/stamp/carrier/types.js.map +1 -0
  354. package/dist/stamp/chunk.d.ts +0 -2
  355. package/dist/stamp/chunk.d.ts.map +1 -1
  356. package/dist/stamp/chunk.js +10 -18
  357. package/dist/stamp/chunk.js.map +1 -1
  358. package/dist/stamp/config-digest.d.ts +18 -0
  359. package/dist/stamp/config-digest.d.ts.map +1 -1
  360. package/dist/stamp/config-digest.js +25 -0
  361. package/dist/stamp/config-digest.js.map +1 -1
  362. package/dist/stamp/index.d.ts +2 -2
  363. package/dist/stamp/index.d.ts.map +1 -1
  364. package/dist/stamp/index.js +2 -2
  365. package/dist/stamp/index.js.map +1 -1
  366. package/dist/stamp/payload.d.ts +28 -0
  367. package/dist/stamp/payload.d.ts.map +1 -0
  368. package/dist/stamp/payload.js +42 -0
  369. package/dist/stamp/payload.js.map +1 -0
  370. package/dist/stamp/read.d.ts +5 -4
  371. package/dist/stamp/read.d.ts.map +1 -1
  372. package/dist/stamp/read.js +26 -43
  373. package/dist/stamp/read.js.map +1 -1
  374. package/dist/stamp/window.d.ts +11 -0
  375. package/dist/stamp/window.d.ts.map +1 -0
  376. package/dist/stamp/window.js +11 -0
  377. package/dist/stamp/window.js.map +1 -0
  378. package/dist/stamp/write.d.ts +21 -0
  379. package/dist/stamp/write.d.ts.map +1 -0
  380. package/dist/stamp/write.js +31 -0
  381. package/dist/stamp/write.js.map +1 -0
  382. package/dist/templates/article/bottom.d.ts +15 -0
  383. package/dist/templates/article/bottom.d.ts.map +1 -0
  384. package/dist/templates/article/bottom.js +61 -0
  385. package/dist/templates/article/bottom.js.map +1 -0
  386. package/dist/templates/article/index.d.ts +12 -0
  387. package/dist/templates/article/index.d.ts.map +1 -0
  388. package/dist/templates/article/index.js +42 -0
  389. package/dist/templates/article/index.js.map +1 -0
  390. package/dist/templates/article/lines.d.ts +27 -0
  391. package/dist/templates/article/lines.d.ts.map +1 -0
  392. package/dist/templates/article/lines.js +53 -0
  393. package/dist/templates/article/lines.js.map +1 -0
  394. package/dist/templates/article/tags.d.ts +25 -0
  395. package/dist/templates/article/tags.d.ts.map +1 -0
  396. package/dist/templates/article/tags.js +63 -0
  397. package/dist/templates/article/tags.js.map +1 -0
  398. package/dist/templates/attribution.d.ts +2 -6
  399. package/dist/templates/attribution.d.ts.map +1 -1
  400. package/dist/templates/attribution.js +8 -22
  401. package/dist/templates/attribution.js.map +1 -1
  402. package/dist/templates/banner/badge-props.d.ts +16 -0
  403. package/dist/templates/banner/badge-props.d.ts.map +1 -0
  404. package/dist/templates/banner/badge-props.js +58 -0
  405. package/dist/templates/banner/badge-props.js.map +1 -0
  406. package/dist/templates/banner/index.d.ts.map +1 -1
  407. package/dist/templates/banner/index.js +6 -4
  408. package/dist/templates/banner/index.js.map +1 -1
  409. package/dist/templates/banner/version.d.ts.map +1 -1
  410. package/dist/templates/banner/version.js +4 -4
  411. package/dist/templates/banner/version.js.map +1 -1
  412. package/dist/templates/bottom.d.ts +23 -0
  413. package/dist/templates/bottom.d.ts.map +1 -0
  414. package/dist/templates/bottom.js +37 -0
  415. package/dist/templates/bottom.js.map +1 -0
  416. package/dist/templates/byline.d.ts +19 -0
  417. package/dist/templates/byline.d.ts.map +1 -0
  418. package/dist/templates/byline.js +45 -0
  419. package/dist/templates/byline.js.map +1 -0
  420. package/dist/templates/code/clip.js +1 -1
  421. package/dist/templates/code/clip.js.map +1 -1
  422. package/dist/templates/code/fit.js +1 -1
  423. package/dist/templates/code/fit.js.map +1 -1
  424. package/dist/templates/code/warn.d.ts +1 -1
  425. package/dist/templates/code/warn.d.ts.map +1 -1
  426. package/dist/templates/code/warn.js +2 -2
  427. package/dist/templates/code/warn.js.map +1 -1
  428. package/dist/templates/docs/chrome.d.ts +17 -0
  429. package/dist/templates/docs/chrome.d.ts.map +1 -0
  430. package/dist/templates/docs/chrome.js +44 -0
  431. package/dist/templates/docs/chrome.js.map +1 -0
  432. package/dist/templates/docs/crumbs.d.ts +14 -0
  433. package/dist/templates/docs/crumbs.d.ts.map +1 -0
  434. package/dist/templates/docs/crumbs.js +32 -0
  435. package/dist/templates/docs/crumbs.js.map +1 -0
  436. package/dist/templates/docs/index.d.ts +13 -0
  437. package/dist/templates/docs/index.d.ts.map +1 -0
  438. package/dist/templates/docs/index.js +47 -0
  439. package/dist/templates/docs/index.js.map +1 -0
  440. package/dist/templates/docs/lines.d.ts +14 -0
  441. package/dist/templates/docs/lines.d.ts.map +1 -0
  442. package/dist/templates/docs/lines.js +29 -0
  443. package/dist/templates/docs/lines.js.map +1 -0
  444. package/dist/templates/event/index.d.ts +12 -0
  445. package/dist/templates/event/index.d.ts.map +1 -0
  446. package/dist/templates/event/index.js +59 -0
  447. package/dist/templates/event/index.js.map +1 -0
  448. package/dist/templates/event/lines.d.ts +14 -0
  449. package/dist/templates/event/lines.d.ts.map +1 -0
  450. package/dist/templates/event/lines.js +29 -0
  451. package/dist/templates/event/lines.js.map +1 -0
  452. package/dist/templates/event/plate.d.ts +16 -0
  453. package/dist/templates/event/plate.d.ts.map +1 -0
  454. package/dist/templates/event/plate.js +36 -0
  455. package/dist/templates/event/plate.js.map +1 -0
  456. package/dist/templates/frame.d.ts +68 -0
  457. package/dist/templates/frame.d.ts.map +1 -0
  458. package/dist/templates/frame.js +63 -0
  459. package/dist/templates/frame.js.map +1 -0
  460. package/dist/templates/index.d.ts +9 -0
  461. package/dist/templates/index.d.ts.map +1 -1
  462. package/dist/templates/index.js +27 -0
  463. package/dist/templates/index.js.map +1 -1
  464. package/dist/templates/photo/index.d.ts +17 -0
  465. package/dist/templates/photo/index.d.ts.map +1 -0
  466. package/dist/templates/photo/index.js +51 -0
  467. package/dist/templates/photo/index.js.map +1 -0
  468. package/dist/templates/photo/lines.d.ts +21 -0
  469. package/dist/templates/photo/lines.d.ts.map +1 -0
  470. package/dist/templates/photo/lines.js +36 -0
  471. package/dist/templates/photo/lines.js.map +1 -0
  472. package/dist/templates/pill.d.ts +33 -0
  473. package/dist/templates/pill.d.ts.map +1 -0
  474. package/dist/templates/pill.js +50 -0
  475. package/dist/templates/pill.js.map +1 -0
  476. package/dist/templates/portrait.d.ts +40 -0
  477. package/dist/templates/portrait.d.ts.map +1 -0
  478. package/dist/templates/portrait.js +56 -0
  479. package/dist/templates/portrait.js.map +1 -0
  480. package/dist/templates/quote/index.d.ts +11 -0
  481. package/dist/templates/quote/index.d.ts.map +1 -0
  482. package/dist/templates/quote/index.js +60 -0
  483. package/dist/templates/quote/index.js.map +1 -0
  484. package/dist/templates/quote/lines.d.ts +24 -0
  485. package/dist/templates/quote/lines.d.ts.map +1 -0
  486. package/dist/templates/quote/lines.js +35 -0
  487. package/dist/templates/quote/lines.js.map +1 -0
  488. package/dist/templates/quote/mark.d.ts +13 -0
  489. package/dist/templates/quote/mark.d.ts.map +1 -0
  490. package/dist/templates/quote/mark.js +39 -0
  491. package/dist/templates/quote/mark.js.map +1 -0
  492. package/dist/templates/quote/speaker.d.ts +18 -0
  493. package/dist/templates/quote/speaker.d.ts.map +1 -0
  494. package/dist/templates/quote/speaker.js +41 -0
  495. package/dist/templates/quote/speaker.js.map +1 -0
  496. package/dist/templates/release/block.d.ts +8 -0
  497. package/dist/templates/release/block.d.ts.map +1 -0
  498. package/dist/templates/release/block.js +16 -0
  499. package/dist/templates/release/block.js.map +1 -0
  500. package/dist/templates/release/changes.d.ts +23 -0
  501. package/dist/templates/release/changes.d.ts.map +1 -0
  502. package/dist/templates/release/changes.js +45 -0
  503. package/dist/templates/release/changes.js.map +1 -0
  504. package/dist/templates/release/index.d.ts +11 -0
  505. package/dist/templates/release/index.d.ts.map +1 -0
  506. package/dist/templates/release/index.js +55 -0
  507. package/dist/templates/release/index.js.map +1 -0
  508. package/dist/templates/release/lines.d.ts +21 -0
  509. package/dist/templates/release/lines.d.ts.map +1 -0
  510. package/dist/templates/release/lines.js +36 -0
  511. package/dist/templates/release/lines.js.map +1 -0
  512. package/dist/templates/stat/index.d.ts +11 -0
  513. package/dist/templates/stat/index.d.ts.map +1 -0
  514. package/dist/templates/stat/index.js +43 -0
  515. package/dist/templates/stat/index.js.map +1 -0
  516. package/dist/templates/stat/lines.d.ts +23 -0
  517. package/dist/templates/stat/lines.d.ts.map +1 -0
  518. package/dist/templates/stat/lines.js +47 -0
  519. package/dist/templates/stat/lines.js.map +1 -0
  520. package/dist/templates/terminal/index.d.ts +16 -0
  521. package/dist/templates/terminal/index.d.ts.map +1 -0
  522. package/dist/templates/terminal/index.js +62 -0
  523. package/dist/templates/terminal/index.js.map +1 -0
  524. package/dist/templates/terminal/session.d.ts +17 -0
  525. package/dist/templates/terminal/session.d.ts.map +1 -0
  526. package/dist/templates/terminal/session.js +86 -0
  527. package/dist/templates/terminal/session.js.map +1 -0
  528. package/dist/templates/terminal/window.d.ts +14 -0
  529. package/dist/templates/terminal/window.d.ts.map +1 -0
  530. package/dist/templates/terminal/window.js +84 -0
  531. package/dist/templates/terminal/window.js.map +1 -0
  532. package/dist/templates/version.d.ts +16 -0
  533. package/dist/templates/version.d.ts.map +1 -0
  534. package/dist/templates/version.js +23 -0
  535. package/dist/templates/version.js.map +1 -0
  536. package/dist/templates/wordmark/index.d.ts +13 -0
  537. package/dist/templates/wordmark/index.d.ts.map +1 -0
  538. package/dist/templates/wordmark/index.js +53 -0
  539. package/dist/templates/wordmark/index.js.map +1 -0
  540. package/dist/templates/wordmark/lines.d.ts +22 -0
  541. package/dist/templates/wordmark/lines.d.ts.map +1 -0
  542. package/dist/templates/wordmark/lines.js +61 -0
  543. package/dist/templates/wordmark/lines.js.map +1 -0
  544. package/dist/templates/wordmark/mark.d.ts +16 -0
  545. package/dist/templates/wordmark/mark.d.ts.map +1 -0
  546. package/dist/templates/wordmark/mark.js +30 -0
  547. package/dist/templates/wordmark/mark.js.map +1 -0
  548. package/dist/text/clamp.d.ts +12 -0
  549. package/dist/text/clamp.d.ts.map +1 -0
  550. package/dist/text/clamp.js +41 -0
  551. package/dist/text/clamp.js.map +1 -0
  552. package/dist/text/ellipsis.d.ts +3 -0
  553. package/dist/text/ellipsis.d.ts.map +1 -0
  554. package/dist/text/ellipsis.js +3 -0
  555. package/dist/text/ellipsis.js.map +1 -0
  556. package/dist/text/index.d.ts +2 -0
  557. package/dist/text/index.d.ts.map +1 -1
  558. package/dist/text/index.js +2 -0
  559. package/dist/text/index.js.map +1 -1
  560. package/dist/texture/grain.d.ts +17 -0
  561. package/dist/texture/grain.d.ts.map +1 -0
  562. package/dist/texture/grain.js +29 -0
  563. package/dist/texture/grain.js.map +1 -0
  564. package/dist/texture/index.d.ts +11 -0
  565. package/dist/texture/index.d.ts.map +1 -0
  566. package/dist/texture/index.js +20 -0
  567. package/dist/texture/index.js.map +1 -0
  568. package/dist/texture/pattern.d.ts +17 -0
  569. package/dist/texture/pattern.d.ts.map +1 -0
  570. package/dist/texture/pattern.js +45 -0
  571. package/dist/texture/pattern.js.map +1 -0
  572. package/dist/texture/resolve.d.ts +16 -0
  573. package/dist/texture/resolve.d.ts.map +1 -0
  574. package/dist/texture/resolve.js +20 -0
  575. package/dist/texture/resolve.js.map +1 -0
  576. package/dist/theme/index.d.ts +27 -0
  577. package/dist/theme/index.d.ts.map +1 -0
  578. package/dist/theme/index.js +41 -0
  579. package/dist/theme/index.js.map +1 -0
  580. package/dist/theme/presets.d.ts +38 -0
  581. package/dist/theme/presets.d.ts.map +1 -0
  582. package/dist/theme/presets.js +150 -0
  583. package/dist/theme/presets.js.map +1 -0
  584. package/dist/types.d.ts +281 -10
  585. package/dist/types.d.ts.map +1 -1
  586. package/dist/validate/background.d.ts +12 -0
  587. package/dist/validate/background.d.ts.map +1 -0
  588. package/dist/validate/background.js +53 -0
  589. package/dist/validate/background.js.map +1 -0
  590. package/dist/validate/collect.d.ts +9 -0
  591. package/dist/validate/collect.d.ts.map +1 -0
  592. package/dist/validate/collect.js +35 -0
  593. package/dist/validate/collect.js.map +1 -0
  594. package/dist/validate/index.d.ts.map +1 -1
  595. package/dist/validate/index.js +2 -20
  596. package/dist/validate/index.js.map +1 -1
  597. package/dist/validate/keys.d.ts +22 -0
  598. package/dist/validate/keys.d.ts.map +1 -1
  599. package/dist/validate/keys.js +69 -0
  600. package/dist/validate/keys.js.map +1 -1
  601. package/dist/validate/overrides.d.ts.map +1 -1
  602. package/dist/validate/overrides.js +5 -1
  603. package/dist/validate/overrides.js.map +1 -1
  604. package/dist/validate/texture.d.ts +11 -0
  605. package/dist/validate/texture.d.ts.map +1 -0
  606. package/dist/validate/texture.js +34 -0
  607. package/dist/validate/texture.js.map +1 -0
  608. package/dist/validate/values.d.ts +16 -10
  609. package/dist/validate/values.d.ts.map +1 -1
  610. package/dist/validate/values.js +31 -44
  611. package/dist/validate/values.js.map +1 -1
  612. package/package.json +16 -2
  613. package/dist/background.d.ts.map +0 -1
  614. package/dist/background.js +0 -65
  615. package/dist/background.js.map +0 -1
  616. package/dist/cli/args.d.ts +0 -14
  617. package/dist/cli/args.d.ts.map +0 -1
  618. package/dist/cli/args.js +0 -67
  619. package/dist/cli/args.js.map +0 -1
  620. package/dist/cli.d.ts +0 -3
  621. package/dist/cli.d.ts.map +0 -1
  622. package/dist/cli.js +0 -102
  623. package/dist/cli.js.map +0 -1
  624. package/dist/config.d.ts +0 -95
  625. package/dist/config.d.ts.map +0 -1
  626. package/dist/config.js +0 -208
  627. package/dist/config.js.map +0 -1
  628. package/dist/fonts.d.ts +0 -18
  629. package/dist/fonts.d.ts.map +0 -1
  630. package/dist/fonts.js +0 -102
  631. package/dist/fonts.js.map +0 -1
  632. package/dist/generate.d.ts +0 -63
  633. package/dist/generate.d.ts.map +0 -1
  634. package/dist/generate.js +0 -109
  635. package/dist/generate.js.map +0 -1
  636. package/dist/highlight.d.ts +0 -75
  637. package/dist/highlight.d.ts.map +0 -1
  638. package/dist/highlight.js +0 -137
  639. package/dist/highlight.js.map +0 -1
  640. package/dist/render.d.ts +0 -24
  641. package/dist/render.d.ts.map +0 -1
  642. package/dist/render.js +0 -77
  643. package/dist/render.js.map +0 -1
  644. package/dist/stamp.d.ts +0 -29
  645. package/dist/stamp.d.ts.map +0 -1
  646. package/dist/stamp.js +0 -198
  647. package/dist/stamp.js.map +0 -1
  648. package/dist/templates/banner.d.ts +0 -9
  649. package/dist/templates/banner.d.ts.map +0 -1
  650. package/dist/templates/banner.js +0 -115
  651. package/dist/templates/banner.js.map +0 -1
  652. package/dist/templates/card.d.ts +0 -7
  653. package/dist/templates/card.d.ts.map +0 -1
  654. package/dist/templates/card.js +0 -72
  655. package/dist/templates/card.js.map +0 -1
  656. package/dist/templates/code.d.ts +0 -12
  657. package/dist/templates/code.d.ts.map +0 -1
  658. package/dist/templates/code.js +0 -275
  659. package/dist/templates/code.js.map +0 -1
  660. package/dist/templates/measure.d.ts +0 -11
  661. package/dist/templates/measure.d.ts.map +0 -1
  662. package/dist/templates/measure.js +0 -11
  663. package/dist/templates/measure.js.map +0 -1
  664. package/dist/templates/props.d.ts +0 -7
  665. package/dist/templates/props.d.ts.map +0 -1
  666. package/dist/templates/props.js +0 -17
  667. package/dist/templates/props.js.map +0 -1
  668. package/dist/templates/text.d.ts +0 -37
  669. package/dist/templates/text.d.ts.map +0 -1
  670. package/dist/templates/text.js +0 -26
  671. package/dist/templates/text.js.map +0 -1
  672. package/dist/text/stack.d.ts +0 -24
  673. package/dist/text/stack.d.ts.map +0 -1
  674. package/dist/text/stack.js +0 -18
  675. package/dist/text/stack.js.map +0 -1
  676. package/dist/text.d.ts +0 -56
  677. package/dist/text.d.ts.map +0 -1
  678. package/dist/text.js +0 -78
  679. package/dist/text.js.map +0 -1
  680. package/dist/validate/sizes.d.ts +0 -9
  681. package/dist/validate/sizes.d.ts.map +0 -1
  682. package/dist/validate/sizes.js +0 -27
  683. package/dist/validate/sizes.js.map +0 -1
  684. package/dist/validate.d.ts +0 -15
  685. package/dist/validate.d.ts.map +0 -1
  686. package/dist/validate.js +0 -300
  687. package/dist/validate.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The content root to read a previewed post against, which is what its slug is
3
+ * derived from, and so what the preview file ends up called.
4
+ *
5
+ * The working directory, for a file underneath it: that is what the path on the
6
+ * command line was relative to, and it keeps the page-bundle convention
7
+ * working, where `hello/index.md` is named after its directory instead of being
8
+ * one more `index`. A file from somewhere else falls back to its own directory,
9
+ * since a root it is not under cannot describe it, and a relative path full of
10
+ * `..` segments is not a slug at all.
11
+ *
12
+ * The slug only ever names a file in the temp directory here, so the point is
13
+ * that two posts do not collide, rather than matching what a build would call
14
+ * the real image.
15
+ */
16
+ export declare function contentRootFor(file: string): string;
17
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../src/cli/preview/root.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,22 @@
1
+ import path from "node:path";
2
+ /**
3
+ * The content root to read a previewed post against, which is what its slug is
4
+ * derived from, and so what the preview file ends up called.
5
+ *
6
+ * The working directory, for a file underneath it: that is what the path on the
7
+ * command line was relative to, and it keeps the page-bundle convention
8
+ * working, where `hello/index.md` is named after its directory instead of being
9
+ * one more `index`. A file from somewhere else falls back to its own directory,
10
+ * since a root it is not under cannot describe it, and a relative path full of
11
+ * `..` segments is not a slug at all.
12
+ *
13
+ * The slug only ever names a file in the temp directory here, so the point is
14
+ * that two posts do not collide, rather than matching what a build would call
15
+ * the real image.
16
+ */
17
+ export function contentRootFor(file) {
18
+ const absolute = path.resolve(file);
19
+ const cwd = process.cwd();
20
+ return absolute.startsWith(cwd + path.sep) ? cwd : path.dirname(absolute);
21
+ }
22
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../src/cli/preview/root.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { OutputSize } from "../../types.js";
2
+ /**
3
+ * Which size to preview: the one `--size` names, or the first configured one,
4
+ * which is what an `extra` image already defaults to.
5
+ */
6
+ export declare function pickSize(sizes: readonly OutputSize[], name: string | undefined): OutputSize;
7
+ //# sourceMappingURL=size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../../src/cli/preview/size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,UAAU,CAWZ"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Which size to preview: the one `--size` names, or the first configured one,
3
+ * which is what an `extra` image already defaults to.
4
+ */
5
+ export function pickSize(sizes, name) {
6
+ const names = sizes.map((size) => size.name);
7
+ const wanted = sizes.find((size) => size.name === (name ?? names[0]));
8
+ if (wanted === undefined) {
9
+ throw new Error(`Unknown size "${String(name)}". Configured sizes: ${names.join(", ")}.`);
10
+ }
11
+ return wanted;
12
+ }
13
+ //# sourceMappingURL=size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../../src/cli/preview/size.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,KAA4B,EAC5B,IAAwB;IAExB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { GeneratedImage } from "../generate/index.js";
2
+ /** Report one image as it is written, or as it is left alone. */
3
+ export declare function reportImage(result: GeneratedImage, isDryRun: boolean): void;
4
+ /** Report what a whole run came to. */
5
+ export declare function reportSummary(results: readonly GeneratedImage[], isDryRun: boolean): void;
6
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAW3D,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAQ3E;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,OAAO,GAChB,IAAI,CASN"}
@@ -0,0 +1,23 @@
1
+ /** What this run did, or would have done, to one image. */
2
+ function verbFor(result, isDryRun) {
3
+ if (result.skipped) {
4
+ return "skip";
5
+ }
6
+ return isDryRun ? "write" : "wrote";
7
+ }
8
+ /** Report one image as it is written, or as it is left alone. */
9
+ export function reportImage(result, isDryRun) {
10
+ // The URL is the half of a placement nothing else on the command line
11
+ // would show, and the quickest way to see a `urlBase` is wrong.
12
+ const served = result.url === undefined ? "" : ` -> ${result.url}`;
13
+ console.log(`${verbFor(result, isDryRun).padEnd(5)} ${result.outputPath}${served}`);
14
+ }
15
+ /** Report what a whole run came to. */
16
+ export function reportSummary(results, isDryRun) {
17
+ const written = results.filter((result) => !result.skipped).length;
18
+ const skipped = String(results.length - written);
19
+ console.log(isDryRun
20
+ ? `Dry run: ${String(written)} would be written, ${skipped} already up to date. Nothing was written.`
21
+ : `Done: ${String(written)} written, ${skipped} skipped.`);
22
+ }
23
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"AAEA,2DAA2D;AAC3D,SAAS,OAAO,CAAC,MAAsB,EAAE,QAAiB;IACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACtC,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,MAAsB,EAAE,QAAiB;IACnE,sEAAsE;IACtE,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;IAEnE,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CACvE,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAC3B,OAAkC,EAClC,QAAiB;IAEjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CACT,QAAQ;QACN,CAAC,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,sBAAsB,OAAO,2CAA2C;QACrG,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,aAAa,OAAO,WAAW,CAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Whether a change under the content root is one worth rebuilding for.
3
+ *
4
+ * Two kinds of change arrive that are not content. The images themselves: the
5
+ * default placement writes a PNG next to the post it came from, so every build
6
+ * changes the tree it is watching. And an editor's own files, such as
7
+ * `post.md~` or `.post.md.swp`, which come and go around the real write.
8
+ *
9
+ * Both are ruled out by the extensions a walk would read, which is the same
10
+ * list that decides what a build looks at. So the watcher and the build agree
11
+ * on what content is, rather than keeping two ideas of it.
12
+ */
13
+ export declare function isContentChange(filename: string, extensions: readonly string[]): boolean;
14
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/cli/watch/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAET"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Whether a change under the content root is one worth rebuilding for.
3
+ *
4
+ * Two kinds of change arrive that are not content. The images themselves: the
5
+ * default placement writes a PNG next to the post it came from, so every build
6
+ * changes the tree it is watching. And an editor's own files, such as
7
+ * `post.md~` or `.post.md.swp`, which come and go around the real write.
8
+ *
9
+ * Both are ruled out by the extensions a walk would read, which is the same
10
+ * list that decides what a build looks at. So the watcher and the build agree
11
+ * on what content is, rather than keeping two ideas of it.
12
+ */
13
+ export function isContentChange(filename, extensions) {
14
+ return extensions.some((extension) => filename.endsWith(extension));
15
+ }
16
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/cli/watch/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,UAA6B;IAE7B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,27 @@
1
+ /** What a watch run needs: where to look, what counts, and what to run. */
2
+ export interface WatchOptions {
3
+ readonly dir: string;
4
+ /** File extensions the build reads, which is what a change has to be. */
5
+ readonly extensions: readonly string[];
6
+ readonly build: () => Promise<void>;
7
+ /** Coalescing window, for tests that would rather not wait for it. */
8
+ readonly delayMs?: number;
9
+ /** Stop watching. The CLI watches until the process ends; tests do not. */
10
+ readonly signal?: AbortSignal;
11
+ }
12
+ /**
13
+ * Build the tree, then rebuild it whenever a content file changes, until the
14
+ * process is stopped.
15
+ *
16
+ * The returned promise settles when the watcher stops or fails, which is what
17
+ * keeps the process alive: there is nothing else to await once the first build
18
+ * is done. The watcher is registered before that build starts, so an edit made
19
+ * while it runs is not lost.
20
+ *
21
+ * Only the content tree is watched. A change to the config module is not picked
22
+ * up, because reloading it would mean importing it again under a fresh URL and
23
+ * leaving the old copy behind, and the modules it imports could not be
24
+ * invalidated at all. Restart the watch after editing a config.
25
+ */
26
+ export declare function watchContent(options: WatchOptions): Promise<void>;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/watch/index.ts"],"names":[],"mappings":"AAKA,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvE"}
@@ -0,0 +1,38 @@
1
+ import { watch } from "node:fs";
2
+ import { isContentChange } from "./filter.js";
3
+ import { createRebuildQueue } from "./queue.js";
4
+ /**
5
+ * Build the tree, then rebuild it whenever a content file changes, until the
6
+ * process is stopped.
7
+ *
8
+ * The returned promise settles when the watcher stops or fails, which is what
9
+ * keeps the process alive: there is nothing else to await once the first build
10
+ * is done. The watcher is registered before that build starts, so an edit made
11
+ * while it runs is not lost.
12
+ *
13
+ * Only the content tree is watched. A change to the config module is not picked
14
+ * up, because reloading it would mean importing it again under a fresh URL and
15
+ * leaving the old copy behind, and the modules it imports could not be
16
+ * invalidated at all. Restart the watch after editing a config.
17
+ */
18
+ export async function watchContent(options) {
19
+ const queue = createRebuildQueue({
20
+ run: options.build,
21
+ ...(options.delayMs !== undefined && { delayMs: options.delayMs }),
22
+ });
23
+ const watcher = watch(options.dir, {
24
+ recursive: true,
25
+ ...(options.signal !== undefined && { signal: options.signal }),
26
+ }, (_event, filename) => {
27
+ if (filename !== null && isContentChange(filename, options.extensions)) {
28
+ queue.touch();
29
+ }
30
+ });
31
+ console.log(`Watching ${options.dir} for changes. Press Ctrl+C to stop.`);
32
+ queue.touch();
33
+ return new Promise((resolve, reject) => {
34
+ watcher.on("close", resolve);
35
+ watcher.on("error", reject);
36
+ });
37
+ }
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/watch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAchD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,KAAK;QAClB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACnE,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CACnB,OAAO,CAAC,GAAG,EACX;QACE,SAAS,EAAE,IAAI;QACf,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;KAChE,EACD,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACnB,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,qCAAqC,CAAC,CAAC;IAC1E,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** A rebuild waiting to happen, or happening. */
2
+ export interface RebuildQueue {
3
+ /** Note that something changed, and rebuild once the changes stop. */
4
+ touch(): void;
5
+ }
6
+ /** How a queue is driven. */
7
+ export interface QueueOptions {
8
+ readonly run: () => Promise<void>;
9
+ /** How long to wait for a burst of changes to finish. */
10
+ readonly delayMs?: number;
11
+ readonly onError?: (error: unknown) => void;
12
+ }
13
+ /**
14
+ * Coalesce change events into rebuilds.
15
+ *
16
+ * Two things have to hold for a watch loop to behave. Saving a file produces
17
+ * more than one event, since editors write, rename and touch mtimes in their
18
+ * own order, so events are held for `delayMs` and the wait restarts while they
19
+ * keep arriving. And a build takes longer than the edit that triggered it, so a
20
+ * change arriving mid-build queues one more run rather than starting a second
21
+ * build alongside the first.
22
+ */
23
+ export declare function createRebuildQueue(options: QueueOptions): RebuildQueue;
24
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/cli/watch/queue.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAQD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CA8CtE"}
@@ -0,0 +1,57 @@
1
+ import { messageOf } from "../message.js";
2
+ /**
3
+ * Long enough to swallow the several events one save produces, short enough
4
+ * that the rebuild still feels like a consequence of hitting save.
5
+ */
6
+ const defaultDelayMs = 80;
7
+ /**
8
+ * Coalesce change events into rebuilds.
9
+ *
10
+ * Two things have to hold for a watch loop to behave. Saving a file produces
11
+ * more than one event, since editors write, rename and touch mtimes in their
12
+ * own order, so events are held for `delayMs` and the wait restarts while they
13
+ * keep arriving. And a build takes longer than the edit that triggered it, so a
14
+ * change arriving mid-build queues one more run rather than starting a second
15
+ * build alongside the first.
16
+ */
17
+ export function createRebuildQueue(options) {
18
+ const delayMs = options.delayMs ?? defaultDelayMs;
19
+ const report = options.onError ??
20
+ ((error) => {
21
+ console.error(messageOf(error));
22
+ });
23
+ let timer;
24
+ let isRunning = false;
25
+ let isPending = false;
26
+ async function drain() {
27
+ isRunning = true;
28
+ try {
29
+ await options.run();
30
+ }
31
+ catch (error) {
32
+ // A failed build must not take the watcher with it. The mistake is
33
+ // usually in the file that was just saved, so the fix is the next save.
34
+ report(error);
35
+ }
36
+ isRunning = false;
37
+ if (isPending) {
38
+ isPending = false;
39
+ // Called rather than awaited, so `drain` does not recurse into a chain
40
+ // of promises that a long watch session would hold open.
41
+ void drain();
42
+ }
43
+ }
44
+ return {
45
+ touch() {
46
+ if (isRunning) {
47
+ isPending = true;
48
+ return;
49
+ }
50
+ clearTimeout(timer);
51
+ timer = setTimeout(() => {
52
+ void drain();
53
+ }, delayMs);
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/cli/watch/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAgB1C;;;GAGG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;IAClD,MAAM,MAAM,GACV,OAAO,CAAC,OAAO;QACf,CAAC,CAAC,KAAc,EAAQ,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IAEL,IAAI,KAAiC,CAAC;IACtC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,UAAU,KAAK;QAClB,SAAS,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mEAAmE;YACnE,wEAAwE;YACxE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,GAAG,KAAK,CAAC;QAElB,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,GAAG,KAAK,CAAC;YAClB,uEAAuE;YACvE,yDAAyD;YACzD,KAAK,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,KAAK,KAAK,EAAE,CAAC;YACf,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BrandColors, CodeStyle, OutputSize } from "../types.js";
1
+ import type { BrandColors, CodeStyle, OutputFormat, OutputSize } from "../types.js";
2
2
  /**
3
3
  * Named output-size presets covering the common social-image standards. Each
4
4
  * `name` becomes the filename suffix (e.g. `my-post-og.png`).
@@ -42,6 +42,44 @@ export declare const DEFAULT_SIZES: readonly OutputSize[];
42
42
  * avoid: supply a font file and the output stops depending on the machine.
43
43
  */
44
44
  export declare const DEFAULT_FONT_FAMILY = "Arial, Helvetica, sans-serif";
45
+ /**
46
+ * Default zlib level for the rendered PNG: the strongest there is.
47
+ *
48
+ * A meta image is written once and then served for as long as the post is up,
49
+ * so the trade is a hundred milliseconds of build time against bytes every
50
+ * reader pays for. The stamps mean even that time is paid once per image rather
51
+ * than once per build. See `png/recompress.ts` for what the level does and does
52
+ * not change.
53
+ */
54
+ export declare const DEFAULT_COMPRESSION_LEVEL = 9;
55
+ /**
56
+ * Default output format: PNG, which is what Colophon wrote before there was a
57
+ * choice and what every platform has always accepted.
58
+ */
59
+ export declare const DEFAULT_FORMAT: OutputFormat;
60
+ /**
61
+ * Default encoding quality for the lossy formats.
62
+ *
63
+ * `80` is where JPEG, WebP and AVIF are conventionally set, and on a meta image
64
+ * it is hard to tell from the original. Gradients are what these pictures are
65
+ * mostly made of and they are the first thing to band, so this is deliberately
66
+ * not lower.
67
+ */
68
+ export declare const DEFAULT_QUALITY = 80;
69
+ /**
70
+ * The lowest quality `maxBytes` will step down to.
71
+ *
72
+ * Below this the banding is obvious enough that the image is no longer doing
73
+ * its job, and an unreadable image under the cap is not what a cap was for.
74
+ */
75
+ export declare const MINIMUM_QUALITY = 30;
76
+ /**
77
+ * How far quality drops on each attempt at `maxBytes`.
78
+ *
79
+ * Ten points is a step a reader can predict from the setting they wrote, and
80
+ * from 80 it reaches the floor in five encodings.
81
+ */
82
+ export declare const QUALITY_STEP = 10;
45
83
  /** Neutral default palette, used when no `colors.brand` is supplied. */
46
84
  export declare const DEFAULT_COLORS: Required<BrandColors>;
47
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;CACZ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAQlD,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;iBACjB,IAAI,EAAE,IAAI;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBAChC,IAAI,EAAE,QAAQ;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;;iBACxC,IAAI,EAAE,SAAS;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,GAAG;;;iBACvC,IAAI,EAAE,WAAW;iBAAE,KAAK,EAAE,IAAI;iBAAE,MAAM,EAAE,IAAI;;CACZ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAG9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAAoB,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAKhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8FACkD,CAAC;AAExF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAQlD,CAAC"}
@@ -28,6 +28,44 @@ export const DEFAULT_SIZES = [
28
28
  * avoid: supply a font file and the output stops depending on the machine.
29
29
  */
30
30
  export const DEFAULT_FONT_FAMILY = "Arial, Helvetica, sans-serif";
31
+ /**
32
+ * Default zlib level for the rendered PNG: the strongest there is.
33
+ *
34
+ * A meta image is written once and then served for as long as the post is up,
35
+ * so the trade is a hundred milliseconds of build time against bytes every
36
+ * reader pays for. The stamps mean even that time is paid once per image rather
37
+ * than once per build. See `png/recompress.ts` for what the level does and does
38
+ * not change.
39
+ */
40
+ export const DEFAULT_COMPRESSION_LEVEL = 9;
41
+ /**
42
+ * Default output format: PNG, which is what Colophon wrote before there was a
43
+ * choice and what every platform has always accepted.
44
+ */
45
+ export const DEFAULT_FORMAT = "png";
46
+ /**
47
+ * Default encoding quality for the lossy formats.
48
+ *
49
+ * `80` is where JPEG, WebP and AVIF are conventionally set, and on a meta image
50
+ * it is hard to tell from the original. Gradients are what these pictures are
51
+ * mostly made of and they are the first thing to band, so this is deliberately
52
+ * not lower.
53
+ */
54
+ export const DEFAULT_QUALITY = 80;
55
+ /**
56
+ * The lowest quality `maxBytes` will step down to.
57
+ *
58
+ * Below this the banding is obvious enough that the image is no longer doing
59
+ * its job, and an unreadable image under the cap is not what a cap was for.
60
+ */
61
+ export const MINIMUM_QUALITY = 30;
62
+ /**
63
+ * How far quality drops on each attempt at `maxBytes`.
64
+ *
65
+ * Ten points is a step a reader can predict from the setting they wrote, and
66
+ * from 80 it reaches the floor in five encodings.
67
+ */
68
+ export const QUALITY_STEP = 10;
31
69
  /** Neutral default palette, used when no `colors.brand` is supplied. */
32
70
  export const DEFAULT_COLORS = {
33
71
  brand: "#4f46e5",
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACd,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,YAAY,CAAC,EAAE;IACf,YAAY,CAAC,MAAM;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,qFAAqF,CAAC;AAExF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,KAAK,EAAE,aAAa;IACpB,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,KAAK;CACpB,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACtD,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACd,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,YAAY,CAAC,EAAE;IACf,YAAY,CAAC,MAAM;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB,KAAK,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,qFAAqF,CAAC;AAExF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,KAAK,EAAE,aAAa;IACpB,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,KAAK;CACpB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ColophonConfig, ColophonConfigFactory, ResolvedConfig } from "../types.js";
2
- export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_FONT_FAMILY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
2
+ export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_COMPRESSION_LEVEL, DEFAULT_FONT_FAMILY, DEFAULT_FORMAT, DEFAULT_QUALITY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
3
3
  /**
4
4
  * Identity helper that returns its argument typed as {@link ColophonConfig}.
5
5
  * Use it in a config module to get editor completion and type-checking.
@@ -18,5 +18,5 @@ export declare function defineConfig(factory: ColophonConfigFactory): ColophonCo
18
18
  * written against a different version of the package is a build error rather
19
19
  * than a set of images quietly rendered with the defaults.
20
20
  */
21
- export declare function resolveConfig(config?: ColophonConfig): ResolvedConfig;
21
+ export declare function resolveConfig(input?: ColophonConfig): ResolvedConfig;
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EAErB,cAAc,EACf,MAAM,aAAa,CAAC;AAYrB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAcvB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC;AACrE;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,qBAAqB,GAC7B,qBAAqB,CAAC;AAUzB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,cAAmB,GAAG,cAAc,CAsBzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EAErB,cAAc,EACf,MAAM,aAAa,CAAC;AAcrB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAcvB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC;AACrE;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,qBAAqB,GAC7B,qBAAqB,CAAC;AAUzB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,GAAE,cAAmB,GAAG,cAAc,CAqCxE"}
@@ -1,10 +1,16 @@
1
- import { resolveFonts } from "../fonts/index.js";
1
+ // From `resolve.js` rather than the barrel, which also exports the font
2
+ // materialising that only a path-taking rasteriser needs.
3
+ import { resolveFonts } from "../fonts/resolve.js";
2
4
  import { resolveOptionalImage } from "../image/index.js";
5
+ import { defaultRasteriser } from "../platform/rasteriser.node.js";
3
6
  import { builtinTemplates } from "../templates/index.js";
7
+ import { applyTheme } from "../theme/index.js";
8
+ import { resolveTexture } from "../texture/index.js";
4
9
  import { validateConfig } from "../validate/index.js";
5
- import { DEFAULT_FONT_FAMILY } from "./defaults.js";
6
- import { defaultBackground, resolveBackground, resolveCode, resolveColors, resolveSizes, shouldLoadSystemFonts, } from "./resolve.js";
7
- export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_FONT_FAMILY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
10
+ import { DEFAULT_FONT_FAMILY, DEFAULT_FORMAT } from "./defaults.js";
11
+ import { resolveMaxBytes, resolveQuality } from "./output.js";
12
+ import { defaultBackground, resolveBackground, resolveCode, resolveColors, resolveCompressionLevel, resolveSizes, shouldLoadSystemFonts, } from "./resolve.js";
13
+ export { DEFAULT_CODE_FONT_FAMILY, DEFAULT_CODE_STYLE, DEFAULT_COLORS, DEFAULT_COMPRESSION_LEVEL, DEFAULT_FONT_FAMILY, DEFAULT_FORMAT, DEFAULT_QUALITY, DEFAULT_SIZES, SIZE_PRESETS, } from "./defaults.js";
8
14
  /**
9
15
  * Default warning handler. Colophon runs at build time, so a compromise the
10
16
  * renderer had to make belongs in the build log by default. Silence is opt-in
@@ -31,13 +37,18 @@ export function defineConfig(config) {
31
37
  * written against a different version of the package is a build error rather
32
38
  * than a set of images quietly rendered with the defaults.
33
39
  */
34
- export function resolveConfig(config = {}) {
35
- validateConfig(config);
40
+ export function resolveConfig(input = {}) {
41
+ validateConfig(input);
42
+ // The theme is folded in before anything is resolved, so the rest of this
43
+ // sees a config that happens to name a background and a palette, and nothing
44
+ // downstream has to know a theme was involved.
45
+ const config = applyTheme(input);
36
46
  const colors = resolveColors(config.colors);
37
47
  const fonts = resolveFonts(config.fonts);
38
48
  return {
39
49
  colors,
40
50
  background: resolveBackground(config.background) ?? defaultBackground(colors),
51
+ texture: resolveTexture(config.texture, colors),
41
52
  fonts,
42
53
  systemFonts: shouldLoadSystemFonts(config.systemFonts, fonts),
43
54
  // A project that supplies one font should not have to name it twice.
@@ -49,6 +60,16 @@ export function resolveConfig(config = {}) {
49
60
  onWarning: config.onWarning ?? warnToConsole,
50
61
  sizes: resolveSizes(config.sizes),
51
62
  templates: { ...builtinTemplates, ...config.templates },
63
+ // Through `platform/`, for two reasons. Naming `render/index.js` would pull
64
+ // `render/png.js` back round to this module, and naming resvg directly
65
+ // would put a native binary in the graph of every build that resolves a
66
+ // config, including one for a browser.
67
+ rasteriser: config.rasteriser ?? defaultRasteriser,
68
+ compressionLevel: resolveCompressionLevel(config.compressionLevel),
69
+ format: config.format ?? DEFAULT_FORMAT,
70
+ quality: resolveQuality(config.quality),
71
+ maxBytes: resolveMaxBytes(config.maxBytes),
72
+ emitSvg: config.emitSvg ?? false,
52
73
  };
53
74
  }
54
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,4EAA4E;IAC5E,iCAAiC;IACjC,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAM,GAAmB,EAAE;IACvD,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO;QACL,MAAM;QACN,UAAU,EACR,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;QACnE,KAAK;QACL,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;QAC7D,qEAAqE;QACrE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,mBAAmB;QACxE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,aAAa;QAC5C,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,SAAS,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;KACxD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,4EAA4E;IAC5E,iCAAiC;IACjC,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAK,GAAmB,EAAE;IACtD,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtB,0EAA0E;IAC1E,6EAA6E;IAC7E,+CAA+C;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO;QACL,MAAM;QACN,UAAU,EACR,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;QACnE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;QAC/C,KAAK;QACL,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;QAC7D,qEAAqE;QACrE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,mBAAmB;QACxE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,aAAa;QAC5C,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,SAAS,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;QACvD,4EAA4E;QAC5E,uEAAuE;QACvE,wEAAwE;QACxE,uCAAuC;QACvC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,iBAAiB;QAClD,gBAAgB,EAAE,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAClE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,cAAc;QACvC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The settings for how a finished picture is encoded, checked here rather than
3
+ * in `validate/`, which checks keys and the names of closed sets.
4
+ *
5
+ * They are in a file of their own rather than beside the other resolvers
6
+ * because `resolve.ts` is already close enough to the FTA threshold that the
7
+ * next thing added to it would push it over.
8
+ */
9
+ /**
10
+ * Encoding quality, `1` to `100`.
11
+ *
12
+ * Out of range is rejected rather than clamped, for the reason
13
+ * `compressionLevel` is: a config asking for `120` has something in mind that
14
+ * no encoder here can give it, and quietly encoding at `100` would leave
15
+ * somebody believing they had asked for more than they had.
16
+ */
17
+ export declare function resolveQuality(quality: number | undefined): number;
18
+ /**
19
+ * The cap on one image, in bytes, or `undefined` for none.
20
+ *
21
+ * A cap of zero or less can never be met, so it is a mistake rather than a very
22
+ * strict setting: every image would be written at the lowest quality there is
23
+ * and every one of them would be reported as too big.
24
+ */
25
+ export declare function resolveMaxBytes(maxBytes: number | undefined): number | undefined;
26
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/config/output.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAalE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAapB"}
@@ -0,0 +1,45 @@
1
+ import { DEFAULT_QUALITY } from "./defaults.js";
2
+ /**
3
+ * The settings for how a finished picture is encoded, checked here rather than
4
+ * in `validate/`, which checks keys and the names of closed sets.
5
+ *
6
+ * They are in a file of their own rather than beside the other resolvers
7
+ * because `resolve.ts` is already close enough to the FTA threshold that the
8
+ * next thing added to it would push it over.
9
+ */
10
+ /**
11
+ * Encoding quality, `1` to `100`.
12
+ *
13
+ * Out of range is rejected rather than clamped, for the reason
14
+ * `compressionLevel` is: a config asking for `120` has something in mind that
15
+ * no encoder here can give it, and quietly encoding at `100` would leave
16
+ * somebody believing they had asked for more than they had.
17
+ */
18
+ export function resolveQuality(quality) {
19
+ if (quality === undefined) {
20
+ return DEFAULT_QUALITY;
21
+ }
22
+ if (!Number.isSafeInteger(quality) || quality < 1 || quality > 100) {
23
+ throw new Error(`Invalid quality ${String(quality)}; expected a whole number from 1` +
24
+ ` (smallest) to 100 (best).`);
25
+ }
26
+ return quality;
27
+ }
28
+ /**
29
+ * The cap on one image, in bytes, or `undefined` for none.
30
+ *
31
+ * A cap of zero or less can never be met, so it is a mistake rather than a very
32
+ * strict setting: every image would be written at the lowest quality there is
33
+ * and every one of them would be reported as too big.
34
+ */
35
+ export function resolveMaxBytes(maxBytes) {
36
+ if (maxBytes === undefined) {
37
+ return undefined;
38
+ }
39
+ if (!Number.isSafeInteger(maxBytes) || maxBytes < 1) {
40
+ throw new Error(`Invalid maxBytes ${String(maxBytes)}; expected a whole number of bytes` +
41
+ ` above zero, such as 5_000_000 for X's 5MB limit.`);
42
+ }
43
+ return maxBytes;
44
+ }
45
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/config/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,CAAC,OAAO,CAAC,kCAAkC;YAClE,4BAA4B,CAC/B,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAA4B;IAE5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,oBAAoB,MAAM,CAAC,QAAQ,CAAC,oCAAoC;YACtE,mDAAmD,CACtD,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}