@sixtyninecommerce/client 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/admin/forms.js +19 -0
- package/dist/admin/forms.js.map +1 -1
- package/dist/admin/http.d.ts +9 -0
- package/dist/admin/http.d.ts.map +1 -1
- package/dist/admin/http.js +3 -0
- package/dist/admin/http.js.map +1 -1
- package/dist/admin/index.d.ts +63 -0
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +67 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/redirects.d.ts +6 -0
- package/dist/admin/redirects.d.ts.map +1 -1
- package/dist/admin/redirects.js +12 -0
- package/dist/admin/redirects.js.map +1 -1
- package/dist/admin/types.d.ts +63 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/cache-tags.d.ts +19 -0
- package/dist/cache-tags.d.ts.map +1 -1
- package/dist/cache-tags.js +19 -0
- package/dist/cache-tags.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -0
- package/dist/client.js.map +1 -1
- package/dist/commerce/age-verification.js +3 -3
- package/dist/commerce/age-verification.js.map +1 -1
- package/dist/commerce/branding.js +7 -0
- package/dist/commerce/branding.js.map +1 -1
- package/dist/commerce/cart.js +25 -0
- package/dist/commerce/cart.js.map +1 -1
- package/dist/commerce/checkout.d.ts +68 -0
- package/dist/commerce/checkout.d.ts.map +1 -1
- package/dist/commerce/checkout.js +83 -0
- package/dist/commerce/checkout.js.map +1 -1
- package/dist/commerce/customer.d.ts +58 -0
- package/dist/commerce/customer.d.ts.map +1 -1
- package/dist/commerce/customer.js +65 -0
- package/dist/commerce/customer.js.map +1 -1
- package/dist/commerce/pickup-location-parser.d.ts +18 -0
- package/dist/commerce/pickup-location-parser.d.ts.map +1 -1
- package/dist/commerce/pickup-location-parser.js +28 -0
- package/dist/commerce/pickup-location-parser.js.map +1 -1
- package/dist/commerce/placement-error.d.ts +52 -0
- package/dist/commerce/placement-error.d.ts.map +1 -1
- package/dist/commerce/placement-error.js +87 -0
- package/dist/commerce/placement-error.js.map +1 -1
- package/dist/commerce/products.d.ts +48 -0
- package/dist/commerce/products.d.ts.map +1 -1
- package/dist/commerce/products.js +92 -0
- package/dist/commerce/products.js.map +1 -1
- package/dist/commerce/queries.d.ts +113 -27
- package/dist/commerce/queries.d.ts.map +1 -1
- package/dist/commerce/queries.js +188 -2
- package/dist/commerce/queries.js.map +1 -1
- package/dist/commerce/quotes.js +33 -0
- package/dist/commerce/quotes.js.map +1 -1
- package/dist/commerce/saved-lists.d.ts +7 -7
- package/dist/commerce/saved-lists.d.ts.map +1 -1
- package/dist/commerce/saved-lists.js +1 -1
- package/dist/commerce/search.js +3 -0
- package/dist/commerce/search.js.map +1 -1
- package/dist/commerce/shipping.js +3 -3
- package/dist/commerce/shipping.js.map +1 -1
- package/dist/commerce/stock-notifications.d.ts +11 -0
- package/dist/commerce/stock-notifications.d.ts.map +1 -1
- package/dist/commerce/stock-notifications.js +11 -0
- package/dist/commerce/stock-notifications.js.map +1 -1
- package/dist/commerce/vat-validation.js +4 -4
- package/dist/commerce/vat-validation.js.map +1 -1
- package/dist/constants.d.ts +31 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +32 -0
- package/dist/constants.js.map +1 -1
- package/dist/content/asset-urls.d.ts +50 -0
- package/dist/content/asset-urls.d.ts.map +1 -1
- package/dist/content/asset-urls.js +92 -0
- package/dist/content/asset-urls.js.map +1 -1
- package/dist/content/assets.d.ts +15 -0
- package/dist/content/assets.d.ts.map +1 -1
- package/dist/content/assets.js +15 -0
- package/dist/content/assets.js.map +1 -1
- package/dist/content/collection-pages.d.ts +5 -0
- package/dist/content/collection-pages.d.ts.map +1 -1
- package/dist/content/collection-pages.js +8 -0
- package/dist/content/collection-pages.js.map +1 -1
- package/dist/content/collections.d.ts +14 -0
- package/dist/content/collections.d.ts.map +1 -1
- package/dist/content/collections.js +16 -0
- package/dist/content/collections.js.map +1 -1
- package/dist/content/filtered-products.d.ts +18 -0
- package/dist/content/filtered-products.d.ts.map +1 -1
- package/dist/content/filtered-products.js +16 -0
- package/dist/content/filtered-products.js.map +1 -1
- package/dist/content/form-field-types.d.ts +6 -0
- package/dist/content/form-field-types.d.ts.map +1 -1
- package/dist/content/form-field-types.js +12 -0
- package/dist/content/form-field-types.js.map +1 -1
- package/dist/content/forms.d.ts +16 -0
- package/dist/content/forms.d.ts.map +1 -1
- package/dist/content/forms.js +23 -0
- package/dist/content/forms.js.map +1 -1
- package/dist/content/items.d.ts +26 -0
- package/dist/content/items.d.ts.map +1 -1
- package/dist/content/items.js +33 -0
- package/dist/content/items.js.map +1 -1
- package/dist/content/resolve.js +6 -0
- package/dist/content/resolve.js.map +1 -1
- package/dist/content/sitemap.d.ts +5 -0
- package/dist/content/sitemap.d.ts.map +1 -1
- package/dist/content/sitemap.js +5 -0
- package/dist/content/sitemap.js.map +1 -1
- package/dist/core/context.js +6 -0
- package/dist/core/context.js.map +1 -1
- package/dist/core/headers.js +2 -0
- package/dist/core/headers.js.map +1 -1
- package/dist/core/http.d.ts +8 -0
- package/dist/core/http.d.ts.map +1 -1
- package/dist/core/http.js +89 -1
- package/dist/core/http.js.map +1 -1
- package/dist/credit/credit-status.js +2 -2
- package/dist/credit/credit-status.js.map +1 -1
- package/dist/credit/payment-terms.js +2 -2
- package/dist/credit/payment-terms.js.map +1 -1
- package/dist/currency/exchange.d.ts +11 -0
- package/dist/currency/exchange.d.ts.map +1 -1
- package/dist/currency/exchange.js +11 -0
- package/dist/currency/exchange.js.map +1 -1
- package/dist/errors.d.ts +50 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +48 -2
- package/dist/errors.js.map +1 -1
- package/dist/events/envelope.d.ts +60 -0
- package/dist/events/envelope.d.ts.map +1 -1
- package/dist/events/envelope.js +12 -0
- package/dist/events/envelope.js.map +1 -1
- package/dist/events/index.d.ts +14 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +13 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/payloads.d.ts +19 -0
- package/dist/events/payloads.d.ts.map +1 -1
- package/dist/events/payloads.js +12 -0
- package/dist/events/payloads.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/media/index.js +2 -0
- package/dist/media/index.js.map +1 -1
- package/dist/media/urls.d.ts +52 -0
- package/dist/media/urls.d.ts.map +1 -1
- package/dist/media/urls.js +38 -0
- package/dist/media/urls.js.map +1 -1
- package/dist/media/video.d.ts +16 -0
- package/dist/media/video.d.ts.map +1 -1
- package/dist/media/video.js +16 -0
- package/dist/media/video.js.map +1 -1
- package/dist/next/artifact-handler.d.ts +22 -0
- package/dist/next/artifact-handler.d.ts.map +1 -1
- package/dist/next/artifact-handler.js +22 -0
- package/dist/next/artifact-handler.js.map +1 -1
- package/dist/next/event-revalidate-handler.d.ts +67 -0
- package/dist/next/event-revalidate-handler.d.ts.map +1 -1
- package/dist/next/event-revalidate-handler.js +48 -0
- package/dist/next/event-revalidate-handler.js.map +1 -1
- package/dist/next/index.d.ts +6 -0
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +6 -0
- package/dist/next/index.js.map +1 -1
- package/dist/next/json-ld.d.ts +9 -0
- package/dist/next/json-ld.d.ts.map +1 -1
- package/dist/next/json-ld.js +9 -0
- package/dist/next/json-ld.js.map +1 -1
- package/dist/next/metadata.d.ts +18 -0
- package/dist/next/metadata.d.ts.map +1 -1
- package/dist/next/metadata.js +21 -0
- package/dist/next/metadata.js.map +1 -1
- package/dist/next/redirect-middleware.d.ts +39 -0
- package/dist/next/redirect-middleware.d.ts.map +1 -1
- package/dist/next/redirect-middleware.js +32 -0
- package/dist/next/redirect-middleware.js.map +1 -1
- package/dist/next/revalidate-handler.d.ts +30 -0
- package/dist/next/revalidate-handler.d.ts.map +1 -1
- package/dist/next/revalidate-handler.js +22 -0
- package/dist/next/revalidate-handler.js.map +1 -1
- package/dist/order-scope.d.ts +27 -0
- package/dist/order-scope.d.ts.map +1 -1
- package/dist/order-scope.js +29 -0
- package/dist/order-scope.js.map +1 -1
- package/dist/pricing/format.d.ts +17 -0
- package/dist/pricing/format.d.ts.map +1 -1
- package/dist/pricing/format.js +19 -0
- package/dist/pricing/format.js.map +1 -1
- package/dist/pricing/index.d.ts +8 -1
- package/dist/pricing/index.d.ts.map +1 -1
- package/dist/pricing/index.js +18 -2
- package/dist/pricing/index.js.map +1 -1
- package/dist/pricing/tax-display.d.ts +77 -0
- package/dist/pricing/tax-display.d.ts.map +1 -1
- package/dist/pricing/tax-display.js +85 -0
- package/dist/pricing/tax-display.js.map +1 -1
- package/dist/pricing/tiers.d.ts +9 -0
- package/dist/pricing/tiers.d.ts.map +1 -1
- package/dist/pricing/tiers.js +9 -0
- package/dist/pricing/tiers.js.map +1 -1
- package/dist/pricing/validation.d.ts +56 -1
- package/dist/pricing/validation.d.ts.map +1 -1
- package/dist/pricing/validation.js +61 -0
- package/dist/pricing/validation.js.map +1 -1
- package/dist/redirects/index.d.ts +1 -0
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +1 -0
- package/dist/redirects/index.js.map +1 -1
- package/dist/redirects/store.d.ts +20 -0
- package/dist/redirects/store.d.ts.map +1 -1
- package/dist/redirects/store.js +57 -0
- package/dist/redirects/store.js.map +1 -1
- package/dist/redirects/types.d.ts +24 -0
- package/dist/redirects/types.d.ts.map +1 -1
- package/dist/redirects/types.js +1 -0
- package/dist/redirects/types.js.map +1 -1
- package/dist/revalidation/event-plan.d.ts +48 -0
- package/dist/revalidation/event-plan.d.ts.map +1 -1
- package/dist/revalidation/event-plan.js +61 -0
- package/dist/revalidation/event-plan.js.map +1 -1
- package/dist/revalidation/event-verify.d.ts +25 -0
- package/dist/revalidation/event-verify.d.ts.map +1 -1
- package/dist/revalidation/event-verify.js +27 -0
- package/dist/revalidation/event-verify.js.map +1 -1
- package/dist/revalidation/types.d.ts +20 -0
- package/dist/revalidation/types.d.ts.map +1 -1
- package/dist/revalidation/types.js +10 -0
- package/dist/revalidation/types.js.map +1 -1
- package/dist/revalidation/url-context.d.ts +25 -0
- package/dist/revalidation/url-context.d.ts.map +1 -1
- package/dist/revalidation/url-context.js +17 -0
- package/dist/revalidation/url-context.js.map +1 -1
- package/dist/revalidation/verify.d.ts +8 -0
- package/dist/revalidation/verify.d.ts.map +1 -1
- package/dist/revalidation/verify.js +8 -0
- package/dist/revalidation/verify.js.map +1 -1
- package/dist/seo/ai.d.ts +17 -0
- package/dist/seo/ai.d.ts.map +1 -1
- package/dist/seo/ai.js +12 -0
- package/dist/seo/ai.js.map +1 -1
- package/dist/seo/alternates.js +13 -0
- package/dist/seo/alternates.js.map +1 -1
- package/dist/seo/artifacts.d.ts +13 -0
- package/dist/seo/artifacts.d.ts.map +1 -1
- package/dist/seo/artifacts.js +19 -0
- package/dist/seo/artifacts.js.map +1 -1
- package/dist/seo/canonical.d.ts +15 -0
- package/dist/seo/canonical.d.ts.map +1 -1
- package/dist/seo/canonical.js +24 -0
- package/dist/seo/canonical.js.map +1 -1
- package/dist/seo/index.js +6 -0
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/json-ld.d.ts +13 -0
- package/dist/seo/json-ld.d.ts.map +1 -1
- package/dist/seo/json-ld.js +32 -0
- package/dist/seo/json-ld.js.map +1 -1
- package/dist/seo/locale-tag.d.ts +31 -0
- package/dist/seo/locale-tag.d.ts.map +1 -1
- package/dist/seo/locale-tag.js +31 -0
- package/dist/seo/locale-tag.js.map +1 -1
- package/dist/seo/meta-tags.d.ts +29 -0
- package/dist/seo/meta-tags.d.ts.map +1 -1
- package/dist/seo/meta-tags.js +28 -0
- package/dist/seo/meta-tags.js.map +1 -1
- package/dist/seo/metadata-parser.d.ts +24 -0
- package/dist/seo/metadata-parser.d.ts.map +1 -1
- package/dist/seo/metadata-parser.js +38 -0
- package/dist/seo/metadata-parser.js.map +1 -1
- package/dist/seo/metadata-types.d.ts +16 -0
- package/dist/seo/metadata-types.d.ts.map +1 -1
- package/dist/seo/product-path.d.ts +96 -0
- package/dist/seo/product-path.d.ts.map +1 -1
- package/dist/seo/product-path.js +96 -0
- package/dist/seo/product-path.js.map +1 -1
- package/dist/seo/robots.d.ts +17 -0
- package/dist/seo/robots.d.ts.map +1 -1
- package/dist/seo/robots.js +12 -0
- package/dist/seo/robots.js.map +1 -1
- package/dist/seo/types.d.ts +39 -0
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo/url-builder.d.ts +31 -0
- package/dist/seo/url-builder.d.ts.map +1 -1
- package/dist/seo/url-builder.js +36 -0
- package/dist/seo/url-builder.js.map +1 -1
- package/dist/types.d.ts +1163 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/seo/meta-tags.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `metaTagsFor()` — produce the full HTML meta tag set for any page kind
|
|
3
|
+
* (product, collection, CMS item). The output is structured (not stringified)
|
|
4
|
+
* so storefront apps can render it however they like (React JSX, Astro head
|
|
5
|
+
* slot, HTML string). Title / description / canonical / robots / OpenGraph /
|
|
6
|
+
* Twitter / hreflang resolution is shared across kinds; only JSON-LD and the
|
|
7
|
+
* product-specific OpenGraph fields branch per kind.
|
|
8
|
+
*/
|
|
1
9
|
import { alternatesFor } from './alternates.js';
|
|
2
10
|
import { canonicalFor } from './canonical.js';
|
|
3
11
|
import { composeBreadcrumbJsonLd, composeCmsJsonLd, composeCollectionJsonLd, composeFaqJsonLd, composeProductJsonLd, } from './json-ld.js';
|
|
@@ -28,6 +36,7 @@ function pickAssetUrl(resolveAssetUrl, asset) {
|
|
|
28
36
|
if (!asset)
|
|
29
37
|
return null;
|
|
30
38
|
const presets = asset.presets;
|
|
39
|
+
// Prefer the largest preset for social cards (Facebook recommends ≥1200x630).
|
|
31
40
|
const raw = presets?.xl?.url ??
|
|
32
41
|
presets?.l?.url ??
|
|
33
42
|
presets?.m?.url ??
|
|
@@ -35,14 +44,28 @@ function pickAssetUrl(resolveAssetUrl, asset) {
|
|
|
35
44
|
presets?.s?.url ??
|
|
36
45
|
asset.source ??
|
|
37
46
|
null;
|
|
47
|
+
// Stored values are R2 storage keys — absolute only after resolution.
|
|
38
48
|
return resolveAssetUrl(raw) || null;
|
|
39
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* The `hreflang` value for one override entry, always well-formed BCP 47.
|
|
52
|
+
* When an explicit country is supplied it wins over any region already carried
|
|
53
|
+
* by the language tag, so `en_GB` + `US` yields `en-US` rather than `en-GB-US`.
|
|
54
|
+
*/
|
|
40
55
|
function overrideHreflang(override) {
|
|
41
56
|
return override.country
|
|
42
57
|
? `${baseLanguage(override.language)}-${override.country}`
|
|
43
58
|
: toBcp47(override.language);
|
|
44
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Merge channel alternates with per-entity hreflang overrides. Override wins
|
|
62
|
+
* when its language code matches; we always append `x-default`. Collections and
|
|
63
|
+
* CMS items have no override field and pass an empty array.
|
|
64
|
+
*/
|
|
45
65
|
function mergeHreflang(channelAlternates, overrides, xDefaultHref) {
|
|
66
|
+
// Overrides are keyed by the language code as it was STORED — a Vendure tag
|
|
67
|
+
// (`en_GB`) or a hand-typed BCP 47 one (`en-GB`). Index both spellings so an
|
|
68
|
+
// override matches its channel alternate whichever way it was written.
|
|
46
69
|
const overrideByLang = new Map();
|
|
47
70
|
for (const entry of overrides) {
|
|
48
71
|
overrideByLang.set(entry.language, entry);
|
|
@@ -60,6 +83,7 @@ function mergeHreflang(channelAlternates, overrides, xDefaultHref) {
|
|
|
60
83
|
out.push(tag);
|
|
61
84
|
seen.add(tag.hreflang);
|
|
62
85
|
}
|
|
86
|
+
// Emit overrides for languages that weren't in the channel alternates set.
|
|
63
87
|
for (const override of overrides) {
|
|
64
88
|
const lang = overrideHreflang(override);
|
|
65
89
|
if (seen.has(lang))
|
|
@@ -106,6 +130,8 @@ function buildOpenGraphTags(ctx, params) {
|
|
|
106
130
|
const siteName = typeof cf.businessName === 'string' && cf.businessName.length > 0 ? cf.businessName : null;
|
|
107
131
|
if (siteName)
|
|
108
132
|
tags.push({ property: 'og:site_name', content: siteName });
|
|
133
|
+
// OpenGraph specifies `language_TERRITORY` — the UNDERSCORE spelling — so these
|
|
134
|
+
// two intentionally emit the raw Vendure code, not the hyphenated `hreflang`.
|
|
109
135
|
tags.push({ property: 'og:locale', content: ctx.channel.defaultLanguageCode });
|
|
110
136
|
for (const alt of channelAlternates) {
|
|
111
137
|
const locale = alt.languageCode ?? alt.hreflang;
|
|
@@ -121,6 +147,7 @@ function buildOpenGraphTags(ctx, params) {
|
|
|
121
147
|
if (alt)
|
|
122
148
|
tags.push({ property: 'og:image:alt', content: alt });
|
|
123
149
|
}
|
|
150
|
+
// Product-specific OpenGraph fields only make sense for the product kind.
|
|
124
151
|
if (ogType === 'product' && productExtras) {
|
|
125
152
|
if (productExtras.price) {
|
|
126
153
|
tags.push({ property: 'product:price:amount', content: productExtras.price.amount });
|
|
@@ -165,6 +192,7 @@ function buildTwitterTags(ctx, params) {
|
|
|
165
192
|
}
|
|
166
193
|
export function metaTagsFor(ctx, input) {
|
|
167
194
|
const { cfg, channel } = ctx;
|
|
195
|
+
// Normalise per-kind inputs to a common set of variables.
|
|
168
196
|
let entity;
|
|
169
197
|
let metadata;
|
|
170
198
|
let name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../../src/seo/meta-tags.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AASxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA+BnD,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,MAAM,mBAAmB,GAAe;IACtC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,eAAiC,EAAE,KAAmB;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,MAAM,GAAG,GACP,OAAO,EAAE,EAAE,EAAE,GAAG;QAChB,OAAO,EAAE,CAAC,EAAE,GAAG;QACf,OAAO,EAAE,CAAC,EAAE,GAAG;QACf,OAAO,EAAE,EAAE,EAAE,GAAG;QAChB,OAAO,EAAE,CAAC,EAAE,GAAG;QACf,KAAK,CAAC,MAAM;QACZ,IAAI,CAAC;IAEP,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACtC,CAAC;AAOD,SAAS,gBAAgB,CAAC,QAA+B;IACvD,OAAO,QAAQ,CAAC,OAAO;QACrB,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC1D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAOD,SAAS,aAAa,CACpB,iBAA2F,EAC3F,SAA+C,EAC/C,YAAoB;IAKpB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW;YAAE,SAAS;QAC3C,MAAM,QAAQ,GACZ,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3F,MAAM,GAAG,GAAoB,QAAQ;YACnC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE;YAChF,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC;AACb,CAAC;AA4ED,SAAS,YAAY,CAAC,QAAkC,EAAE,IAAwB;IAChF,MAAM,YAAY,GAAG,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAkC,EAClC,WAA+B;IAE/B,MAAM,YAAY,GAAG,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IACtC,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAsB,EACtB,MAAsB,EACtB,QAAkC;IAElC,MAAM,QAAQ,GAAG,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAaD,SAAS,kBAAkB,CAAC,GAAgB,EAAE,MAAuB;IACnE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,GACxF,MAAM,CAAC;IACT,MAAM,IAAI,GAAmB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IAChD,MAAM,aAAa,GAAG,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC;IAClE,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;IACpD,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,IAAI,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GACZ,OAAO,EAAE,CAAC,YAAY,KAAK,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAGzE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/E,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC;QAChD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,mBAAmB;YAAE,SAAS;QACzF,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GACZ,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACjE,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAGD,IAAI,MAAM,KAAK,SAAS,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,aAAa,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,SAAS,gBAAgB,CAAC,GAAgB,EAAE,MAAqB;IAC/D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACvD,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAC;IACjE,MAAM,IAAI,GAAiB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IAC7E,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,mBAAmB,IAAI,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC;IAC/F,IAAI,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GACZ,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QAC1E,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACjE,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtC,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAgB,EAAE,KAA0B;IACtE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAG7B,IAAI,MAAsB,CAAC;IAC3B,IAAI,QAAkC,CAAC;IACvC,IAAI,IAAwB,CAAC;IAC7B,IAAI,WAA+B,CAAC;IACpC,IAAI,KAAmB,CAAC;IACxB,IAAI,iBAAuD,CAAC;IAE5D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/C,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC1B,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAC1B,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;YACxC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC;YAC5C,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAE,iBAAiB,IAAI,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,YAAY;YACf,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YACrD,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC1B,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAC1B,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;YACxC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC;YAC5C,iBAAiB,GAAG,EAAE,CAAC;YACvB,MAAM;QACR,KAAK,KAAK;YACR,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC1B,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YAC1B,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;YACxC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;YACtC,iBAAiB,GAAG,EAAE,CAAC;YACvB,MAAM;IACV,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,UAAU,IAAI,mBAAmB,CAAC,CAAC;IAEjF,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,kBAAkB,CAClC,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,EACtD;QACE,QAAQ;QACR,KAAK;QACL,WAAW,EAAE,mBAAmB;QAChC,SAAS;QACT,KAAK;QACL,iBAAiB;QACjB,aAAa,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KACnE,CACF,CAAC;IACF,MAAM,OAAO,GAAG,gBAAgB,CAC9B,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,EACtD,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAC7D,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;QACrC,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,QAAQ;QACR,SAAS;QACT,KAAK;QACL,WAAW,EAAE,mBAAmB;QAChC,KAAK;KACN,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,WAAW,EAAE,mBAAmB;QAChC,SAAS;QACT,MAAM;QACN,SAAS;QACT,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC;AAYD,SAAS,WAAW,CAClB,GAAsB,EACtB,KAA0B,EAC1B,GAAkB;IAElB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,MAAM,CAAC,IAAI,CACT,oBAAoB,CAAC;gBACnB,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ;gBACR,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;aAC/B,CAAC,CACH,CAAC;YACF,MAAM,CAAC,IAAI,CACT,uBAAuB,CAAC;gBACtB,GAAG;gBACH,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,IAAI,EAAE;aAC7C,CAAC,CACH,CAAC;YACF,IAAI,QAAQ,EAAE,EAAE,CAAC,iBAAiB,IAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,YAAY;YACf,MAAM,CAAC,IAAI,CACT,uBAAuB,CAAC;gBACtB,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CACH,CAAC;YACF,MAAM;QACR,KAAK,KAAK;YACR,MAAM,CAAC,IAAI,CACT,gBAAgB,CAAC;gBACf,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CACH,CAAC;YACF,MAAM;IACV,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../../src/seo/meta-tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export declare function parseQaPairs(value: unknown): QAPair[];
|
|
|
5
5
|
export declare function parseBreadcrumbOverride(value: unknown): BreadcrumbOverrideEntry[];
|
|
6
6
|
export declare function parseHreflangOverrides(value: unknown): HreflangOverrideEntry[];
|
|
7
7
|
export declare function parseResolvedBotDirectives(value: unknown): Record<string, BotDirective>;
|
|
8
|
+
/** Raw shape returned by the Vendure shop API for `Product.metadata`. */
|
|
8
9
|
export interface RawProductMetadata {
|
|
9
10
|
seoTitle: string | null;
|
|
10
11
|
seoDescription: string | null;
|
|
@@ -27,8 +28,19 @@ export interface RawProductMetadata {
|
|
|
27
28
|
resolvedBotDirectives: unknown;
|
|
28
29
|
includeReviewsInJsonld: boolean;
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Parse the raw GraphQL `Product.metadata` payload into the strict
|
|
33
|
+
* SDK-facing shape. Returns `null` when the server returned `null` (no
|
|
34
|
+
* metadata stored). Throws `StorefrontError` for malformed JSON-scalar fields.
|
|
35
|
+
*/
|
|
30
36
|
export declare function parseProductMetadata(raw: RawProductMetadata | null | undefined): ProductMetadata | null;
|
|
37
|
+
/**
|
|
38
|
+
* Build a `MetaRobots` object from the collection's noindex / nofollow flags +
|
|
39
|
+
* max-image-preview option. Collections don't expose the full robots surface
|
|
40
|
+
* that products do, so the rest keep their permissive defaults.
|
|
41
|
+
*/
|
|
31
42
|
export declare function robotsFromFlags(noindex: boolean, nofollow: boolean, maxImagePreview?: MetaRobotsMaxImagePreview): MetaRobots;
|
|
43
|
+
/** Flat SEO custom-field payload for a collection (locale already resolved). */
|
|
32
44
|
export interface RawCollectionSeo {
|
|
33
45
|
seoTitle?: unknown;
|
|
34
46
|
seoDescription?: unknown;
|
|
@@ -42,7 +54,14 @@ export interface RawCollectionSeo {
|
|
|
42
54
|
socialOgType?: unknown;
|
|
43
55
|
twitterCardType?: unknown;
|
|
44
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse a collection's SEO custom fields into `CollectionMetadata`. `socialImage`
|
|
59
|
+
* is the pre-resolved OpenGraph image (from `socialImageId` or the collection's
|
|
60
|
+
* featured asset); pass `null` when none. Returns `null` when the collection has
|
|
61
|
+
* no meaningful SEO overrides so callers know to rely purely on fallbacks.
|
|
62
|
+
*/
|
|
45
63
|
export declare function parseCollectionMetadata(raw: RawCollectionSeo | null | undefined, socialImage?: Asset | null): CollectionMetadata | null;
|
|
64
|
+
/** Derived SEO metadata block from the CMS resolve response (locale-filtered). */
|
|
46
65
|
export interface RawCmsSeo {
|
|
47
66
|
seoTitle?: unknown;
|
|
48
67
|
seoDescription?: unknown;
|
|
@@ -56,5 +75,10 @@ export interface RawCmsSeo {
|
|
|
56
75
|
nofollow?: unknown;
|
|
57
76
|
aiSummary?: unknown;
|
|
58
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse a CMS item's derived SEO metadata into `CmsItemMetadata`. `ogImage` is
|
|
80
|
+
* the pre-resolved OpenGraph image (from the `og_image` field id); pass `null`
|
|
81
|
+
* when none. Returns `null` when there is no SEO block at all.
|
|
82
|
+
*/
|
|
59
83
|
export declare function parseCmsItemMetadata(raw: RawCmsSeo | null | undefined, ogImage?: Asset | null): CmsItemMetadata | null;
|
|
60
84
|
//# sourceMappingURL=metadata-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-parser.d.ts","sourceRoot":"","sources":["../../src/seo/metadata-parser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EAGV,yBAAyB,EACzB,eAAe,EACf,MAAM,EAGP,MAAM,qBAAqB,CAAC;AA8D7B,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAiB1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAerD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,EAAE,CAejF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAqB9E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAgBvF;
|
|
1
|
+
{"version":3,"file":"metadata-parser.d.ts","sourceRoot":"","sources":["../../src/seo/metadata-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict parsers for the JSON-scalar fields on `Product.metadata`. Each parser
|
|
3
|
+
* rejects unknown values rather than guessing — per the project's data
|
|
4
|
+
* integrity rules, business logic operates on trusted types only.
|
|
5
|
+
*/
|
|
1
6
|
import { StorefrontError } from '../errors.js';
|
|
2
7
|
const TWITTER_CARD_TYPES = ['summary', 'summary_large_image'];
|
|
3
8
|
const SOCIAL_OG_TYPES = ['product', 'website'];
|
|
@@ -46,6 +51,9 @@ function asNullableIsoInstant(value, field) {
|
|
|
46
51
|
return null;
|
|
47
52
|
if (typeof value !== 'string')
|
|
48
53
|
reject(field, 'expected ISO-8601 string or null');
|
|
54
|
+
// The server emits `Date.toISOString()` for unavailableAfter — already UTC `Z`.
|
|
55
|
+
// We accept any explicit timezone suffix (`Z` or `+HH:MM`); locale-dependent
|
|
56
|
+
// bare datetimes are rejected per the project's date-and-time rules.
|
|
49
57
|
if (!/(?:Z|[+-]\d{2}:?\d{2})$/i.test(value)) {
|
|
50
58
|
reject(field, 'ISO-8601 timestamps must include a timezone (Z or offset)');
|
|
51
59
|
}
|
|
@@ -145,6 +153,11 @@ export function parseResolvedBotDirectives(value) {
|
|
|
145
153
|
}
|
|
146
154
|
return out;
|
|
147
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Parse the raw GraphQL `Product.metadata` payload into the strict
|
|
158
|
+
* SDK-facing shape. Returns `null` when the server returned `null` (no
|
|
159
|
+
* metadata stored). Throws `StorefrontError` for malformed JSON-scalar fields.
|
|
160
|
+
*/
|
|
148
161
|
export function parseProductMetadata(raw) {
|
|
149
162
|
if (raw === null || raw === undefined)
|
|
150
163
|
return null;
|
|
@@ -177,6 +190,15 @@ export function parseProductMetadata(raw) {
|
|
|
177
190
|
includeReviewsInJsonld: asBoolean(raw.includeReviewsInJsonld, 'includeReviewsInJsonld'),
|
|
178
191
|
};
|
|
179
192
|
}
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
// Collection / CMS metadata — lenient parsers.
|
|
195
|
+
//
|
|
196
|
+
// Unlike `Product.metadata` (a dedicated, validated plugin payload), collection
|
|
197
|
+
// and CMS SEO values come from optional, merchant-entered custom fields / CMS
|
|
198
|
+
// field values. They are coerced leniently — invalid or missing values fall
|
|
199
|
+
// back to sane defaults rather than throwing, so a stray value never breaks
|
|
200
|
+
// page rendering.
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
180
202
|
function looseString(value) {
|
|
181
203
|
return typeof value === 'string' && value.trim().length > 0 ? value : null;
|
|
182
204
|
}
|
|
@@ -186,6 +208,11 @@ function looseBoolean(value) {
|
|
|
186
208
|
function looseOneOf(value, allowed, fallback) {
|
|
187
209
|
return typeof value === 'string' && allowed.includes(value) ? value : fallback;
|
|
188
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Build a `MetaRobots` object from the collection's noindex / nofollow flags +
|
|
213
|
+
* max-image-preview option. Collections don't expose the full robots surface
|
|
214
|
+
* that products do, so the rest keep their permissive defaults.
|
|
215
|
+
*/
|
|
189
216
|
export function robotsFromFlags(noindex, nofollow, maxImagePreview = 'large') {
|
|
190
217
|
return {
|
|
191
218
|
index: noindex ? 'noindex' : 'index',
|
|
@@ -199,6 +226,12 @@ export function robotsFromFlags(noindex, nofollow, maxImagePreview = 'large') {
|
|
|
199
226
|
unavailableAfter: null,
|
|
200
227
|
};
|
|
201
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Parse a collection's SEO custom fields into `CollectionMetadata`. `socialImage`
|
|
231
|
+
* is the pre-resolved OpenGraph image (from `socialImageId` or the collection's
|
|
232
|
+
* featured asset); pass `null` when none. Returns `null` when the collection has
|
|
233
|
+
* no meaningful SEO overrides so callers know to rely purely on fallbacks.
|
|
234
|
+
*/
|
|
202
235
|
export function parseCollectionMetadata(raw, socialImage = null) {
|
|
203
236
|
if (raw === null || raw === undefined)
|
|
204
237
|
return null;
|
|
@@ -223,6 +256,11 @@ export function parseCollectionMetadata(raw, socialImage = null) {
|
|
|
223
256
|
metaRobots: robotsFromFlags(looseBoolean(raw.noindex), looseBoolean(raw.nofollow), maxImagePreview),
|
|
224
257
|
};
|
|
225
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Parse a CMS item's derived SEO metadata into `CmsItemMetadata`. `ogImage` is
|
|
261
|
+
* the pre-resolved OpenGraph image (from the `og_image` field id); pass `null`
|
|
262
|
+
* when none. Returns `null` when there is no SEO block at all.
|
|
263
|
+
*/
|
|
226
264
|
export function parseCmsItemMetadata(raw, ogImage = null) {
|
|
227
265
|
if (raw === null || raw === undefined)
|
|
228
266
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-parser.js","sourceRoot":"","sources":["../../src/seo/metadata-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadata-parser.js","sourceRoot":"","sources":["../../src/seo/metadata-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed, strict types for the per-product SEO/social/AI metadata exposed by
|
|
3
|
+
* `Product.metadata` on the shop API. The raw GraphQL payload uses `JSON`
|
|
4
|
+
* scalars for several fields — we parse and validate at the SDK boundary so
|
|
5
|
+
* business logic only ever sees these typed shapes.
|
|
6
|
+
*/
|
|
1
7
|
import type { Asset } from '../types.js';
|
|
2
8
|
export type MetaRobotsIndexDirective = 'index' | 'noindex';
|
|
3
9
|
export type MetaRobotsFollowDirective = 'follow' | 'nofollow';
|
|
@@ -11,6 +17,7 @@ export interface MetaRobots {
|
|
|
11
17
|
maxSnippet: number | null;
|
|
12
18
|
maxImagePreview: MetaRobotsMaxImagePreview;
|
|
13
19
|
maxVideoPreview: number | null;
|
|
20
|
+
/** ISO-8601 instant with timezone, or null. */
|
|
14
21
|
unavailableAfter: string | null;
|
|
15
22
|
}
|
|
16
23
|
export interface QAPair {
|
|
@@ -48,6 +55,13 @@ export interface ProductMetadataAi {
|
|
|
48
55
|
emitFaqpageJsonld: boolean;
|
|
49
56
|
resolvedBotDirectives: Record<string, BotDirective>;
|
|
50
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* The SEO/social metadata subset shared by every page kind (product,
|
|
60
|
+
* collection, CMS). `metaTagsFor()` operates on this shape so title,
|
|
61
|
+
* description, canonical, robots, OpenGraph and Twitter resolution is written
|
|
62
|
+
* once and reused across kinds. Product-only extras (AI directives, review
|
|
63
|
+
* JSON-LD, hreflang overrides, breadcrumb overrides) live on `ProductMetadata`.
|
|
64
|
+
*/
|
|
51
65
|
export interface CommonSeoMetadata {
|
|
52
66
|
seoTitle: string | null;
|
|
53
67
|
seoDescription: string | null;
|
|
@@ -62,7 +76,9 @@ export interface ProductMetadata extends CommonSeoMetadata {
|
|
|
62
76
|
breadcrumbOverride: BreadcrumbOverrideEntry[];
|
|
63
77
|
includeReviewsInJsonld: boolean;
|
|
64
78
|
}
|
|
79
|
+
/** Per-collection SEO metadata (subset of the product shape). */
|
|
65
80
|
export type CollectionMetadata = CommonSeoMetadata;
|
|
81
|
+
/** Per-CMS-item SEO metadata: the shared subset plus an optional AI summary. */
|
|
66
82
|
export interface CmsItemMetadata extends CommonSeoMetadata {
|
|
67
83
|
aiSummary: string | null;
|
|
68
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-types.d.ts","sourceRoot":"","sources":["../../src/seo/metadata-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata-types.d.ts","sourceRoot":"","sources":["../../src/seo/metadata-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE rule for where a product's canonical URL lives.
|
|
3
|
+
*
|
|
4
|
+
* Three surfaces used to answer this independently, and for a product in
|
|
5
|
+
* several collections with none flagged canonical they gave three different
|
|
6
|
+
* answers for the same product at the same moment:
|
|
7
|
+
*
|
|
8
|
+
* - `seo.metaTagsFor` / `canonicalFor` → /products/{slug} (hardcoded)
|
|
9
|
+
* - `navigation.getRoutes` → shallowest-then-lexicographic
|
|
10
|
+
* collection path
|
|
11
|
+
* - the sitemap artifact → whichever collection path the
|
|
12
|
+
* Shop API happened to return first
|
|
13
|
+
*
|
|
14
|
+
* None of them resolved on the storefronts they were generated for, and a
|
|
15
|
+
* canonical pointing at a 404 is worse than emitting none. This module holds
|
|
16
|
+
* the decision so the surfaces cannot drift again; `services/plugins` imports
|
|
17
|
+
* it from the published client rather than reimplementing it.
|
|
18
|
+
*
|
|
19
|
+
* The rule:
|
|
20
|
+
* 1. If the product belongs to a ROOT collection flagged
|
|
21
|
+
* `customFields.isCanonical`, its canonical URL nests under that
|
|
22
|
+
* collection. Lowest `position` wins; a caller-supplied key breaks ties so
|
|
23
|
+
* the choice is stable across runs and across surfaces.
|
|
24
|
+
* 2. Otherwise the canonical URL is FLAT: `/{productPathSegment}/{slug}`.
|
|
25
|
+
* Never a collection path — which collection a product happens to sit in
|
|
26
|
+
* is not a property of the product, and letting it decide the canonical is
|
|
27
|
+
* what made the three answers diverge.
|
|
28
|
+
*/
|
|
29
|
+
/** Used when a channel sets no `productPathSegment`. */
|
|
1
30
|
export declare const DEFAULT_PRODUCT_PATH_SEGMENT = "products";
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the channel's configured product path segment.
|
|
33
|
+
*
|
|
34
|
+
* NULL, empty and whitespace all mean "unset" → the default, so a channel that
|
|
35
|
+
* never sets the field keeps the shape it had before the field existed. Leading
|
|
36
|
+
* and trailing slashes are tolerated and stripped: a merchant typing
|
|
37
|
+
* `/product/` means the same thing as `product`.
|
|
38
|
+
*
|
|
39
|
+
* Lowercased, because storefront routes are. A merchant typing `Products`
|
|
40
|
+
* would otherwise get `https://site/Products/x` as the canonical for a page
|
|
41
|
+
* served at `/products/x` — a canonical pointing at a 404, plus a case-variant
|
|
42
|
+
* duplicate for crawlers. The channel field's validator accepts either case
|
|
43
|
+
* precisely because this normalizes it.
|
|
44
|
+
*/
|
|
2
45
|
export declare function normalizeProductPathSegment(raw: string | null | undefined): string;
|
|
46
|
+
/**
|
|
47
|
+
* Index of the canonical-root entry, or null when the product has none and the
|
|
48
|
+
* caller should therefore use the flat product path.
|
|
49
|
+
*
|
|
50
|
+
* `tiebreak` keeps the result deterministic when two roots share a `position`.
|
|
51
|
+
* Every caller MUST pass the collection's **id**, and the reason is that the id
|
|
52
|
+
* is the only candidate that is language-invariant:
|
|
53
|
+
*
|
|
54
|
+
* - the route manifest fetches collections PER LANGUAGE, so its `slug` is the
|
|
55
|
+
* nl slug on the nl pass;
|
|
56
|
+
* - the SDK holds ONE fetched entity and emits every locale's URL from it, so
|
|
57
|
+
* its `slug` is whichever language the storefront fetched in.
|
|
58
|
+
*
|
|
59
|
+
* Tiebreaking on a slug therefore picks `wijnen` on one side and `deals` on the
|
|
60
|
+
* other for the same product, and the sitemap ends up flagging a different URL
|
|
61
|
+
* canonical than the page's own `<link rel="canonical">`. The path is worse
|
|
62
|
+
* still: `-` (0x2D) sorts below `/` (0x2F), so `shop` vs `shop-nl` diverges even
|
|
63
|
+
* in one language.
|
|
64
|
+
*
|
|
65
|
+
* The cost is that an equal-`position` tie resolves by an opaque id rather than
|
|
66
|
+
* something a merchant can predict. That is acceptable because it is only
|
|
67
|
+
* reachable by flagging two root collections canonical at the SAME position —
|
|
68
|
+
* give them distinct positions to choose deliberately.
|
|
69
|
+
*/
|
|
3
70
|
export declare function pickCanonicalRootIndex(entries: ReadonlyArray<{
|
|
4
71
|
position: number;
|
|
5
72
|
tiebreak: string;
|
|
6
73
|
}>): number | null;
|
|
74
|
+
/** Vendure's synthetic tree root. Never a user-facing collection. */
|
|
7
75
|
export declare const ROOT_COLLECTION_SLUG = "__root_collection__";
|
|
76
|
+
/**
|
|
77
|
+
* Whether a collection is a USER-FACING root — i.e. `isCanonical` can mean
|
|
78
|
+
* something on it.
|
|
79
|
+
*
|
|
80
|
+
* ONLY a parent that IS the sentinel counts. Two wrong answers to avoid:
|
|
81
|
+
*
|
|
82
|
+
* - `parent == null` was the original predicate and matched nothing real.
|
|
83
|
+
* Vendure's Shop API resolves a top-level collection's parent to the
|
|
84
|
+
* `__root_collection__` sentinel, not to null (verified against production:
|
|
85
|
+
* `collection(id: <top-level>)` returns
|
|
86
|
+
* `parent: { slug: "__root_collection__" }`), so canonical roots were never
|
|
87
|
+
* found and every product fell back to the flat path.
|
|
88
|
+
*
|
|
89
|
+
* - Treating null as root is ALSO wrong, and is why the null branch is gone.
|
|
90
|
+
* On the Shop API `parent` is `undefined` exactly when the real parent is
|
|
91
|
+
* PRIVATE (`CollectionEntityResolver.parent`: `apiType === 'shop' &&
|
|
92
|
+
* parent?.isPrivate ? undefined : parent`). A public collection under a
|
|
93
|
+
* private parent is not a root — and `CollectionService.getBreadcrumbs`
|
|
94
|
+
* does NOT filter private ancestors, so the routes manifest sees the full
|
|
95
|
+
* chain and does not treat it as one either. Calling it a root here would
|
|
96
|
+
* make the page self-declare `/{child}/{product}` while the manifest
|
|
97
|
+
* advertises the flat path: a canonical pointing at a URL no route serves.
|
|
98
|
+
*
|
|
99
|
+
* A parent with no `slug` selected is likewise not provably a root, so it takes
|
|
100
|
+
* the flat path. That is the conservative direction throughout — a wrong
|
|
101
|
+
* nesting is worse than a flat canonical — and the SDK's own product queries
|
|
102
|
+
* select `parent { id slug }` so its callers get the right answer by default.
|
|
103
|
+
*/
|
|
8
104
|
export declare function isUserFacingRoot(collection: {
|
|
9
105
|
parent?: {
|
|
10
106
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-path.d.ts","sourceRoot":"","sources":["../../src/seo/product-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"product-path.d.ts","sourceRoot":"","sources":["../../src/seo/product-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,wDAAwD;AACxD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAQlF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,MAAM,GAAG,IAAI,CAiBf;AAED,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE;IAC3C,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/C,GAAG,OAAO,CAEV"}
|
package/dist/seo/product-path.js
CHANGED
|
@@ -1,4 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE rule for where a product's canonical URL lives.
|
|
3
|
+
*
|
|
4
|
+
* Three surfaces used to answer this independently, and for a product in
|
|
5
|
+
* several collections with none flagged canonical they gave three different
|
|
6
|
+
* answers for the same product at the same moment:
|
|
7
|
+
*
|
|
8
|
+
* - `seo.metaTagsFor` / `canonicalFor` → /products/{slug} (hardcoded)
|
|
9
|
+
* - `navigation.getRoutes` → shallowest-then-lexicographic
|
|
10
|
+
* collection path
|
|
11
|
+
* - the sitemap artifact → whichever collection path the
|
|
12
|
+
* Shop API happened to return first
|
|
13
|
+
*
|
|
14
|
+
* None of them resolved on the storefronts they were generated for, and a
|
|
15
|
+
* canonical pointing at a 404 is worse than emitting none. This module holds
|
|
16
|
+
* the decision so the surfaces cannot drift again; `services/plugins` imports
|
|
17
|
+
* it from the published client rather than reimplementing it.
|
|
18
|
+
*
|
|
19
|
+
* The rule:
|
|
20
|
+
* 1. If the product belongs to a ROOT collection flagged
|
|
21
|
+
* `customFields.isCanonical`, its canonical URL nests under that
|
|
22
|
+
* collection. Lowest `position` wins; a caller-supplied key breaks ties so
|
|
23
|
+
* the choice is stable across runs and across surfaces.
|
|
24
|
+
* 2. Otherwise the canonical URL is FLAT: `/{productPathSegment}/{slug}`.
|
|
25
|
+
* Never a collection path — which collection a product happens to sit in
|
|
26
|
+
* is not a property of the product, and letting it decide the canonical is
|
|
27
|
+
* what made the three answers diverge.
|
|
28
|
+
*/
|
|
29
|
+
/** Used when a channel sets no `productPathSegment`. */
|
|
1
30
|
export const DEFAULT_PRODUCT_PATH_SEGMENT = 'products';
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the channel's configured product path segment.
|
|
33
|
+
*
|
|
34
|
+
* NULL, empty and whitespace all mean "unset" → the default, so a channel that
|
|
35
|
+
* never sets the field keeps the shape it had before the field existed. Leading
|
|
36
|
+
* and trailing slashes are tolerated and stripped: a merchant typing
|
|
37
|
+
* `/product/` means the same thing as `product`.
|
|
38
|
+
*
|
|
39
|
+
* Lowercased, because storefront routes are. A merchant typing `Products`
|
|
40
|
+
* would otherwise get `https://site/Products/x` as the canonical for a page
|
|
41
|
+
* served at `/products/x` — a canonical pointing at a 404, plus a case-variant
|
|
42
|
+
* duplicate for crawlers. The channel field's validator accepts either case
|
|
43
|
+
* precisely because this normalizes it.
|
|
44
|
+
*/
|
|
2
45
|
export function normalizeProductPathSegment(raw) {
|
|
3
46
|
if (typeof raw !== 'string')
|
|
4
47
|
return DEFAULT_PRODUCT_PATH_SEGMENT;
|
|
@@ -9,6 +52,30 @@ export function normalizeProductPathSegment(raw) {
|
|
|
9
52
|
.toLowerCase();
|
|
10
53
|
return trimmed === '' ? DEFAULT_PRODUCT_PATH_SEGMENT : trimmed;
|
|
11
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Index of the canonical-root entry, or null when the product has none and the
|
|
57
|
+
* caller should therefore use the flat product path.
|
|
58
|
+
*
|
|
59
|
+
* `tiebreak` keeps the result deterministic when two roots share a `position`.
|
|
60
|
+
* Every caller MUST pass the collection's **id**, and the reason is that the id
|
|
61
|
+
* is the only candidate that is language-invariant:
|
|
62
|
+
*
|
|
63
|
+
* - the route manifest fetches collections PER LANGUAGE, so its `slug` is the
|
|
64
|
+
* nl slug on the nl pass;
|
|
65
|
+
* - the SDK holds ONE fetched entity and emits every locale's URL from it, so
|
|
66
|
+
* its `slug` is whichever language the storefront fetched in.
|
|
67
|
+
*
|
|
68
|
+
* Tiebreaking on a slug therefore picks `wijnen` on one side and `deals` on the
|
|
69
|
+
* other for the same product, and the sitemap ends up flagging a different URL
|
|
70
|
+
* canonical than the page's own `<link rel="canonical">`. The path is worse
|
|
71
|
+
* still: `-` (0x2D) sorts below `/` (0x2F), so `shop` vs `shop-nl` diverges even
|
|
72
|
+
* in one language.
|
|
73
|
+
*
|
|
74
|
+
* The cost is that an equal-`position` tie resolves by an opaque id rather than
|
|
75
|
+
* something a merchant can predict. That is acceptable because it is only
|
|
76
|
+
* reachable by flagging two root collections canonical at the SAME position —
|
|
77
|
+
* give them distinct positions to choose deliberately.
|
|
78
|
+
*/
|
|
12
79
|
export function pickCanonicalRootIndex(entries) {
|
|
13
80
|
let best = null;
|
|
14
81
|
for (let i = 0; i < entries.length; i += 1) {
|
|
@@ -25,7 +92,36 @@ export function pickCanonicalRootIndex(entries) {
|
|
|
25
92
|
}
|
|
26
93
|
return best;
|
|
27
94
|
}
|
|
95
|
+
/** Vendure's synthetic tree root. Never a user-facing collection. */
|
|
28
96
|
export const ROOT_COLLECTION_SLUG = '__root_collection__';
|
|
97
|
+
/**
|
|
98
|
+
* Whether a collection is a USER-FACING root — i.e. `isCanonical` can mean
|
|
99
|
+
* something on it.
|
|
100
|
+
*
|
|
101
|
+
* ONLY a parent that IS the sentinel counts. Two wrong answers to avoid:
|
|
102
|
+
*
|
|
103
|
+
* - `parent == null` was the original predicate and matched nothing real.
|
|
104
|
+
* Vendure's Shop API resolves a top-level collection's parent to the
|
|
105
|
+
* `__root_collection__` sentinel, not to null (verified against production:
|
|
106
|
+
* `collection(id: <top-level>)` returns
|
|
107
|
+
* `parent: { slug: "__root_collection__" }`), so canonical roots were never
|
|
108
|
+
* found and every product fell back to the flat path.
|
|
109
|
+
*
|
|
110
|
+
* - Treating null as root is ALSO wrong, and is why the null branch is gone.
|
|
111
|
+
* On the Shop API `parent` is `undefined` exactly when the real parent is
|
|
112
|
+
* PRIVATE (`CollectionEntityResolver.parent`: `apiType === 'shop' &&
|
|
113
|
+
* parent?.isPrivate ? undefined : parent`). A public collection under a
|
|
114
|
+
* private parent is not a root — and `CollectionService.getBreadcrumbs`
|
|
115
|
+
* does NOT filter private ancestors, so the routes manifest sees the full
|
|
116
|
+
* chain and does not treat it as one either. Calling it a root here would
|
|
117
|
+
* make the page self-declare `/{child}/{product}` while the manifest
|
|
118
|
+
* advertises the flat path: a canonical pointing at a URL no route serves.
|
|
119
|
+
*
|
|
120
|
+
* A parent with no `slug` selected is likewise not provably a root, so it takes
|
|
121
|
+
* the flat path. That is the conservative direction throughout — a wrong
|
|
122
|
+
* nesting is worse than a flat canonical — and the SDK's own product queries
|
|
123
|
+
* select `parent { id slug }` so its callers get the right answer by default.
|
|
124
|
+
*/
|
|
29
125
|
export function isUserFacingRoot(collection) {
|
|
30
126
|
return collection.parent?.slug === ROOT_COLLECTION_SLUG;
|
|
31
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-path.js","sourceRoot":"","sources":["../../src/seo/product-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"product-path.js","sourceRoot":"","sources":["../../src/seo/product-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,wDAAwD;AACxD,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAA8B;IACxE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,4BAA4B,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG;SAChB,IAAI,EAAE;SACN,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA8D;IAE9D,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAE,CAAC;QACjC,IACE,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ;YACnC,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,EAC9E,CAAC;YACD,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAEhC;IACC,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,KAAK,oBAAoB,CAAC;AAC1D,CAAC"}
|