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