gazetta 0.5.0 → 0.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/admin-dist/assets/index-BO9-CXmW.css +1 -0
- package/admin-dist/assets/index-Ufu8zZH_.js +668 -0
- package/admin-dist/assets/{vendor-primevue-BnR1c_bQ.js → vendor-primevue-C0Q_YTCb.js} +330 -431
- package/admin-dist/assets/vendor-vue-D3wBSmDf.js +1 -0
- package/admin-dist/index.html +4 -4
- package/dist/admin-api/error-response.d.ts +21 -0
- package/dist/admin-api/error-response.d.ts.map +1 -0
- package/dist/admin-api/error-response.js +12 -0
- package/dist/admin-api/error-response.js.map +1 -0
- package/dist/admin-api/index.d.ts +19 -6
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +137 -21
- package/dist/admin-api/index.js.map +1 -1
- package/dist/admin-api/routes/assets.d.ts +16 -0
- package/dist/admin-api/routes/assets.d.ts.map +1 -0
- package/dist/admin-api/routes/assets.js +433 -0
- package/dist/admin-api/routes/assets.js.map +1 -0
- package/dist/admin-api/routes/compare.d.ts +2 -1
- package/dist/admin-api/routes/compare.d.ts.map +1 -1
- package/dist/admin-api/routes/compare.js +33 -24
- package/dist/admin-api/routes/compare.js.map +1 -1
- package/dist/admin-api/routes/fields.d.ts +2 -2
- package/dist/admin-api/routes/fields.d.ts.map +1 -1
- package/dist/admin-api/routes/fields.js +10 -3
- package/dist/admin-api/routes/fields.js.map +1 -1
- package/dist/admin-api/routes/fragments.d.ts +2 -3
- package/dist/admin-api/routes/fragments.d.ts.map +1 -1
- package/dist/admin-api/routes/fragments.js +120 -21
- package/dist/admin-api/routes/fragments.js.map +1 -1
- package/dist/admin-api/routes/history.d.ts +23 -0
- package/dist/admin-api/routes/history.d.ts.map +1 -0
- package/dist/admin-api/routes/history.js +143 -0
- package/dist/admin-api/routes/history.js.map +1 -0
- package/dist/admin-api/routes/pages.d.ts +2 -3
- package/dist/admin-api/routes/pages.d.ts.map +1 -1
- package/dist/admin-api/routes/pages.js +153 -22
- package/dist/admin-api/routes/pages.js.map +1 -1
- package/dist/admin-api/routes/preview.d.ts +2 -2
- package/dist/admin-api/routes/preview.d.ts.map +1 -1
- package/dist/admin-api/routes/preview.js +50 -15
- package/dist/admin-api/routes/preview.js.map +1 -1
- package/dist/admin-api/routes/publish.d.ts +2 -1
- package/dist/admin-api/routes/publish.d.ts.map +1 -1
- package/dist/admin-api/routes/publish.js +259 -79
- package/dist/admin-api/routes/publish.js.map +1 -1
- package/dist/admin-api/routes/site.d.ts +2 -2
- package/dist/admin-api/routes/site.d.ts.map +1 -1
- package/dist/admin-api/routes/site.js +27 -4
- package/dist/admin-api/routes/site.js.map +1 -1
- package/dist/admin-api/routes/templates.d.ts +2 -2
- package/dist/admin-api/routes/templates.d.ts.map +1 -1
- package/dist/admin-api/routes/templates.js +19 -9
- package/dist/admin-api/routes/templates.js.map +1 -1
- package/dist/admin-api/schemas/assets.d.ts +48 -0
- package/dist/admin-api/schemas/assets.d.ts.map +1 -0
- package/dist/admin-api/schemas/assets.js +44 -0
- package/dist/admin-api/schemas/assets.js.map +1 -0
- package/dist/admin-api/schemas/compare.d.ts +29 -0
- package/dist/admin-api/schemas/compare.d.ts.map +1 -0
- package/dist/admin-api/schemas/compare.js +30 -0
- package/dist/admin-api/schemas/compare.js.map +1 -0
- package/dist/admin-api/schemas/dependents.d.ts +15 -0
- package/dist/admin-api/schemas/dependents.d.ts.map +1 -0
- package/dist/admin-api/schemas/dependents.js +14 -0
- package/dist/admin-api/schemas/dependents.js.map +1 -0
- package/dist/admin-api/schemas/fetch.d.ts +12 -0
- package/dist/admin-api/schemas/fetch.d.ts.map +1 -0
- package/dist/admin-api/schemas/fetch.js +11 -0
- package/dist/admin-api/schemas/fetch.js.map +1 -0
- package/dist/admin-api/schemas/fields.d.ts +11 -0
- package/dist/admin-api/schemas/fields.d.ts.map +1 -0
- package/dist/admin-api/schemas/fields.js +11 -0
- package/dist/admin-api/schemas/fields.js.map +1 -0
- package/dist/admin-api/schemas/fragments.d.ts +27 -0
- package/dist/admin-api/schemas/fragments.d.ts.map +1 -0
- package/dist/admin-api/schemas/fragments.js +26 -0
- package/dist/admin-api/schemas/fragments.js.map +1 -0
- package/dist/admin-api/schemas/history.d.ts +73 -0
- package/dist/admin-api/schemas/history.d.ts.map +1 -0
- package/dist/admin-api/schemas/history.js +35 -0
- package/dist/admin-api/schemas/history.js.map +1 -0
- package/dist/admin-api/schemas/index.d.ts +34 -0
- package/dist/admin-api/schemas/index.d.ts.map +1 -0
- package/dist/admin-api/schemas/index.js +34 -0
- package/dist/admin-api/schemas/index.js.map +1 -0
- package/dist/admin-api/schemas/pages.d.ts +46 -0
- package/dist/admin-api/schemas/pages.d.ts.map +1 -0
- package/dist/admin-api/schemas/pages.js +47 -0
- package/dist/admin-api/schemas/pages.js.map +1 -0
- package/dist/admin-api/schemas/publish.d.ts +67 -0
- package/dist/admin-api/schemas/publish.d.ts.map +1 -0
- package/dist/admin-api/schemas/publish.js +60 -0
- package/dist/admin-api/schemas/publish.js.map +1 -0
- package/dist/admin-api/schemas/site.d.ts +28 -0
- package/dist/admin-api/schemas/site.d.ts.map +1 -0
- package/dist/admin-api/schemas/site.js +24 -0
- package/dist/admin-api/schemas/site.js.map +1 -0
- package/dist/admin-api/schemas/targets.d.ts +36 -0
- package/dist/admin-api/schemas/targets.d.ts.map +1 -0
- package/dist/admin-api/schemas/targets.js +19 -0
- package/dist/admin-api/schemas/targets.js.map +1 -0
- package/dist/admin-api/schemas/templates.d.ts +17 -0
- package/dist/admin-api/schemas/templates.d.ts.map +1 -0
- package/dist/admin-api/schemas/templates.js +16 -0
- package/dist/admin-api/schemas/templates.js.map +1 -0
- package/dist/admin-api/source-context.d.ts +158 -0
- package/dist/admin-api/source-context.d.ts.map +1 -0
- package/dist/admin-api/source-context.js +92 -0
- package/dist/admin-api/source-context.js.map +1 -0
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/assemble.d.ts.map +1 -1
- package/dist/assemble.js +4 -1
- package/dist/assemble.js.map +1 -1
- package/dist/assets/analyze-audio.d.ts +3 -0
- package/dist/assets/analyze-audio.d.ts.map +1 -0
- package/dist/assets/analyze-audio.js +80 -0
- package/dist/assets/analyze-audio.js.map +1 -0
- package/dist/assets/analyze-image.d.ts +19 -0
- package/dist/assets/analyze-image.d.ts.map +1 -0
- package/dist/assets/analyze-image.js +123 -0
- package/dist/assets/analyze-image.js.map +1 -0
- package/dist/assets/analyze.d.ts +94 -0
- package/dist/assets/analyze.d.ts.map +1 -0
- package/dist/assets/analyze.js +45 -0
- package/dist/assets/analyze.js.map +1 -0
- package/dist/assets/asset-deps.d.ts +30 -0
- package/dist/assets/asset-deps.d.ts.map +1 -0
- package/dist/assets/asset-deps.js +42 -0
- package/dist/assets/asset-deps.js.map +1 -0
- package/dist/assets/asset-paths.d.ts +155 -0
- package/dist/assets/asset-paths.d.ts.map +1 -0
- package/dist/assets/asset-paths.js +197 -0
- package/dist/assets/asset-paths.js.map +1 -0
- package/dist/assets/delete.d.ts +75 -0
- package/dist/assets/delete.d.ts.map +1 -0
- package/dist/assets/delete.js +82 -0
- package/dist/assets/delete.js.map +1 -0
- package/dist/assets/errors.d.ts +241 -0
- package/dist/assets/errors.d.ts.map +1 -0
- package/dist/assets/errors.js +300 -0
- package/dist/assets/errors.js.map +1 -0
- package/dist/assets/find-refs.d.ts +37 -0
- package/dist/assets/find-refs.d.ts.map +1 -0
- package/dist/assets/find-refs.js +35 -0
- package/dist/assets/find-refs.js.map +1 -0
- package/dist/assets/hash.d.ts +13 -0
- package/dist/assets/hash.d.ts.map +1 -0
- package/dist/assets/hash.js +43 -0
- package/dist/assets/hash.js.map +1 -0
- package/dist/assets/image-metadata.d.ts +11 -0
- package/dist/assets/image-metadata.d.ts.map +1 -0
- package/dist/assets/image-metadata.js +31 -0
- package/dist/assets/image-metadata.js.map +1 -0
- package/dist/assets/ingest-locale.d.ts +86 -0
- package/dist/assets/ingest-locale.d.ts.map +1 -0
- package/dist/assets/ingest-locale.js +209 -0
- package/dist/assets/ingest-locale.js.map +1 -0
- package/dist/assets/ingest.d.ts +96 -0
- package/dist/assets/ingest.d.ts.map +1 -0
- package/dist/assets/ingest.js +308 -0
- package/dist/assets/ingest.js.map +1 -0
- package/dist/assets/kind-compat.d.ts +34 -0
- package/dist/assets/kind-compat.d.ts.map +1 -0
- package/dist/assets/kind-compat.js +33 -0
- package/dist/assets/kind-compat.js.map +1 -0
- package/dist/assets/list.d.ts +46 -0
- package/dist/assets/list.d.ts.map +1 -0
- package/dist/assets/list.js +102 -0
- package/dist/assets/list.js.map +1 -0
- package/dist/assets/manifest-default.d.ts +56 -0
- package/dist/assets/manifest-default.d.ts.map +1 -0
- package/dist/assets/manifest-default.js +120 -0
- package/dist/assets/manifest-default.js.map +1 -0
- package/dist/assets/manifest-filename.d.ts +52 -0
- package/dist/assets/manifest-filename.d.ts.map +1 -0
- package/dist/assets/manifest-filename.js +104 -0
- package/dist/assets/manifest-filename.js.map +1 -0
- package/dist/assets/manifest-locale.d.ts +60 -0
- package/dist/assets/manifest-locale.d.ts.map +1 -0
- package/dist/assets/manifest-locale.js +206 -0
- package/dist/assets/manifest-locale.js.map +1 -0
- package/dist/assets/manifest-merge.d.ts +66 -0
- package/dist/assets/manifest-merge.d.ts.map +1 -0
- package/dist/assets/manifest-merge.js +82 -0
- package/dist/assets/manifest-merge.js.map +1 -0
- package/dist/assets/manifest.d.ts +83 -0
- package/dist/assets/manifest.d.ts.map +1 -0
- package/dist/assets/manifest.js +93 -0
- package/dist/assets/manifest.js.map +1 -0
- package/dist/assets/mime-sniff.d.ts +18 -0
- package/dist/assets/mime-sniff.d.ts.map +1 -0
- package/dist/assets/mime-sniff.js +84 -0
- package/dist/assets/mime-sniff.js.map +1 -0
- package/dist/assets/preprocess-svg.d.ts +3 -0
- package/dist/assets/preprocess-svg.d.ts.map +1 -0
- package/dist/assets/preprocess-svg.js +49 -0
- package/dist/assets/preprocess-svg.js.map +1 -0
- package/dist/assets/preprocess.d.ts +62 -0
- package/dist/assets/preprocess.d.ts.map +1 -0
- package/dist/assets/preprocess.js +86 -0
- package/dist/assets/preprocess.js.map +1 -0
- package/dist/assets/publish-plan.d.ts +41 -0
- package/dist/assets/publish-plan.d.ts.map +1 -0
- package/dist/assets/publish-plan.js +49 -0
- package/dist/assets/publish-plan.js.map +1 -0
- package/dist/assets/publish.d.ts +33 -0
- package/dist/assets/publish.d.ts.map +1 -0
- package/dist/assets/publish.js +81 -0
- package/dist/assets/publish.js.map +1 -0
- package/dist/assets/refs.d.ts +37 -0
- package/dist/assets/refs.d.ts.map +1 -0
- package/dist/assets/refs.js +33 -0
- package/dist/assets/refs.js.map +1 -0
- package/dist/assets/remove-override.d.ts +42 -0
- package/dist/assets/remove-override.d.ts.map +1 -0
- package/dist/assets/remove-override.js +53 -0
- package/dist/assets/remove-override.js.map +1 -0
- package/dist/assets/rename.d.ts +43 -0
- package/dist/assets/rename.d.ts.map +1 -0
- package/dist/assets/rename.js +271 -0
- package/dist/assets/rename.js.map +1 -0
- package/dist/assets/replace.d.ts +37 -0
- package/dist/assets/replace.d.ts.map +1 -0
- package/dist/assets/replace.js +195 -0
- package/dist/assets/replace.js.map +1 -0
- package/dist/assets/resolve.d.ts +141 -0
- package/dist/assets/resolve.d.ts.map +1 -0
- package/dist/assets/resolve.js +381 -0
- package/dist/assets/resolve.js.map +1 -0
- package/dist/assets/rewrite-manifest-asset-ref.d.ts +44 -0
- package/dist/assets/rewrite-manifest-asset-ref.d.ts.map +1 -0
- package/dist/assets/rewrite-manifest-asset-ref.js +51 -0
- package/dist/assets/rewrite-manifest-asset-ref.js.map +1 -0
- package/dist/assets/scan-manifest-for-asset.d.ts +63 -0
- package/dist/assets/scan-manifest-for-asset.d.ts.map +1 -0
- package/dist/assets/scan-manifest-for-asset.js +105 -0
- package/dist/assets/scan-manifest-for-asset.js.map +1 -0
- package/dist/assets/serve-route.d.ts +45 -0
- package/dist/assets/serve-route.d.ts.map +1 -0
- package/dist/assets/serve-route.js +123 -0
- package/dist/assets/serve-route.js.map +1 -0
- package/dist/assets/svg-sanitize.d.ts +38 -0
- package/dist/assets/svg-sanitize.d.ts.map +1 -0
- package/dist/assets/svg-sanitize.js +209 -0
- package/dist/assets/svg-sanitize.js.map +1 -0
- package/dist/assets/update-metadata.d.ts +61 -0
- package/dist/assets/update-metadata.d.ts.map +1 -0
- package/dist/assets/update-metadata.js +82 -0
- package/dist/assets/update-metadata.js.map +1 -0
- package/dist/assets/url.d.ts +82 -0
- package/dist/assets/url.d.ts.map +1 -0
- package/dist/assets/url.js +103 -0
- package/dist/assets/url.js.map +1 -0
- package/dist/assets/validate.d.ts +74 -0
- package/dist/assets/validate.d.ts.map +1 -0
- package/dist/assets/validate.js +136 -0
- package/dist/assets/validate.js.map +1 -0
- package/dist/assets/variants.d.ts +23 -0
- package/dist/assets/variants.d.ts.map +1 -0
- package/dist/assets/variants.js +74 -0
- package/dist/assets/variants.js.map +1 -0
- package/dist/cli/assets-cli.d.ts +58 -0
- package/dist/cli/assets-cli.d.ts.map +1 -0
- package/dist/cli/assets-cli.js +233 -0
- package/dist/cli/assets-cli.js.map +1 -0
- package/dist/cli/assets-display.d.ts +112 -0
- package/dist/cli/assets-display.d.ts.map +1 -0
- package/dist/cli/assets-display.js +106 -0
- package/dist/cli/assets-display.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +46 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +84 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/history.d.ts +45 -0
- package/dist/cli/history.d.ts.map +1 -0
- package/dist/cli/history.js +165 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/index.js +689 -128
- package/dist/cli/index.js.map +1 -1
- package/dist/compare.d.ts +8 -5
- package/dist/compare.d.ts.map +1 -1
- package/dist/compare.js +62 -20
- package/dist/compare.js.map +1 -1
- package/dist/content-root.d.ts +38 -0
- package/dist/content-root.d.ts.map +1 -0
- package/dist/content-root.js +29 -0
- package/dist/content-root.js.map +1 -0
- package/dist/dep-sidecars.d.ts +127 -0
- package/dist/dep-sidecars.d.ts.map +1 -0
- package/dist/dep-sidecars.js +122 -0
- package/dist/dep-sidecars.js.map +1 -0
- package/dist/editor/AssetEmbeddedWidget.d.ts +3 -0
- package/dist/editor/AssetEmbeddedWidget.d.ts.map +1 -0
- package/dist/editor/AssetEmbeddedWidget.js +146 -0
- package/dist/editor/AssetEmbeddedWidget.js.map +1 -0
- package/dist/editor/mount.d.ts +12 -1
- package/dist/editor/mount.d.ts.map +1 -1
- package/dist/editor/mount.js +96 -33
- package/dist/editor/mount.js.map +1 -1
- package/dist/format.d.ts +44 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +65 -0
- package/dist/format.js.map +1 -0
- package/dist/fragment-deps.d.ts +24 -0
- package/dist/fragment-deps.d.ts.map +1 -0
- package/dist/fragment-deps.js +20 -0
- package/dist/fragment-deps.js.map +1 -0
- package/dist/hash.d.ts +34 -9
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +60 -21
- package/dist/hash.js.map +1 -1
- package/dist/history-provider.d.ts +49 -0
- package/dist/history-provider.d.ts.map +1 -0
- package/dist/history-provider.js +248 -0
- package/dist/history-provider.js.map +1 -0
- package/dist/history-recorder.d.ts +102 -0
- package/dist/history-recorder.d.ts.map +1 -0
- package/dist/history-recorder.js +168 -0
- package/dist/history-recorder.js.map +1 -0
- package/dist/history-restorer.d.ts +46 -0
- package/dist/history-restorer.d.ts.map +1 -0
- package/dist/history-restorer.js +137 -0
- package/dist/history-restorer.js.map +1 -0
- package/dist/history.d.ts +129 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +25 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +27 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +94 -0
- package/dist/locale.d.ts.map +1 -0
- package/dist/locale.js +188 -0
- package/dist/locale.js.map +1 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +16 -1
- package/dist/manifest.js.map +1 -1
- package/dist/providers/_atomic-write.d.ts +9 -0
- package/dist/providers/_atomic-write.d.ts.map +1 -0
- package/dist/providers/_atomic-write.js +72 -0
- package/dist/providers/_atomic-write.js.map +1 -0
- package/dist/providers/_rm-ignore-missing.d.ts +31 -0
- package/dist/providers/_rm-ignore-missing.d.ts.map +1 -0
- package/dist/providers/_rm-ignore-missing.js +12 -0
- package/dist/providers/_rm-ignore-missing.js.map +1 -0
- package/dist/providers/_stream-interop.d.ts +23 -0
- package/dist/providers/_stream-interop.d.ts.map +1 -0
- package/dist/providers/_stream-interop.js +21 -0
- package/dist/providers/_stream-interop.js.map +1 -0
- package/dist/providers/azure-blob.d.ts.map +1 -1
- package/dist/providers/azure-blob.js +60 -0
- package/dist/providers/azure-blob.js.map +1 -1
- package/dist/providers/filesystem.d.ts +4 -0
- package/dist/providers/filesystem.d.ts.map +1 -1
- package/dist/providers/filesystem.js +63 -2
- package/dist/providers/filesystem.js.map +1 -1
- package/dist/providers/s3.d.ts.map +1 -1
- package/dist/providers/s3.js +107 -16
- package/dist/providers/s3.js.map +1 -1
- package/dist/publish-locale.d.ts +44 -0
- package/dist/publish-locale.d.ts.map +1 -0
- package/dist/publish-locale.js +103 -0
- package/dist/publish-locale.js.map +1 -0
- package/dist/publish-rendered.d.ts +52 -21
- package/dist/publish-rendered.d.ts.map +1 -1
- package/dist/publish-rendered.js +144 -87
- package/dist/publish-rendered.js.map +1 -1
- package/dist/publish.d.ts +18 -19
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +41 -56
- package/dist/publish.js.map +1 -1
- package/dist/renderer.d.ts +14 -4
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +35 -23
- package/dist/renderer.js.map +1 -1
- package/dist/resolver.d.ts +17 -2
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +112 -16
- package/dist/resolver.js.map +1 -1
- package/dist/robots.d.ts +22 -0
- package/dist/robots.d.ts.map +1 -0
- package/dist/robots.js +25 -0
- package/dist/robots.js.map +1 -0
- package/dist/schema/dimensions.d.ts +78 -0
- package/dist/schema/dimensions.d.ts.map +1 -0
- package/dist/schema/dimensions.js +97 -0
- package/dist/schema/dimensions.js.map +1 -0
- package/dist/schema/helpers.d.ts +108 -0
- package/dist/schema/helpers.d.ts.map +1 -0
- package/dist/schema/helpers.js +133 -0
- package/dist/schema/helpers.js.map +1 -0
- package/dist/schema/index.d.ts +27 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +25 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/types.d.ts +390 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +25 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/selector-chain.d.ts +63 -0
- package/dist/selector-chain.d.ts.map +1 -0
- package/dist/selector-chain.js +58 -0
- package/dist/selector-chain.js.map +1 -0
- package/dist/seo.d.ts +56 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +72 -0
- package/dist/seo.js.map +1 -0
- package/dist/serve.d.ts +41 -3
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +206 -65
- package/dist/serve.js.map +1 -1
- package/dist/sidecars.d.ts +26 -21
- package/dist/sidecars.d.ts.map +1 -1
- package/dist/sidecars.js +143 -45
- package/dist/sidecars.js.map +1 -1
- package/dist/site-loader.d.ts +74 -6
- package/dist/site-loader.d.ts.map +1 -1
- package/dist/site-loader.js +138 -28
- package/dist/site-loader.js.map +1 -1
- package/dist/sitemap.d.ts +45 -0
- package/dist/sitemap.d.ts.map +1 -0
- package/dist/sitemap.js +67 -0
- package/dist/sitemap.js.map +1 -0
- package/dist/targets.d.ts +47 -1
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +83 -36
- package/dist/targets.js.map +1 -1
- package/dist/template-loader.d.ts +7 -3
- package/dist/template-loader.d.ts.map +1 -1
- package/dist/template-loader.js +27 -12
- package/dist/template-loader.js.map +1 -1
- package/dist/templates-scan-worker.js +1 -1
- package/dist/templates-scan-worker.js.map +1 -1
- package/dist/templates-scan.d.ts.map +1 -1
- package/dist/templates-scan.js +1 -1
- package/dist/templates-scan.js.map +1 -1
- package/dist/themes.d.ts +69 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +85 -0
- package/dist/themes.js.map +1 -0
- package/dist/transforms/adapter.d.ts +115 -0
- package/dist/transforms/adapter.d.ts.map +1 -0
- package/dist/transforms/adapter.js +2 -0
- package/dist/transforms/adapter.js.map +1 -0
- package/dist/transforms/cloudflare.d.ts +17 -0
- package/dist/transforms/cloudflare.d.ts.map +1 -0
- package/dist/transforms/cloudflare.js +110 -0
- package/dist/transforms/cloudflare.js.map +1 -0
- package/dist/transforms/index.d.ts +24 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +30 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/sharp.d.ts +3 -0
- package/dist/transforms/sharp.d.ts.map +1 -0
- package/dist/transforms/sharp.js +43 -0
- package/dist/transforms/sharp.js.map +1 -0
- package/dist/types.d.ts +241 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +28 -5
- package/dist/types.js.map +1 -1
- package/dist/workers/cloudflare-r2.d.ts +11 -2
- package/dist/workers/cloudflare-r2.d.ts.map +1 -1
- package/dist/workers/cloudflare-r2.js +120 -55
- package/dist/workers/cloudflare-r2.js.map +1 -1
- package/package.json +30 -2
- package/admin-dist/assets/index-BZAFKsUp.js +0 -608
- package/admin-dist/assets/index-BpRotMuK.css +0 -1
- package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
- package/dist/providers/r2.d.ts +0 -8
- package/dist/providers/r2.d.ts.map +0 -1
- package/dist/providers/r2.js +0 -83
- package/dist/providers/r2.js.map +0 -1
- package/dist/source-sidecars.d.ts +0 -13
- package/dist/source-sidecars.d.ts.map +0 -1
- package/dist/source-sidecars.js +0 -52
- package/dist/source-sidecars.js.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Responsive-variant generation for image assets.
|
|
3
|
+
*
|
|
4
|
+
* Single responsibility: given the original bytes of an image, produce
|
|
5
|
+
* resized variants at the v1 target widths. No storage, no manifest, no
|
|
6
|
+
* naming policy — callers (ingest pipeline) compose this with byte
|
|
7
|
+
* persistence and manifest writing.
|
|
8
|
+
*
|
|
9
|
+
* v1 target widths: 400 / 800 / 1200 / 1600. Variants wider than the
|
|
10
|
+
* source image are skipped (no upscaling — the browser's srcset picker
|
|
11
|
+
* is happy with fewer candidates, and upscaled variants would be worse
|
|
12
|
+
* than the original). Same format as input (JPEG → JPEG, PNG → PNG).
|
|
13
|
+
*
|
|
14
|
+
* Format conversion (WebP/AVIF emission) is a separate capability and
|
|
15
|
+
* lives out of scope for this module.
|
|
16
|
+
*/
|
|
17
|
+
import sharp from 'sharp';
|
|
18
|
+
/** The v1 srcset ladder. Ordered ascending — callers rely on this. */
|
|
19
|
+
export const VARIANT_WIDTHS = [400, 800, 1200, 1600];
|
|
20
|
+
/**
|
|
21
|
+
* Generate responsive variants from a source image buffer. Produces one
|
|
22
|
+
* variant per `VARIANT_WIDTHS` entry that is ≤ the source image's width.
|
|
23
|
+
*
|
|
24
|
+
* Same output format as the input (JPEG stays JPEG, PNG stays PNG) —
|
|
25
|
+
* re-compression is implicit via sharp's encoder, which applies its
|
|
26
|
+
* quality defaults. Explicit quality/compression tuning is deferred to
|
|
27
|
+
* a future image-pipeline config module.
|
|
28
|
+
*
|
|
29
|
+
* Throws whatever sharp throws on unreadable input — the caller is
|
|
30
|
+
* responsible for treating that as a hard ingest failure (per v1
|
|
31
|
+
* contract: rollback + fail the upload).
|
|
32
|
+
*/
|
|
33
|
+
export async function generateVariants(source) {
|
|
34
|
+
// Decode once, reuse for every target width — avoids re-parsing the
|
|
35
|
+
// source for each resize.
|
|
36
|
+
const base = sharp(source);
|
|
37
|
+
const meta = await base.metadata();
|
|
38
|
+
const sourceWidth = meta.width ?? 0;
|
|
39
|
+
const sourceFormat = meta.format;
|
|
40
|
+
if (!sourceFormat) {
|
|
41
|
+
throw new Error('Image format could not be determined for variant generation');
|
|
42
|
+
}
|
|
43
|
+
const picked = VARIANT_WIDTHS.filter(w => w <= sourceWidth);
|
|
44
|
+
const out = [];
|
|
45
|
+
for (const width of picked) {
|
|
46
|
+
// Re-construct per iteration; sharp pipelines are single-use once
|
|
47
|
+
// `.toBuffer()` has run.
|
|
48
|
+
const pipeline = sharp(source).resize({ width });
|
|
49
|
+
const bytes = await toSourceFormat(pipeline, sourceFormat).toBuffer();
|
|
50
|
+
out.push({ width, bytes: new Uint8Array(bytes) });
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Route a sharp pipeline to the encoder matching the source format.
|
|
56
|
+
* sharp auto-detects on `.toBuffer()` when the input had an explicit
|
|
57
|
+
* format, but being explicit here keeps behavior deterministic and
|
|
58
|
+
* makes future per-format quality tuning a one-line change.
|
|
59
|
+
*/
|
|
60
|
+
function toSourceFormat(pipeline, format) {
|
|
61
|
+
switch (format) {
|
|
62
|
+
case 'jpeg':
|
|
63
|
+
case 'jpg':
|
|
64
|
+
return pipeline.jpeg();
|
|
65
|
+
case 'png':
|
|
66
|
+
return pipeline.png();
|
|
67
|
+
default:
|
|
68
|
+
// Should not be reached in v1 (ingest allowlist is JPEG + PNG).
|
|
69
|
+
// If it does (future MIME expansion), the caller's rollback path
|
|
70
|
+
// will fire on the thrown error — safer than silently defaulting.
|
|
71
|
+
throw new Error(`Unsupported source format for variant generation: ${format}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","sourceRoot":"","sources":["../../src/assets/variants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AASvE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAkB;IACvD,oEAAoE;IACpE,0BAA0B;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAA;IAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,CAAA;IAE3D,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,kEAAkE;QAClE,yBAAyB;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,QAAqB,EAAE,MAA8B;IAC3E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAA;QACvB;YACE,gEAAgE;YAChE,iEAAiE;YACjE,kEAAkE;YAClE,MAAM,IAAI,KAAK,CAAC,qDAAqD,MAAM,EAAE,CAAC,CAAA;IAClF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output sink — anything that accepts text lines. The default
|
|
3
|
+
* (`consoleSink`) writes to `process.stdout` / `process.stderr`;
|
|
4
|
+
* tests use `recordingSink()` to capture lines for assertion.
|
|
5
|
+
*
|
|
6
|
+
* Color is part of the sink's responsibility, not the runner's —
|
|
7
|
+
* the runner emits semantic markers (heading, dim, error) and the
|
|
8
|
+
* sink decides whether to apply ANSI codes.
|
|
9
|
+
*/
|
|
10
|
+
export interface OutputSink {
|
|
11
|
+
/** Plain output line. */
|
|
12
|
+
line(text: string): void;
|
|
13
|
+
/** Heading line (typically emphasized). */
|
|
14
|
+
heading(text: string): void;
|
|
15
|
+
/** Dim / muted text. */
|
|
16
|
+
dim(text: string): void;
|
|
17
|
+
/** Error line (goes to stderr in console sinks). */
|
|
18
|
+
error(text: string): void;
|
|
19
|
+
/** Blank line separator. */
|
|
20
|
+
blank(): void;
|
|
21
|
+
}
|
|
22
|
+
export interface AssetsSubcommandInput {
|
|
23
|
+
/** All argv after the `assets` keyword. e.g. `['list']`, `['info', 'hero']`. */
|
|
24
|
+
args: readonly string[];
|
|
25
|
+
/** Project site directory (passed by the top-level CLI dispatcher). */
|
|
26
|
+
siteDir: string;
|
|
27
|
+
/** Optional target name override (positional / auto-detected). */
|
|
28
|
+
targetName?: string;
|
|
29
|
+
/** Sink for output. Defaults to `consoleSink` when omitted. */
|
|
30
|
+
sink?: OutputSink;
|
|
31
|
+
/** Test hook: skip `process.exit` on bad input. */
|
|
32
|
+
exitOnError?: (code: number) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Top-level dispatch for `gazetta assets <subcommand>`. Resolves the
|
|
36
|
+
* subcommand, routes to its handler, and invokes the exit hook on
|
|
37
|
+
* usage errors. The dispatcher itself doesn't know what each handler
|
|
38
|
+
* does — adding a new subcommand means appending to `SUBCOMMANDS`
|
|
39
|
+
* and the switch.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runAssetsSubcommand(input: AssetsSubcommandInput): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Default sink: writes to `process.stdout` / `process.stderr` with
|
|
44
|
+
* ANSI codes (suppressed via `NO_COLOR` env var or non-TTY stdout).
|
|
45
|
+
*
|
|
46
|
+
* Recognises the special `\x00DIM\x00…\x00END\x00` markers emitted by
|
|
47
|
+
* `dimLabel` for inline dim text in lines that are otherwise plain.
|
|
48
|
+
* This keeps the projection layer free of color decisions.
|
|
49
|
+
*/
|
|
50
|
+
export declare const consoleSink: OutputSink;
|
|
51
|
+
/**
|
|
52
|
+
* Test sink: captures lines into an array for assertion. Strips
|
|
53
|
+
* the inline-dim markers so tests assert on plain text.
|
|
54
|
+
*/
|
|
55
|
+
export declare function recordingSink(): OutputSink & {
|
|
56
|
+
lines: string[];
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=assets-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-cli.d.ts","sourceRoot":"","sources":["../../src/cli/assets-cli.ts"],"names":[],"mappings":"AAsBA;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2CAA2C;IAC3C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,wBAAwB;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,oDAAoD;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAKD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrF;AA2KD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,UAgCtB,CAAA;AAEJ;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAWhE"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { projectInfo, projectListRow, renderListTable } from './assets-display.js';
|
|
2
|
+
const SUBCOMMANDS = ['list', 'info', 'reindex'];
|
|
3
|
+
/**
|
|
4
|
+
* Top-level dispatch for `gazetta assets <subcommand>`. Resolves the
|
|
5
|
+
* subcommand, routes to its handler, and invokes the exit hook on
|
|
6
|
+
* usage errors. The dispatcher itself doesn't know what each handler
|
|
7
|
+
* does — adding a new subcommand means appending to `SUBCOMMANDS`
|
|
8
|
+
* and the switch.
|
|
9
|
+
*/
|
|
10
|
+
export async function runAssetsSubcommand(input) {
|
|
11
|
+
const sink = input.sink ?? consoleSink;
|
|
12
|
+
const exit = input.exitOnError ?? ((code) => process.exit(code));
|
|
13
|
+
const subcommand = input.args[0];
|
|
14
|
+
if (!subcommand || !isSubcommand(subcommand)) {
|
|
15
|
+
printUsage(sink);
|
|
16
|
+
exit(1);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
switch (subcommand) {
|
|
20
|
+
case 'list':
|
|
21
|
+
await runList({ siteDir: input.siteDir, targetName: input.targetName, sink });
|
|
22
|
+
return;
|
|
23
|
+
case 'info': {
|
|
24
|
+
const assetName = input.args[1];
|
|
25
|
+
if (!assetName) {
|
|
26
|
+
sink.error('Usage: gazetta assets info <name> [target] [site]');
|
|
27
|
+
exit(1);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
await runInfo({ siteDir: input.siteDir, targetName: input.targetName, assetName, sink, exit });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
case 'reindex':
|
|
34
|
+
await runReindex({ siteDir: input.siteDir, targetName: input.targetName, sink });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function isSubcommand(s) {
|
|
39
|
+
return SUBCOMMANDS.includes(s);
|
|
40
|
+
}
|
|
41
|
+
function printUsage(sink) {
|
|
42
|
+
sink.error('Usage: gazetta assets <list|info|reindex>');
|
|
43
|
+
sink.error(' list <target> — list assets on a target');
|
|
44
|
+
sink.error(' info <name> [target] — show detail for one asset');
|
|
45
|
+
sink.error(' reindex [target] — rebuild the asset-refs sidecar index');
|
|
46
|
+
}
|
|
47
|
+
async function loadSourceContext(siteDir, targetName) {
|
|
48
|
+
const { buildSourceContext } = await import('./bootstrap.js');
|
|
49
|
+
const { source } = await buildSourceContext({ projectSiteDir: siteDir, targetName });
|
|
50
|
+
return source;
|
|
51
|
+
}
|
|
52
|
+
async function runList(opts) {
|
|
53
|
+
const { sink } = opts;
|
|
54
|
+
sink.blank();
|
|
55
|
+
sink.heading('gazetta assets list');
|
|
56
|
+
sink.blank();
|
|
57
|
+
const source = await loadSourceContext(opts.siteDir, opts.targetName);
|
|
58
|
+
const { listAssets } = await import('../assets/list.js');
|
|
59
|
+
const summaries = await listAssets({ storage: source.storage, assetsRoot: 'assets' });
|
|
60
|
+
if (summaries.length === 0) {
|
|
61
|
+
sink.dim('No assets on this target.');
|
|
62
|
+
sink.blank();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const rows = summaries.map(projectListRow);
|
|
66
|
+
const lines = renderListTable(rows);
|
|
67
|
+
// First line is the header — emit dim.
|
|
68
|
+
if (lines.length > 0) {
|
|
69
|
+
sink.dim(lines[0]);
|
|
70
|
+
for (const line of lines.slice(1))
|
|
71
|
+
sink.line(line);
|
|
72
|
+
}
|
|
73
|
+
sink.blank();
|
|
74
|
+
sink.dim(`${rows.length} asset(s).`);
|
|
75
|
+
sink.blank();
|
|
76
|
+
}
|
|
77
|
+
async function runInfo(opts) {
|
|
78
|
+
const { sink, assetName } = opts;
|
|
79
|
+
sink.blank();
|
|
80
|
+
sink.heading(`gazetta assets info ${assetName}`);
|
|
81
|
+
sink.blank();
|
|
82
|
+
const source = await loadSourceContext(opts.siteDir, opts.targetName);
|
|
83
|
+
const { readManifest } = await import('../assets/manifest.js');
|
|
84
|
+
const { enumerateOverrideSlices } = await import('../assets/asset-paths.js');
|
|
85
|
+
const { readRefsForAsset } = await import('../assets/asset-deps.js');
|
|
86
|
+
let manifest;
|
|
87
|
+
try {
|
|
88
|
+
manifest = await readManifest(source.storage, 'assets', assetName);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
if (err.code === 'ASSET_MANIFEST_NOT_FOUND') {
|
|
92
|
+
sink.error(`Asset not found: ${assetName}`);
|
|
93
|
+
opts.exit(1);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
const [overrideSlices, references] = await Promise.all([
|
|
99
|
+
enumerateOverrideSlices(source.storage, 'assets', manifest),
|
|
100
|
+
readRefsForAsset(source.contentRoot, assetName),
|
|
101
|
+
]);
|
|
102
|
+
const info = projectInfo({ manifest, overrideSlices, references });
|
|
103
|
+
emitInfo(info, sink);
|
|
104
|
+
}
|
|
105
|
+
async function runReindex(opts) {
|
|
106
|
+
const { sink } = opts;
|
|
107
|
+
sink.blank();
|
|
108
|
+
sink.heading('gazetta assets reindex');
|
|
109
|
+
sink.blank();
|
|
110
|
+
sink.dim('Note: stop any running dev server before reindexing to avoid drift.');
|
|
111
|
+
sink.blank();
|
|
112
|
+
const { buildSourceContext } = await import('./bootstrap.js');
|
|
113
|
+
const { source, manifest } = await buildSourceContext({
|
|
114
|
+
projectSiteDir: opts.siteDir,
|
|
115
|
+
targetName: opts.targetName,
|
|
116
|
+
});
|
|
117
|
+
const { loadSite } = await import('../site-loader.js');
|
|
118
|
+
const { rebuildDepIndex } = await import('../publish-rendered.js');
|
|
119
|
+
const { ASSET_REFS } = await import('../assets/asset-deps.js');
|
|
120
|
+
const { FRAGMENT_DEPS } = await import('../fragment-deps.js');
|
|
121
|
+
const site = await loadSite({ contentRoot: source.contentRoot, manifest });
|
|
122
|
+
const t0 = Date.now();
|
|
123
|
+
await Promise.all([
|
|
124
|
+
rebuildDepIndex(ASSET_REFS, site, source.contentRoot.storage, source.contentRoot.rootPath),
|
|
125
|
+
rebuildDepIndex(FRAGMENT_DEPS, site, source.contentRoot.storage, source.contentRoot.rootPath),
|
|
126
|
+
]);
|
|
127
|
+
const elapsed = Date.now() - t0;
|
|
128
|
+
sink.line(`✓ Rebuilt dep indices for ${site.pages.size} page(s) + ${site.fragments.size} fragment(s) in ${elapsed}ms`);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Emit a structured InfoOutput through the sink. The sink decides
|
|
132
|
+
* styling (color, prefixes); this function decides ordering and
|
|
133
|
+
* which sections appear when empty.
|
|
134
|
+
*/
|
|
135
|
+
function emitInfo(info, sink) {
|
|
136
|
+
// Metadata section — always emitted, fixed key-value pairs.
|
|
137
|
+
const labelWidth = Math.max(...info.metadata.rows.map(r => r.label.length));
|
|
138
|
+
for (const row of info.metadata.rows) {
|
|
139
|
+
sink.line(`${dimLabel(row.label, labelWidth)} ${row.value}`);
|
|
140
|
+
}
|
|
141
|
+
// Variant ladder — only when present.
|
|
142
|
+
if (info.variants.length > 0) {
|
|
143
|
+
sink.blank();
|
|
144
|
+
sink.heading('Variants');
|
|
145
|
+
for (const v of info.variants) {
|
|
146
|
+
sink.line(` ${v.width.padStart(5)} ${v.size.padStart(8)} ${v.path}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Override slices — only when present.
|
|
150
|
+
if (info.overrides.length > 0) {
|
|
151
|
+
sink.blank();
|
|
152
|
+
sink.heading('Locale / theme overrides');
|
|
153
|
+
for (const slice of info.overrides) {
|
|
154
|
+
sink.line(` ${slice.selector.padEnd(20)} ${slice.bytes}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// References — always emitted; "none" when empty.
|
|
158
|
+
sink.blank();
|
|
159
|
+
if (info.references.length === 0) {
|
|
160
|
+
sink.heading(`References ${'(none)'}`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
sink.heading(`References (${info.references.length})`);
|
|
164
|
+
for (const ref of info.references) {
|
|
165
|
+
sink.line(` ${ref.path}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
sink.blank();
|
|
169
|
+
}
|
|
170
|
+
/** Pad a label to fixed width with a dim hint marker for the sink. */
|
|
171
|
+
function dimLabel(label, width) {
|
|
172
|
+
return `\x00DIM\x00${label.padEnd(width)}\x00END\x00`;
|
|
173
|
+
}
|
|
174
|
+
// ---------- sinks ----------
|
|
175
|
+
/**
|
|
176
|
+
* Default sink: writes to `process.stdout` / `process.stderr` with
|
|
177
|
+
* ANSI codes (suppressed via `NO_COLOR` env var or non-TTY stdout).
|
|
178
|
+
*
|
|
179
|
+
* Recognises the special `\x00DIM\x00…\x00END\x00` markers emitted by
|
|
180
|
+
* `dimLabel` for inline dim text in lines that are otherwise plain.
|
|
181
|
+
* This keeps the projection layer free of color decisions.
|
|
182
|
+
*/
|
|
183
|
+
export const consoleSink = (() => {
|
|
184
|
+
const noColor = !!process.env.NO_COLOR || !process.stdout.isTTY;
|
|
185
|
+
const dim = (s) => (noColor ? s : `\x1b[2m${s}\x1b[22m`);
|
|
186
|
+
const bold = (s) => (noColor ? s : `\x1b[1m${s}\x1b[22m`);
|
|
187
|
+
const green = (s) => (noColor ? s : `\x1b[32m${s}\x1b[39m`);
|
|
188
|
+
const bgGreen = (s) => (noColor ? s : `\x1b[42m\x1b[30m${s}\x1b[39m\x1b[49m`);
|
|
189
|
+
const red = (s) => (noColor ? s : `\x1b[31m${s}\x1b[39m`);
|
|
190
|
+
const inlineDim = (s) => s.replace(/\x00DIM\x00([\s\S]*?)\x00END\x00/g, (_m, inner) => dim(inner));
|
|
191
|
+
return {
|
|
192
|
+
line(text) {
|
|
193
|
+
console.log(` ${inlineDim(text)}`);
|
|
194
|
+
},
|
|
195
|
+
heading(text) {
|
|
196
|
+
// Mirror the existing `gazetta assets reindex` heading style.
|
|
197
|
+
const [name, ...rest] = text.split(' ');
|
|
198
|
+
if (name === 'gazetta') {
|
|
199
|
+
const subcmd = rest.join(' ');
|
|
200
|
+
console.log(` ${bgGreen(bold(' gazetta '))} ${green(subcmd)}`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
console.log(` ${bold(text)}`);
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
dim(text) {
|
|
207
|
+
console.log(` ${dim(text)}`);
|
|
208
|
+
},
|
|
209
|
+
error(text) {
|
|
210
|
+
console.error(` ${red('✗')} ${text}`);
|
|
211
|
+
},
|
|
212
|
+
blank() {
|
|
213
|
+
console.log();
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
})();
|
|
217
|
+
/**
|
|
218
|
+
* Test sink: captures lines into an array for assertion. Strips
|
|
219
|
+
* the inline-dim markers so tests assert on plain text.
|
|
220
|
+
*/
|
|
221
|
+
export function recordingSink() {
|
|
222
|
+
const lines = [];
|
|
223
|
+
const strip = (s) => s.replace(/\x00DIM\x00([\s\S]*?)\x00END\x00/g, '$1');
|
|
224
|
+
return {
|
|
225
|
+
lines,
|
|
226
|
+
line: text => lines.push(`line: ${strip(text)}`),
|
|
227
|
+
heading: text => lines.push(`heading: ${text}`),
|
|
228
|
+
dim: text => lines.push(`dim: ${strip(text)}`),
|
|
229
|
+
error: text => lines.push(`error: ${strip(text)}`),
|
|
230
|
+
blank: () => lines.push(''),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=assets-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-cli.js","sourceRoot":"","sources":["../../src/cli/assets-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure display projections + formatters for `gazetta assets list`
|
|
3
|
+
* and `gazetta assets info`.
|
|
4
|
+
*
|
|
5
|
+
* Why a separate module: the runner (`assets-cli.ts`) does I/O and
|
|
6
|
+
* writes to a sink. The projection logic — "given an asset, what
|
|
7
|
+
* does its row look like in the table" — is testable on its own
|
|
8
|
+
* with no I/O, no `console`, no fixtures beyond a manifest object.
|
|
9
|
+
*
|
|
10
|
+
* SOLID lenses:
|
|
11
|
+
* - SRP: this module owns "asset → display string". Nothing else.
|
|
12
|
+
* - OCP: adding a new column to the list table = new key in
|
|
13
|
+
* `LIST_COLUMNS`, new entry in `projectListRow`. Extending here,
|
|
14
|
+
* not editing the runner.
|
|
15
|
+
* - DIP: pure functions, no transport coupling. The runner adapts
|
|
16
|
+
* this module's output to whatever sink it wants.
|
|
17
|
+
*/
|
|
18
|
+
import type { AssetManifest, AssetSummary } from '../schema/types.js';
|
|
19
|
+
/**
|
|
20
|
+
* One row in the `gazetta assets list` table. Stable shape so
|
|
21
|
+
* downstream consumers (output sink, future JSON renderer) can rely
|
|
22
|
+
* on it.
|
|
23
|
+
*/
|
|
24
|
+
export interface ListRow {
|
|
25
|
+
name: string;
|
|
26
|
+
kind: string;
|
|
27
|
+
size: string;
|
|
28
|
+
dims: string;
|
|
29
|
+
alt: string;
|
|
30
|
+
locales: string;
|
|
31
|
+
uploaded: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The columns rendered in `gazetta assets list`, in display order.
|
|
35
|
+
* Header label + value selector + alignment. Adding a column =
|
|
36
|
+
* append one entry; nothing else needs to change in the renderer.
|
|
37
|
+
*/
|
|
38
|
+
export declare const LIST_COLUMNS: readonly {
|
|
39
|
+
key: keyof ListRow;
|
|
40
|
+
header: string;
|
|
41
|
+
align: 'start' | 'end';
|
|
42
|
+
}[];
|
|
43
|
+
/**
|
|
44
|
+
* Project an `AssetSummary` (returned by `listAssets`) into a
|
|
45
|
+
* display row. Pure — no I/O. The summary already includes
|
|
46
|
+
* `overrideLocales` (populated server-side from the directory
|
|
47
|
+
* scan), so this is a pure mapping.
|
|
48
|
+
*/
|
|
49
|
+
export declare function projectListRow(summary: AssetSummary): ListRow;
|
|
50
|
+
/**
|
|
51
|
+
* Render rows as a column-aligned table. Returns lines (no
|
|
52
|
+
* embedded newlines) — the caller emits them via its sink. Header
|
|
53
|
+
* line is included as the first entry.
|
|
54
|
+
*
|
|
55
|
+
* `start` columns left-pad; `end` columns right-pad — matches
|
|
56
|
+
* conventional table alignment (text left, numbers right).
|
|
57
|
+
*/
|
|
58
|
+
export declare function renderListTable(rows: readonly ListRow[]): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Sections of the `gazetta assets info <name>` output. Each section
|
|
61
|
+
* is "title" + ordered key-value pairs; the runner formats each
|
|
62
|
+
* section uniformly. Decoupling this from the renderer means a future
|
|
63
|
+
* `--format json` consumes the same data structure.
|
|
64
|
+
*/
|
|
65
|
+
export interface InfoSection {
|
|
66
|
+
title: string;
|
|
67
|
+
rows: readonly {
|
|
68
|
+
label: string;
|
|
69
|
+
value: string;
|
|
70
|
+
}[];
|
|
71
|
+
}
|
|
72
|
+
export interface InfoVariantRow {
|
|
73
|
+
width: string;
|
|
74
|
+
size: string;
|
|
75
|
+
path: string;
|
|
76
|
+
}
|
|
77
|
+
export interface InfoOverrideRow {
|
|
78
|
+
selector: string;
|
|
79
|
+
bytes: 'bytes' | 'metadata only';
|
|
80
|
+
}
|
|
81
|
+
export interface InfoReferenceRow {
|
|
82
|
+
/** `pages/home`, `fragments/header:fr`, etc. */
|
|
83
|
+
path: string;
|
|
84
|
+
}
|
|
85
|
+
export interface InfoOutput {
|
|
86
|
+
/** Top-level metadata (kind, mime, hash, size, dims, alt, focal, uploaded). */
|
|
87
|
+
metadata: InfoSection;
|
|
88
|
+
/** Variant ladder, when an image with variants. */
|
|
89
|
+
variants: InfoVariantRow[];
|
|
90
|
+
/** Locale/theme overrides (from `enumerateOverrideSlices`). */
|
|
91
|
+
overrides: InfoOverrideRow[];
|
|
92
|
+
/** Pages/fragments that reference this asset. */
|
|
93
|
+
references: InfoReferenceRow[];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Project a default manifest + override slices + ref list into the
|
|
97
|
+
* structured `InfoOutput`. Pure — caller does the I/O to gather
|
|
98
|
+
* inputs.
|
|
99
|
+
*/
|
|
100
|
+
export declare function projectInfo(input: {
|
|
101
|
+
manifest: AssetManifest;
|
|
102
|
+
overrideSlices: readonly {
|
|
103
|
+
selector: ReadonlyMap<string, string>;
|
|
104
|
+
bytes: string | null;
|
|
105
|
+
}[];
|
|
106
|
+
references: readonly {
|
|
107
|
+
source: 'page' | 'fragment';
|
|
108
|
+
name: string;
|
|
109
|
+
locale?: string;
|
|
110
|
+
}[];
|
|
111
|
+
}): InfoOutput;
|
|
112
|
+
//# sourceMappingURL=assets-display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-display.d.ts","sourceRoot":"","sources":["../../src/cli/assets-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGrE;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,EAQjG,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAU7D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,EAAE,CAclE;AAMD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,GAAG,eAAe,CAAA;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,QAAQ,EAAE,WAAW,CAAA;IACrB,mDAAmD;IACnD,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,iDAAiD;IACjD,UAAU,EAAE,gBAAgB,EAAE,CAAA;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,QAAQ,EAAE,aAAa,CAAA;IACvB,cAAc,EAAE,SAAS;QAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;IAC1F,UAAU,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtF,GAAG,UAAU,CAoCb"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { formatAltStatus, formatBytes, formatFocalPoint, shortDate } from '../format.js';
|
|
2
|
+
/**
|
|
3
|
+
* The columns rendered in `gazetta assets list`, in display order.
|
|
4
|
+
* Header label + value selector + alignment. Adding a column =
|
|
5
|
+
* append one entry; nothing else needs to change in the renderer.
|
|
6
|
+
*/
|
|
7
|
+
export const LIST_COLUMNS = [
|
|
8
|
+
{ key: 'name', header: 'NAME', align: 'start' },
|
|
9
|
+
{ key: 'kind', header: 'KIND', align: 'start' },
|
|
10
|
+
{ key: 'size', header: 'SIZE', align: 'end' },
|
|
11
|
+
{ key: 'dims', header: 'DIMENSIONS', align: 'end' },
|
|
12
|
+
{ key: 'alt', header: 'ALT', align: 'start' },
|
|
13
|
+
{ key: 'locales', header: 'LOCALES', align: 'start' },
|
|
14
|
+
{ key: 'uploaded', header: 'UPLOADED', align: 'start' },
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Project an `AssetSummary` (returned by `listAssets`) into a
|
|
18
|
+
* display row. Pure — no I/O. The summary already includes
|
|
19
|
+
* `overrideLocales` (populated server-side from the directory
|
|
20
|
+
* scan), so this is a pure mapping.
|
|
21
|
+
*/
|
|
22
|
+
export function projectListRow(summary) {
|
|
23
|
+
return {
|
|
24
|
+
name: summary.name,
|
|
25
|
+
kind: summary.kind,
|
|
26
|
+
size: formatBytes(summary.size),
|
|
27
|
+
dims: summary.width !== null && summary.height !== null ? `${summary.width}×${summary.height}` : '—',
|
|
28
|
+
alt: formatAltStatus(summary.alt, 30),
|
|
29
|
+
locales: summary.overrideLocales.length > 0 ? summary.overrideLocales.join(',') : '—',
|
|
30
|
+
uploaded: shortDate(summary.uploadedAt),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Render rows as a column-aligned table. Returns lines (no
|
|
35
|
+
* embedded newlines) — the caller emits them via its sink. Header
|
|
36
|
+
* line is included as the first entry.
|
|
37
|
+
*
|
|
38
|
+
* `start` columns left-pad; `end` columns right-pad — matches
|
|
39
|
+
* conventional table alignment (text left, numbers right).
|
|
40
|
+
*/
|
|
41
|
+
export function renderListTable(rows) {
|
|
42
|
+
if (rows.length === 0)
|
|
43
|
+
return [];
|
|
44
|
+
const widths = {};
|
|
45
|
+
for (const col of LIST_COLUMNS) {
|
|
46
|
+
widths[col.key] = Math.max(col.header.length, ...rows.map(r => r[col.key].length));
|
|
47
|
+
}
|
|
48
|
+
const lines = [];
|
|
49
|
+
lines.push(LIST_COLUMNS.map(col => formatCell(col.header, widths[col.key], col.align)).join(' '));
|
|
50
|
+
for (const row of rows) {
|
|
51
|
+
lines.push(LIST_COLUMNS.map(col => formatCell(row[col.key], widths[col.key], col.align)).join(' '));
|
|
52
|
+
}
|
|
53
|
+
return lines;
|
|
54
|
+
}
|
|
55
|
+
function formatCell(value, width, align) {
|
|
56
|
+
return align === 'start' ? value.padEnd(width) : value.padStart(width);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Project a default manifest + override slices + ref list into the
|
|
60
|
+
* structured `InfoOutput`. Pure — caller does the I/O to gather
|
|
61
|
+
* inputs.
|
|
62
|
+
*/
|
|
63
|
+
export function projectInfo(input) {
|
|
64
|
+
const { manifest, overrideSlices, references } = input;
|
|
65
|
+
const metadataRows = [
|
|
66
|
+
{ label: 'Kind', value: manifest.kind },
|
|
67
|
+
{ label: 'Type', value: manifest.mime },
|
|
68
|
+
{ label: 'Hash', value: manifest.hash },
|
|
69
|
+
{ label: 'Size', value: formatBytes(manifest.size) },
|
|
70
|
+
];
|
|
71
|
+
if (manifest.width !== null && manifest.height !== null) {
|
|
72
|
+
metadataRows.push({ label: 'Dimensions', value: `${manifest.width} × ${manifest.height}` });
|
|
73
|
+
}
|
|
74
|
+
metadataRows.push({ label: 'Alt', value: formatAltStatus(manifest.alt) });
|
|
75
|
+
if (manifest.focalPoint !== undefined) {
|
|
76
|
+
metadataRows.push({ label: 'Focal', value: formatFocalPoint(manifest.focalPoint) });
|
|
77
|
+
}
|
|
78
|
+
metadataRows.push({
|
|
79
|
+
label: 'Uploaded',
|
|
80
|
+
value: manifest.uploadedAt + (manifest.uploadedBy ? ` by ${manifest.uploadedBy}` : ''),
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
metadata: { title: 'metadata', rows: metadataRows },
|
|
84
|
+
variants: manifest.variants.map(v => ({
|
|
85
|
+
width: `${v.width}w`,
|
|
86
|
+
size: formatBytes(v.size),
|
|
87
|
+
path: v.path,
|
|
88
|
+
})),
|
|
89
|
+
overrides: overrideSlices.map(slice => ({
|
|
90
|
+
selector: selectorToString(slice.selector),
|
|
91
|
+
bytes: slice.bytes !== null ? 'bytes' : 'metadata only',
|
|
92
|
+
})),
|
|
93
|
+
references: references.map(ref => ({
|
|
94
|
+
path: `${ref.source === 'page' ? 'pages' : 'fragments'}/${ref.name}${ref.locale ? `:${ref.locale}` : ''}`,
|
|
95
|
+
})),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Render a Selector map as `locale=fr theme=dark` for display. */
|
|
99
|
+
function selectorToString(selector) {
|
|
100
|
+
const parts = [];
|
|
101
|
+
for (const [dim, value] of selector) {
|
|
102
|
+
parts.push(`${dim}=${value}`);
|
|
103
|
+
}
|
|
104
|
+
return parts.join(' ');
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=assets-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-display.js","sourceRoot":"","sources":["../../src/cli/assets-display.ts"],"names":[],"mappings":"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"}
|