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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BlobServiceClient } from '@azure/storage-blob';
|
|
2
|
+
import { nodeReadableToWeb, webReadableToNode } from './_stream-interop.js';
|
|
2
3
|
async function streamToString(readableStream) {
|
|
3
4
|
return new Promise((resolve, reject) => {
|
|
4
5
|
const chunks = [];
|
|
@@ -64,6 +65,28 @@ export function createAzureBlobProvider(options) {
|
|
|
64
65
|
blobHTTPHeaders: { blobContentType: 'text/plain; charset=utf-8' },
|
|
65
66
|
});
|
|
66
67
|
},
|
|
68
|
+
async readBytes(path) {
|
|
69
|
+
const blobClient = containerClient.getBlockBlobClient(normalizePath(path));
|
|
70
|
+
try {
|
|
71
|
+
// `downloadToBuffer` is the SDK's bytes-in-hand accessor —
|
|
72
|
+
// single round-trip, no manual stream collection. Returns a
|
|
73
|
+
// Buffer (which extends Uint8Array).
|
|
74
|
+
return await blobClient.downloadToBuffer();
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const statusCode = err.statusCode;
|
|
78
|
+
if (statusCode === 404)
|
|
79
|
+
throw new Error(`File not found: ${path}`);
|
|
80
|
+
throw new Error(`Cannot read bytes from ${path}: ${err.message}`);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
async writeBytes(path, content) {
|
|
84
|
+
const blobClient = containerClient.getBlockBlobClient(normalizePath(path));
|
|
85
|
+
// `upload` is the bounded, single-PUT path — atomic per object.
|
|
86
|
+
// Wrap in Buffer for stable Uint8Array handling across Node versions.
|
|
87
|
+
const buf = Buffer.from(content.buffer, content.byteOffset, content.byteLength);
|
|
88
|
+
await blobClient.upload(buf, buf.byteLength);
|
|
89
|
+
},
|
|
67
90
|
async mkdir(_path) {
|
|
68
91
|
// Azure Blob has no directories — they're implicit from blob name prefixes.
|
|
69
92
|
// Nothing to do.
|
|
@@ -82,6 +105,43 @@ export function createAzureBlobProvider(options) {
|
|
|
82
105
|
await containerClient.getBlockBlobClient(blob.name).delete();
|
|
83
106
|
}
|
|
84
107
|
},
|
|
108
|
+
async readStream(path, range) {
|
|
109
|
+
const blobClient = containerClient.getBlockBlobClient(normalizePath(path));
|
|
110
|
+
try {
|
|
111
|
+
// Azure's `download(offset, count)` is offset+length, not start+end.
|
|
112
|
+
// Convert from our inclusive ByteRange to Azure's offset+count.
|
|
113
|
+
// Azure with no args returns the full blob.
|
|
114
|
+
const response = range
|
|
115
|
+
? await blobClient.download(range.start, range.end - range.start + 1)
|
|
116
|
+
: await blobClient.download();
|
|
117
|
+
if (!response.readableStreamBody)
|
|
118
|
+
throw new Error(`Empty body for ${path}`);
|
|
119
|
+
// The Azure SDK only ships Node-side streams; the typed return is
|
|
120
|
+
// `NodeJS.ReadableStream` (no web stream variant). Bridge to web.
|
|
121
|
+
return nodeReadableToWeb(response.readableStreamBody);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const statusCode = err.statusCode;
|
|
125
|
+
if (statusCode === 404)
|
|
126
|
+
throw new Error(`File not found: ${path}`);
|
|
127
|
+
throw new Error(`Cannot read stream from ${path}: ${err.message}`);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
async writeStream(path, stream) {
|
|
131
|
+
const blobClient = containerClient.getBlockBlobClient(normalizePath(path));
|
|
132
|
+
try {
|
|
133
|
+
// `uploadStream` reads from the Node Readable in 4 MiB blocks (default
|
|
134
|
+
// `bufferSize`), with up to 5 concurrent block uploads. Atomic from
|
|
135
|
+
// a reader's perspective — Azure commits the block list only after
|
|
136
|
+
// the last block is staged, so partial state is never visible.
|
|
137
|
+
// Memory bound is `bufferSize × maxConcurrency` ≈ 20 MiB regardless
|
|
138
|
+
// of total bytes.
|
|
139
|
+
await blobClient.uploadStream(webReadableToNode(stream));
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
throw new Error(`Cannot write stream to ${path}: ${err.message}`);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
85
145
|
};
|
|
86
146
|
}
|
|
87
147
|
function normalizePath(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { StorageProvider } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Filesystem storage provider. A thin adapter over `node:fs` — all atomicity
|
|
4
|
+
* and stream-interop concerns are delegated to sibling modules.
|
|
5
|
+
*/
|
|
2
6
|
export declare function createFilesystemProvider(basePath?: string): StorageProvider;
|
|
3
7
|
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/providers/filesystem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/providers/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,aAAa,CAAA;AAIvE;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAwH3E"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createReadStream } from 'node:fs';
|
|
2
|
+
import { access, mkdir, readdir, readFile, rm, stat } from 'node:fs/promises';
|
|
2
3
|
import { join } from 'node:path';
|
|
4
|
+
import { atomicWriteBytes, atomicWriteStream, atomicWriteString } from './_atomic-write.js';
|
|
5
|
+
import { nodeReadableToWeb } from './_stream-interop.js';
|
|
6
|
+
/**
|
|
7
|
+
* Filesystem storage provider. A thin adapter over `node:fs` — all atomicity
|
|
8
|
+
* and stream-interop concerns are delegated to sibling modules.
|
|
9
|
+
*/
|
|
3
10
|
export function createFilesystemProvider(basePath) {
|
|
4
11
|
function resolvePath(path) {
|
|
5
12
|
return basePath ? join(basePath, path) : path;
|
|
@@ -42,7 +49,30 @@ export function createFilesystemProvider(basePath) {
|
|
|
42
49
|
async writeFile(path, content) {
|
|
43
50
|
const fullPath = resolvePath(path);
|
|
44
51
|
try {
|
|
45
|
-
await
|
|
52
|
+
await atomicWriteString(fullPath, content);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
throw new Error(`Cannot write ${fullPath}: ${err.message}`);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
async readBytes(path) {
|
|
59
|
+
const fullPath = resolvePath(path);
|
|
60
|
+
try {
|
|
61
|
+
// node:fs/promises readFile without encoding returns a Buffer (which
|
|
62
|
+
// extends Uint8Array). Return as-is — callers see a Uint8Array view.
|
|
63
|
+
return await readFile(fullPath);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const code = err.code;
|
|
67
|
+
if (code === 'ENOENT')
|
|
68
|
+
throw new Error(`File not found: ${fullPath}`);
|
|
69
|
+
throw new Error(`Cannot read ${fullPath}: ${err.message}`);
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
async writeBytes(path, content) {
|
|
73
|
+
const fullPath = resolvePath(path);
|
|
74
|
+
try {
|
|
75
|
+
await atomicWriteBytes(fullPath, content);
|
|
46
76
|
}
|
|
47
77
|
catch (err) {
|
|
48
78
|
throw new Error(`Cannot write ${fullPath}: ${err.message}`);
|
|
@@ -66,6 +96,37 @@ export function createFilesystemProvider(basePath) {
|
|
|
66
96
|
throw new Error(`Cannot delete ${fullPath}: ${err.message}`);
|
|
67
97
|
}
|
|
68
98
|
},
|
|
99
|
+
async readStream(path, range) {
|
|
100
|
+
const fullPath = resolvePath(path);
|
|
101
|
+
let size;
|
|
102
|
+
try {
|
|
103
|
+
size = (await stat(fullPath)).size;
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
const code = err.code;
|
|
107
|
+
if (code === 'ENOENT')
|
|
108
|
+
throw new Error(`File not found: ${fullPath}`);
|
|
109
|
+
throw new Error(`Cannot stat ${fullPath}: ${err.message}`);
|
|
110
|
+
}
|
|
111
|
+
if (range && (range.start < 0 || range.end < range.start || range.start >= size)) {
|
|
112
|
+
throw new Error(`Invalid range for ${fullPath}: start=${range.start}, end=${range.end}, size=${size}`);
|
|
113
|
+
}
|
|
114
|
+
// Node's createReadStream honors inclusive start/end — matches our ByteRange
|
|
115
|
+
// contract and HTTP Range semantics (RFC 9110 §14.1.2).
|
|
116
|
+
const nodeStream = range
|
|
117
|
+
? createReadStream(fullPath, { start: range.start, end: range.end })
|
|
118
|
+
: createReadStream(fullPath);
|
|
119
|
+
return nodeReadableToWeb(nodeStream);
|
|
120
|
+
},
|
|
121
|
+
async writeStream(path, stream) {
|
|
122
|
+
const fullPath = resolvePath(path);
|
|
123
|
+
try {
|
|
124
|
+
await atomicWriteStream(fullPath, stream);
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
throw new Error(`Cannot write stream to ${fullPath}: ${err.message}`);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
69
130
|
};
|
|
70
131
|
}
|
|
71
132
|
//# sourceMappingURL=filesystem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/providers/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/providers/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/providers/s3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/providers/s3.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,aAAa,CAAA;AAGvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG;IAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAmMxG"}
|
package/dist/providers/s3.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { S3Client, GetObjectCommand, PutObjectCommand, ListObjectsV2Command, HeadObjectCommand, DeleteObjectCommand, CreateBucketCommand, } from '@aws-sdk/client-s3';
|
|
2
|
+
import { Upload } from '@aws-sdk/lib-storage';
|
|
3
|
+
import { nodeReadableToWeb, webReadableToNode } from './_stream-interop.js';
|
|
2
4
|
export function createS3Provider(options) {
|
|
3
5
|
const client = new S3Client({
|
|
4
6
|
endpoint: options.endpoint,
|
|
@@ -38,20 +40,26 @@ export function createS3Provider(options) {
|
|
|
38
40
|
const prefix = normalizePath(path);
|
|
39
41
|
const prefixWithSlash = prefix ? `${prefix}/` : '';
|
|
40
42
|
const entries = new Map();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
// Paginate — S3/R2 returns max 1000 keys per call
|
|
44
|
+
let continuationToken;
|
|
45
|
+
do {
|
|
46
|
+
const response = await client.send(new ListObjectsV2Command({
|
|
47
|
+
Bucket: bucket,
|
|
48
|
+
Prefix: prefixWithSlash,
|
|
49
|
+
ContinuationToken: continuationToken,
|
|
50
|
+
}));
|
|
51
|
+
for (const obj of response.Contents ?? []) {
|
|
52
|
+
const relativeName = obj.Key.slice(prefixWithSlash.length);
|
|
53
|
+
const firstSegment = relativeName.split('/')[0];
|
|
54
|
+
if (!firstSegment)
|
|
55
|
+
continue;
|
|
56
|
+
const isDirectory = relativeName.includes('/');
|
|
57
|
+
if (entries.has(firstSegment) && entries.get(firstSegment))
|
|
58
|
+
continue;
|
|
59
|
+
entries.set(firstSegment, isDirectory);
|
|
60
|
+
}
|
|
61
|
+
continuationToken = response.IsTruncated ? response.NextContinuationToken : undefined;
|
|
62
|
+
} while (continuationToken);
|
|
55
63
|
return [...entries.entries()].map(([name, isDirectory]) => ({ name, isDirectory }));
|
|
56
64
|
},
|
|
57
65
|
async exists(path) {
|
|
@@ -70,13 +78,47 @@ export function createS3Provider(options) {
|
|
|
70
78
|
}
|
|
71
79
|
},
|
|
72
80
|
async writeFile(path, content) {
|
|
81
|
+
// Encode to Buffer so the SDK sees a known length and skips the
|
|
82
|
+
// "Stream of unknown length" warning. Same wire bytes either way —
|
|
83
|
+
// strings get UTF-8-encoded by the SDK on the way out, we're just
|
|
84
|
+
// doing it ourselves to make the length explicit.
|
|
85
|
+
const body = Buffer.from(content, 'utf-8');
|
|
73
86
|
await client.send(new PutObjectCommand({
|
|
74
87
|
Bucket: bucket,
|
|
75
88
|
Key: normalizePath(path),
|
|
76
|
-
Body:
|
|
89
|
+
Body: body,
|
|
90
|
+
ContentLength: body.length,
|
|
77
91
|
ContentType: 'text/plain; charset=utf-8',
|
|
78
92
|
}));
|
|
79
93
|
},
|
|
94
|
+
async readBytes(path) {
|
|
95
|
+
try {
|
|
96
|
+
const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: normalizePath(path) }));
|
|
97
|
+
if (!response.Body)
|
|
98
|
+
throw new Error(`Empty body for ${path}`);
|
|
99
|
+
// SDK's transformToByteArray is the canonical bytes accessor —
|
|
100
|
+
// single round-trip, no manual stream collection.
|
|
101
|
+
return await response.Body.transformToByteArray();
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
const code = err.name;
|
|
105
|
+
if (code === 'NoSuchKey')
|
|
106
|
+
throw new Error(`File not found: ${path}`);
|
|
107
|
+
throw new Error(`Cannot read bytes from ${path}: ${err.message}`);
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
async writeBytes(path, content) {
|
|
111
|
+
// Single-PUT for bounded bytes. No multipart — that's writeStream's
|
|
112
|
+
// job for unbounded uploads. ContentLength is set explicitly so the
|
|
113
|
+
// SDK skips the "unknown length" warning.
|
|
114
|
+
const body = Buffer.from(content.buffer, content.byteOffset, content.byteLength);
|
|
115
|
+
await client.send(new PutObjectCommand({
|
|
116
|
+
Bucket: bucket,
|
|
117
|
+
Key: normalizePath(path),
|
|
118
|
+
Body: body,
|
|
119
|
+
ContentLength: body.length,
|
|
120
|
+
}));
|
|
121
|
+
},
|
|
80
122
|
async mkdir(_path) {
|
|
81
123
|
// S3 has no directories — implicit from key prefixes
|
|
82
124
|
},
|
|
@@ -86,13 +128,62 @@ export function createS3Provider(options) {
|
|
|
86
128
|
try {
|
|
87
129
|
await client.send(new DeleteObjectCommand({ Bucket: bucket, Key: prefix }));
|
|
88
130
|
}
|
|
89
|
-
catch {
|
|
131
|
+
catch {
|
|
132
|
+
/* ignore */
|
|
133
|
+
}
|
|
90
134
|
// Delete all objects with this prefix
|
|
91
135
|
const response = await client.send(new ListObjectsV2Command({ Bucket: bucket, Prefix: prefix }));
|
|
92
136
|
for (const obj of response.Contents ?? []) {
|
|
93
137
|
await client.send(new DeleteObjectCommand({ Bucket: bucket, Key: obj.Key }));
|
|
94
138
|
}
|
|
95
139
|
},
|
|
140
|
+
async readStream(path, range) {
|
|
141
|
+
const Key = normalizePath(path);
|
|
142
|
+
try {
|
|
143
|
+
const response = await client.send(new GetObjectCommand({
|
|
144
|
+
Bucket: bucket,
|
|
145
|
+
Key,
|
|
146
|
+
// RFC 9110 §14.1.2 — inclusive bytes range. Same semantics as `ByteRange`.
|
|
147
|
+
Range: range ? `bytes=${range.start}-${range.end}` : undefined,
|
|
148
|
+
}));
|
|
149
|
+
if (!response.Body)
|
|
150
|
+
throw new Error(`Empty body for ${path}`);
|
|
151
|
+
// In Node runtime the SDK returns Body as a Node Readable. The
|
|
152
|
+
// browser/edge build returns a web ReadableStream. We only run
|
|
153
|
+
// server-side (publish, dev-server, gazetta serve) — Node Readable
|
|
154
|
+
// is the deterministic path. Bridge to the lib-dom global so
|
|
155
|
+
// callers see one type regardless of provider.
|
|
156
|
+
return nodeReadableToWeb(response.Body);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
const code = err.name;
|
|
160
|
+
if (code === 'NoSuchKey')
|
|
161
|
+
throw new Error(`File not found: ${path}`);
|
|
162
|
+
throw new Error(`Cannot read stream from ${path}: ${err.message}`);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
async writeStream(path, stream) {
|
|
166
|
+
const Key = normalizePath(path);
|
|
167
|
+
try {
|
|
168
|
+
// `Upload` is a hybrid — single-PUT below `partSize` (default 5 MiB),
|
|
169
|
+
// multipart above. Memory bound is `partSize × queueSize` (default
|
|
170
|
+
// 5 MiB × 4 = 20 MiB) regardless of total bytes, so a 4 GB video
|
|
171
|
+
// upload doesn't OOM. `abortOnFailure: true` (default) calls
|
|
172
|
+
// AbortMultipartUpload on error so we don't leak orphan parts.
|
|
173
|
+
const upload = new Upload({
|
|
174
|
+
client,
|
|
175
|
+
params: {
|
|
176
|
+
Bucket: bucket,
|
|
177
|
+
Key,
|
|
178
|
+
Body: webReadableToNode(stream),
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
await upload.done();
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
throw new Error(`Cannot write stream to ${path}: ${err.message}`);
|
|
185
|
+
}
|
|
186
|
+
},
|
|
96
187
|
};
|
|
97
188
|
}
|
|
98
189
|
function normalizePath(path) {
|
package/dist/providers/s3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/providers/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/providers/s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware publish helpers — renders locale variants alongside defaults.
|
|
3
|
+
*
|
|
4
|
+
* SRP: this module owns the "render all locales for an item" loop.
|
|
5
|
+
* Consumers (admin API publish, CLI publish) call these instead of
|
|
6
|
+
* duplicating the locale iteration logic.
|
|
7
|
+
*
|
|
8
|
+
* When `targetLocales` is provided, only locales in that set are rendered.
|
|
9
|
+
* This supports per-domain deployment where each target serves a locale subset.
|
|
10
|
+
*/
|
|
11
|
+
import type { StorageProvider, CacheConfig } from './types.js';
|
|
12
|
+
import type { Site } from './site-loader.js';
|
|
13
|
+
import type { ContentRoot } from './content-root.js';
|
|
14
|
+
import type { SeoContext } from './seo.js';
|
|
15
|
+
import { type HashManifestOptions } from './hash.js';
|
|
16
|
+
export interface PublishLocaleResult {
|
|
17
|
+
files: number;
|
|
18
|
+
removed: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Publish a page in all locales — default + locale variants.
|
|
22
|
+
* When `targetLocales` is set, only render locales in that subset.
|
|
23
|
+
*/
|
|
24
|
+
export declare function publishPageAllLocales(pageName: string, sourceRoot: ContentRoot, targetStorage: StorageProvider, site: Site, hashOpts: HashManifestOptions, opts: {
|
|
25
|
+
cache?: CacheConfig;
|
|
26
|
+
templatesDir?: string;
|
|
27
|
+
seo?: SeoContext;
|
|
28
|
+
/** When set, only publish locales in this subset. */
|
|
29
|
+
targetLocales?: string[];
|
|
30
|
+
/** Locale keys to skip (already up-to-date). null = default locale. */
|
|
31
|
+
unchangedLocales?: Set<string | null>;
|
|
32
|
+
}): Promise<PublishLocaleResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Publish a fragment in all locales — default + locale variants.
|
|
35
|
+
* When `targetLocales` is set, only render locales in that subset.
|
|
36
|
+
*/
|
|
37
|
+
export declare function publishFragmentAllLocales(fragName: string, sourceRoot: ContentRoot, targetStorage: StorageProvider, site: Site, hashOpts: HashManifestOptions, opts: {
|
|
38
|
+
templatesDir?: string;
|
|
39
|
+
/** When set, only publish locales in this subset. */
|
|
40
|
+
targetLocales?: string[];
|
|
41
|
+
/** Locale keys to skip (already up-to-date). null = default locale. */
|
|
42
|
+
unchangedLocales?: Set<string | null>;
|
|
43
|
+
}): Promise<PublishLocaleResult>;
|
|
44
|
+
//# sourceMappingURL=publish-locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-locale.d.ts","sourceRoot":"","sources":["../src/publish-locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAGlE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,WAAW,EACvB,aAAa,EAAE,eAAe,EAC9B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACtC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAsE9B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,WAAW,EACvB,aAAa,EAAE,eAAe,EAC9B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACtC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware publish helpers — renders locale variants alongside defaults.
|
|
3
|
+
*
|
|
4
|
+
* SRP: this module owns the "render all locales for an item" loop.
|
|
5
|
+
* Consumers (admin API publish, CLI publish) call these instead of
|
|
6
|
+
* duplicating the locale iteration logic.
|
|
7
|
+
*
|
|
8
|
+
* When `targetLocales` is provided, only locales in that set are rendered.
|
|
9
|
+
* This supports per-domain deployment where each target serves a locale subset.
|
|
10
|
+
*/
|
|
11
|
+
import { publishPageRendered, publishFragmentRendered } from './publish-rendered.js';
|
|
12
|
+
import { hashManifest } from './hash.js';
|
|
13
|
+
import { defaultLocaleFor, localeRoutePrefix, resolveSiteLocales } from './locale.js';
|
|
14
|
+
/**
|
|
15
|
+
* Publish a page in all locales — default + locale variants.
|
|
16
|
+
* When `targetLocales` is set, only render locales in that subset.
|
|
17
|
+
*/
|
|
18
|
+
export async function publishPageAllLocales(pageName, sourceRoot, targetStorage, site, hashOpts, opts) {
|
|
19
|
+
const page = site.pages.get(pageName);
|
|
20
|
+
if (!page)
|
|
21
|
+
return { files: 0, removed: 0 };
|
|
22
|
+
const localeFilter = opts.targetLocales ? new Set(opts.targetLocales) : null;
|
|
23
|
+
const skipLocales = opts.unchangedLocales ?? new Set();
|
|
24
|
+
const defaultLocale = defaultLocaleFor(site.manifest);
|
|
25
|
+
// Build hreflang alternates for subpath targets (2+ locales on same domain).
|
|
26
|
+
// Each locale variant of this page gets a map of all sibling locale URLs.
|
|
27
|
+
const resolvedLocales = resolveSiteLocales(site.manifest);
|
|
28
|
+
let hreflangAlternates;
|
|
29
|
+
const localeEntry = site.pageLocales.get(pageName);
|
|
30
|
+
if (opts.seo?.siteUrl && resolvedLocales && localeEntry && localeEntry.locales.size > 0) {
|
|
31
|
+
const activeLocales = localeFilter ? [...localeFilter] : [defaultLocale, ...localeEntry.locales.keys()];
|
|
32
|
+
if (activeLocales.length > 1) {
|
|
33
|
+
hreflangAlternates = {};
|
|
34
|
+
for (const loc of activeLocales) {
|
|
35
|
+
const prefix = localeRoutePrefix(loc, resolvedLocales);
|
|
36
|
+
const route = page.route === '/' ? prefix || '/' : `${prefix}${page.route}`;
|
|
37
|
+
hreflangAlternates[loc] = `${opts.seo.siteUrl}${route}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
let totalFiles = 0;
|
|
42
|
+
let totalRemoved = 0;
|
|
43
|
+
// Default locale — skip if target doesn't include it or already up-to-date
|
|
44
|
+
if ((!localeFilter || localeFilter.has(defaultLocale)) && !skipLocales.has(null)) {
|
|
45
|
+
const manifestHash = hashManifest(page, hashOpts);
|
|
46
|
+
const seoWithHreflang = opts.seo ? { ...opts.seo, hreflangAlternates, defaultLocale } : undefined;
|
|
47
|
+
const { files, removed } = await publishPageRendered(pageName, sourceRoot, targetStorage, opts.cache, opts.templatesDir, manifestHash, site, seoWithHreflang);
|
|
48
|
+
totalFiles += files;
|
|
49
|
+
totalRemoved += removed;
|
|
50
|
+
}
|
|
51
|
+
// Locale variants — filter by target subset when configured
|
|
52
|
+
if (localeEntry) {
|
|
53
|
+
for (const [locale, localePage] of localeEntry.locales) {
|
|
54
|
+
if (localeFilter && !localeFilter.has(locale))
|
|
55
|
+
continue;
|
|
56
|
+
if (skipLocales.has(locale))
|
|
57
|
+
continue;
|
|
58
|
+
const localeHash = hashManifest(localePage, hashOpts);
|
|
59
|
+
const localeSeo = opts.seo ? { ...opts.seo, locale, hreflangAlternates, defaultLocale } : undefined;
|
|
60
|
+
const { files: lf, removed: lr } = await publishPageRendered(pageName, sourceRoot, targetStorage, opts.cache, opts.templatesDir, localeHash, site, localeSeo, locale);
|
|
61
|
+
totalFiles += lf;
|
|
62
|
+
totalRemoved += lr;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { files: totalFiles, removed: totalRemoved };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Publish a fragment in all locales — default + locale variants.
|
|
69
|
+
* When `targetLocales` is set, only render locales in that subset.
|
|
70
|
+
*/
|
|
71
|
+
export async function publishFragmentAllLocales(fragName, sourceRoot, targetStorage, site, hashOpts, opts) {
|
|
72
|
+
const frag = site.fragments.get(fragName);
|
|
73
|
+
if (!frag)
|
|
74
|
+
return { files: 0, removed: 0 };
|
|
75
|
+
const localeFilter = opts.targetLocales ? new Set(opts.targetLocales) : null;
|
|
76
|
+
const skipLocales = opts.unchangedLocales ?? new Set();
|
|
77
|
+
const defaultLocale = defaultLocaleFor(site.manifest);
|
|
78
|
+
let totalFiles = 0;
|
|
79
|
+
let totalRemoved = 0;
|
|
80
|
+
// Default locale — skip if target doesn't include it or already up-to-date
|
|
81
|
+
if ((!localeFilter || localeFilter.has(defaultLocale)) && !skipLocales.has(null)) {
|
|
82
|
+
const manifestHash = hashManifest(frag, hashOpts);
|
|
83
|
+
const { files, removed } = await publishFragmentRendered(fragName, sourceRoot, targetStorage, opts.templatesDir, manifestHash, site);
|
|
84
|
+
totalFiles += files;
|
|
85
|
+
totalRemoved += removed;
|
|
86
|
+
}
|
|
87
|
+
// Locale variants — filter by target subset when configured
|
|
88
|
+
const localeEntry = site.fragmentLocales.get(fragName);
|
|
89
|
+
if (localeEntry) {
|
|
90
|
+
for (const [locale, localeFrag] of localeEntry.locales) {
|
|
91
|
+
if (localeFilter && !localeFilter.has(locale))
|
|
92
|
+
continue;
|
|
93
|
+
if (skipLocales.has(locale))
|
|
94
|
+
continue;
|
|
95
|
+
const localeHash = hashManifest(localeFrag, hashOpts);
|
|
96
|
+
const { files: lf, removed: lr } = await publishFragmentRendered(fragName, sourceRoot, targetStorage, opts.templatesDir, localeHash, site, locale);
|
|
97
|
+
totalFiles += lf;
|
|
98
|
+
totalRemoved += lr;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { files: totalFiles, removed: totalRemoved };
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=publish-locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-locale.js","sourceRoot":"","sources":["../src/publish-locale.ts"],"names":[],"mappings":"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"}
|