@kensio/colophon 2.5.0 → 2.7.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.
- package/README.md +91 -13
- package/dist/astro/index.d.ts +49 -0
- package/dist/astro/index.d.ts.map +1 -0
- package/dist/astro/index.js +42 -0
- package/dist/astro/index.js.map +1 -0
- package/dist/cli/args/command.d.ts +13 -0
- package/dist/cli/args/command.d.ts.map +1 -0
- package/dist/cli/args/command.js +22 -0
- package/dist/cli/args/command.js.map +1 -0
- package/dist/cli/args/index.d.ts +28 -0
- package/dist/cli/args/index.d.ts.map +1 -0
- package/dist/cli/args/index.js +75 -0
- package/dist/cli/args/index.js.map +1 -0
- package/dist/cli/args/switches.d.ts +18 -0
- package/dist/cli/args/switches.d.ts.map +1 -0
- package/dist/cli/args/switches.js +42 -0
- package/dist/cli/args/switches.js.map +1 -0
- package/dist/cli/args/usage.d.ts +3 -0
- package/dist/cli/args/usage.d.ts.map +1 -0
- package/dist/cli/args/usage.js +34 -0
- package/dist/cli/args/usage.js.map +1 -0
- package/dist/cli/args/values.d.ts +11 -0
- package/dist/cli/args/values.d.ts.map +1 -0
- package/dist/cli/args/values.js +29 -0
- package/dist/cli/args/values.js.map +1 -0
- package/dist/cli/build.d.ts +10 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +41 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/eject/adapters.d.ts +20 -0
- package/dist/cli/eject/adapters.d.ts.map +1 -0
- package/dist/cli/eject/adapters.js +29 -0
- package/dist/cli/eject/adapters.js.map +1 -0
- package/dist/cli/eject/astro.d.ts +13 -0
- package/dist/cli/eject/astro.d.ts.map +1 -0
- package/dist/cli/eject/astro.js +35 -0
- package/dist/cli/eject/astro.js.map +1 -0
- package/dist/cli/eject/hugo.d.ts +19 -0
- package/dist/cli/eject/hugo.d.ts.map +1 -0
- package/dist/cli/eject/hugo.js +127 -0
- package/dist/cli/eject/hugo.js.map +1 -0
- package/dist/cli/eject/index.d.ts +15 -0
- package/dist/cli/eject/index.d.ts.map +1 -0
- package/dist/cli/eject/index.js +46 -0
- package/dist/cli/eject/index.js.map +1 -0
- package/dist/cli/index.js +25 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/fs.d.ts +5 -0
- package/dist/cli/init/fs.d.ts.map +1 -0
- package/dist/cli/init/fs.js +19 -0
- package/dist/cli/init/fs.js.map +1 -0
- package/dist/cli/init/guess.d.ts +9 -0
- package/dist/cli/init/guess.d.ts.map +1 -0
- package/dist/cli/init/guess.js +27 -0
- package/dist/cli/init/guess.js.map +1 -0
- package/dist/cli/init/index.d.ts +11 -0
- package/dist/cli/init/index.d.ts.map +1 -0
- package/dist/cli/init/index.js +36 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/module.d.ts +12 -0
- package/dist/cli/init/module.d.ts.map +1 -0
- package/dist/cli/init/module.js +45 -0
- package/dist/cli/init/module.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +10 -0
- package/dist/cli/init/scaffold.d.ts.map +1 -0
- package/dist/cli/init/scaffold.js +52 -0
- package/dist/cli/init/scaffold.js.map +1 -0
- package/dist/cli/message.d.ts +7 -0
- package/dist/cli/message.d.ts.map +1 -0
- package/dist/cli/message.js +9 -0
- package/dist/cli/message.js.map +1 -0
- package/dist/cli/preview/index.d.ts +13 -0
- package/dist/cli/preview/index.d.ts.map +1 -0
- package/dist/cli/preview/index.js +27 -0
- package/dist/cli/preview/index.js.map +1 -0
- package/dist/cli/preview/open.d.ts +10 -0
- package/dist/cli/preview/open.d.ts.map +1 -0
- package/dist/cli/preview/open.js +32 -0
- package/dist/cli/preview/open.js.map +1 -0
- package/dist/cli/preview/render.d.ts +23 -0
- package/dist/cli/preview/render.d.ts.map +1 -0
- package/dist/cli/preview/render.js +40 -0
- package/dist/cli/preview/render.js.map +1 -0
- package/dist/cli/preview/root.d.ts +17 -0
- package/dist/cli/preview/root.d.ts.map +1 -0
- package/dist/cli/preview/root.js +22 -0
- package/dist/cli/preview/root.js.map +1 -0
- package/dist/cli/preview/size.d.ts +7 -0
- package/dist/cli/preview/size.d.ts.map +1 -0
- package/dist/cli/preview/size.js +13 -0
- package/dist/cli/preview/size.js.map +1 -0
- package/dist/cli/report.d.ts +6 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +23 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/watch/filter.d.ts +14 -0
- package/dist/cli/watch/filter.d.ts.map +1 -0
- package/dist/cli/watch/filter.js +16 -0
- package/dist/cli/watch/filter.js.map +1 -0
- package/dist/cli/watch/index.d.ts +27 -0
- package/dist/cli/watch/index.d.ts.map +1 -0
- package/dist/cli/watch/index.js +38 -0
- package/dist/cli/watch/index.js.map +1 -0
- package/dist/cli/watch/queue.d.ts +24 -0
- package/dist/cli/watch/queue.d.ts.map +1 -0
- package/dist/cli/watch/queue.js +57 -0
- package/dist/cli/watch/queue.js.map +1 -0
- package/dist/config/defaults.d.ts +39 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +38 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +18 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/output.d.ts +26 -0
- package/dist/config/output.d.ts.map +1 -0
- package/dist/config/output.js +45 -0
- package/dist/config/output.js.map +1 -0
- package/dist/config/resolve.d.ts +10 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +20 -1
- package/dist/config/resolve.js.map +1 -1
- package/dist/content/index.d.ts +1 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/read.d.ts +15 -0
- package/dist/content/read.d.ts.map +1 -0
- package/dist/content/read.js +36 -0
- package/dist/content/read.js.map +1 -0
- package/dist/content/walk.d.ts.map +1 -1
- package/dist/content/walk.js +4 -30
- package/dist/content/walk.js.map +1 -1
- package/dist/core/index.d.ts +39 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +20 -0
- package/dist/core/index.js.map +1 -0
- package/dist/encode/fit.d.ts +16 -0
- package/dist/encode/fit.d.ts.map +1 -0
- package/dist/encode/fit.js +23 -0
- package/dist/encode/fit.js.map +1 -0
- package/dist/encode/format.d.ts +12 -0
- package/dist/encode/format.d.ts.map +1 -0
- package/dist/encode/format.js +40 -0
- package/dist/encode/format.js.map +1 -0
- package/dist/encode/index.d.ts +14 -0
- package/dist/encode/index.d.ts.map +1 -0
- package/dist/encode/index.js +52 -0
- package/dist/encode/index.js.map +1 -0
- package/dist/encode/sharp.d.ts +19 -0
- package/dist/encode/sharp.d.ts.map +1 -0
- package/dist/encode/sharp.js +57 -0
- package/dist/encode/sharp.js.map +1 -0
- package/dist/encode/warn.d.ts +10 -0
- package/dist/encode/warn.d.ts.map +1 -0
- package/dist/encode/warn.js +31 -0
- package/dist/encode/warn.js.map +1 -0
- package/dist/fonts/resolve.d.ts.map +1 -1
- package/dist/fonts/resolve.js +2 -8
- package/dist/fonts/resolve.js.map +1 -1
- package/dist/generate/index.d.ts +4 -0
- package/dist/generate/index.d.ts.map +1 -1
- package/dist/generate/index.js +10 -4
- package/dist/generate/index.js.map +1 -1
- package/dist/generate/options.d.ts +11 -1
- package/dist/generate/options.d.ts.map +1 -1
- package/dist/generate/options.js.map +1 -1
- package/dist/generate/output-path.d.ts +6 -2
- package/dist/generate/output-path.d.ts.map +1 -1
- package/dist/generate/output-path.js +7 -2
- package/dist/generate/output-path.js.map +1 -1
- package/dist/generate/plan.d.ts.map +1 -1
- package/dist/generate/plan.js +3 -3
- package/dist/generate/plan.js.map +1 -1
- package/dist/generate/render-image.d.ts +6 -0
- package/dist/generate/render-image.d.ts.map +1 -1
- package/dist/generate/render-image.js +14 -4
- package/dist/generate/render-image.js.map +1 -1
- package/dist/image/index.d.ts +3 -1
- package/dist/image/index.d.ts.map +1 -1
- package/dist/image/index.js +4 -3
- package/dist/image/index.js.map +1 -1
- package/dist/image/jpeg.d.ts +5 -4
- package/dist/image/jpeg.d.ts.map +1 -1
- package/dist/image/jpeg.js +13 -36
- package/dist/image/jpeg.js.map +1 -1
- package/dist/image/load.d.ts.map +1 -1
- package/dist/image/load.js +4 -15
- package/dist/image/load.js.map +1 -1
- package/dist/image/resolve.d.ts.map +1 -1
- package/dist/image/resolve.js +2 -8
- package/dist/image/resolve.js.map +1 -1
- package/dist/image/uri.d.ts.map +1 -1
- package/dist/image/uri.js +2 -3
- package/dist/image/uri.js.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/jpeg/index.d.ts +10 -0
- package/dist/jpeg/index.d.ts.map +1 -0
- package/dist/jpeg/index.js +2 -0
- package/dist/jpeg/index.js.map +1 -0
- package/dist/jpeg/segments.d.ts +32 -0
- package/dist/jpeg/segments.d.ts.map +1 -0
- package/dist/jpeg/segments.js +66 -0
- package/dist/jpeg/segments.js.map +1 -0
- package/dist/layout/draw.d.ts +20 -0
- package/dist/layout/draw.d.ts.map +1 -0
- package/dist/layout/draw.js +32 -0
- package/dist/layout/draw.js.map +1 -0
- package/dist/layout/extent.d.ts +19 -0
- package/dist/layout/extent.d.ts.map +1 -0
- package/dist/layout/extent.js +24 -0
- package/dist/layout/extent.js.map +1 -0
- package/dist/layout/index.d.ts +7 -4
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +5 -3
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/lines.d.ts +0 -17
- package/dist/layout/lines.d.ts.map +1 -1
- package/dist/layout/lines.js +2 -35
- package/dist/layout/lines.js.map +1 -1
- package/dist/measure/faces.d.ts.map +1 -1
- package/dist/measure/faces.js +8 -2
- package/dist/measure/faces.js.map +1 -1
- package/dist/meta/index.d.ts +1 -0
- package/dist/meta/index.d.ts.map +1 -1
- package/dist/meta/index.js +1 -0
- package/dist/meta/index.js.map +1 -1
- package/dist/meta/path.d.ts +24 -0
- package/dist/meta/path.d.ts.map +1 -0
- package/dist/meta/path.js +41 -0
- package/dist/meta/path.js.map +1 -0
- package/dist/meta/tags.d.ts.map +1 -1
- package/dist/meta/tags.js +6 -1
- package/dist/meta/tags.js.map +1 -1
- package/dist/placement/index.d.ts +7 -2
- package/dist/placement/index.d.ts.map +1 -1
- package/dist/placement/index.js +9 -3
- package/dist/placement/index.js.map +1 -1
- package/dist/placement/relative.d.ts +8 -3
- package/dist/placement/relative.d.ts.map +1 -1
- package/dist/placement/relative.js +12 -5
- package/dist/placement/relative.js.map +1 -1
- package/dist/platform/base64.d.ts +13 -0
- package/dist/platform/base64.d.ts.map +1 -0
- package/dist/platform/base64.js +35 -0
- package/dist/platform/base64.js.map +1 -0
- package/dist/platform/rasteriser.browser.d.ts +16 -0
- package/dist/platform/rasteriser.browser.d.ts.map +1 -0
- package/dist/platform/rasteriser.browser.js +20 -0
- package/dist/platform/rasteriser.browser.js.map +1 -0
- package/dist/platform/rasteriser.node.d.ts +2 -0
- package/dist/platform/rasteriser.node.d.ts.map +1 -0
- package/dist/platform/rasteriser.node.js +2 -0
- package/dist/platform/rasteriser.node.js.map +1 -0
- package/dist/platform/read-file.browser.d.ts +17 -0
- package/dist/platform/read-file.browser.d.ts.map +1 -0
- package/dist/platform/read-file.browser.js +23 -0
- package/dist/platform/read-file.browser.js.map +1 -0
- package/dist/platform/read-file.node.d.ts +19 -0
- package/dist/platform/read-file.node.d.ts.map +1 -0
- package/dist/platform/read-file.node.js +31 -0
- package/dist/platform/read-file.node.js.map +1 -0
- package/dist/png/chunk.d.ts +23 -0
- package/dist/png/chunk.d.ts.map +1 -0
- package/dist/png/chunk.js +48 -0
- package/dist/png/chunk.js.map +1 -0
- package/dist/png/index.d.ts +13 -0
- package/dist/png/index.d.ts.map +1 -0
- package/dist/png/index.js +3 -0
- package/dist/png/index.js.map +1 -0
- package/dist/png/recompress.d.ts +23 -0
- package/dist/png/recompress.d.ts.map +1 -0
- package/dist/png/recompress.js +81 -0
- package/dist/png/recompress.js.map +1 -0
- package/dist/props.d.ts +11 -0
- package/dist/props.d.ts.map +1 -1
- package/dist/props.js +16 -0
- package/dist/props.js.map +1 -1
- package/dist/render/image.d.ts +20 -0
- package/dist/render/image.d.ts.map +1 -0
- package/dist/render/image.js +29 -0
- package/dist/render/image.js.map +1 -0
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -4
- package/dist/render/index.js.map +1 -1
- package/dist/render/png.d.ts +14 -4
- package/dist/render/png.d.ts.map +1 -1
- package/dist/render/png.js +22 -23
- package/dist/render/png.js.map +1 -1
- package/dist/render/rasterise.d.ts +15 -0
- package/dist/render/rasterise.d.ts.map +1 -0
- package/dist/render/rasterise.js +34 -0
- package/dist/render/rasterise.js.map +1 -0
- package/dist/render/svg.d.ts.map +1 -1
- package/dist/render/svg.js +1 -0
- package/dist/render/svg.js.map +1 -1
- package/dist/sign/base64url.d.ts +16 -0
- package/dist/sign/base64url.d.ts.map +1 -0
- package/dist/sign/base64url.js +24 -0
- package/dist/sign/base64url.js.map +1 -0
- package/dist/sign/index.d.ts +49 -0
- package/dist/sign/index.d.ts.map +1 -0
- package/dist/sign/index.js +133 -0
- package/dist/sign/index.js.map +1 -0
- package/dist/stamp/carrier/index.d.ts +7 -0
- package/dist/stamp/carrier/index.d.ts.map +1 -0
- package/dist/stamp/carrier/index.js +27 -0
- package/dist/stamp/carrier/index.js.map +1 -0
- package/dist/stamp/carrier/isobmff.d.ts +7 -0
- package/dist/stamp/carrier/isobmff.d.ts.map +1 -0
- package/dist/stamp/carrier/isobmff.js +55 -0
- package/dist/stamp/carrier/isobmff.js.map +1 -0
- package/dist/stamp/carrier/jpeg.d.ts +4 -0
- package/dist/stamp/carrier/jpeg.d.ts.map +1 -0
- package/dist/stamp/carrier/jpeg.js +76 -0
- package/dist/stamp/carrier/jpeg.js.map +1 -0
- package/dist/stamp/carrier/png.d.ts +7 -0
- package/dist/stamp/carrier/png.d.ts.map +1 -0
- package/dist/stamp/carrier/png.js +50 -0
- package/dist/stamp/carrier/png.js.map +1 -0
- package/dist/stamp/carrier/riff.d.ts +4 -0
- package/dist/stamp/carrier/riff.d.ts.map +1 -0
- package/dist/stamp/carrier/riff.js +54 -0
- package/dist/stamp/carrier/riff.js.map +1 -0
- package/dist/stamp/carrier/types.d.ts +25 -0
- package/dist/stamp/carrier/types.d.ts.map +1 -0
- package/dist/stamp/carrier/types.js +2 -0
- package/dist/stamp/carrier/types.js.map +1 -0
- package/dist/stamp/chunk.d.ts +0 -2
- package/dist/stamp/chunk.d.ts.map +1 -1
- package/dist/stamp/chunk.js +10 -18
- package/dist/stamp/chunk.js.map +1 -1
- package/dist/stamp/config-digest.d.ts +18 -0
- package/dist/stamp/config-digest.d.ts.map +1 -1
- package/dist/stamp/config-digest.js +24 -0
- package/dist/stamp/config-digest.js.map +1 -1
- package/dist/stamp/index.d.ts +2 -2
- package/dist/stamp/index.d.ts.map +1 -1
- package/dist/stamp/index.js +2 -2
- package/dist/stamp/index.js.map +1 -1
- package/dist/stamp/payload.d.ts +28 -0
- package/dist/stamp/payload.d.ts.map +1 -0
- package/dist/stamp/payload.js +42 -0
- package/dist/stamp/payload.js.map +1 -0
- package/dist/stamp/read.d.ts +5 -4
- package/dist/stamp/read.d.ts.map +1 -1
- package/dist/stamp/read.js +26 -43
- package/dist/stamp/read.js.map +1 -1
- package/dist/stamp/window.d.ts +11 -0
- package/dist/stamp/window.d.ts.map +1 -0
- package/dist/stamp/window.js +11 -0
- package/dist/stamp/window.js.map +1 -0
- package/dist/stamp/write.d.ts +21 -0
- package/dist/stamp/write.d.ts.map +1 -0
- package/dist/stamp/write.js +31 -0
- package/dist/stamp/write.js.map +1 -0
- package/dist/templates/article/bottom.d.ts +15 -0
- package/dist/templates/article/bottom.d.ts.map +1 -0
- package/dist/templates/article/bottom.js +61 -0
- package/dist/templates/article/bottom.js.map +1 -0
- package/dist/templates/article/index.d.ts +12 -0
- package/dist/templates/article/index.d.ts.map +1 -0
- package/dist/templates/article/index.js +42 -0
- package/dist/templates/article/index.js.map +1 -0
- package/dist/templates/article/lines.d.ts +27 -0
- package/dist/templates/article/lines.d.ts.map +1 -0
- package/dist/templates/article/lines.js +53 -0
- package/dist/templates/article/lines.js.map +1 -0
- package/dist/templates/article/tags.d.ts +25 -0
- package/dist/templates/article/tags.d.ts.map +1 -0
- package/dist/templates/article/tags.js +63 -0
- package/dist/templates/article/tags.js.map +1 -0
- package/dist/templates/attribution.d.ts +2 -6
- package/dist/templates/attribution.d.ts.map +1 -1
- package/dist/templates/attribution.js +8 -22
- package/dist/templates/attribution.js.map +1 -1
- package/dist/templates/banner/version.d.ts.map +1 -1
- package/dist/templates/banner/version.js +4 -4
- package/dist/templates/banner/version.js.map +1 -1
- package/dist/templates/bottom.d.ts +23 -0
- package/dist/templates/bottom.d.ts.map +1 -0
- package/dist/templates/bottom.js +37 -0
- package/dist/templates/bottom.js.map +1 -0
- package/dist/templates/byline.d.ts +19 -0
- package/dist/templates/byline.d.ts.map +1 -0
- package/dist/templates/byline.js +45 -0
- package/dist/templates/byline.js.map +1 -0
- package/dist/templates/code/clip.js +1 -1
- package/dist/templates/code/clip.js.map +1 -1
- package/dist/templates/code/fit.js +1 -1
- package/dist/templates/code/fit.js.map +1 -1
- package/dist/templates/code/warn.d.ts +1 -1
- package/dist/templates/code/warn.d.ts.map +1 -1
- package/dist/templates/code/warn.js +2 -2
- package/dist/templates/code/warn.js.map +1 -1
- package/dist/templates/docs/chrome.d.ts +17 -0
- package/dist/templates/docs/chrome.d.ts.map +1 -0
- package/dist/templates/docs/chrome.js +44 -0
- package/dist/templates/docs/chrome.js.map +1 -0
- package/dist/templates/docs/crumbs.d.ts +14 -0
- package/dist/templates/docs/crumbs.d.ts.map +1 -0
- package/dist/templates/docs/crumbs.js +32 -0
- package/dist/templates/docs/crumbs.js.map +1 -0
- package/dist/templates/docs/index.d.ts +13 -0
- package/dist/templates/docs/index.d.ts.map +1 -0
- package/dist/templates/docs/index.js +47 -0
- package/dist/templates/docs/index.js.map +1 -0
- package/dist/templates/docs/lines.d.ts +14 -0
- package/dist/templates/docs/lines.d.ts.map +1 -0
- package/dist/templates/docs/lines.js +29 -0
- package/dist/templates/docs/lines.js.map +1 -0
- package/dist/templates/event/index.d.ts +12 -0
- package/dist/templates/event/index.d.ts.map +1 -0
- package/dist/templates/event/index.js +59 -0
- package/dist/templates/event/index.js.map +1 -0
- package/dist/templates/event/lines.d.ts +14 -0
- package/dist/templates/event/lines.d.ts.map +1 -0
- package/dist/templates/event/lines.js +29 -0
- package/dist/templates/event/lines.js.map +1 -0
- package/dist/templates/event/plate.d.ts +16 -0
- package/dist/templates/event/plate.d.ts.map +1 -0
- package/dist/templates/event/plate.js +36 -0
- package/dist/templates/event/plate.js.map +1 -0
- package/dist/templates/frame.d.ts +68 -0
- package/dist/templates/frame.d.ts.map +1 -0
- package/dist/templates/frame.js +63 -0
- package/dist/templates/frame.js.map +1 -0
- package/dist/templates/index.d.ts +9 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +27 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/photo/index.d.ts +17 -0
- package/dist/templates/photo/index.d.ts.map +1 -0
- package/dist/templates/photo/index.js +51 -0
- package/dist/templates/photo/index.js.map +1 -0
- package/dist/templates/photo/lines.d.ts +21 -0
- package/dist/templates/photo/lines.d.ts.map +1 -0
- package/dist/templates/photo/lines.js +36 -0
- package/dist/templates/photo/lines.js.map +1 -0
- package/dist/templates/pill.d.ts +33 -0
- package/dist/templates/pill.d.ts.map +1 -0
- package/dist/templates/pill.js +50 -0
- package/dist/templates/pill.js.map +1 -0
- package/dist/templates/portrait.d.ts +40 -0
- package/dist/templates/portrait.d.ts.map +1 -0
- package/dist/templates/portrait.js +56 -0
- package/dist/templates/portrait.js.map +1 -0
- package/dist/templates/quote/index.d.ts +11 -0
- package/dist/templates/quote/index.d.ts.map +1 -0
- package/dist/templates/quote/index.js +60 -0
- package/dist/templates/quote/index.js.map +1 -0
- package/dist/templates/quote/lines.d.ts +24 -0
- package/dist/templates/quote/lines.d.ts.map +1 -0
- package/dist/templates/quote/lines.js +35 -0
- package/dist/templates/quote/lines.js.map +1 -0
- package/dist/templates/quote/mark.d.ts +13 -0
- package/dist/templates/quote/mark.d.ts.map +1 -0
- package/dist/templates/quote/mark.js +39 -0
- package/dist/templates/quote/mark.js.map +1 -0
- package/dist/templates/quote/speaker.d.ts +18 -0
- package/dist/templates/quote/speaker.d.ts.map +1 -0
- package/dist/templates/quote/speaker.js +41 -0
- package/dist/templates/quote/speaker.js.map +1 -0
- package/dist/templates/release/block.d.ts +8 -0
- package/dist/templates/release/block.d.ts.map +1 -0
- package/dist/templates/release/block.js +16 -0
- package/dist/templates/release/block.js.map +1 -0
- package/dist/templates/release/changes.d.ts +23 -0
- package/dist/templates/release/changes.d.ts.map +1 -0
- package/dist/templates/release/changes.js +45 -0
- package/dist/templates/release/changes.js.map +1 -0
- package/dist/templates/release/index.d.ts +11 -0
- package/dist/templates/release/index.d.ts.map +1 -0
- package/dist/templates/release/index.js +55 -0
- package/dist/templates/release/index.js.map +1 -0
- package/dist/templates/release/lines.d.ts +21 -0
- package/dist/templates/release/lines.d.ts.map +1 -0
- package/dist/templates/release/lines.js +36 -0
- package/dist/templates/release/lines.js.map +1 -0
- package/dist/templates/stat/index.d.ts +11 -0
- package/dist/templates/stat/index.d.ts.map +1 -0
- package/dist/templates/stat/index.js +43 -0
- package/dist/templates/stat/index.js.map +1 -0
- package/dist/templates/stat/lines.d.ts +23 -0
- package/dist/templates/stat/lines.d.ts.map +1 -0
- package/dist/templates/stat/lines.js +47 -0
- package/dist/templates/stat/lines.js.map +1 -0
- package/dist/templates/terminal/index.d.ts +16 -0
- package/dist/templates/terminal/index.d.ts.map +1 -0
- package/dist/templates/terminal/index.js +62 -0
- package/dist/templates/terminal/index.js.map +1 -0
- package/dist/templates/terminal/session.d.ts +17 -0
- package/dist/templates/terminal/session.d.ts.map +1 -0
- package/dist/templates/terminal/session.js +86 -0
- package/dist/templates/terminal/session.js.map +1 -0
- package/dist/templates/terminal/window.d.ts +14 -0
- package/dist/templates/terminal/window.d.ts.map +1 -0
- package/dist/templates/terminal/window.js +84 -0
- package/dist/templates/terminal/window.js.map +1 -0
- package/dist/templates/version.d.ts +16 -0
- package/dist/templates/version.d.ts.map +1 -0
- package/dist/templates/version.js +23 -0
- package/dist/templates/version.js.map +1 -0
- package/dist/templates/wordmark/index.d.ts +13 -0
- package/dist/templates/wordmark/index.d.ts.map +1 -0
- package/dist/templates/wordmark/index.js +53 -0
- package/dist/templates/wordmark/index.js.map +1 -0
- package/dist/templates/wordmark/lines.d.ts +22 -0
- package/dist/templates/wordmark/lines.d.ts.map +1 -0
- package/dist/templates/wordmark/lines.js +61 -0
- package/dist/templates/wordmark/lines.js.map +1 -0
- package/dist/templates/wordmark/mark.d.ts +16 -0
- package/dist/templates/wordmark/mark.d.ts.map +1 -0
- package/dist/templates/wordmark/mark.js +30 -0
- package/dist/templates/wordmark/mark.js.map +1 -0
- package/dist/text/clamp.d.ts +12 -0
- package/dist/text/clamp.d.ts.map +1 -0
- package/dist/text/clamp.js +41 -0
- package/dist/text/clamp.js.map +1 -0
- package/dist/text/ellipsis.d.ts +3 -0
- package/dist/text/ellipsis.d.ts.map +1 -0
- package/dist/text/ellipsis.js +3 -0
- package/dist/text/ellipsis.js.map +1 -0
- package/dist/text/index.d.ts +2 -0
- package/dist/text/index.d.ts.map +1 -1
- package/dist/text/index.js +2 -0
- package/dist/text/index.js.map +1 -1
- package/dist/types.d.ts +158 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/validate/collect.d.ts +6 -1
- package/dist/validate/collect.d.ts.map +1 -1
- package/dist/validate/collect.js +8 -2
- package/dist/validate/collect.js.map +1 -1
- package/dist/validate/index.d.ts +1 -0
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +3 -2
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/keys.d.ts +6 -0
- package/dist/validate/keys.d.ts.map +1 -1
- package/dist/validate/keys.js +17 -0
- package/dist/validate/keys.js.map +1 -1
- package/dist/validate/values.d.ts +6 -0
- package/dist/validate/values.d.ts.map +1 -1
- package/dist/validate/values.js +12 -1
- package/dist/validate/values.js.map +1 -1
- package/package.json +16 -2
- package/dist/background.d.ts +0 -13
- package/dist/background.d.ts.map +0 -1
- package/dist/background.js +0 -65
- package/dist/background.js.map +0 -1
- package/dist/cli/args.d.ts +0 -14
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -67
- package/dist/cli/args.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -102
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -95
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -208
- package/dist/config.js.map +0 -1
- package/dist/fonts.d.ts +0 -18
- package/dist/fonts.d.ts.map +0 -1
- package/dist/fonts.js +0 -102
- package/dist/fonts.js.map +0 -1
- package/dist/generate.d.ts +0 -63
- package/dist/generate.d.ts.map +0 -1
- package/dist/generate.js +0 -109
- package/dist/generate.js.map +0 -1
- package/dist/highlight.d.ts +0 -75
- package/dist/highlight.d.ts.map +0 -1
- package/dist/highlight.js +0 -137
- package/dist/highlight.js.map +0 -1
- package/dist/render.d.ts +0 -24
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -77
- package/dist/render.js.map +0 -1
- package/dist/stamp.d.ts +0 -29
- package/dist/stamp.d.ts.map +0 -1
- package/dist/stamp.js +0 -198
- package/dist/stamp.js.map +0 -1
- package/dist/templates/banner.d.ts +0 -9
- package/dist/templates/banner.d.ts.map +0 -1
- package/dist/templates/banner.js +0 -115
- package/dist/templates/banner.js.map +0 -1
- package/dist/templates/card.d.ts +0 -7
- package/dist/templates/card.d.ts.map +0 -1
- package/dist/templates/card.js +0 -72
- package/dist/templates/card.js.map +0 -1
- package/dist/templates/code.d.ts +0 -12
- package/dist/templates/code.d.ts.map +0 -1
- package/dist/templates/code.js +0 -275
- package/dist/templates/code.js.map +0 -1
- package/dist/templates/measure.d.ts +0 -11
- package/dist/templates/measure.d.ts.map +0 -1
- package/dist/templates/measure.js +0 -11
- package/dist/templates/measure.js.map +0 -1
- package/dist/templates/props.d.ts +0 -7
- package/dist/templates/props.d.ts.map +0 -1
- package/dist/templates/props.js +0 -17
- package/dist/templates/props.js.map +0 -1
- package/dist/templates/text.d.ts +0 -37
- package/dist/templates/text.d.ts.map +0 -1
- package/dist/templates/text.js +0 -26
- package/dist/templates/text.js.map +0 -1
- package/dist/text/stack.d.ts +0 -24
- package/dist/text/stack.d.ts.map +0 -1
- package/dist/text/stack.js +0 -18
- package/dist/text/stack.js.map +0 -1
- package/dist/text.d.ts +0 -56
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -78
- package/dist/text.js.map +0 -1
- package/dist/validate/sizes.d.ts +0 -9
- package/dist/validate/sizes.d.ts.map +0 -1
- package/dist/validate/sizes.js +0 -27
- package/dist/validate/sizes.js.map +0 -1
- package/dist/validate.d.ts +0 -15
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js +0 -300
- package/dist/validate.js.map +0 -1
package/dist/fonts.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { existsSync, statSync } from "node:fs";
|
|
3
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
/**
|
|
7
|
-
* Directory in-memory fonts are written to. The rasteriser takes file paths
|
|
8
|
-
* only, so a font supplied as bytes has to land on disk somewhere; the temp
|
|
9
|
-
* directory keeps it out of the user's project.
|
|
10
|
-
*/
|
|
11
|
-
const materialisedDir = path.join(os.tmpdir(), "colophon-fonts");
|
|
12
|
-
/**
|
|
13
|
-
* In-flight and completed writes of in-memory fonts, keyed by content hash.
|
|
14
|
-
* A build renders many images from one config, so the same bytes would
|
|
15
|
-
* otherwise be written once per image.
|
|
16
|
-
*/
|
|
17
|
-
const materialised = new Map();
|
|
18
|
-
function label(index) {
|
|
19
|
-
return `fonts[${String(index)}]`;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Validate one font source and make its path absolute.
|
|
23
|
-
*
|
|
24
|
-
* The rasteriser ignores a font file it cannot read and renders the text in
|
|
25
|
-
* whatever else it has loaded — or, with system fonts off, renders no text at
|
|
26
|
-
* all. A typo in a path would therefore show up as a blank image rather than
|
|
27
|
-
* an error, so the path is checked here instead.
|
|
28
|
-
*/
|
|
29
|
-
function resolveFont(font, index) {
|
|
30
|
-
const source = font;
|
|
31
|
-
const hasPath = source.path !== undefined;
|
|
32
|
-
const hasData = source.data !== undefined;
|
|
33
|
-
if (hasPath && hasData) {
|
|
34
|
-
throw new Error(`${label(index)} has both "path" and "data"; give one or the other.`);
|
|
35
|
-
}
|
|
36
|
-
if (source.data !== undefined) {
|
|
37
|
-
if (source.data.byteLength === 0) {
|
|
38
|
-
throw new Error(`${label(index)} has empty font data.`);
|
|
39
|
-
}
|
|
40
|
-
return font;
|
|
41
|
-
}
|
|
42
|
-
if (source.path === undefined || source.path === "") {
|
|
43
|
-
throw new Error(`${label(index)} needs a "path" to a font file, or its bytes as "data".`);
|
|
44
|
-
}
|
|
45
|
-
const absolute = path.resolve(source.path);
|
|
46
|
-
if (!existsSync(absolute) || !statSync(absolute).isFile()) {
|
|
47
|
-
throw new Error(`${label(index)}: font file not found at ${absolute}` +
|
|
48
|
-
` (from "${source.path}"). Relative paths resolve from the working directory.`);
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
...(source.family !== undefined && { family: source.family }),
|
|
52
|
-
path: absolute,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Validate the configured fonts and make their paths absolute. Safe to call
|
|
57
|
-
* with no fonts, which is the default.
|
|
58
|
-
*/
|
|
59
|
-
export function resolveFonts(fonts) {
|
|
60
|
-
if (fonts === undefined || fonts.length === 0) {
|
|
61
|
-
return [];
|
|
62
|
-
}
|
|
63
|
-
return fonts.map((font, index) => resolveFont(font, index));
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Write font bytes to a temp file and return its path, reusing the file for
|
|
67
|
-
* identical bytes. The name is the content hash, so a rebuild reuses whatever
|
|
68
|
-
* an earlier run left behind and nothing has to be cleaned up.
|
|
69
|
-
*/
|
|
70
|
-
async function materialise(data) {
|
|
71
|
-
const hash = createHash("sha256").update(data).digest("hex").slice(0, 32);
|
|
72
|
-
const pending = materialised.get(hash);
|
|
73
|
-
if (pending !== undefined) {
|
|
74
|
-
return pending;
|
|
75
|
-
}
|
|
76
|
-
const write = (async () => {
|
|
77
|
-
const file = path.join(materialisedDir, `${hash}.font`);
|
|
78
|
-
if (!existsSync(file)) {
|
|
79
|
-
await mkdir(materialisedDir, { recursive: true });
|
|
80
|
-
await writeFile(file, data);
|
|
81
|
-
}
|
|
82
|
-
return file;
|
|
83
|
-
})();
|
|
84
|
-
materialised.set(hash, write);
|
|
85
|
-
return write;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* File paths for the configured fonts, in order, writing any supplied as
|
|
89
|
-
* bytes to a temp file first.
|
|
90
|
-
*/
|
|
91
|
-
export async function fontFilePaths(fonts) {
|
|
92
|
-
return Promise.all(fonts.map(async (font) => "data" in font ? materialise(font.data) : font.path));
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* The family the rasteriser should fall back to when a `font-family` names
|
|
96
|
-
* something it has not loaded — the first declared family, so the fallback is
|
|
97
|
-
* the same wherever the build runs rather than whichever font loaded first.
|
|
98
|
-
*/
|
|
99
|
-
export function fallbackFamily(fonts) {
|
|
100
|
-
return fonts.find((font) => font.family !== undefined)?.family;
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=fonts.js.map
|
package/dist/fonts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { ContentFile, WalkOptions } from "./content/index.js";
|
|
2
|
-
import type { ColophonConfig, OutputSize } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Outcome for one generated (or skipped) image.
|
|
5
|
-
*/
|
|
6
|
-
export interface GeneratedImage {
|
|
7
|
-
readonly contentPath: string;
|
|
8
|
-
readonly size: OutputSize;
|
|
9
|
-
readonly outputPath: string;
|
|
10
|
-
/** True when an up-to-date image was left in place (no `overwrite`). */
|
|
11
|
-
readonly skipped: boolean;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Options for {@link generate}.
|
|
15
|
-
*/
|
|
16
|
-
export interface GenerateOptions {
|
|
17
|
-
/** Root content directory to walk. */
|
|
18
|
-
readonly contentDir: string;
|
|
19
|
-
readonly config?: ColophonConfig;
|
|
20
|
-
/** Extra walk options (props key, template field, slug field, extensions). */
|
|
21
|
-
readonly walk?: Omit<WalkOptions, "dir">;
|
|
22
|
-
/** Override where each image is written. */
|
|
23
|
-
readonly outputPath?: (file: ContentFile, size: OutputSize) => string;
|
|
24
|
-
/**
|
|
25
|
-
* Re-render every image, ignoring the stamps that would otherwise mark them
|
|
26
|
-
* as up to date. Default `false`.
|
|
27
|
-
*/
|
|
28
|
-
readonly overwrite?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* How many images to render at once. Defaults to the number of CPUs the
|
|
31
|
-
* process can use. Must be a positive integer.
|
|
32
|
-
*/
|
|
33
|
-
readonly concurrency?: number;
|
|
34
|
-
/** Called after each image is written or skipped. */
|
|
35
|
-
readonly onResult?: (result: GeneratedImage) => void;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Default output path: named `<slug>-<size>.png`, alongside the content file.
|
|
39
|
-
* The slug carries the post's keywords into the filename and the size name
|
|
40
|
-
* keeps every image distinct (e.g. `my-post-og.png`, `my-post-square.png`).
|
|
41
|
-
*
|
|
42
|
-
* A slug carrying directories of its own — what the `route` strategy produces,
|
|
43
|
-
* and what a frontmatter `slug` of `docs/intro` means — is written from the
|
|
44
|
-
* content root instead, so its path mirrors the route. Resolving it beside the
|
|
45
|
-
* file would repeat the directories that are already in the slug, putting
|
|
46
|
-
* `services/iam` under `content/services/iam/`.
|
|
47
|
-
*/
|
|
48
|
-
export declare function defaultOutputPath(file: ContentFile, size: OutputSize): string;
|
|
49
|
-
/**
|
|
50
|
-
* Walk a content tree and render meta images for every file that declares
|
|
51
|
-
* props, writing PNGs to disk.
|
|
52
|
-
*
|
|
53
|
-
* Each image is stamped with a digest of the props, config and size it came
|
|
54
|
-
* from, so a rebuild renders only what has actually changed: an image whose
|
|
55
|
-
* stamp still matches is left alone, and one whose title, colours or template
|
|
56
|
-
* has moved on is rendered again. `overwrite` ignores the stamps and renders
|
|
57
|
-
* everything. Sizes with no image to render are never rasterised.
|
|
58
|
-
*
|
|
59
|
-
* Rendering runs `concurrency` images at a time rather than all of them, so a
|
|
60
|
-
* large tree does not start hundreds of rasterisations at once.
|
|
61
|
-
*/
|
|
62
|
-
export declare function generate(options: GenerateOptions): Promise<GeneratedImage[]>;
|
|
63
|
-
//# sourceMappingURL=generate.d.ts.map
|
package/dist/generate.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKnE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,MAAM,CAAC;IACtE;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACtD;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAc7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,EAAE,CAAC,CA2D3B"}
|
package/dist/generate.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
-
import { availableParallelism } from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { resolveConfig, resolveConfigForSize } from "./config.js";
|
|
5
|
-
import { walkContent } from "./content/index.js";
|
|
6
|
-
import { mapConcurrent } from "./pool.js";
|
|
7
|
-
import { buildSvg, renderSvgToPng } from "./render.js";
|
|
8
|
-
import { createStamper, readPngStamp, stampPng } from "./stamp.js";
|
|
9
|
-
/**
|
|
10
|
-
* How many images to render at once when nothing is configured: one per CPU
|
|
11
|
-
* the process can actually use. Rasterising is CPU-bound, so starting more
|
|
12
|
-
* than that only queues the work up while holding every pending image in
|
|
13
|
-
* memory.
|
|
14
|
-
*/
|
|
15
|
-
function resolveConcurrency(concurrency) {
|
|
16
|
-
if (concurrency === undefined) {
|
|
17
|
-
return availableParallelism();
|
|
18
|
-
}
|
|
19
|
-
if (!Number.isSafeInteger(concurrency) || concurrency < 1) {
|
|
20
|
-
throw new Error(`Invalid concurrency ${String(concurrency)}; expected a positive integer.`);
|
|
21
|
-
}
|
|
22
|
-
return concurrency;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Default output path: named `<slug>-<size>.png`, alongside the content file.
|
|
26
|
-
* The slug carries the post's keywords into the filename and the size name
|
|
27
|
-
* keeps every image distinct (e.g. `my-post-og.png`, `my-post-square.png`).
|
|
28
|
-
*
|
|
29
|
-
* A slug carrying directories of its own — what the `route` strategy produces,
|
|
30
|
-
* and what a frontmatter `slug` of `docs/intro` means — is written from the
|
|
31
|
-
* content root instead, so its path mirrors the route. Resolving it beside the
|
|
32
|
-
* file would repeat the directories that are already in the slug, putting
|
|
33
|
-
* `services/iam` under `content/services/iam/`.
|
|
34
|
-
*/
|
|
35
|
-
export function defaultOutputPath(file, size) {
|
|
36
|
-
const name = `${file.slug}-${size.name}.png`;
|
|
37
|
-
if (!file.slug.includes("/")) {
|
|
38
|
-
return path.join(path.dirname(file.absolutePath), name);
|
|
39
|
-
}
|
|
40
|
-
// `absolutePath` ends with `contentPath` by construction, so dropping it
|
|
41
|
-
// leaves the directory the walk started from.
|
|
42
|
-
const root = file.absolutePath.slice(0, file.absolutePath.length - file.contentPath.length);
|
|
43
|
-
return path.join(root, name);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Walk a content tree and render meta images for every file that declares
|
|
47
|
-
* props, writing PNGs to disk.
|
|
48
|
-
*
|
|
49
|
-
* Each image is stamped with a digest of the props, config and size it came
|
|
50
|
-
* from, so a rebuild renders only what has actually changed: an image whose
|
|
51
|
-
* stamp still matches is left alone, and one whose title, colours or template
|
|
52
|
-
* has moved on is rendered again. `overwrite` ignores the stamps and renders
|
|
53
|
-
* everything. Sizes with no image to render are never rasterised.
|
|
54
|
-
*
|
|
55
|
-
* Rendering runs `concurrency` images at a time rather than all of them, so a
|
|
56
|
-
* large tree does not start hundreds of rasterisations at once.
|
|
57
|
-
*/
|
|
58
|
-
export async function generate(options) {
|
|
59
|
-
const resolved = resolveConfig(options.config);
|
|
60
|
-
const concurrency = resolveConcurrency(options.concurrency);
|
|
61
|
-
const toOutputPath = options.outputPath ?? defaultOutputPath;
|
|
62
|
-
// Resolved once per size rather than once per image: the overrides are the
|
|
63
|
-
// same for every post, and resolving re-reads the configured font files.
|
|
64
|
-
const configBySize = new Map(resolved.sizes.map((size) => [
|
|
65
|
-
size.name,
|
|
66
|
-
resolveConfigForSize(options.config, size),
|
|
67
|
-
]));
|
|
68
|
-
const [stamper, files] = await Promise.all([
|
|
69
|
-
createStamper(resolved),
|
|
70
|
-
// Content options can come from the config module, which is the only route
|
|
71
|
-
// a CLI user has to them; `walk` is the programmatic override and wins.
|
|
72
|
-
walkContent({
|
|
73
|
-
dir: options.contentDir,
|
|
74
|
-
...options.config?.content,
|
|
75
|
-
...options.walk,
|
|
76
|
-
}),
|
|
77
|
-
]);
|
|
78
|
-
const jobs = files.flatMap((file) => resolved.sizes.map((size) => ({ file, size })));
|
|
79
|
-
return mapConcurrent(jobs, concurrency, async ({ file, size }) => {
|
|
80
|
-
const outputPath = toOutputPath(file, size);
|
|
81
|
-
const stamp = stamper.stamp(file.props, size);
|
|
82
|
-
const isSkipped = options.overwrite !== true && (await readPngStamp(outputPath)) === stamp;
|
|
83
|
-
if (!isSkipped) {
|
|
84
|
-
const dimensions = { width: size.width, height: size.height };
|
|
85
|
-
const sizeConfig = configBySize.get(size.name) ?? resolved;
|
|
86
|
-
// Warnings name the post they came from: a build renders many images,
|
|
87
|
-
// and "shorten the sample" is no use without knowing which sample.
|
|
88
|
-
const config = {
|
|
89
|
-
...sizeConfig,
|
|
90
|
-
onWarning: (message) => {
|
|
91
|
-
resolved.onWarning(`${file.contentPath}: ${message}`);
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
const svg = await buildSvg(file.props, config, dimensions);
|
|
95
|
-
const png = await renderSvgToPng(svg, dimensions, config);
|
|
96
|
-
await mkdir(path.dirname(outputPath), { recursive: true });
|
|
97
|
-
await writeFile(outputPath, stampPng(png, stamp));
|
|
98
|
-
}
|
|
99
|
-
const result = {
|
|
100
|
-
contentPath: file.contentPath,
|
|
101
|
-
size,
|
|
102
|
-
outputPath,
|
|
103
|
-
skipped: isSkipped,
|
|
104
|
-
};
|
|
105
|
-
options.onResult?.(result);
|
|
106
|
-
return result;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=generate.js.map
|
package/dist/generate.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/highlight.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { BundledLanguage, BundledTheme, SpecialLanguage } from "shiki";
|
|
2
|
-
/**
|
|
3
|
-
* One highlighted run of text on a line, positioned by character column so the
|
|
4
|
-
* renderer can lay it out on a fixed monospace grid.
|
|
5
|
-
*/
|
|
6
|
-
export interface CodeToken {
|
|
7
|
-
readonly text: string;
|
|
8
|
-
/** Zero-based character column where this run starts. */
|
|
9
|
-
readonly column: number;
|
|
10
|
-
/** Token colour as `#rrggbb`, or `undefined` to use the theme foreground. */
|
|
11
|
-
readonly color: string | undefined;
|
|
12
|
-
/** Opacity implied by an `#rrggbbaa` token colour, if any. */
|
|
13
|
-
readonly opacity: number | undefined;
|
|
14
|
-
readonly bold: boolean;
|
|
15
|
-
readonly italic: boolean;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* A tokenised snippet ready for layout: the grid of lines, the theme's own
|
|
19
|
-
* colours, and its longest line in characters.
|
|
20
|
-
*/
|
|
21
|
-
export interface HighlightedCode {
|
|
22
|
-
readonly lines: readonly (readonly CodeToken[])[];
|
|
23
|
-
/** Theme foreground, used for tokens the grammar gives no colour. */
|
|
24
|
-
readonly foreground: string;
|
|
25
|
-
/** Theme background, used to fill the code panel. */
|
|
26
|
-
readonly background: string;
|
|
27
|
-
/** Length in characters of the longest line, for width fitting. */
|
|
28
|
-
readonly longestLine: number;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Options for {@link highlightCode}.
|
|
32
|
-
*/
|
|
33
|
-
export interface HighlightOptions {
|
|
34
|
-
/** Language name; unknown names fall back to plain text. */
|
|
35
|
-
readonly language: string;
|
|
36
|
-
/** Shiki theme name. */
|
|
37
|
-
readonly theme: string;
|
|
38
|
-
/** Spaces a tab expands to. */
|
|
39
|
-
readonly tabSize: number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Map a frontmatter language name onto one Shiki understands, falling back to
|
|
43
|
-
* plain text so an unrecognised language still produces a readable image
|
|
44
|
-
* rather than throwing mid-build.
|
|
45
|
-
*/
|
|
46
|
-
export declare function resolveLanguage(language: string): BundledLanguage | SpecialLanguage;
|
|
47
|
-
/**
|
|
48
|
-
* Validate a configured theme name. Unlike languages — which come from post
|
|
49
|
-
* frontmatter and fall back quietly — a bad theme is a config mistake worth
|
|
50
|
-
* failing on.
|
|
51
|
-
*/
|
|
52
|
-
export declare function resolveTheme(theme: string): BundledTheme;
|
|
53
|
-
/**
|
|
54
|
-
* Expand tabs to spaces so every character occupies one monospace cell.
|
|
55
|
-
*/
|
|
56
|
-
export declare function expandTabs(text: string, tabSize: number): string;
|
|
57
|
-
/**
|
|
58
|
-
* Strip the indentation common to every non-blank line. A snippet lifted out
|
|
59
|
-
* of a nested block would otherwise spend its width — the scarce dimension on
|
|
60
|
-
* the landscape sizes — on indentation that carries no meaning once the
|
|
61
|
-
* surrounding code is gone.
|
|
62
|
-
*/
|
|
63
|
-
export declare function dedent(text: string): string;
|
|
64
|
-
/**
|
|
65
|
-
* Tokenise a snippet with Shiki and flatten it onto a character grid.
|
|
66
|
-
*
|
|
67
|
-
* The snippet is first normalised: surrounding blank lines trimmed, tabs
|
|
68
|
-
* expanded, and common leading indentation removed.
|
|
69
|
-
*
|
|
70
|
-
* Whitespace-only runs are dropped and each remaining run keeps its starting
|
|
71
|
-
* column, so the renderer can position every run absolutely instead of relying
|
|
72
|
-
* on SVG text flow to preserve indentation.
|
|
73
|
-
*/
|
|
74
|
-
export declare function highlightCode(code: string, options: HighlightOptions): Promise<HighlightedCode>;
|
|
75
|
-
//# sourceMappingURL=highlight.d.ts.map
|
package/dist/highlight.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAG5E;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC;IAClD,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAyBD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GACf,eAAe,GAAG,eAAe,CAOnC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAQxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB3C;AAsBD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAoD1B"}
|
package/dist/highlight.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { bundledLanguages, bundledThemes, codeToTokens } from "shiki";
|
|
2
|
-
/**
|
|
3
|
-
* Language names that differ between Pygments (which the original Python
|
|
4
|
-
* script used) and Shiki. Everything else is passed through — Shiki already
|
|
5
|
-
* understands `bash`, `python`, `typescript`, `yaml`, `toml`, `sql`, `json`,
|
|
6
|
-
* `js` and `text`.
|
|
7
|
-
*/
|
|
8
|
-
const languageAliases = new Map([
|
|
9
|
-
["html+handlebars", "handlebars"],
|
|
10
|
-
["html+django", "jinja-html"],
|
|
11
|
-
["html+jinja", "jinja-html"],
|
|
12
|
-
["html+php", "php"],
|
|
13
|
-
["console", "shellsession"],
|
|
14
|
-
["shell-session", "shellsession"],
|
|
15
|
-
["text", "plaintext"],
|
|
16
|
-
["plain", "plaintext"],
|
|
17
|
-
]);
|
|
18
|
-
const plainText = "plaintext";
|
|
19
|
-
// Shiki's font-style bit flags (`FontStyle` in `@shikijs/types`).
|
|
20
|
-
const italicFlag = 1;
|
|
21
|
-
const boldFlag = 2;
|
|
22
|
-
/**
|
|
23
|
-
* Map a frontmatter language name onto one Shiki understands, falling back to
|
|
24
|
-
* plain text so an unrecognised language still produces a readable image
|
|
25
|
-
* rather than throwing mid-build.
|
|
26
|
-
*/
|
|
27
|
-
export function resolveLanguage(language) {
|
|
28
|
-
const normalised = language.trim().toLowerCase();
|
|
29
|
-
const aliased = languageAliases.get(normalised) ?? normalised;
|
|
30
|
-
return Object.hasOwn(bundledLanguages, aliased)
|
|
31
|
-
? aliased
|
|
32
|
-
: plainText;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Validate a configured theme name. Unlike languages — which come from post
|
|
36
|
-
* frontmatter and fall back quietly — a bad theme is a config mistake worth
|
|
37
|
-
* failing on.
|
|
38
|
-
*/
|
|
39
|
-
export function resolveTheme(theme) {
|
|
40
|
-
if (!Object.hasOwn(bundledThemes, theme)) {
|
|
41
|
-
throw new Error(`Unknown code theme "${theme}". See https://shiki.style/themes for the available names.`);
|
|
42
|
-
}
|
|
43
|
-
return theme;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Expand tabs to spaces so every character occupies one monospace cell.
|
|
47
|
-
*/
|
|
48
|
-
export function expandTabs(text, tabSize) {
|
|
49
|
-
const spaces = " ".repeat(Math.max(1, Math.floor(tabSize)));
|
|
50
|
-
return text.replaceAll("\t", () => spaces);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Strip the indentation common to every non-blank line. A snippet lifted out
|
|
54
|
-
* of a nested block would otherwise spend its width — the scarce dimension on
|
|
55
|
-
* the landscape sizes — on indentation that carries no meaning once the
|
|
56
|
-
* surrounding code is gone.
|
|
57
|
-
*/
|
|
58
|
-
export function dedent(text) {
|
|
59
|
-
const lines = text.split("\n");
|
|
60
|
-
let common = Infinity;
|
|
61
|
-
for (const line of lines) {
|
|
62
|
-
if (line.trim() === "") {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
common = Math.min(common, line.length - line.trimStart().length);
|
|
66
|
-
}
|
|
67
|
-
if (common === 0 || !Number.isFinite(common)) {
|
|
68
|
-
return text;
|
|
69
|
-
}
|
|
70
|
-
return lines.map((line) => line.slice(common)).join("\n");
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Split an `#rrggbb` or `#rrggbbaa` colour into a fill and an optional opacity,
|
|
74
|
-
* since SVG 1.1 `fill` does not accept an alpha channel.
|
|
75
|
-
*/
|
|
76
|
-
function splitColor(color) {
|
|
77
|
-
if (color === undefined || color === "") {
|
|
78
|
-
return { color: undefined, opacity: undefined };
|
|
79
|
-
}
|
|
80
|
-
if (!/^#[0-9a-f]{8}$/i.test(color)) {
|
|
81
|
-
return { color, opacity: undefined };
|
|
82
|
-
}
|
|
83
|
-
const alpha = Number.parseInt(color.slice(7, 9), 16) / 255;
|
|
84
|
-
return { color: color.slice(0, 7), opacity: Math.round(alpha * 100) / 100 };
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Tokenise a snippet with Shiki and flatten it onto a character grid.
|
|
88
|
-
*
|
|
89
|
-
* The snippet is first normalised: surrounding blank lines trimmed, tabs
|
|
90
|
-
* expanded, and common leading indentation removed.
|
|
91
|
-
*
|
|
92
|
-
* Whitespace-only runs are dropped and each remaining run keeps its starting
|
|
93
|
-
* column, so the renderer can position every run absolutely instead of relying
|
|
94
|
-
* on SVG text flow to preserve indentation.
|
|
95
|
-
*/
|
|
96
|
-
export async function highlightCode(code, options) {
|
|
97
|
-
const source = dedent(expandTabs(code.replaceAll("\r\n", "\n"), options.tabSize)
|
|
98
|
-
.replace(/\n+$/, "")
|
|
99
|
-
.replace(/^\n+/, ""));
|
|
100
|
-
const result = await codeToTokens(source, {
|
|
101
|
-
lang: resolveLanguage(options.language),
|
|
102
|
-
theme: resolveTheme(options.theme),
|
|
103
|
-
});
|
|
104
|
-
let longestLine = 0;
|
|
105
|
-
const lines = result.tokens.map((tokens) => {
|
|
106
|
-
let column = 0;
|
|
107
|
-
const line = [];
|
|
108
|
-
for (const token of tokens) {
|
|
109
|
-
const start = column;
|
|
110
|
-
column += token.content.length;
|
|
111
|
-
const leading = token.content.length - token.content.trimStart().length;
|
|
112
|
-
const text = token.content.trim();
|
|
113
|
-
if (text === "") {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const { color, opacity } = splitColor(token.color);
|
|
117
|
-
const fontStyle = token.fontStyle ?? 0;
|
|
118
|
-
line.push({
|
|
119
|
-
text,
|
|
120
|
-
column: start + leading,
|
|
121
|
-
color,
|
|
122
|
-
opacity,
|
|
123
|
-
bold: (fontStyle & boldFlag) !== 0,
|
|
124
|
-
italic: (fontStyle & italicFlag) !== 0,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
longestLine = Math.max(longestLine, column);
|
|
128
|
-
return line;
|
|
129
|
-
});
|
|
130
|
-
return {
|
|
131
|
-
lines,
|
|
132
|
-
foreground: result.fg ?? "#ffffff",
|
|
133
|
-
background: result.bg ?? "#000000",
|
|
134
|
-
longestLine,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=highlight.js.map
|
package/dist/highlight.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../src/highlight.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { ColophonConfig, Dimensions, MetaImageProps, RenderedMetaImage, ResolvedConfig } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Build the complete SVG document for one image: the enclosing `<svg>` root,
|
|
4
|
-
* the config-driven background, and the template's foreground content.
|
|
5
|
-
*
|
|
6
|
-
* Asynchronous because a template may need to load resources — the `code`
|
|
7
|
-
* template fetches syntax grammars and themes on demand.
|
|
8
|
-
*/
|
|
9
|
-
export declare function buildSvg(props: MetaImageProps, config: ResolvedConfig, dimensions: Dimensions): Promise<string>;
|
|
10
|
-
/**
|
|
11
|
-
* Rasterise an SVG string to a PNG buffer, scaled to `dimensions.width`.
|
|
12
|
-
*
|
|
13
|
-
* Text is drawn with the fonts named by `config`, which is what keeps the
|
|
14
|
-
* output the same on a laptop, in CI and in a container. Height follows the
|
|
15
|
-
* SVG's own aspect ratio; {@link buildSvg} sizes it to match.
|
|
16
|
-
*/
|
|
17
|
-
export declare function renderSvgToPng(svg: string, dimensions: Dimensions, config?: ResolvedConfig): Promise<Buffer>;
|
|
18
|
-
/**
|
|
19
|
-
* Render an image for every configured output size from a single set of props.
|
|
20
|
-
* This is the reusable core: it takes props and config and returns rendered
|
|
21
|
-
* bytes, with no filesystem or content-discovery concerns.
|
|
22
|
-
*/
|
|
23
|
-
export declare function renderMetaImages(props: MetaImageProps, config?: ColophonConfig): Promise<RenderedMetaImage[]>;
|
|
24
|
-
//# sourceMappingURL=render.d.ts.map
|
package/dist/render.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEf,MAAM,YAAY,CAAC;AAmBpB;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAkBD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,cAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,cAAc,EACrB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiB9B"}
|
package/dist/render.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { renderAsync } from "@resvg/resvg-js";
|
|
2
|
-
import { backgroundSvg } from "./background.js";
|
|
3
|
-
import { resolveConfig, resolveConfigForSize } from "./config.js";
|
|
4
|
-
import { fallbackFamily, fontFilePaths } from "./fonts.js";
|
|
5
|
-
const backgroundId = "colophon-bg";
|
|
6
|
-
function selectTemplate(config, name) {
|
|
7
|
-
const template = config.templates[name];
|
|
8
|
-
if (template === undefined) {
|
|
9
|
-
const available = Object.keys(config.templates)
|
|
10
|
-
.toSorted((a, b) => a.localeCompare(b))
|
|
11
|
-
.join(", ");
|
|
12
|
-
throw new Error(`Unknown template "${name}". Available templates: ${available}.`);
|
|
13
|
-
}
|
|
14
|
-
return template;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Build the complete SVG document for one image: the enclosing `<svg>` root,
|
|
18
|
-
* the config-driven background, and the template's foreground content.
|
|
19
|
-
*
|
|
20
|
-
* Asynchronous because a template may need to load resources — the `code`
|
|
21
|
-
* template fetches syntax grammars and themes on demand.
|
|
22
|
-
*/
|
|
23
|
-
export async function buildSvg(props, config, dimensions) {
|
|
24
|
-
const template = selectTemplate(config, props.template);
|
|
25
|
-
const background = backgroundSvg(config.background, dimensions, backgroundId);
|
|
26
|
-
const body = await template.render({ props, config, dimensions });
|
|
27
|
-
const { width, height } = dimensions;
|
|
28
|
-
return (`<svg width="${String(width)}" height="${String(height)}"` +
|
|
29
|
-
` viewBox="0 0 ${String(width)} ${String(height)}"` +
|
|
30
|
-
` xmlns="http://www.w3.org/2000/svg">${background}${body}</svg>`);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Font options for the rasteriser: the configured font files, and whether to
|
|
34
|
-
* fall back to the machine's own.
|
|
35
|
-
*/
|
|
36
|
-
async function fontOptions(config) {
|
|
37
|
-
const fallback = fallbackFamily(config.fonts);
|
|
38
|
-
return {
|
|
39
|
-
loadSystemFonts: config.systemFonts,
|
|
40
|
-
fontFiles: await fontFilePaths(config.fonts),
|
|
41
|
-
...(fallback !== undefined && { defaultFontFamily: fallback }),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Rasterise an SVG string to a PNG buffer, scaled to `dimensions.width`.
|
|
46
|
-
*
|
|
47
|
-
* Text is drawn with the fonts named by `config`, which is what keeps the
|
|
48
|
-
* output the same on a laptop, in CI and in a container. Height follows the
|
|
49
|
-
* SVG's own aspect ratio; {@link buildSvg} sizes it to match.
|
|
50
|
-
*/
|
|
51
|
-
export async function renderSvgToPng(svg, dimensions, config = resolveConfig()) {
|
|
52
|
-
const rendered = await renderAsync(svg, {
|
|
53
|
-
fitTo: { mode: "width", value: dimensions.width },
|
|
54
|
-
font: await fontOptions(config),
|
|
55
|
-
});
|
|
56
|
-
return rendered.asPng();
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Render an image for every configured output size from a single set of props.
|
|
60
|
-
* This is the reusable core: it takes props and config and returns rendered
|
|
61
|
-
* bytes, with no filesystem or content-discovery concerns.
|
|
62
|
-
*/
|
|
63
|
-
export async function renderMetaImages(props, config) {
|
|
64
|
-
const resolved = resolveConfig(config);
|
|
65
|
-
// Validate the template once up front so a bad name fails fast.
|
|
66
|
-
selectTemplate(resolved, props.template);
|
|
67
|
-
return Promise.all(resolved.sizes.map(async (size) => {
|
|
68
|
-
// Each size renders with its own overrides folded in, so one size wanting
|
|
69
|
-
// a smaller minimum font does not mean a second pass over everything.
|
|
70
|
-
const sizeConfig = resolveConfigForSize(config, size);
|
|
71
|
-
const dimensions = { width: size.width, height: size.height };
|
|
72
|
-
const svg = await buildSvg(props, sizeConfig, dimensions);
|
|
73
|
-
const png = await renderSvgToPng(svg, dimensions, sizeConfig);
|
|
74
|
-
return { name: size.name, dimensions, svg, png };
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=render.js.map
|
package/dist/render.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|