@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-plan.d.ts","sourceRoot":"","sources":["../../src/revalidation/event-plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-plan.d.ts","sourceRoot":"","sources":["../../src/revalidation/event-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEtE,8GAA8G;AAC9G,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,4BAA4B,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CAChD;AAED,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvD;AAED,sFAAsF;AACtF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,KAAK,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAClE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;CAAE,CAAC;AAoM/E;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC,GACxE,kBAAkB,CAQpB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMpE;AAiBD,iFAAiF;AACjF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,UAAU,GAAG,IAAI,EACvB,OAAO,CAAC,EAAE,uBAAuB,GAChC,gBAAgB,CA2BlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC,EACzE,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,uBAAuB,GAChC,gBAAgB,CAElB"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event → revalidation mapping. Pure: no `next`, no I/O, so a pull-feed
|
|
3
|
+
* consumer can reuse it exactly as the webhook handler does.
|
|
4
|
+
*
|
|
5
|
+
* Path rules the whole module keeps:
|
|
6
|
+
* - Event paths are channel-relative and locale-UNPREFIXED. Each is composed
|
|
7
|
+
* per locale with the channel's own URL rule (`buildUrl`) and then mapped to
|
|
8
|
+
* a route path (default: the URL's pathname).
|
|
9
|
+
* - A commerce path prefix is never prepended and never stripped: commerce
|
|
10
|
+
* paths on the bus already carry it, and CMS paths never do — a CMS page may
|
|
11
|
+
* legitimately live at `/store/about` beside `commercePathPrefix: '/store'`.
|
|
12
|
+
* - Whenever an event cannot say which URLs moved (a truncated list, a moved
|
|
13
|
+
* base path, a rule change), the plan is the WHOLE site. Never quieter.
|
|
14
|
+
*/
|
|
1
15
|
import { collectionCacheTag, productCacheTag, SEO_ARTIFACT_TAG } from '../cache-tags.js';
|
|
2
16
|
import { buildUrl } from '../seo/url-builder.js';
|
|
17
|
+
/** Above this many route paths, one whole-site revalidation replaces them — as the legacy dispatcher does. */
|
|
3
18
|
export const DEFAULT_MAX_REVALIDATE_PATHS = 500;
|
|
19
|
+
/** A signed, known-type, version-1 event whose `data` does not match its contract. */
|
|
4
20
|
export class EventPayloadError extends Error {
|
|
5
21
|
constructor(message) {
|
|
6
22
|
super(message);
|
|
@@ -15,6 +31,7 @@ function isRecord(value) {
|
|
|
15
31
|
function isNonEmptyString(value) {
|
|
16
32
|
return typeof value === 'string' && value.length > 0;
|
|
17
33
|
}
|
|
34
|
+
/** Field readers that fail with the event type and the exact field in the message. */
|
|
18
35
|
function reader(type) {
|
|
19
36
|
const fail = (label, expected) => {
|
|
20
37
|
throw new EventPayloadError(`${type}@1: ${label} must be ${expected}`);
|
|
@@ -53,6 +70,13 @@ function reader(type) {
|
|
|
53
70
|
},
|
|
54
71
|
};
|
|
55
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* content.published | updated | unpublished — every entry's path and
|
|
75
|
+
* previous_path in that entry's own language, plus the default-language entry
|
|
76
|
+
* in every locale the payload does not list (those locales serve the default
|
|
77
|
+
* path). `status`, `is_published` and `changed` are deliberately not read: a
|
|
78
|
+
* body edit (every previous_path null) must still revalidate the page.
|
|
79
|
+
*/
|
|
56
80
|
const content = (data, r) => {
|
|
57
81
|
if (r.boolean(data, 'paths_truncated'))
|
|
58
82
|
return ALL;
|
|
@@ -66,6 +90,8 @@ const content = (data, r) => {
|
|
|
66
90
|
return { language: r.string(entry, 'language_code', `data.paths[${i}].language_code`), urls };
|
|
67
91
|
});
|
|
68
92
|
const fallback = entries.find((entry) => entry.language === defaultLanguage);
|
|
93
|
+
// Off-contract (the default entry is mandatory): nothing says which URL the
|
|
94
|
+
// unlisted locales serve, so only a whole-site revalidation is never stale.
|
|
69
95
|
if (!fallback)
|
|
70
96
|
return ALL;
|
|
71
97
|
const listed = new Set(entries.map((entry) => entry.language));
|
|
@@ -79,6 +105,11 @@ const content = (data, r) => {
|
|
|
79
105
|
],
|
|
80
106
|
};
|
|
81
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* content.collection.* — the index page in every locale. A moved base path
|
|
110
|
+
* moves every item path beneath it with no per-item event, so it is the whole
|
|
111
|
+
* site.
|
|
112
|
+
*/
|
|
82
113
|
const contentCollection = (data, r) => {
|
|
83
114
|
const basePath = r.nullableString(data, 'base_path');
|
|
84
115
|
if (r.nullableString(data, 'previous_base_path') !== null)
|
|
@@ -87,6 +118,7 @@ const contentCollection = (data, r) => {
|
|
|
87
118
|
return NOTHING;
|
|
88
119
|
return { kind: 'paths', expand: (locales) => locales.map((locale) => [basePath, locale]) };
|
|
89
120
|
};
|
|
121
|
+
/** A membership change re-lists a category page whose own path did not move. */
|
|
90
122
|
const membership = (data, r) => {
|
|
91
123
|
const id = r.nullableString(data, 'collection_id');
|
|
92
124
|
return id === null ? ALL : { kind: 'tags', tags: [collectionCacheTag(id)] };
|
|
@@ -96,6 +128,11 @@ const product = (data, r) => {
|
|
|
96
128
|
return id === null ? ALL : { kind: 'tags', tags: [productCacheTag(id)] };
|
|
97
129
|
};
|
|
98
130
|
const URL_LOCALE_STRATEGIES = ['path-prefix', 'subdomain', 'none'];
|
|
131
|
+
/**
|
|
132
|
+
* channel.url_settings_changed — the rule every URL is built with moved, so the
|
|
133
|
+
* whole site. The payload is read in full because the handler adopts it as the
|
|
134
|
+
* new URL context.
|
|
135
|
+
*/
|
|
99
136
|
const channelSettings = (data, r) => {
|
|
100
137
|
const overrides = r.array(data, 'commerce_path_prefix_overrides').map((raw, i) => {
|
|
101
138
|
const label = `data.commerce_path_prefix_overrides[${i}]`;
|
|
@@ -121,6 +158,10 @@ const channelSettings = (data, r) => {
|
|
|
121
158
|
},
|
|
122
159
|
};
|
|
123
160
|
};
|
|
161
|
+
/**
|
|
162
|
+
* seo.paths_changed — each entry in its OWN language only: the diff is keyed
|
|
163
|
+
* by (entity, language, path), so an entry names exactly one URL.
|
|
164
|
+
*/
|
|
124
165
|
const seoPaths = (data, r) => {
|
|
125
166
|
if (r.boolean(data, 'added_truncated') || r.boolean(data, 'removed_truncated'))
|
|
126
167
|
return ALL;
|
|
@@ -134,6 +175,7 @@ const seoPaths = (data, r) => {
|
|
|
134
175
|
return { kind: 'paths', expand: () => pairs };
|
|
135
176
|
};
|
|
136
177
|
const whole = () => ALL;
|
|
178
|
+
/** Exhaustive over the vendored payload map: a type added there without a rule fails typecheck. */
|
|
137
179
|
const CLASSIFIERS = {
|
|
138
180
|
'content.published': content,
|
|
139
181
|
'content.updated': content,
|
|
@@ -141,7 +183,11 @@ const CLASSIFIERS = {
|
|
|
141
183
|
'content.collection.created': contentCollection,
|
|
142
184
|
'content.collection.updated': contentCollection,
|
|
143
185
|
'content.collection.removed': contentCollection,
|
|
186
|
+
// Shared furniture (menus, strings, forms, assets) renders on pages the
|
|
187
|
+
// platform cannot enumerate.
|
|
144
188
|
'content.site_content_changed': whole,
|
|
189
|
+
// No path in the payload, and the category tree renders in navigation on
|
|
190
|
+
// every page. `changed: null` (a move) is never treated as quieter.
|
|
145
191
|
'collection.created': whole,
|
|
146
192
|
'collection.updated': whole,
|
|
147
193
|
'collection.deleted': whole,
|
|
@@ -153,6 +199,11 @@ const CLASSIFIERS = {
|
|
|
153
199
|
'product.deleted': product,
|
|
154
200
|
'product_variant.price_changed': product,
|
|
155
201
|
};
|
|
202
|
+
/**
|
|
203
|
+
* Classify an envelope. Unknown types and unsupported versions are skips, not
|
|
204
|
+
* errors — a subscriber on an older SDK must keep accepting newer events.
|
|
205
|
+
* Throws {@link EventPayloadError} for a known v1 type whose `data` is off-contract.
|
|
206
|
+
*/
|
|
156
207
|
export function classifyEvent(envelope) {
|
|
157
208
|
const classify = Object.hasOwn(CLASSIFIERS, envelope.type)
|
|
158
209
|
? CLASSIFIERS[envelope.type]
|
|
@@ -186,6 +237,7 @@ function assertUrlContext(urls) {
|
|
|
186
237
|
}
|
|
187
238
|
return urls;
|
|
188
239
|
}
|
|
240
|
+
/** Turn an intent into a plan, composing URLs only when the intent has paths. */
|
|
189
241
|
export function planFromIntent(intent, urls, options) {
|
|
190
242
|
switch (intent.kind) {
|
|
191
243
|
case 'skip':
|
|
@@ -217,6 +269,15 @@ export function planFromIntent(intent, urls, options) {
|
|
|
217
269
|
}
|
|
218
270
|
}
|
|
219
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* The revalidation a platform event calls for — the mapping
|
|
274
|
+
* `createEventRevalidateHandler` applies, for consumers of the pull feed or of
|
|
275
|
+
* their own webhook plumbing.
|
|
276
|
+
*
|
|
277
|
+
* Throws {@link EventPayloadError} when a known version-1 event's `data` does
|
|
278
|
+
* not match its contract, and `TypeError` when `urls` is unusable for an event
|
|
279
|
+
* that carries paths.
|
|
280
|
+
*/
|
|
220
281
|
export function planRevalidation(envelope, urls, options) {
|
|
221
282
|
return planFromIntent(classifyEvent(envelope), urls, options);
|
|
222
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-plan.js","sourceRoot":"","sources":["../../src/revalidation/event-plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-plan.js","sourceRoot":"","sources":["../../src/revalidation/event-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify one pushed platform-event delivery: signature, JSON, replay window,
|
|
3
|
+
* envelope shape — in that order, each with the status a dispatcher acts on.
|
|
4
|
+
*/
|
|
1
5
|
import type { PlatformEventEnvelope } from '../events/envelope.js';
|
|
2
6
|
export declare const DEFAULT_EVENT_TOLERANCE_SECONDS = 300;
|
|
3
7
|
export type EventDeliveryVerification = {
|
|
@@ -9,8 +13,29 @@ export type EventDeliveryVerification = {
|
|
|
9
13
|
readonly reason: string;
|
|
10
14
|
};
|
|
11
15
|
export interface VerifyEventDeliveryOptions {
|
|
16
|
+
/** Maximum |now − delivered_at|, in seconds. Default 300. */
|
|
12
17
|
toleranceSeconds?: number;
|
|
18
|
+
/** The instant to measure against. Default: the current time. */
|
|
13
19
|
now?: Date;
|
|
14
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Verify a delivery the platform POSTed to a webhook subscription.
|
|
23
|
+
*
|
|
24
|
+
* `rawBody` must be the request body exactly as received — the signature is
|
|
25
|
+
* over those bytes, so parse-and-restringify fails every valid delivery.
|
|
26
|
+
*
|
|
27
|
+
* The replay window is measured against `delivered_at`, which the dispatcher
|
|
28
|
+
* restamps INSIDE the signed body on every attempt, and never against
|
|
29
|
+
* `occurred_at`: that one is immutable, so a retry an hour into the backoff
|
|
30
|
+
* ladder would be rejected. A body without a usable `delivered_at` is refused —
|
|
31
|
+
* falling back to `occurred_at` would reintroduce exactly that rejection.
|
|
32
|
+
*
|
|
33
|
+
* Statuses: 401 for a bad signature or a stale/missing `delivered_at`; 400 for
|
|
34
|
+
* a body that is signed but is not an envelope. The event `type` is read from
|
|
35
|
+
* the signed body only — the `x-webhook-event` header is not signed.
|
|
36
|
+
*
|
|
37
|
+
* Rejects (TypeError) when `toleranceSeconds` is not a positive finite number
|
|
38
|
+
* or `now` is not a valid Date — a configuration error, not a delivery outcome.
|
|
39
|
+
*/
|
|
15
40
|
export declare function verifyEventDelivery(rawBody: string, headers: Pick<Headers, 'get'>, secret: string, options?: VerifyEventDeliveryOptions): Promise<EventDeliveryVerification>;
|
|
16
41
|
//# sourceMappingURL=event-verify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-verify.d.ts","sourceRoot":"","sources":["../../src/revalidation/event-verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-verify.d.ts","sourceRoot":"","sources":["../../src/revalidation/event-verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,0BAA0B;IACzC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAmCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,yBAAyB,CAAC,CA0CpC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify one pushed platform-event delivery: signature, JSON, replay window,
|
|
3
|
+
* envelope shape — in that order, each with the status a dispatcher acts on.
|
|
4
|
+
*/
|
|
1
5
|
import { verifyWebhookSignature } from './verify.js';
|
|
2
6
|
export const DEFAULT_EVENT_TOLERANCE_SECONDS = 300;
|
|
7
|
+
// Offset is mandatory: an offset-less string parses as HOST-local time, which
|
|
8
|
+
// shifts the replay window by the server's UTC offset.
|
|
3
9
|
const ISO_INSTANT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})$/;
|
|
4
10
|
function isRecord(value) {
|
|
5
11
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -33,7 +39,28 @@ function envelopeShapeError(body) {
|
|
|
33
39
|
return 'data must be a JSON object';
|
|
34
40
|
return null;
|
|
35
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Verify a delivery the platform POSTed to a webhook subscription.
|
|
44
|
+
*
|
|
45
|
+
* `rawBody` must be the request body exactly as received — the signature is
|
|
46
|
+
* over those bytes, so parse-and-restringify fails every valid delivery.
|
|
47
|
+
*
|
|
48
|
+
* The replay window is measured against `delivered_at`, which the dispatcher
|
|
49
|
+
* restamps INSIDE the signed body on every attempt, and never against
|
|
50
|
+
* `occurred_at`: that one is immutable, so a retry an hour into the backoff
|
|
51
|
+
* ladder would be rejected. A body without a usable `delivered_at` is refused —
|
|
52
|
+
* falling back to `occurred_at` would reintroduce exactly that rejection.
|
|
53
|
+
*
|
|
54
|
+
* Statuses: 401 for a bad signature or a stale/missing `delivered_at`; 400 for
|
|
55
|
+
* a body that is signed but is not an envelope. The event `type` is read from
|
|
56
|
+
* the signed body only — the `x-webhook-event` header is not signed.
|
|
57
|
+
*
|
|
58
|
+
* Rejects (TypeError) when `toleranceSeconds` is not a positive finite number
|
|
59
|
+
* or `now` is not a valid Date — a configuration error, not a delivery outcome.
|
|
60
|
+
*/
|
|
36
61
|
export async function verifyEventDelivery(rawBody, headers, secret, options) {
|
|
62
|
+
// A NaN tolerance or an Invalid Date makes the window comparison false for
|
|
63
|
+
// every delivery — a correctly signed body would then replay forever.
|
|
37
64
|
const toleranceSeconds = options?.toleranceSeconds ?? DEFAULT_EVENT_TOLERANCE_SECONDS;
|
|
38
65
|
if (!Number.isFinite(toleranceSeconds) || toleranceSeconds <= 0) {
|
|
39
66
|
throw new TypeError(`toleranceSeconds must be a positive number, got ${toleranceSeconds}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-verify.js","sourceRoot":"","sources":["../../src/revalidation/event-verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-verify.js","sourceRoot":"","sources":["../../src/revalidation/event-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for the legacy platform → storefront revalidation webhook
|
|
3
|
+
* (snake_case, matching the platform's merchant-webhook convention). The
|
|
4
|
+
* platform no longer sends it: its sender is retired, and storefronts receive
|
|
5
|
+
* platform events through `createEventRevalidateHandler`. The raw body is
|
|
6
|
+
* HMAC-SHA256-signed with the per-channel revalidation secret:
|
|
7
|
+
* `X-Webhook-Signature: sha256=<hex>` + `X-Webhook-Event: <event>`.
|
|
8
|
+
* Replay protection lives INSIDE the signed body: `occurred_at` (reject
|
|
9
|
+
* outside the tolerance window) and `id` (delivery UUID — idempotency key).
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated The legacy SEO revalidation webhook body. Platform event
|
|
13
|
+
* deliveries use `PlatformEventEnvelope` (`@sixtyninecommerce/client/events`).
|
|
14
|
+
*/
|
|
1
15
|
export interface RevalidateWebhookPayload {
|
|
16
|
+
/** Delivery UUID — dedupe on this if you process deliveries statefully. */
|
|
2
17
|
id: string;
|
|
18
|
+
/** e.g. 'seo.paths_changed.event' */
|
|
3
19
|
event: string;
|
|
4
20
|
channel_code: string;
|
|
21
|
+
/** ISO-8601 dispatch time — inside the signed body for replay checks. */
|
|
5
22
|
occurred_at: string;
|
|
6
23
|
entity: {
|
|
7
24
|
type: string;
|
|
8
25
|
id: string | null;
|
|
9
26
|
};
|
|
27
|
+
/** Locale-expanded storefront-relative paths (e.g. "/nl/schoenen/rood"). */
|
|
10
28
|
paths: string[];
|
|
29
|
+
/** revalidateTag targets (e.g. "seo-artifact" for the artifact proxies). */
|
|
11
30
|
tags: string[];
|
|
31
|
+
/** 'all' → revalidate the whole layout instead of per-path. */
|
|
12
32
|
scope: 'paths' | 'all';
|
|
13
33
|
}
|
|
14
34
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/revalidation/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/revalidation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC5C,4EAA4E;IAC5E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;CACxB"}
|
|
@@ -1,2 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for the legacy platform → storefront revalidation webhook
|
|
3
|
+
* (snake_case, matching the platform's merchant-webhook convention). The
|
|
4
|
+
* platform no longer sends it: its sender is retired, and storefronts receive
|
|
5
|
+
* platform events through `createEventRevalidateHandler`. The raw body is
|
|
6
|
+
* HMAC-SHA256-signed with the per-channel revalidation secret:
|
|
7
|
+
* `X-Webhook-Signature: sha256=<hex>` + `X-Webhook-Event: <event>`.
|
|
8
|
+
* Replay protection lives INSIDE the signed body: `occurred_at` (reject
|
|
9
|
+
* outside the tolerance window) and `id` (delivery UUID — idempotency key).
|
|
10
|
+
*/
|
|
1
11
|
export {};
|
|
2
12
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/revalidation/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/revalidation/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -1,17 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a revalidator needs to turn a channel-relative, locale-unprefixed event
|
|
3
|
+
* path into the storefront's own URL: the channel's URL rule set, and every
|
|
4
|
+
* language the storefront serves.
|
|
5
|
+
*/
|
|
1
6
|
import type { ChannelUrlSettingsChangedV1 } from '../events/payloads.js';
|
|
2
7
|
import { type UrlStrategyConfig } from '../seo/url-builder.js';
|
|
3
8
|
import type { StorefrontClient } from '../types.js';
|
|
4
9
|
export interface UrlContext {
|
|
10
|
+
/** How the channel composes URLs — the same config the SEO module builds canonicals from. */
|
|
5
11
|
readonly config: UrlStrategyConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Every language the storefront serves. A path an event states for "every
|
|
14
|
+
* locale" is expanded over this list; the default language is always added.
|
|
15
|
+
*/
|
|
6
16
|
readonly locales: readonly string[];
|
|
7
17
|
}
|
|
18
|
+
/** A lazily-read {@link UrlContext}, optionally able to drop a cached value. */
|
|
8
19
|
export interface UrlContextSource {
|
|
9
20
|
(): UrlContext | Promise<UrlContext>;
|
|
21
|
+
/** Called after `channel.url_settings_changed`, so the next read is fresh. */
|
|
10
22
|
invalidate?(): void;
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* A {@link UrlContextSource} backed by the client's `activeChannel` query —
|
|
26
|
+
* fresh custom fields AND `availableLanguageCodes`, which the client's startup
|
|
27
|
+
* channel snapshot does not carry. Read on first use and cached; a failed read
|
|
28
|
+
* is not cached, so the next delivery retries it. Accepts a client promise so a
|
|
29
|
+
* route module needs no top-level `await`.
|
|
30
|
+
*/
|
|
12
31
|
export declare function urlContextFromClient(client: Pick<StorefrontClient, 'commerce'> | Promise<Pick<StorefrontClient, 'commerce'>>): UrlContextSource & {
|
|
13
32
|
invalidate(): void;
|
|
14
33
|
};
|
|
34
|
+
/** The URL-shaping half of a `channel.url_settings_changed` payload. */
|
|
15
35
|
export type ChannelUrlRuleSet = Omit<ChannelUrlSettingsChangedV1, 'channel_id' | 'changed'>;
|
|
36
|
+
/**
|
|
37
|
+
* The {@link UrlContext} a `channel.url_settings_changed` payload states — the
|
|
38
|
+
* channel's complete rule set AFTER the change — or `null` when it cannot be
|
|
39
|
+
* used as one: no storefront origin, or a truncated language/prefix list.
|
|
40
|
+
*/
|
|
16
41
|
export declare function urlContextFromChannelSettings(settings: ChannelUrlRuleSet): UrlContext | null;
|
|
17
42
|
//# sourceMappingURL=url-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-context.d.ts","sourceRoot":"","sources":["../../src/revalidation/url-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-context.d.ts","sourceRoot":"","sources":["../../src/revalidation/url-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,8EAA8E;IAC9E,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,GACvF,gBAAgB,GAAG;IAAE,UAAU,IAAI,IAAI,CAAA;CAAE,CAwB3C;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE5F;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAwB5F"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a revalidator needs to turn a channel-relative, locale-unprefixed event
|
|
3
|
+
* path into the storefront's own URL: the channel's URL rule set, and every
|
|
4
|
+
* language the storefront serves.
|
|
5
|
+
*/
|
|
1
6
|
import { urlStrategyFromChannel } from '../seo/url-builder.js';
|
|
7
|
+
/**
|
|
8
|
+
* A {@link UrlContextSource} backed by the client's `activeChannel` query —
|
|
9
|
+
* fresh custom fields AND `availableLanguageCodes`, which the client's startup
|
|
10
|
+
* channel snapshot does not carry. Read on first use and cached; a failed read
|
|
11
|
+
* is not cached, so the next delivery retries it. Accepts a client promise so a
|
|
12
|
+
* route module needs no top-level `await`.
|
|
13
|
+
*/
|
|
2
14
|
export function urlContextFromClient(client) {
|
|
3
15
|
let cached = null;
|
|
4
16
|
const source = () => {
|
|
@@ -24,6 +36,11 @@ export function urlContextFromClient(client) {
|
|
|
24
36
|
},
|
|
25
37
|
});
|
|
26
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* The {@link UrlContext} a `channel.url_settings_changed` payload states — the
|
|
41
|
+
* channel's complete rule set AFTER the change — or `null` when it cannot be
|
|
42
|
+
* used as one: no storefront origin, or a truncated language/prefix list.
|
|
43
|
+
*/
|
|
27
44
|
export function urlContextFromChannelSettings(settings) {
|
|
28
45
|
if (settings.storefront_url === null ||
|
|
29
46
|
settings.available_language_codes_truncated ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-context.js","sourceRoot":"","sources":["../../src/revalidation/url-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-context.js","sourceRoot":"","sources":["../../src/revalidation/url-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA0B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAoBvF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwF;IAExF,IAAI,MAAM,GAA+B,IAAI,CAAC;IAE9C,MAAM,MAAM,GAAG,GAAwB,EAAE;QACvC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC3D,OAAO;gBACL,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC;gBACjF,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;aAC7C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACd,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3B,UAAU;YACR,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAA2B;IACvE,IACE,QAAQ,CAAC,cAAc,KAAK,IAAI;QAChC,QAAQ,CAAC,kCAAkC;QAC3C,QAAQ,CAAC,wCAAwC,EACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,8BAA8B,CAAC;IAC1D,OAAO;QACL,MAAM,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,cAAc;YACtC,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB;YAC/C,sBAAsB,EAAE,QAAQ,CAAC,yBAAyB;YAC1D,mBAAmB,EAAE,QAAQ,CAAC,qBAAqB;YACnD,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB;YACjD,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB;YACjD,8BAA8B,EAC5B,SAAS,CAAC,MAAM,GAAG,CAAC;gBAClB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5E,CAAC,CAAC,IAAI;SACX;QACD,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,wBAAwB,CAAC;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMAC verification for platform webhooks, on Web Crypto so it runs in Node
|
|
3
|
+
* 18+, edge runtimes, and workers alike (hence async).
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Verify an `X-Webhook-Signature: sha256=<hex>` header against the RAW
|
|
7
|
+
* request body. Constant-time via `crypto.subtle.verify`.
|
|
8
|
+
*/
|
|
1
9
|
export declare function verifyWebhookSignature(rawBody: string, signatureHeader: string | null | undefined, secret: string): Promise<boolean>;
|
|
2
10
|
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/revalidation/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/revalidation/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMAC verification for platform webhooks, on Web Crypto so it runs in Node
|
|
3
|
+
* 18+, edge runtimes, and workers alike (hence async).
|
|
4
|
+
*/
|
|
1
5
|
function hexToBytes(hex) {
|
|
2
6
|
if (hex.length % 2 !== 0 || /[^0-9a-f]/i.test(hex))
|
|
3
7
|
return null;
|
|
@@ -7,6 +11,10 @@ function hexToBytes(hex) {
|
|
|
7
11
|
}
|
|
8
12
|
return bytes;
|
|
9
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Verify an `X-Webhook-Signature: sha256=<hex>` header against the RAW
|
|
16
|
+
* request body. Constant-time via `crypto.subtle.verify`.
|
|
17
|
+
*/
|
|
10
18
|
export async function verifyWebhookSignature(rawBody, signatureHeader, secret) {
|
|
11
19
|
if (!signatureHeader || !secret)
|
|
12
20
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/revalidation/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/revalidation/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,eAA0C,EAC1C,MAAc;IAEd,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAC/F,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/seo/ai.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI / LLM-facing helpers: per-entity `<meta name="ai-summary">` content and
|
|
3
|
+
* `llms.txt` bullet rendering.
|
|
4
|
+
*/
|
|
1
5
|
import type { CmsItemMetadata, CollectionMetadata, ProductMetadata } from './metadata-types.js';
|
|
2
6
|
import type { CmsItemForSeo, CollectionForSeo, ProductForSeo } from './types.js';
|
|
3
7
|
export type AiSummaryInput = {
|
|
@@ -10,6 +14,11 @@ export type AiSummaryInput = {
|
|
|
10
14
|
kind: 'cms';
|
|
11
15
|
metadata: CmsItemMetadata | null;
|
|
12
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Returns the AI summary text or `null` when none is configured. Storefronts
|
|
19
|
+
* use this to render the `<meta name="ai-summary">` head tag and the embedded
|
|
20
|
+
* `<section data-ai-summary>` element.
|
|
21
|
+
*/
|
|
13
22
|
export declare function aiSummaryFor(input: AiSummaryInput): string | null;
|
|
14
23
|
export type LlmsTxtEntryInput = ({
|
|
15
24
|
kind: 'product';
|
|
@@ -24,9 +33,17 @@ export type LlmsTxtEntryInput = ({
|
|
|
24
33
|
cms: CmsItemForSeo;
|
|
25
34
|
metadata: CmsItemMetadata | null;
|
|
26
35
|
}) & {
|
|
36
|
+
/** Resolved canonical URL of the page. The `.md` suffix is appended. */
|
|
27
37
|
url: string;
|
|
38
|
+
/** Display name used as the bullet label. */
|
|
28
39
|
name: string;
|
|
40
|
+
/** Optional fallback HTML description (stripped + truncated when no AI summary). */
|
|
29
41
|
description?: string;
|
|
30
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Render one markdown bullet line for the channel's `/llms.txt` file.
|
|
45
|
+
* Format: `- [name](url.md): summary`. The storefront aggregates these
|
|
46
|
+
* across entities; the SDK only renders one row at a time.
|
|
47
|
+
*/
|
|
31
48
|
export declare function llmsTxtEntryFor(input: LlmsTxtEntryInput): string;
|
|
32
49
|
//# sourceMappingURL=ai.d.ts.map
|
package/dist/seo/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/seo/ai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/seo/ai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAcjF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,CAAC;AActD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,CACxE,GAAG;IACF,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAShE"}
|
package/dist/seo/ai.js
CHANGED
|
@@ -15,13 +15,24 @@ function summaryOf(input) {
|
|
|
15
15
|
case 'cms':
|
|
16
16
|
return input.metadata?.aiSummary ?? null;
|
|
17
17
|
case 'collection':
|
|
18
|
+
// Collections carry no dedicated AI summary; fall back to SEO description.
|
|
18
19
|
return input.metadata?.seoDescription ?? null;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns the AI summary text or `null` when none is configured. Storefronts
|
|
24
|
+
* use this to render the `<meta name="ai-summary">` head tag and the embedded
|
|
25
|
+
* `<section data-ai-summary>` element.
|
|
26
|
+
*/
|
|
21
27
|
export function aiSummaryFor(input) {
|
|
22
28
|
const value = summaryOf(input)?.trim();
|
|
23
29
|
return value && value.length > 0 ? value : null;
|
|
24
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Render one markdown bullet line for the channel's `/llms.txt` file.
|
|
33
|
+
* Format: `- [name](url.md): summary`. The storefront aggregates these
|
|
34
|
+
* across entities; the SDK only renders one row at a time.
|
|
35
|
+
*/
|
|
25
36
|
export function llmsTxtEntryFor(input) {
|
|
26
37
|
const summary = aiSummaryFor(input)?.trim() ??
|
|
27
38
|
input.metadata?.seoDescription?.trim() ??
|
|
@@ -32,6 +43,7 @@ export function llmsTxtEntryFor(input) {
|
|
|
32
43
|
: `- [${input.name}](${urlWithSuffix})`;
|
|
33
44
|
}
|
|
34
45
|
function appendMdSuffix(url) {
|
|
46
|
+
// Preserve query/hash if present.
|
|
35
47
|
const hashIdx = url.indexOf('#');
|
|
36
48
|
const queryIdx = url.indexOf('?');
|
|
37
49
|
const tailIdx = hashIdx === -1 ? queryIdx : queryIdx === -1 ? hashIdx : Math.min(hashIdx, queryIdx);
|
package/dist/seo/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/seo/ai.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,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;AAOD,SAAS,SAAS,CAAC,KAAqB;IACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;QAC5C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;QAC3C,KAAK,YAAY;
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/seo/ai.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,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;AAOD,SAAS,SAAS,CAAC,KAAqB;IACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;QAC5C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;QAC3C,KAAK,YAAY;YACf,2EAA2E;YAC3E,OAAO,KAAK,CAAC,QAAQ,EAAE,cAAc,IAAI,IAAI,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAqB;IAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACvC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,MAAM,OAAO,GACX,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;QAC3B,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE;QACtC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,OAAO;QACZ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,aAAa,MAAM,OAAO,EAAE;QACnD,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,aAAa,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,kCAAkC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GACX,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,GAAG,KAAK,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AAC5D,CAAC"}
|