@vtex/faststore 0.0.6 → 0.0.8
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/CHANGELOG.md +99 -0
- package/dist/actions.json +152 -1
- package/dist/catalog.json +2541 -1278
- package/dist/cli/UnreachableCaseError-Crd168Vu.js +10 -0
- package/dist/cli/UnreachableCaseError-Crd168Vu.js.map +1 -0
- package/dist/cli/cacheControl-CEojH_TM.js +158 -0
- package/dist/cli/cacheControl-CEojH_TM.js.map +1 -0
- package/dist/cli/cachePolicy-m2vASMRW.js +26 -0
- package/dist/cli/cachePolicy-m2vASMRW.js.map +1 -0
- package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js +10 -0
- package/dist/cli/computeCoreSchemaHash-DPJZj-qJ.js.map +1 -0
- package/dist/cli/default-BCQHcwbL.js +253 -0
- package/dist/cli/default-BCQHcwbL.js.map +1 -0
- package/dist/cli/disableSuggestions-yO9UqiWn.js +21 -0
- package/dist/cli/disableSuggestions-yO9UqiWn.js.map +1 -0
- package/dist/cli/dist-C1JhdHfo.js +2001 -0
- package/dist/cli/dist-C1JhdHfo.js.map +1 -0
- package/dist/cli/graphql-DG9thCDG.js +14589 -0
- package/dist/cli/graphql-DG9thCDG.js.map +1 -0
- package/dist/cli/index.d.ts +799 -0
- package/dist/cli/index.js +36459 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.min-BsIHDfFK.js +613 -0
- package/dist/cli/index.min-BsIHDfFK.js.map +1 -0
- package/dist/cli/inlineTrace-uLgOJ3TH.js +52 -0
- package/dist/cli/inlineTrace-uLgOJ3TH.js.map +1 -0
- package/dist/cli/internalPlugin-DnuwN4_4.js +11 -0
- package/dist/cli/internalPlugin-DnuwN4_4.js.map +1 -0
- package/dist/cli/packageVersion-DQAnIEil.js +6 -0
- package/dist/cli/packageVersion-DQAnIEil.js.map +1 -0
- package/dist/cli/rolldown-runtime-BMI-E3GI.js +44 -0
- package/dist/cli/schemaIsSubgraph-DoGh3OYj.js +17 -0
- package/dist/cli/schemaIsSubgraph-DoGh3OYj.js.map +1 -0
- package/dist/cli/schemaReporting-K-me-3-v.js +199 -0
- package/dist/cli/schemaReporting-K-me-3-v.js.map +1 -0
- package/dist/cli/server-runtime.js +49879 -0
- package/dist/cli/server-runtime.js.map +1 -0
- package/dist/cli/traceTreeBuilder-BIcV2U7b.js +9118 -0
- package/dist/cli/traceTreeBuilder-BIcV2U7b.js.map +1 -0
- package/dist/cli/usageReporting-Bpl8vSZX.js +10201 -0
- package/dist/cli/usageReporting-Bpl8vSZX.js.map +1 -0
- package/dist/cli/v4-CBhFvC49.js +42 -0
- package/dist/cli/v4-CBhFvC49.js.map +1 -0
- package/dist/client.d.ts +5 -1
- package/dist/client.js +5 -1
- package/dist/components.d.ts +38 -9
- package/dist/components.js +42 -13
- package/dist/content-types.json +616 -0
- package/dist/core/dist/define-component.d.ts +43 -1
- package/dist/core/dist/index.d.ts +2 -2
- package/dist/docs/account-access-gate.md +4 -4
- package/dist/docs/account-address-book.md +519 -0
- package/dist/docs/account-entry-point.md +1 -1
- package/dist/docs/account-menu-identity.md +160 -0
- package/dist/docs/account-menu.md +107 -24
- package/dist/docs/alert-dialog.md +2 -2
- package/dist/docs/avatar.md +103 -0
- package/dist/docs/billing-address.md +17 -9
- package/dist/docs/card-entry.md +37 -6
- package/dist/docs/cardholder-document.md +16 -14
- package/dist/docs/cart-item.md +1 -1
- package/dist/docs/cart.md +8 -8
- package/dist/docs/client-profile-fieldset.md +7 -5
- package/dist/docs/copy-text.md +84 -0
- package/dist/docs/document-field.md +8 -8
- package/dist/docs/footer-link-group.md +2 -2
- package/dist/docs/header-root.md +1 -1
- package/dist/docs/incentives.md +2 -2
- package/dist/docs/logo.md +5 -5
- package/dist/docs/my-account-profile.md +5 -5
- package/dist/docs/navigation-link-list.md +2 -2
- package/dist/docs/navigation-link.md +3 -3
- package/dist/docs/order-cancel.md +52 -0
- package/dist/docs/order-delivery-address.md +63 -0
- package/dist/docs/order-delivery-group.md +83 -0
- package/dist/docs/order-details-back.md +41 -0
- package/dist/docs/order-details-header.md +48 -0
- package/dist/docs/order-list-row.md +46 -0
- package/dist/docs/order-list-search.md +101 -0
- package/dist/docs/order-list-views.md +97 -0
- package/dist/docs/order-list.md +94 -0
- package/dist/docs/order-payment.md +94 -0
- package/dist/docs/order-placed-date.md +49 -0
- package/dist/docs/order-placed-payment-summary.md +13 -15
- package/dist/docs/order-placed.md +225 -0
- package/dist/docs/order-progress.md +88 -0
- package/dist/docs/order-status-badge.md +91 -0
- package/dist/docs/order-summary.md +53 -0
- package/dist/docs/payment-method-badges.md +14 -3
- package/dist/docs/place-order.md +13 -9
- package/dist/docs/product-shelf.md +20 -13
- package/dist/docs/saved-cards.md +2 -2
- package/dist/docs/select.md +19 -6
- package/dist/docs/session.md +1 -1
- package/dist/docs/shipping-address.md +1 -1
- package/dist/docs/sign-in-redirect.md +6 -6
- package/dist/docs/toast.md +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +2 -1
- package/dist/internal/client.d.ts +6 -1
- package/dist/internal/client.js +8 -3
- package/dist/internal/content.d.ts +2 -2
- package/dist/internal/server.d.ts +8 -1
- package/dist/internal/server.js +8 -1
- package/dist/matter/account-access-gate/account-access-gate.d.ts +2 -1
- package/dist/matter/account-access-gate/account-access-gate.js +19 -16
- package/dist/matter/account-access-gate/account-access-gate.js.map +1 -1
- package/dist/matter/account-address-book/account-address-book-delete.d.ts +60 -0
- package/dist/matter/account-address-book/account-address-book-delete.js +184 -0
- package/dist/matter/account-address-book/account-address-book-delete.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.d.ts +19 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js +50 -0
- package/dist/matter/account-address-book/account-address-book-deliverability.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.d.ts +42 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js +146 -0
- package/dist/matter/account-address-book/account-address-book-form-parts.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.d.ts +25 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js +72 -0
- package/dist/matter/account-address-book/account-address-book-profile-notice.js.map +1 -0
- package/dist/matter/account-address-book/account-address-book.d.ts +120 -0
- package/dist/matter/account-address-book/account-address-book.js +469 -0
- package/dist/matter/account-address-book/account-address-book.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country-switch.js +59 -0
- package/dist/matter/account-address-book/account-address-country-switch.js.map +1 -0
- package/dist/matter/account-address-book/account-address-country.d.ts +36 -0
- package/dist/matter/account-address-book/account-address-country.js +151 -0
- package/dist/matter/account-address-book/account-address-country.js.map +1 -0
- package/dist/matter/account-address-book/account-address-first-line.js +11 -0
- package/dist/matter/account-address-book/account-address-first-line.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form-context.d.ts +55 -0
- package/dist/matter/account-address-book/account-address-form-context.js +14 -0
- package/dist/matter/account-address-book/account-address-form-context.js.map +1 -0
- package/dist/matter/account-address-book/account-address-form.d.ts +85 -0
- package/dist/matter/account-address-book/account-address-form.js +946 -0
- package/dist/matter/account-address-book/account-address-form.js.map +1 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js +189 -0
- package/dist/matter/account-address-book/account-address-postal-autofill.js.map +1 -0
- package/dist/matter/account-address-book/account-address-record.d.ts +26 -0
- package/dist/matter/account-address-book/account-address-record.js +138 -0
- package/dist/matter/account-address-book/account-address-record.js.map +1 -0
- package/dist/matter/account-entry-point/account-entry-point.js +11 -11
- package/dist/matter/account-entry-point/account-entry-point.js.map +1 -1
- package/dist/matter/account-menu/account-menu.d.ts +77 -3
- package/dist/matter/account-menu/account-menu.js +252 -19
- package/dist/matter/account-menu/account-menu.js.map +1 -1
- package/dist/matter/account-menu/sign-out-failure.js +50 -0
- package/dist/matter/account-menu/sign-out-failure.js.map +1 -0
- package/dist/matter/account-menu-identity/account-menu-identity.d.ts +21 -0
- package/dist/matter/account-menu-identity/account-menu-identity.js +88 -0
- package/dist/matter/account-menu-identity/account-menu-identity.js.map +1 -0
- package/dist/matter/billing-address/billing-address.d.ts +30 -17
- package/dist/matter/billing-address/billing-address.js +128 -33
- package/dist/matter/billing-address/billing-address.js.map +1 -1
- package/dist/matter/breadcrumb/breadcrumb.js +2 -2
- package/dist/matter/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/matter/card-entry/card-capture.js +4 -3
- package/dist/matter/card-entry/card-capture.js.map +1 -1
- package/dist/matter/card-entry/card-entry.d.ts +5 -3
- package/dist/matter/card-entry/card-entry.js +78 -27
- package/dist/matter/card-entry/card-entry.js.map +1 -1
- package/dist/matter/cardholder-document/cardholder-document.d.ts +10 -9
- package/dist/matter/cardholder-document/cardholder-document.js +36 -16
- package/dist/matter/cardholder-document/cardholder-document.js.map +1 -1
- package/dist/matter/cart/cart.d.ts +7 -2
- package/dist/matter/cart/cart.js +29 -26
- package/dist/matter/cart/cart.js.map +1 -1
- package/dist/matter/cart-item/cart-item.js +2 -2
- package/dist/matter/cart-item/cart-item.js.map +1 -1
- package/dist/matter/client-preferences/client-preferences-fieldset.js +2 -2
- package/dist/matter/client-profile-form/client-profile-fieldset.js +9 -6
- package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -1
- package/dist/matter/identity-edit/identity-edit.js +3 -3
- package/dist/matter/identity-edit/identity-edit.js.map +1 -1
- package/dist/matter/identity-summary/identity-summary.js +4 -3
- package/dist/matter/identity-summary/identity-summary.js.map +1 -1
- package/dist/matter/my-account-profile/my-account-profile.d.ts +6 -3
- package/dist/matter/my-account-profile/my-account-profile.js +6 -5
- package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
- package/dist/matter/order-cancel/order-cancel.d.ts +110 -0
- package/dist/matter/order-cancel/order-cancel.js +344 -0
- package/dist/matter/order-cancel/order-cancel.js.map +1 -0
- package/dist/matter/order-delivery-address/order-delivery-address.d.ts +73 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js +172 -0
- package/dist/matter/order-delivery-address/order-delivery-address.js.map +1 -0
- package/dist/matter/order-delivery-group/order-delivery-group.d.ts +128 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js +408 -0
- package/dist/matter/order-delivery-group/order-delivery-group.js.map +1 -0
- package/dist/matter/order-details-header/order-details-header.d.ts +104 -0
- package/dist/matter/order-details-header/order-details-header.js +190 -0
- package/dist/matter/order-details-header/order-details-header.js.map +1 -0
- package/dist/matter/order-list/customer-orders-filter.d.ts +12 -0
- package/dist/matter/order-list/customer-orders-filter.js +30 -0
- package/dist/matter/order-list/customer-orders-filter.js.map +1 -0
- package/dist/matter/order-list/order-list.d.ts +121 -0
- package/dist/matter/order-list/order-list.js +395 -0
- package/dist/matter/order-list/order-list.js.map +1 -0
- package/dist/matter/order-list-row/order-list-row.d.ts +44 -0
- package/dist/matter/order-list-row/order-list-row.js +127 -0
- package/dist/matter/order-list-row/order-list-row.js.map +1 -0
- package/dist/matter/order-list-search/order-list-search.d.ts +72 -0
- package/dist/matter/order-list-search/order-list-search.js +296 -0
- package/dist/matter/order-list-search/order-list-search.js.map +1 -0
- package/dist/matter/order-list-views/order-list-views.d.ts +65 -0
- package/dist/matter/order-list-views/order-list-views.js +154 -0
- package/dist/matter/order-list-views/order-list-views.js.map +1 -0
- package/dist/matter/order-payment/order-payment.d.ts +83 -0
- package/dist/matter/order-payment/order-payment.js +258 -0
- package/dist/matter/order-payment/order-payment.js.map +1 -0
- package/dist/matter/order-placed/order-placed-deliveries.d.ts +145 -0
- package/dist/matter/order-placed/order-placed-deliveries.js +380 -0
- package/dist/matter/order-placed/order-placed-deliveries.js.map +1 -0
- package/dist/matter/order-placed/order-placed.d.ts +122 -0
- package/dist/matter/order-placed/order-placed.js +452 -0
- package/dist/matter/order-placed/order-placed.js.map +1 -0
- package/dist/matter/order-placed-date/order-placed-date.d.ts +45 -0
- package/dist/matter/order-placed-date/order-placed-date.js +92 -0
- package/dist/matter/order-placed-date/order-placed-date.js.map +1 -0
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +5 -8
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +29 -81
- package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -1
- package/dist/matter/order-progress/order-progress.d.ts +85 -0
- package/dist/matter/order-progress/order-progress.js +203 -0
- package/dist/matter/order-progress/order-progress.js.map +1 -0
- package/dist/matter/order-summary/order-summary.d.ts +81 -0
- package/dist/matter/order-summary/order-summary.js +192 -0
- package/dist/matter/order-summary/order-summary.js.map +1 -0
- package/dist/matter/payment/cardholder-document-rule.d.ts +35 -0
- package/dist/matter/payment/cardholder-document-rule.js +35 -0
- package/dist/matter/payment/cardholder-document-rule.js.map +1 -0
- package/dist/matter/payment/payment-card-capture.js +38 -23
- package/dist/matter/payment/payment-card-capture.js.map +1 -1
- package/dist/matter/payment/payment-controller.js +12 -0
- package/dist/matter/payment/payment-controller.js.map +1 -1
- package/dist/matter/payment/payment-method-badges.js +4 -2
- package/dist/matter/payment/payment-method-badges.js.map +1 -1
- package/dist/matter/payment/payment.js +12 -0
- package/dist/matter/payment/payment.js.map +1 -1
- package/dist/matter/payment/use-payment-method-selection.d.ts +39 -0
- package/dist/matter/payment/use-payment-method-selection.js +30 -2
- package/dist/matter/payment/use-payment-method-selection.js.map +1 -1
- package/dist/matter/payment/use-payment-submit-gate.d.ts +16 -2
- package/dist/matter/payment/use-payment-submit-gate.js +42 -14
- package/dist/matter/payment/use-payment-submit-gate.js.map +1 -1
- package/dist/matter/place-order/place-order.d.ts +12 -7
- package/dist/matter/place-order/place-order.js +126 -103
- package/dist/matter/place-order/place-order.js.map +1 -1
- package/dist/matter/pricing/pricing.js +5 -5
- package/dist/matter/pricing/pricing.js.map +1 -1
- package/dist/matter/product-shelf/product-shelf.d.ts +61 -31
- package/dist/matter/product-shelf/product-shelf.js +157 -57
- package/dist/matter/product-shelf/product-shelf.js.map +1 -1
- package/dist/matter/region/region.js +1 -1
- package/dist/matter/saved-cards/saved-cards.js +27 -15
- package/dist/matter/saved-cards/saved-cards.js.map +1 -1
- package/dist/matter/session/session.js +2 -2
- package/dist/matter/session/session.js.map +1 -1
- package/dist/matter/shipping-address/country-descriptors.d.ts +1 -0
- package/dist/matter/shipping-address/country-descriptors.js +23 -1
- package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
- package/dist/matter/shipping-address/shipping-address.js +63 -15
- package/dist/matter/shipping-address/shipping-address.js.map +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.d.ts +1 -1
- package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -1
- package/dist/matter/sign-in-redirect/sign-in-redirect.js +48 -10
- package/dist/matter/sign-in-redirect/sign-in-redirect.js.map +1 -1
- package/dist/matter/variant-selector/variant-selector.js +2 -2
- package/dist/matter/variant-selector/variant-selector.js.map +1 -1
- package/dist/particles/address-summary/address-summary.js +2 -2
- package/dist/particles/address-summary/address-summary.js.map +1 -1
- package/dist/particles/alert-dialog/alert-dialog.d.ts +5 -1
- package/dist/particles/alert-dialog/alert-dialog.js +5 -2
- package/dist/particles/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/particles/avatar/avatar.d.ts +17 -0
- package/dist/particles/avatar/avatar.js +65 -0
- package/dist/particles/avatar/avatar.js.map +1 -0
- package/dist/particles/copy-text/copy-text.d.ts +28 -0
- package/dist/particles/copy-text/copy-text.js +140 -0
- package/dist/particles/copy-text/copy-text.js.map +1 -0
- package/dist/particles/document-field/document-field.d.ts +34 -5
- package/dist/particles/document-field/document-field.js +115 -19
- package/dist/particles/document-field/document-field.js.map +1 -1
- package/dist/particles/field/field.js +1 -1
- package/dist/particles/field/field.js.map +1 -1
- package/dist/particles/footer-link-group/footer-link-group.d.ts +6 -2
- package/dist/particles/footer-link-group/footer-link-group.js +18 -7
- package/dist/particles/footer-link-group/footer-link-group.js.map +1 -1
- package/dist/particles/incentives/incentives.d.ts +6 -2
- package/dist/particles/incentives/incentives.js +7 -2
- package/dist/particles/incentives/incentives.js.map +1 -1
- package/dist/particles/logo/logo.d.ts +3 -2
- package/dist/particles/logo/logo.js +20 -8
- package/dist/particles/logo/logo.js.map +1 -1
- package/dist/particles/navigation-link/navigation-link.d.ts +2 -3
- package/dist/particles/navigation-link/navigation-link.js +4 -4
- package/dist/particles/navigation-link/navigation-link.js.map +1 -1
- package/dist/particles/navigation-link-list/navigation-link-list.d.ts +6 -2
- package/dist/particles/navigation-link-list/navigation-link-list.js +18 -7
- package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -1
- package/dist/particles/order-details-back/order-details-back.d.ts +28 -0
- package/dist/particles/order-details-back/order-details-back.js +52 -0
- package/dist/particles/order-details-back/order-details-back.js.map +1 -0
- package/dist/particles/order-status-badge/order-status-badge.d.ts +19 -0
- package/dist/particles/order-status-badge/order-status-badge.js +50 -0
- package/dist/particles/order-status-badge/order-status-badge.js.map +1 -0
- package/dist/particles/phone-field/phone-field.js +2 -2
- package/dist/particles/phone-field/phone-field.js.map +1 -1
- package/dist/particles/select/select.js +6 -6
- package/dist/particles/select/select.js.map +1 -1
- package/dist/particles/toast/toast.d.ts +1 -1
- package/dist/particles/toast/toast.js +32 -6
- package/dist/particles/toast/toast.js.map +1 -1
- package/dist/schema.graphql +1079 -54
- package/dist/sdk/actions/address-action-provider.d.ts +16 -0
- package/dist/sdk/actions/address-action-provider.js +20 -0
- package/dist/sdk/actions/address-action-provider.js.map +1 -0
- package/dist/sdk/actions/analytics-action-provider.js +1 -1
- package/dist/sdk/actions/index.d.ts +3 -1
- package/dist/sdk/actions/index.js +3 -1
- package/dist/sdk/actions/order-action-provider.d.ts +12 -0
- package/dist/sdk/actions/order-action-provider.js +16 -0
- package/dist/sdk/actions/order-action-provider.js.map +1 -0
- package/dist/sdk/actions/types.d.ts +6 -2
- package/dist/sdk/address/address-fields.js +38 -0
- package/dist/sdk/address/address-fields.js.map +1 -0
- package/dist/sdk/address/checkout-readiness.js +17 -0
- package/dist/sdk/address/checkout-readiness.js.map +1 -0
- package/dist/sdk/address/constants.js +60 -0
- package/dist/sdk/address/constants.js.map +1 -0
- package/dist/sdk/address/country-display.js +19 -0
- package/dist/sdk/address/country-display.js.map +1 -0
- package/dist/sdk/address/country-rules.js +30 -0
- package/dist/sdk/address/country-rules.js.map +1 -0
- package/dist/sdk/address/format-address.js +18 -0
- package/dist/sdk/address/format-address.js.map +1 -0
- package/dist/sdk/address/iso-countries.js +262 -0
- package/dist/sdk/address/iso-countries.js.map +1 -0
- package/dist/sdk/address/layouts.js +56 -0
- package/dist/sdk/address/layouts.js.map +1 -0
- package/dist/sdk/address/messages.js +97 -0
- package/dist/sdk/address/messages.js.map +1 -0
- package/dist/sdk/address/operations.d.ts +54 -0
- package/dist/sdk/address/operations.js +83 -0
- package/dist/sdk/address/operations.js.map +1 -0
- package/dist/sdk/address/postal-code-lookup-operations.js +23 -0
- package/dist/sdk/address/postal-code-lookup-operations.js.map +1 -0
- package/dist/sdk/address/postal-code.js +11 -0
- package/dist/sdk/address/postal-code.js.map +1 -0
- package/dist/sdk/address/schema.js +14 -0
- package/dist/sdk/address/schema.js.map +1 -0
- package/dist/sdk/address/server-fields.js +25 -0
- package/dist/sdk/address/server-fields.js.map +1 -0
- package/dist/sdk/address/switch-country.js +57 -0
- package/dist/sdk/address/switch-country.js.map +1 -0
- package/dist/sdk/address/types.d.ts +26 -0
- package/dist/sdk/address/use-address-actions.d.ts +29 -0
- package/dist/sdk/address/use-address-actions.js +247 -0
- package/dist/sdk/address/use-address-actions.js.map +1 -0
- package/dist/sdk/address/use-address-by-postal-code.js +57 -0
- package/dist/sdk/address/use-address-by-postal-code.js.map +1 -0
- package/dist/sdk/address/validate-address.js +62 -0
- package/dist/sdk/address/validate-address.js.map +1 -0
- package/dist/sdk/analytics/use-analytics-actions.js +2 -1
- package/dist/sdk/analytics/use-analytics-actions.js.map +1 -1
- package/dist/sdk/cache/storefront-cache.js +29 -4
- package/dist/sdk/cache/storefront-cache.js.map +1 -1
- package/dist/sdk/cart/use-cart-actions.js +9 -8
- package/dist/sdk/cart/use-cart-actions.js.map +1 -1
- package/dist/sdk/cart/use-cart-validate-on-open.js +2 -1
- package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -1
- package/dist/sdk/client/fetch-page-data.d.ts +11 -0
- package/dist/sdk/client/fetch-page-data.js +12 -1
- package/dist/sdk/client/fetch-page-data.js.map +1 -1
- package/dist/sdk/content/create-content-runtime.d.ts +22 -1
- package/dist/sdk/content/create-content-runtime.js +90 -9
- package/dist/sdk/content/create-content-runtime.js.map +1 -1
- package/dist/sdk/data/empty-content-value.js +16 -0
- package/dist/sdk/data/empty-content-value.js.map +1 -0
- package/dist/sdk/data/failed-fields.js +23 -0
- package/dist/sdk/data/failed-fields.js.map +1 -0
- package/dist/sdk/data/hot-data-provider.js +2 -1
- package/dist/sdk/data/hot-data-provider.js.map +1 -1
- package/dist/sdk/data/index.js +1 -1
- package/dist/sdk/data/page-reactive-data-root.d.ts +45 -7
- package/dist/sdk/data/page-reactive-data-root.js +88 -12
- package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
- package/dist/sdk/data/variables-from-content.d.ts +43 -0
- package/dist/sdk/data/variables-from-content.js +57 -0
- package/dist/sdk/data/variables-from-content.js.map +1 -0
- package/dist/sdk/generated/fragment-types.js +2 -0
- package/dist/sdk/generated/fragment-types.js.map +1 -1
- package/dist/sdk/generated/gql.js +4 -1
- package/dist/sdk/generated/gql.js.map +1 -1
- package/dist/sdk/generated/graphql.d.ts +8 -0
- package/dist/sdk/generated/graphql.js +296 -1
- package/dist/sdk/generated/graphql.js.map +1 -1
- package/dist/sdk/i18n/messages/en-US.js +138 -1
- package/dist/sdk/i18n/messages/en-US.json +138 -1
- package/dist/sdk/i18n/messages/en-US.json.d.ts +137 -0
- package/dist/sdk/i18n/messages/es-ES.js +138 -1
- package/dist/sdk/i18n/messages/es-ES.json +138 -1
- package/dist/sdk/i18n/messages/pt-BR.js +138 -1
- package/dist/sdk/i18n/messages/pt-BR.json +138 -1
- package/dist/sdk/identity/use-identity-actions.js +5 -4
- package/dist/sdk/identity/use-identity-actions.js.map +1 -1
- package/dist/sdk/navigation/current-page.js +30 -0
- package/dist/sdk/navigation/current-page.js.map +1 -0
- package/dist/sdk/navigation/not-found-log.d.ts +28 -0
- package/dist/sdk/navigation/not-found-log.js +133 -0
- package/dist/sdk/navigation/not-found-log.js.map +1 -0
- package/dist/sdk/navigation/path.js +25 -0
- package/dist/sdk/navigation/path.js.map +1 -0
- package/dist/sdk/navigation/redirect.d.ts +11 -0
- package/dist/sdk/navigation/redirect.js +22 -0
- package/dist/sdk/navigation/redirect.js.map +1 -0
- package/dist/sdk/navigation/report.js +70 -0
- package/dist/sdk/navigation/report.js.map +1 -0
- package/dist/sdk/navigation/resolve-storefront-href.d.ts +12 -0
- package/dist/sdk/navigation/resolve-storefront-href.js +214 -0
- package/dist/sdk/navigation/resolve-storefront-href.js.map +1 -0
- package/dist/sdk/navigation/route-identity-provider.d.ts +11 -0
- package/dist/sdk/navigation/route-identity-provider.js +20 -0
- package/dist/sdk/navigation/route-identity-provider.js.map +1 -0
- package/dist/sdk/navigation/route-map-provider.d.ts +19 -0
- package/dist/sdk/navigation/route-map-provider.js +29 -0
- package/dist/sdk/navigation/route-map-provider.js.map +1 -0
- package/dist/sdk/navigation/storefront-link.d.ts +16 -0
- package/dist/sdk/navigation/storefront-link.js +66 -0
- package/dist/sdk/navigation/storefront-link.js.map +1 -0
- package/dist/sdk/navigation/types.d.ts +45 -0
- package/dist/sdk/navigation/use-storefront-navigation.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-navigation.js +73 -0
- package/dist/sdk/navigation/use-storefront-navigation.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-route.d.ts +26 -0
- package/dist/sdk/navigation/use-storefront-route.js +87 -0
- package/dist/sdk/navigation/use-storefront-route.js.map +1 -0
- package/dist/sdk/navigation/use-storefront-search-params.d.ts +11 -0
- package/dist/sdk/navigation/use-storefront-search-params.js +16 -0
- package/dist/sdk/navigation/use-storefront-search-params.js.map +1 -0
- package/dist/sdk/orders/completion-badge.d.ts +8 -0
- package/dist/sdk/orders/completion-badge.js +47 -0
- package/dist/sdk/orders/completion-badge.js.map +1 -0
- package/dist/sdk/orders/order-operations.d.ts +19 -0
- package/dist/sdk/orders/order-operations.js +21 -0
- package/dist/sdk/orders/order-operations.js.map +1 -0
- package/dist/sdk/orders/use-order-actions.d.ts +23 -0
- package/dist/sdk/orders/use-order-actions.js +62 -0
- package/dist/sdk/orders/use-order-actions.js.map +1 -0
- package/dist/sdk/payment/gateway-origin.js +26 -13
- package/dist/sdk/payment/gateway-origin.js.map +1 -1
- package/dist/sdk/payment/gateway.d.ts +14 -2
- package/dist/sdk/payment/gateway.js +32 -14
- package/dist/sdk/payment/gateway.js.map +1 -1
- package/dist/sdk/payment/operations.js +11 -0
- package/dist/sdk/payment/operations.js.map +1 -1
- package/dist/sdk/payment/submission-registry.d.ts +2 -1
- package/dist/sdk/payment/submission-registry.js +12 -8
- package/dist/sdk/payment/submission-registry.js.map +1 -1
- package/dist/sdk/payment/use-payment-actions.d.ts +5 -3
- package/dist/sdk/payment/use-payment-actions.js +6 -3
- package/dist/sdk/payment/use-payment-actions.js.map +1 -1
- package/dist/sdk/payment/use-place-order.d.ts +6 -3
- package/dist/sdk/payment/use-place-order.js +334 -144
- package/dist/sdk/payment/use-place-order.js.map +1 -1
- package/dist/sdk/region/use-region-actions.js +2 -1
- package/dist/sdk/region/use-region-actions.js.map +1 -1
- package/dist/sdk/seo/page-alternates.d.ts +55 -0
- package/dist/sdk/seo/page-alternates.js +132 -0
- package/dist/sdk/seo/page-alternates.js.map +1 -0
- package/dist/sdk/session/read-server-session.d.ts +21 -0
- package/dist/sdk/session/read-server-session.js +61 -0
- package/dist/sdk/session/read-server-session.js.map +1 -0
- package/dist/sdk/session/use-session-actions.js +5 -4
- package/dist/sdk/session/use-session-actions.js.map +1 -1
- package/dist/sdk/session/use-session-revalidation.js +2 -1
- package/dist/sdk/session/use-session-revalidation.js.map +1 -1
- package/dist/sdk/shipping/use-shipping-actions.js +3 -2
- package/dist/sdk/shipping/use-shipping-actions.js.map +1 -1
- package/dist/utils/own-value.js +19 -0
- package/dist/utils/own-value.js.map +1 -0
- package/dist/utils/safe-href.d.ts +11 -0
- package/dist/utils/safe-href.js +31 -22
- package/dist/utils/safe-href.js.map +1 -1
- package/package.json +17 -2
- package/skills/storefront-asset/SKILL.md +111 -0
- package/skills/storefront-asset/references/api-side.md +153 -0
- package/skills/storefront-asset/references/findings.md +40 -0
- package/skills/storefront-asset/references/ui-side.md +94 -0
- package/src/styles/tailwind.css +27 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-reactive-data-root.js","names":[],"sources":["../../../src/sdk/data/page-reactive-data-root.tsx"],"sourcesContent":["'use client';\n\nimport type { ErrorLike, OperationVariables, ReactiveVar, TypedDocumentNode } from '@apollo/client';\nimport { useApolloClient, useQuery } from '@apollo/client/react';\nimport { type DocumentNode, Kind, type OperationDefinitionNode } from 'graphql';\nimport { createContext, type ReactNode, useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\n\n// Reactive vars resolvable by name from a Server Component. Functions cannot cross the\n// Server→Client boundary in RSC, so the compiler emits string keys and this component resolves\n// them at runtime. New reactive vars must be registered here to be addressable from generated\n// pages. Currently empty: cart context travels on the transport, so no cart entry is needed\n// (docs/storefront-core/reference-cart.md § Cart context).\nconst REACTIVE_VAR_REGISTRY: Record<string, ReactiveVar<unknown>> = {};\n\n/**\n * Compile-time-stable map keyed by the operation's variable names. Each value is either an Apollo\n * reactive variable (`makeVar`) or the string name of one registered in REACTIVE_VAR_REGISTRY —\n * Server Components must pass strings because functions cannot cross the RSC boundary. Vars that\n * have not yet resolved should hold `null`; the runtime treats both `null` and `undefined` as\n * \"not yet ready\" and keeps `useQuery` skipped.\n */\nexport type ClientVariablesMap<TVars> = Partial<{\n [K in keyof TVars]: ReactiveVar<TVars[K] | null> | string;\n}>;\n\nfunction resolveReactiveVar(value: ReactiveVar<unknown> | string): ReactiveVar<unknown> | undefined {\n if (typeof value === 'function') return value;\n const resolved = REACTIVE_VAR_REGISTRY[value];\n if (!resolved) {\n throw new Error(\n `PageReactiveDataRoot: clientVariables entry \"${value}\" is not registered. Add it to REACTIVE_VAR_REGISTRY in page-reactive-data-root.tsx.`,\n );\n }\n return resolved;\n}\n\nexport type PageReactiveDataRootProps<TData, TVars extends OperationVariables> = Readonly<{\n /** The composed PAGE_QUERY operation document. */\n query: TypedDocumentNode<TData, TVars>;\n /** Variables the server used when calling fetchPageData. Only used to seed the client cache. */\n serverVariables?: TVars;\n /** Server-rendered PAGE_QUERY result. When present and shape-matched, seeded into the cache once. */\n initialData?: TData | null;\n /** Reactive vars whose current values are merged into operation variables at render time. */\n clientVariables?: ClientVariablesMap<TVars>;\n children: ReactNode;\n}>;\n\nexport type ReactiveRootContextValue<TData = unknown> = Readonly<{\n /** Current root query data exposed to descendant `ReactiveDataProvider`s. */\n rootQueryData: TData | undefined;\n /** Whether the underlying useQuery is currently in flight. */\n loading: boolean;\n /** False when at least one required variable has not been provided yet. */\n hasAllRequiredVariables: boolean;\n /**\n * Error from the underlying useQuery. With non-null root fields (e.g. `cart: Cart!`), a failed\n * fetch nulls the whole operation's `data` — descendants need this to tell \"fetch failed\" apart\n * from \"entity is legitimately absent\" (docs/storefront-core/reference-free-particle-model.md § Read side — data).\n */\n error: ErrorLike | undefined;\n /**\n * True only under a real `PageReactiveDataRoot`. Every other field above is ambiguous between\n * \"no root at all\" and \"a root with nothing to give right now\" — `rootQueryData: undefined` and\n * `loading: false` describe both the context default and a root whose query is skipped for want\n * of a reactive variable. `useReactiveEntity` needs that distinction to tell a placeholder slice\n * apart from the only slice there is.\n *\n * Required, not optional, and deliberately so. This flag is the whole of what arms the gate in\n * `useReactiveEntity`, so a provider that omits it disarms the gate silently — measured: a value\n * that `satisfies ReactiveRootContextValue` without it reproduces the corrupting payload byte for\n * byte on an otherwise-fixed tree, and no test fails. `ReactiveRootContext` is public surface via\n * `sdk/data/index.ts`, so that provider need not live in this repo. Making it required moves that\n * failure to compile time.\n *\n * A hand-built context value stands in for a root's *output*, not for the reactive runtime, so it\n * declares `false` and its subtree keeps gating on nothing.\n */\n hasRoot: boolean;\n}>;\n\nexport const ReactiveRootContext = createContext<ReactiveRootContextValue>({\n rootQueryData: undefined,\n loading: false,\n hasAllRequiredVariables: false,\n error: undefined,\n hasRoot: false,\n});\n\nfunction getOperationDefinition(query: DocumentNode): OperationDefinitionNode | undefined {\n for (const definition of query.definitions) {\n if (definition.kind === Kind.OPERATION_DEFINITION) return definition;\n }\n return undefined;\n}\n\nfunction getRequiredVariableNames(query: DocumentNode): string[] {\n const op = getOperationDefinition(query);\n if (!op?.variableDefinitions) return [];\n const required: string[] = [];\n for (const def of op.variableDefinitions) {\n if (def.type.kind === Kind.NON_NULL_TYPE && def.defaultValue === undefined) {\n required.push(def.variable.name.value);\n }\n }\n return required;\n}\n\nfunction getTopLevelFieldNames(query: DocumentNode): Set<string> {\n const op = getOperationDefinition(query);\n const names = new Set<string>();\n if (!op) return names;\n for (const sel of op.selectionSet.selections) {\n if (sel.kind === Kind.FIELD) {\n names.add((sel.alias ?? sel.name).value);\n }\n }\n return names;\n}\n\nfunction shapeMatches(query: DocumentNode, data: unknown): boolean {\n if (data == null || typeof data !== 'object') return false;\n const expected = getTopLevelFieldNames(query);\n if (expected.size === 0) return false;\n const actual = data as Record<string, unknown>;\n // Require AT LEAST ONE top-level field name to be present in `data`. The operation's full\n // top-level shape may include fields the server did not return; partial seeds still help. A total\n // miss (no overlap at all) signals a shape mismatch and we skip the seed.\n for (const key of expected) {\n if (key in actual) return true;\n }\n return false;\n}\n\n/**\n * Reads the current values of every reactive var in `clientVariables` into a plain object via a\n * single `useSyncExternalStore` call (no hooks-in-loop). Apollo's `ReactiveVar.onNextChange` fires\n * once per registration, so the subscriber re-attaches after each notification to stay listening.\n */\nfunction useClientVariableValues<TVars>(clientVariables: ClientVariablesMap<TVars> | undefined): Partial<TVars> {\n // Keep the latest map identity reachable from inside subscribe()/getSnapshot() without forcing\n // useSyncExternalStore to tear down the underlying subscription.\n const varsRef = useRef(clientVariables);\n // react-doctor-disable-next-line no-ref-current-in-render -- keeps the latest map reachable from the stable subscribe()/getSnapshot() callbacks below\n varsRef.current = clientVariables;\n\n const subscribe = useCallback((notify: () => void): (() => void) => {\n const cv = varsRef.current;\n if (!cv) return () => {};\n\n const activeUnsubs: Array<() => void> = [];\n let cancelled = false;\n\n const attach = (rv: ReactiveVar<unknown>): void => {\n if (cancelled) return;\n const unsub = rv.onNextChange(() => {\n notify();\n // onNextChange fires only once — re-attach to keep listening for subsequent changes.\n attach(rv);\n });\n activeUnsubs.push(unsub);\n };\n\n for (const rv of Object.values(cv)) {\n if (rv === undefined || rv === null) continue;\n const resolved = resolveReactiveVar(rv as ReactiveVar<unknown> | string);\n if (resolved) attach(resolved);\n }\n\n return () => {\n cancelled = true;\n for (const u of activeUnsubs) u();\n };\n }, []);\n\n const lastSnapshotRef = useRef<{ json: string; value: Record<string, unknown> } | null>(null);\n\n const getSnapshot = (): string => {\n const cv = varsRef.current;\n const snap: Record<string, unknown> = {};\n if (cv) {\n for (const [key, reactiveVar] of Object.entries(cv)) {\n if (reactiveVar === undefined || reactiveVar === null) continue;\n const resolved = resolveReactiveVar(reactiveVar as ReactiveVar<unknown> | string);\n if (!resolved) continue;\n const value = resolved();\n if (value !== null && value !== undefined) snap[key] = value;\n }\n }\n const json = JSON.stringify(snap);\n // useSyncExternalStore expects a stable snapshot reference until the value changes (Object.is\n // identity check) — return the cached `json` whenever the contents are unchanged.\n if (lastSnapshotRef.current && lastSnapshotRef.current.json === json) {\n return lastSnapshotRef.current.json;\n }\n lastSnapshotRef.current = { json, value: snap };\n return json;\n };\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return (lastSnapshotRef.current?.value ?? {}) as Partial<TVars>;\n}\n\nexport function PageReactiveDataRoot<TData = unknown, TVars extends OperationVariables = OperationVariables>(\n props: PageReactiveDataRootProps<TData, TVars>,\n): ReactNode {\n const { query, serverVariables, initialData, clientVariables, children } = props;\n const client = useApolloClient();\n const seededRef = useRef(false);\n\n const clientValues = useClientVariableValues<TVars>(clientVariables);\n const mergedVariables = { ...(serverVariables ?? ({} as TVars)), ...clientValues } as TVars;\n\n const requiredNames = getRequiredVariableNames(query);\n const mergedRecord = mergedVariables as Record<string, unknown>;\n const hasAllRequiredVariables = requiredNames.every((name) => {\n const v = mergedRecord[name];\n return v !== null && v !== undefined;\n });\n\n // Ref- and shape-guarded one-time cache seed from server props. We use `useEffect` (not\n // `useLayoutEffect`) to avoid the SSR-pass warning emitted by React 19 — the resulting \"first\n // render shows fallbackData, second render shows cache slice\" behaviour is acceptable because\n // initialData is the same value `ReactiveDataProvider` falls back to anyway.\n useEffect(() => {\n if (seededRef.current) return;\n if (!serverVariables || initialData == null) return;\n if (!shapeMatches(query, initialData)) return;\n client.cache.writeQuery({ query, variables: serverVariables, data: initialData });\n seededRef.current = true;\n }, [client, query, serverVariables, initialData]);\n\n const { data, loading, error } = useQuery(query, {\n variables: mergedVariables,\n fetchPolicy: 'cache-first',\n skip: !hasAllRequiredVariables,\n });\n\n const contextValue: ReactiveRootContextValue<TData> = useMemo(\n () => ({\n rootQueryData: (data ?? undefined) as TData | undefined,\n loading,\n hasAllRequiredVariables,\n error,\n hasRoot: true,\n }),\n [data, loading, hasAllRequiredVariables, error],\n );\n\n return (\n <ReactiveRootContext.Provider value={contextValue as ReactiveRootContextValue}>\n {children}\n </ReactiveRootContext.Provider>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-reactive-data-root.js","names":[],"sources":["../../../src/sdk/data/page-reactive-data-root.tsx"],"sourcesContent":["'use client';\n\nimport type {\n ErrorLike,\n OperationVariables,\n ReactiveVar,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n} from '@apollo/client';\nimport { useApolloClient, useQuery } from '@apollo/client/react';\nimport { canonicalStringify } from '@apollo/client/utilities';\nimport { type DocumentNode, Kind, type OperationDefinitionNode } from 'graphql';\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { loggableErrorName } from '../../utils/loggable-error-name.js';\nimport { getFailedFields } from './failed-fields.js';\n\n// Reactive vars resolvable by name from a Server Component. Functions cannot cross the\n// Server→Client boundary in RSC, so the compiler emits string keys and this component resolves\n// them at runtime. New reactive vars must be registered here to be addressable from generated\n// pages. Currently empty: cart context travels on the transport, so no cart entry is needed\n// (docs/storefront-core/reference-cart.md § Cart context).\nconst REACTIVE_VAR_REGISTRY: Record<string, ReactiveVar<unknown>> = {};\n\n/**\n * Compile-time-stable map keyed by the operation's variable names. Each value is either an Apollo\n * reactive variable (`makeVar`) or the string name of one registered in REACTIVE_VAR_REGISTRY —\n * Server Components must pass strings because functions cannot cross the RSC boundary. Vars that\n * have not yet resolved should hold `null`; the runtime treats both `null` and `undefined` as\n * \"not yet ready\" and keeps `useQuery` skipped.\n */\nexport type ClientVariablesMap<TVars> = Partial<{\n [K in keyof TVars]: ReactiveVar<TVars[K] | null> | string;\n}>;\n\nfunction resolveReactiveVar(value: ReactiveVar<unknown> | string): ReactiveVar<unknown> | undefined {\n if (typeof value === 'function') return value;\n const resolved = REACTIVE_VAR_REGISTRY[value];\n if (!resolved) {\n throw new Error(\n `PageReactiveDataRoot: clientVariables entry \"${value}\" is not registered. Add it to REACTIVE_VAR_REGISTRY in page-reactive-data-root.tsx.`,\n );\n }\n return resolved;\n}\n\nexport type PageReactiveDataRootProps<TData, TVars extends OperationVariables> = Readonly<{\n /** The composed PAGE_QUERY operation document. */\n query: TypedDocumentNode<TData, TVars>;\n /** Variables the server used when calling fetchPageData. Only used to seed the client cache. */\n serverVariables?: TVars;\n /** Server-rendered PAGE_QUERY result. When present and shape-matched, seeded into the cache once. */\n initialData?: TData | null;\n /**\n * Root fields that failed on the server. Non-empty: `initialData` is not seeded and the first read\n * for these `serverVariables` is `network-only`. Read on mount and when `serverVariables` change;\n * a change to `failedFields` alone, with the same variables, sends nothing.\n */\n failedFields?: readonly string[];\n /** Reactive vars whose current values are merged into operation variables at render time. */\n clientVariables?: ClientVariablesMap<TVars>;\n children: ReactNode;\n}>;\n\nexport type ReactiveRootContextValue<TData = unknown> = Readonly<{\n /** Current root query data exposed to descendant `ReactiveDataProvider`s. */\n rootQueryData: TData | undefined;\n /** Whether the underlying useQuery is currently in flight. */\n loading: boolean;\n /** False when at least one required variable has not been provided yet. */\n hasAllRequiredVariables: boolean;\n /**\n * Error from the underlying useQuery. With non-null root fields (e.g. `cart: Cart!`), a failed\n * fetch nulls the whole operation's `data` — descendants need this to tell \"fetch failed\" apart\n * from \"entity is legitimately absent\" (docs/storefront-core/reference-free-particle-model.md § Read side — data).\n * A nullable root field that failed on the server reaches here too: the root skips the seed and\n * asks again, and this carries the browser's error beside the partial data.\n */\n error: ErrorLike | undefined;\n /**\n * True only under a real `PageReactiveDataRoot`. Every other field above is ambiguous between\n * \"no root at all\" and \"a root with nothing to give right now\" — `rootQueryData: undefined` and\n * `loading: false` describe both the context default and a root whose query is skipped for want\n * of a reactive variable. `useReactiveEntity` needs that distinction to tell a placeholder slice\n * apart from the only slice there is.\n *\n * Required, not optional, and deliberately so. This flag is the whole of what arms the gate in\n * `useReactiveEntity`, so a provider that omits it disarms the gate silently — measured: a value\n * that `satisfies ReactiveRootContextValue` without it reproduces the corrupting payload byte for\n * byte on an otherwise-fixed tree, and no test fails. `ReactiveRootContext` ships through the\n * package's `./internal/client` entry, so that provider need not live in this repo. Making it\n * required moves that failure to compile time.\n *\n * A hand-built context value stands in for a root's *output*, not for the reactive runtime, so it\n * declares `false` and its subtree keeps gating on nothing.\n */\n hasRoot: boolean;\n /**\n * Re-runs the page query against the network with the root's current variables, the ones its\n * latest render passed to `useQuery`, so a caller that changes a reactive variable calls it from an\n * effect, not in the same handler. Sends nothing unless the root's last committed render had every\n * required variable, nor after the root unmounted. Never rejects: a failure of the read arrives on\n * `rootQueryData`, `loading`, and `error`, as it does on a first load, a cancelled refetch is\n * silent, and any other failure is logged by its name and swallowed.\n *\n * Optional, unlike `hasRoot`: a provider that omits it only loses the in-place retry, where a\n * provider that omits `hasRoot` corrupts what `useReactiveEntity` builds. `PageReactiveDataRoot`\n * always sets it, but a provider built outside this repo may not, and a caller then falls back to\n * reloading the page.\n */\n refetch?: () => Promise<void>;\n}>;\n\nexport const ReactiveRootContext = createContext<ReactiveRootContextValue>({\n rootQueryData: undefined,\n loading: false,\n hasAllRequiredVariables: false,\n error: undefined,\n hasRoot: false,\n});\n\nfunction getOperationDefinition(query: DocumentNode): OperationDefinitionNode | undefined {\n for (const definition of query.definitions) {\n if (definition.kind === Kind.OPERATION_DEFINITION) return definition;\n }\n return undefined;\n}\n\nfunction getRequiredVariableNames(query: DocumentNode): string[] {\n const op = getOperationDefinition(query);\n if (!op?.variableDefinitions) return [];\n const required: string[] = [];\n for (const def of op.variableDefinitions) {\n if (def.type.kind === Kind.NON_NULL_TYPE && def.defaultValue === undefined) {\n required.push(def.variable.name.value);\n }\n }\n return required;\n}\n\nfunction getTopLevelFieldNames(query: DocumentNode): Set<string> {\n const op = getOperationDefinition(query);\n const names = new Set<string>();\n if (!op) return names;\n for (const sel of op.selectionSet.selections) {\n if (sel.kind === Kind.FIELD) {\n names.add((sel.alias ?? sel.name).value);\n }\n }\n return names;\n}\n\nfunction stillShowsFailure(data: unknown, error: ErrorLike): boolean {\n return data == null || getFailedFields(data, error).length > 0;\n}\n\nfunction withEntry(\n errors: ReadonlyMap<string, ErrorLike>,\n key: string,\n error: ErrorLike | undefined,\n): ReadonlyMap<string, ErrorLike> {\n if (errors.get(key) === error) return errors;\n const next = new Map(errors);\n if (error) next.set(key, error);\n else next.delete(key);\n return next;\n}\n\nfunction shapeMatches(query: DocumentNode, data: unknown): boolean {\n if (data == null || typeof data !== 'object') return false;\n const expected = getTopLevelFieldNames(query);\n if (expected.size === 0) return false;\n const actual = data as Record<string, unknown>;\n // Require AT LEAST ONE top-level field name to be present in `data`. The operation's full\n // top-level shape may include fields the server did not return; partial seeds still help. A total\n // miss (no overlap at all) signals a shape mismatch and we skip the seed.\n for (const key of expected) {\n if (key in actual) return true;\n }\n return false;\n}\n\n/**\n * Reads the current values of every reactive var in `clientVariables` into a plain object via a\n * single `useSyncExternalStore` call (no hooks-in-loop). Apollo's `ReactiveVar.onNextChange` fires\n * once per registration, so the subscriber re-attaches after each notification to stay listening.\n */\nfunction useClientVariableValues<TVars>(clientVariables: ClientVariablesMap<TVars> | undefined): Partial<TVars> {\n // Keep the latest map identity reachable from inside subscribe()/getSnapshot() without forcing\n // useSyncExternalStore to tear down the underlying subscription.\n const varsRef = useRef(clientVariables);\n // react-doctor-disable-next-line no-ref-current-in-render -- keeps the latest map reachable from the stable subscribe()/getSnapshot() callbacks below\n varsRef.current = clientVariables;\n\n const subscribe = useCallback((notify: () => void): (() => void) => {\n const cv = varsRef.current;\n if (!cv) return () => {};\n\n const activeUnsubs: Array<() => void> = [];\n let cancelled = false;\n\n const attach = (rv: ReactiveVar<unknown>): void => {\n if (cancelled) return;\n const unsub = rv.onNextChange(() => {\n notify();\n // onNextChange fires only once — re-attach to keep listening for subsequent changes.\n attach(rv);\n });\n activeUnsubs.push(unsub);\n };\n\n for (const rv of Object.values(cv)) {\n if (rv === undefined || rv === null) continue;\n const resolved = resolveReactiveVar(rv as ReactiveVar<unknown> | string);\n if (resolved) attach(resolved);\n }\n\n return () => {\n cancelled = true;\n for (const u of activeUnsubs) u();\n };\n }, []);\n\n const lastSnapshotRef = useRef<{ json: string; value: Record<string, unknown> } | null>(null);\n\n const getSnapshot = (): string => {\n const cv = varsRef.current;\n const snap: Record<string, unknown> = {};\n if (cv) {\n for (const [key, reactiveVar] of Object.entries(cv)) {\n if (reactiveVar === undefined || reactiveVar === null) continue;\n const resolved = resolveReactiveVar(reactiveVar as ReactiveVar<unknown> | string);\n if (!resolved) continue;\n const value = resolved();\n if (value !== null && value !== undefined) snap[key] = value;\n }\n }\n const json = JSON.stringify(snap);\n // useSyncExternalStore expects a stable snapshot reference until the value changes (Object.is\n // identity check) — return the cached `json` whenever the contents are unchanged.\n if (lastSnapshotRef.current && lastSnapshotRef.current.json === json) {\n return lastSnapshotRef.current.json;\n }\n lastSnapshotRef.current = { json, value: snap };\n return json;\n };\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return (lastSnapshotRef.current?.value ?? {}) as Partial<TVars>;\n}\n\n/**\n * Apollo rejects a refetch that ends with no value, as when the root unmounts mid-flight, with a\n * `DOMException` named `AbortError`, or a plain `Error` of that name where there is no `DOMException`.\n * A property check, since a `DOMException` is not always an `Error` instance (jsdom). The read is\n * guarded because a `.name` getter can throw, and `refetch` must not reject.\n */\nfunction isAbort(failure: unknown): boolean {\n if (typeof failure !== 'object' || failure === null) return false;\n try {\n return (failure as { name?: unknown }).name === 'AbortError';\n } catch {\n return false;\n }\n}\n\nexport function PageReactiveDataRoot<TData = unknown, TVars extends OperationVariables = OperationVariables>({\n query,\n serverVariables,\n initialData,\n failedFields,\n clientVariables,\n children,\n}: PageReactiveDataRootProps<TData, TVars>): ReactNode {\n const client = useApolloClient();\n const seededKeysRef = useRef(new Set<string>());\n const hasFailedFields = failedFields != null && failedFields.length > 0;\n const serverVariablesKey = canonicalStringify(serverVariables ?? null);\n\n const clientValues = useClientVariableValues<TVars>(clientVariables);\n const mergedVariables = { ...(serverVariables ?? ({} as TVars)), ...clientValues } as TVars;\n\n const requiredNames = getRequiredVariableNames(query);\n const mergedRecord = mergedVariables as Record<string, unknown>;\n const hasAllRequiredVariables = requiredNames.every((name) => {\n const v = mergedRecord[name];\n return v !== null && v !== undefined;\n });\n\n // Ref- and shape-guarded cache seed from server props, once per set of server variables. A passive\n // effect is enough: the resulting \"first render shows fallbackData, second render shows cache\n // slice\" behaviour is acceptable because initialData is the same value `ReactiveDataProvider`\n // falls back to anyway.\n //\n // A result with failed root fields is never seeded: the seed would store each failed field's\n // `null` without its error, and the cache-first read would then report the failure as an absence.\n // Keying on the variables lets a healthy render replace the `null` an earlier failed read left.\n useEffect(() => {\n if (seededKeysRef.current.has(serverVariablesKey)) return;\n if (hasFailedFields) return;\n if (!serverVariables || initialData == null) return;\n if (!shapeMatches(query, initialData)) return;\n client.cache.writeQuery({ query, variables: serverVariables, data: initialData });\n seededKeysRef.current.add(serverVariablesKey);\n }, [client, query, serverVariables, serverVariablesKey, initialData, hasFailedFields]);\n\n // `network-only` on a failed field: the client cache outlives the page, and Apollo caches a result\n // with errors under `errorPolicy: 'all'`, so an earlier failed request would otherwise answer a\n // revisit from the cache with no error. `errorPolicy` is pinned so the partial data survives\n // beside the error whatever the client's defaults.\n //\n // `useQuery` re-sends `fetchPolicy` on every render, and on a variables change Apollo lets a\n // `nextFetchPolicy` function overrule it. The function sends one network read per set of server\n // variables with failed fields, so a client-variable change reads the cache as on a healthy page.\n const networkReadKeysRef = useRef(new Set<string>());\n const nextFetchPolicy = useCallback(\n (\n _current: WatchQueryFetchPolicy,\n { reason }: { reason: 'after-fetch' | 'variables-changed' },\n ): WatchQueryFetchPolicy => {\n if (!hasFailedFields) return 'cache-first';\n if (reason === 'variables-changed' && !networkReadKeysRef.current.has(serverVariablesKey)) return 'network-only';\n networkReadKeysRef.current.add(serverVariablesKey);\n return 'cache-first';\n },\n [hasFailedFields, serverVariablesKey],\n );\n\n const {\n data,\n loading,\n error,\n refetch: refetchQuery,\n } = useQuery(query, {\n variables: mergedVariables,\n fetchPolicy: hasFailedFields ? 'network-only' : 'cache-first',\n nextFetchPolicy,\n errorPolicy: 'all',\n skip: !hasAllRequiredVariables,\n });\n\n // Apollo never caches errors: a cache write that re-delivers the result drops `error` and leaves\n // the failed field's `null`. The root keeps the last network error per set of variables while the\n // data still shows that failure; a new request for those variables, or a write that heals the\n // field, drops it.\n const variablesKey = canonicalStringify(mergedVariables);\n const [networkErrors, setNetworkErrors] = useState<ReadonlyMap<string, ErrorLike>>(() => new Map());\n const storedError = networkErrors.get(variablesKey);\n const storedErrorApplies = storedError !== undefined && !loading && stillShowsFailure(data, storedError);\n useEffect(() => {\n if (error) {\n setNetworkErrors((errors) => withEntry(errors, variablesKey, error));\n } else if (loading || (storedError !== undefined && !storedErrorApplies)) {\n setNetworkErrors((errors) => withEntry(errors, variablesKey, undefined));\n }\n }, [error, loading, variablesKey, storedError, storedErrorApplies]);\n const rootError = error ?? (storedErrorApplies ? storedError : undefined);\n\n // Apollo binds `refetch` once per ObservableQuery, so it changes when the query document or the\n // client changes. The published one reads the latest through this ref, so its identity holds across\n // those swaps. The ref is written once a render commits, never during one: a render React abandons\n // must not leak its readiness or handle into a caller. It is written in a layout effect so it is\n // set before any descendant's passive effect calls `refetch`. It is null once the root unmounted,\n // because refetching then would revive a torn-down ObservableQuery that nothing is left to stop.\n const latestRef = useRef<{ refetchQuery: typeof refetchQuery; hasAllRequiredVariables: boolean } | null>(null);\n useLayoutEffect(() => {\n latestRef.current = { refetchQuery, hasAllRequiredVariables };\n });\n useLayoutEffect(\n () => () => {\n latestRef.current = null;\n },\n [],\n );\n\n const refetch = useCallback(async (): Promise<void> => {\n const latest = latestRef.current;\n if (!latest?.hasAllRequiredVariables) return;\n try {\n await latest.refetchQuery();\n } catch (error_) {\n // Under the pinned `errorPolicy: 'all'` a failed read resolves and reaches descendants through\n // `error`. A cancelled refetch rejects and needs no report. Any other failure (a local-state\n // error, an Apollo invariant) never reaches `error`, so it is logged by name: no caller handles\n // a rejection.\n if (!isAbort(error_)) console.error('[PageReactiveDataRoot] refetch failed', loggableErrorName(error_));\n }\n }, []);\n\n const contextValue: ReactiveRootContextValue<TData> = useMemo(\n () => ({\n rootQueryData: (data ?? undefined) as TData | undefined,\n loading,\n hasAllRequiredVariables,\n error: rootError,\n hasRoot: true,\n refetch,\n }),\n [data, loading, hasAllRequiredVariables, rootError, refetch],\n );\n\n return (\n <ReactiveRootContext.Provider value={contextValue as ReactiveRootContextValue}>\n {children}\n </ReactiveRootContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;AA+BA,MAAM,wBAA8D,CAAC;AAarE,SAAS,mBAAmB,OAAwE;CAClG,IAAI,OAAO,UAAU,YAAY,OAAO;CACxC,MAAM,WAAW,sBAAsB;CACvC,IAAI,CAAC,UACH,MAAM,IAAI,MACR,gDAAgD,MAAM,qFACxD;CAEF,OAAO;AACT;AAqEA,MAAa,sBAAsB,cAAwC;CACzE,eAAe,KAAA;CACf,SAAS;CACT,yBAAyB;CACzB,OAAO,KAAA;CACP,SAAS;AACX,CAAC;AAED,SAAS,uBAAuB,OAA0D;CACxF,KAAK,MAAM,cAAc,MAAM,aAC7B,IAAI,WAAW,SAAS,KAAK,sBAAsB,OAAO;AAG9D;AAEA,SAAS,yBAAyB,OAA+B;CAC/D,MAAM,KAAK,uBAAuB,KAAK;CACvC,IAAI,CAAC,IAAI,qBAAqB,OAAO,CAAC;CACtC,MAAM,WAAqB,CAAC;CAC5B,KAAK,MAAM,OAAO,GAAG,qBACnB,IAAI,IAAI,KAAK,SAAS,KAAK,iBAAiB,IAAI,iBAAiB,KAAA,GAC/D,SAAS,KAAK,IAAI,SAAS,KAAK,KAAK;CAGzC,OAAO;AACT;AAEA,SAAS,sBAAsB,OAAkC;CAC/D,MAAM,KAAK,uBAAuB,KAAK;CACvC,MAAM,wBAAQ,IAAI,IAAY;CAC9B,IAAI,CAAC,IAAI,OAAO;CAChB,KAAK,MAAM,OAAO,GAAG,aAAa,YAChC,IAAI,IAAI,SAAS,KAAK,OACpB,MAAM,KAAK,IAAI,SAAS,IAAI,KAAA,CAAM,KAAK;CAG3C,OAAO;AACT;AAEA,SAAS,kBAAkB,MAAe,OAA2B;CACnE,OAAO,QAAQ,QAAQ,gBAAgB,MAAM,KAAK,CAAC,CAAC,SAAS;AAC/D;AAEA,SAAS,UACP,QACA,KACA,OACgC;CAChC,IAAI,OAAO,IAAI,GAAG,MAAM,OAAO,OAAO;CACtC,MAAM,OAAO,IAAI,IAAI,MAAM;CAC3B,IAAI,OAAO,KAAK,IAAI,KAAK,KAAK;MACzB,KAAK,OAAO,GAAG;CACpB,OAAO;AACT;AAEA,SAAS,aAAa,OAAqB,MAAwB;CACjE,IAAI,QAAQ,QAAQ,OAAO,SAAS,UAAU,OAAO;CACrD,MAAM,WAAW,sBAAsB,KAAK;CAC5C,IAAI,SAAS,SAAS,GAAG,OAAO;CAChC,MAAM,SAAS;CAIf,KAAK,MAAM,OAAO,UAChB,IAAI,OAAO,QAAQ,OAAO;CAE5B,OAAO;AACT;;;;;;AAOA,SAAS,wBAA+B,iBAAwE;CAG9G,MAAM,UAAU,OAAO,eAAe;CAEtC,QAAQ,UAAU;CAElB,MAAM,YAAY,aAAa,WAAqC;EAClE,MAAM,KAAK,QAAQ;EACnB,IAAI,CAAC,IAAI,aAAa,CAAC;EAEvB,MAAM,eAAkC,CAAC;EACzC,IAAI,YAAY;EAEhB,MAAM,UAAU,OAAmC;GACjD,IAAI,WAAW;GACf,MAAM,QAAQ,GAAG,mBAAmB;IAClC,OAAO;IAEP,OAAO,EAAE;GACX,CAAC;GACD,aAAa,KAAK,KAAK;EACzB;EAEA,KAAK,MAAM,MAAM,OAAO,OAAO,EAAE,GAAG;GAClC,IAAI,OAAO,KAAA,KAAa,OAAO,MAAM;GACrC,MAAM,WAAW,mBAAmB,EAAmC;GACvE,IAAI,UAAU,OAAO,QAAQ;EAC/B;EAEA,aAAa;GACX,YAAY;GACZ,KAAK,MAAM,KAAK,cAAc,EAAE;EAClC;CACF,GAAG,CAAC,CAAC;CAEL,MAAM,kBAAkB,OAAgE,IAAI;CAE5F,MAAM,oBAA4B;EAChC,MAAM,KAAK,QAAQ;EACnB,MAAM,OAAgC,CAAC;EACvC,IAAI,IACF,KAAK,MAAM,CAAC,KAAK,gBAAgB,OAAO,QAAQ,EAAE,GAAG;GACnD,IAAI,gBAAgB,KAAA,KAAa,gBAAgB,MAAM;GACvD,MAAM,WAAW,mBAAmB,WAA4C;GAChF,IAAI,CAAC,UAAU;GACf,MAAM,QAAQ,SAAS;GACvB,IAAI,UAAU,QAAQ,UAAU,KAAA,GAAW,KAAK,OAAO;EACzD;EAEF,MAAM,OAAO,KAAK,UAAU,IAAI;EAGhC,IAAI,gBAAgB,WAAW,gBAAgB,QAAQ,SAAS,MAC9D,OAAO,gBAAgB,QAAQ;EAEjC,gBAAgB,UAAU;GAAE;GAAM,OAAO;EAAK;EAC9C,OAAO;CACT;CAEA,qBAAqB,WAAW,aAAa,WAAW;CAExD,OAAQ,gBAAgB,SAAS,SAAS,CAAC;AAC7C;;;;;;;AAQA,SAAS,QAAQ,SAA2B;CAC1C,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM,OAAO;CAC5D,IAAI;EACF,OAAQ,QAA+B,SAAS;CAClD,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,qBAA6F,EAC3G,OACA,iBACA,aACA,cACA,iBACA,YACqD;CACrD,MAAM,SAAS,gBAAgB;CAC/B,MAAM,gBAAgB,uBAAO,IAAI,IAAY,CAAC;CAC9C,MAAM,kBAAkB,gBAAgB,QAAQ,aAAa,SAAS;CACtE,MAAM,qBAAqB,mBAAmB,mBAAmB,IAAI;CAErE,MAAM,eAAe,wBAA+B,eAAe;CACnE,MAAM,kBAAkB;EAAE,GAAI,mBAAoB,CAAC;EAAc,GAAG;CAAa;CAEjF,MAAM,gBAAgB,yBAAyB,KAAK;CACpD,MAAM,eAAe;CACrB,MAAM,0BAA0B,cAAc,OAAO,SAAS;EAC5D,MAAM,IAAI,aAAa;EACvB,OAAO,MAAM,QAAQ,MAAM,KAAA;CAC7B,CAAC;CAUD,gBAAgB;EACd,IAAI,cAAc,QAAQ,IAAI,kBAAkB,GAAG;EACnD,IAAI,iBAAiB;EACrB,IAAI,CAAC,mBAAmB,eAAe,MAAM;EAC7C,IAAI,CAAC,aAAa,OAAO,WAAW,GAAG;EACvC,OAAO,MAAM,WAAW;GAAE;GAAO,WAAW;GAAiB,MAAM;EAAY,CAAC;EAChF,cAAc,QAAQ,IAAI,kBAAkB;CAC9C,GAAG;EAAC;EAAQ;EAAO;EAAiB;EAAoB;EAAa;CAAe,CAAC;CAUrF,MAAM,qBAAqB,uBAAO,IAAI,IAAY,CAAC;CACnD,MAAM,kBAAkB,aAEpB,UACA,EAAE,aACwB;EAC1B,IAAI,CAAC,iBAAiB,OAAO;EAC7B,IAAI,WAAW,uBAAuB,CAAC,mBAAmB,QAAQ,IAAI,kBAAkB,GAAG,OAAO;EAClG,mBAAmB,QAAQ,IAAI,kBAAkB;EACjD,OAAO;CACT,GACA,CAAC,iBAAiB,kBAAkB,CACtC;CAEA,MAAM,EACJ,MACA,SACA,OACA,SAAS,iBACP,SAAS,OAAO;EAClB,WAAW;EACX,aAAa,kBAAkB,iBAAiB;EAChD;EACA,aAAa;EACb,MAAM,CAAC;CACT,CAAC;CAMD,MAAM,eAAe,mBAAmB,eAAe;CACvD,MAAM,CAAC,eAAe,oBAAoB,+BAA+C,IAAI,IAAI,CAAC;CAClG,MAAM,cAAc,cAAc,IAAI,YAAY;CAClD,MAAM,qBAAqB,gBAAgB,KAAA,KAAa,CAAC,WAAW,kBAAkB,MAAM,WAAW;CACvG,gBAAgB;EACd,IAAI,OACF,kBAAkB,WAAW,UAAU,QAAQ,cAAc,KAAK,CAAC;OAC9D,IAAI,WAAY,gBAAgB,KAAA,KAAa,CAAC,oBACnD,kBAAkB,WAAW,UAAU,QAAQ,cAAc,KAAA,CAAS,CAAC;CAE3E,GAAG;EAAC;EAAO;EAAS;EAAc;EAAa;CAAkB,CAAC;CAClE,MAAM,YAAY,UAAU,qBAAqB,cAAc,KAAA;CAQ/D,MAAM,YAAY,OAAuF,IAAI;CAC7G,sBAAsB;EACpB,UAAU,UAAU;GAAE;GAAc;EAAwB;CAC9D,CAAC;CACD,4BACc;EACV,UAAU,UAAU;CACtB,GACA,CAAC,CACH;CAEA,MAAM,UAAU,YAAY,YAA2B;EACrD,MAAM,SAAS,UAAU;EACzB,IAAI,CAAC,QAAQ,yBAAyB;EACtC,IAAI;GACF,MAAM,OAAO,aAAa;EAC5B,SAAS,QAAQ;GAKf,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAQ,MAAM,yCAAyC,kBAAkB,MAAM,CAAC;EACxG;CACF,GAAG,CAAC,CAAC;CAEL,MAAM,eAAgD,eAC7C;EACL,eAAgB,QAAQ,KAAA;EACxB;EACA;EACA,OAAO;EACP,SAAS;EACT;CACF,IACA;EAAC;EAAM;EAAS;EAAyB;EAAW;CAAO,CAC7D;CAEA,OACE,oBAAC,oBAAoB,UAArB;EAA8B,OAAO;EAClC;CAC2B,CAAA;AAElC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/sdk/data/variables-from-content.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* One element-scoped variable a component's fragment reads from its content slice (config-sourced
|
|
4
|
+
* fragment variables RFC). The compiler derives one of these per variable from the catalog entry:
|
|
5
|
+
* nothing here is authored.
|
|
6
|
+
*/
|
|
7
|
+
export type ContentVariableField = {
|
|
8
|
+
/** The fragment's variable name, unprefixed (`orderBy`). */
|
|
9
|
+
variable: string;
|
|
10
|
+
/** The content-model field that feeds it (`sort`), the binding's `from` or the variable name. */
|
|
11
|
+
field: string;
|
|
12
|
+
/** The content model's word: a required field never falls to a prop. */
|
|
13
|
+
required?: boolean;
|
|
14
|
+
/** The schema prop's `default`: the developer's value when the field is empty. */
|
|
15
|
+
default?: unknown;
|
|
16
|
+
/** The binding's `values` table: the field's value is a key into it. */
|
|
17
|
+
values?: Record<string, unknown>;
|
|
18
|
+
};
|
|
19
|
+
/** The per-component binding spec the page module emits (`<Alias>ContentVariables`). */
|
|
20
|
+
export type ContentVariablesSpec = {
|
|
21
|
+
fields: readonly ContentVariableField[];
|
|
22
|
+
};
|
|
23
|
+
export type VariablesFromContentOptions = {
|
|
24
|
+
/**
|
|
25
|
+
* The element prefix of a page-query instance: every key becomes `<prefix>_<variable>` and
|
|
26
|
+
* `<prefix>_skip` carries the skip flag. Absent for a lazy query, whose names are unprefixed
|
|
27
|
+
* and whose element is already omitted by its content boundary.
|
|
28
|
+
*/
|
|
29
|
+
prefix?: string;
|
|
30
|
+
/** The element's own literal props for content fields: they outrank the schema defaults. */
|
|
31
|
+
props?: Record<string, unknown>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Builds the variables object of one fragment instance from the element's content slice at
|
|
35
|
+
* request time. The content value wins per field; an empty optional field takes the element prop,
|
|
36
|
+
* then the schema default, and is omitted when neither exists so an input-object field it sits in
|
|
37
|
+
* relaxes. An absent slice (the content runtime omitted the element) or an empty `required` field
|
|
38
|
+
* raises the skip flag, and the defaults are still emitted so a non-null variable of a skipped
|
|
39
|
+
* field is coerced. A `values` table maps a string key; an unknown key omits the variable.
|
|
40
|
+
*/
|
|
41
|
+
export declare function variablesFromContent(spec: ContentVariablesSpec, slice: unknown, { prefix, props }?: VariablesFromContentOptions): Record<string, unknown>;
|
|
42
|
+
//#endregion
|
|
43
|
+
//# sourceMappingURL=variables-from-content.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { isEmptyContentValue } from "./empty-content-value.js";
|
|
2
|
+
//#region src/sdk/data/variables-from-content.ts
|
|
3
|
+
/**
|
|
4
|
+
* Builds the variables object of one fragment instance from the element's content slice at
|
|
5
|
+
* request time. The content value wins per field; an empty optional field takes the element prop,
|
|
6
|
+
* then the schema default, and is omitted when neither exists so an input-object field it sits in
|
|
7
|
+
* relaxes. An absent slice (the content runtime omitted the element) or an empty `required` field
|
|
8
|
+
* raises the skip flag, and the defaults are still emitted so a non-null variable of a skipped
|
|
9
|
+
* field is coerced. A `values` table maps a string key; an unknown key omits the variable.
|
|
10
|
+
*/
|
|
11
|
+
function variablesFromContent(spec, slice, { prefix, props } = {}) {
|
|
12
|
+
const content = isRecord(slice) ? slice : void 0;
|
|
13
|
+
let skip = content === void 0;
|
|
14
|
+
const variables = {};
|
|
15
|
+
const key = (name) => prefix === void 0 ? name : `${prefix}_${name}`;
|
|
16
|
+
for (const field of spec.fields) {
|
|
17
|
+
const resolved = resolveField(field, content, props);
|
|
18
|
+
skip ||= resolved.skip;
|
|
19
|
+
const value = bindValue(field, resolved.value);
|
|
20
|
+
if (value !== void 0) variables[key(field.variable)] = value;
|
|
21
|
+
}
|
|
22
|
+
if (prefix !== void 0) variables[`${prefix}_skip`] = skip;
|
|
23
|
+
return variables;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The content value, else the element prop, else the schema default. An empty `required` field
|
|
27
|
+
* raises the skip flag and emits only the schema default, never the prop.
|
|
28
|
+
*/
|
|
29
|
+
function resolveField(field, content, props) {
|
|
30
|
+
const fromContent = content?.[field.field];
|
|
31
|
+
if (!isEmptyContentValue(fromContent)) return {
|
|
32
|
+
value: fromContent,
|
|
33
|
+
skip: false
|
|
34
|
+
};
|
|
35
|
+
if (field.required) return {
|
|
36
|
+
value: field.default,
|
|
37
|
+
skip: true
|
|
38
|
+
};
|
|
39
|
+
const fromProp = props?.[field.field];
|
|
40
|
+
return {
|
|
41
|
+
value: isEmptyContentValue(fromProp) ? field.default : fromProp,
|
|
42
|
+
skip: false
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** The variable's value for a resolved field: `undefined` omits it (empty, or an unknown `values` key). */
|
|
46
|
+
function bindValue(field, value) {
|
|
47
|
+
if (isEmptyContentValue(value)) return void 0;
|
|
48
|
+
if (field.values === void 0) return value;
|
|
49
|
+
return typeof value === "string" && Object.hasOwn(field.values, value) ? field.values[value] : void 0;
|
|
50
|
+
}
|
|
51
|
+
function isRecord(value) {
|
|
52
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { variablesFromContent };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=variables-from-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables-from-content.js","names":[],"sources":["../../../src/sdk/data/variables-from-content.ts"],"sourcesContent":["import { isEmptyContentValue } from './empty-content-value.js';\n\n/**\n * One element-scoped variable a component's fragment reads from its content slice (config-sourced\n * fragment variables RFC). The compiler derives one of these per variable from the catalog entry:\n * nothing here is authored.\n */\nexport type ContentVariableField = {\n /** The fragment's variable name, unprefixed (`orderBy`). */\n variable: string;\n /** The content-model field that feeds it (`sort`), the binding's `from` or the variable name. */\n field: string;\n /** The content model's word: a required field never falls to a prop. */\n required?: boolean;\n /** The schema prop's `default`: the developer's value when the field is empty. */\n default?: unknown;\n /** The binding's `values` table: the field's value is a key into it. */\n values?: Record<string, unknown>;\n};\n\n/** The per-component binding spec the page module emits (`<Alias>ContentVariables`). */\nexport type ContentVariablesSpec = {\n fields: readonly ContentVariableField[];\n};\n\nexport type VariablesFromContentOptions = {\n /**\n * The element prefix of a page-query instance: every key becomes `<prefix>_<variable>` and\n * `<prefix>_skip` carries the skip flag. Absent for a lazy query, whose names are unprefixed\n * and whose element is already omitted by its content boundary.\n */\n prefix?: string;\n /** The element's own literal props for content fields: they outrank the schema defaults. */\n props?: Record<string, unknown>;\n};\n\n/**\n * Builds the variables object of one fragment instance from the element's content slice at\n * request time. The content value wins per field; an empty optional field takes the element prop,\n * then the schema default, and is omitted when neither exists so an input-object field it sits in\n * relaxes. An absent slice (the content runtime omitted the element) or an empty `required` field\n * raises the skip flag, and the defaults are still emitted so a non-null variable of a skipped\n * field is coerced. A `values` table maps a string key; an unknown key omits the variable.\n */\nexport function variablesFromContent(\n spec: ContentVariablesSpec,\n slice: unknown,\n { prefix, props }: VariablesFromContentOptions = {},\n): Record<string, unknown> {\n const content = isRecord(slice) ? slice : undefined;\n let skip = content === undefined;\n const variables: Record<string, unknown> = {};\n const key = (name: string) => (prefix === undefined ? name : `${prefix}_${name}`);\n\n for (const field of spec.fields) {\n const resolved = resolveField(field, content, props);\n skip ||= resolved.skip;\n const value = bindValue(field, resolved.value);\n if (value !== undefined) variables[key(field.variable)] = value;\n }\n\n if (prefix !== undefined) variables[`${prefix}_skip`] = skip;\n return variables;\n}\n\ntype ResolvedField = { value: unknown; skip: boolean };\n\n/**\n * The content value, else the element prop, else the schema default. An empty `required` field\n * raises the skip flag and emits only the schema default, never the prop.\n */\nfunction resolveField(\n field: ContentVariableField,\n content: Record<string, unknown> | undefined,\n props: Record<string, unknown> | undefined,\n): ResolvedField {\n const fromContent = content?.[field.field];\n if (!isEmptyContentValue(fromContent)) return { value: fromContent, skip: false };\n if (field.required) return { value: field.default, skip: true };\n const fromProp = props?.[field.field];\n return { value: isEmptyContentValue(fromProp) ? field.default : fromProp, skip: false };\n}\n\n/** The variable's value for a resolved field: `undefined` omits it (empty, or an unknown `values` key). */\nfunction bindValue(field: ContentVariableField, value: unknown): unknown {\n if (isEmptyContentValue(value)) return undefined;\n if (field.values === undefined) return value;\n return typeof value === 'string' && Object.hasOwn(field.values, value) ? field.values[value] : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"],"mappings":";;;;;;;;;;AA4CA,SAAgB,qBACd,MACA,OACA,EAAE,QAAQ,UAAuC,CAAC,GACzB;CACzB,MAAM,UAAU,SAAS,KAAK,IAAI,QAAQ,KAAA;CAC1C,IAAI,OAAO,YAAY,KAAA;CACvB,MAAM,YAAqC,CAAC;CAC5C,MAAM,OAAO,SAAkB,WAAW,KAAA,IAAY,OAAO,GAAG,OAAO,GAAG;CAE1E,KAAK,MAAM,SAAS,KAAK,QAAQ;EAC/B,MAAM,WAAW,aAAa,OAAO,SAAS,KAAK;EACnD,SAAS,SAAS;EAClB,MAAM,QAAQ,UAAU,OAAO,SAAS,KAAK;EAC7C,IAAI,UAAU,KAAA,GAAW,UAAU,IAAI,MAAM,QAAQ,KAAK;CAC5D;CAEA,IAAI,WAAW,KAAA,GAAW,UAAU,GAAG,OAAO,UAAU;CACxD,OAAO;AACT;;;;;AAQA,SAAS,aACP,OACA,SACA,OACe;CACf,MAAM,cAAc,UAAU,MAAM;CACpC,IAAI,CAAC,oBAAoB,WAAW,GAAG,OAAO;EAAE,OAAO;EAAa,MAAM;CAAM;CAChF,IAAI,MAAM,UAAU,OAAO;EAAE,OAAO,MAAM;EAAS,MAAM;CAAK;CAC9D,MAAM,WAAW,QAAQ,MAAM;CAC/B,OAAO;EAAE,OAAO,oBAAoB,QAAQ,IAAI,MAAM,UAAU;EAAU,MAAM;CAAM;AACxF;;AAGA,SAAS,UAAU,OAA6B,OAAyB;CACvE,IAAI,oBAAoB,KAAK,GAAG,OAAO,KAAA;CACvC,IAAI,MAAM,WAAW,KAAA,GAAW,OAAO;CACvC,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,OAAO,SAAS,KAAA;AACjG;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-types.js","names":[],"sources":["../../../src/sdk/generated/fragment-types.ts"],"sourcesContent":["// @generated — DO NOT EDIT. Run `pnpm codegen` to regenerate.\nexport type PossibleTypes = Record<string, string[]>;\nexport const possibleTypes: PossibleTypes = {\n Media: [\n 'Image',\n 'Video'\n ],\n Node: [\n 'Brand',\n 'Cart',\n 'Category',\n 'ClientPreferences',\n 'ClientProfile',\n 'Collection',\n 'Customization',\n 'Order',\n 'Payment',\n 'Product',\n 'SalesChannel',\n 'Seller',\n 'Session',\n 'Shipping',\n 'Variant'\n ]\n};\n"],"mappings":";AAEA,MAAa,gBAA+B;CAC1C,OAAO,CACL,SACA,OACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"fragment-types.js","names":[],"sources":["../../../src/sdk/generated/fragment-types.ts"],"sourcesContent":["// @generated — DO NOT EDIT. Run `pnpm codegen` to regenerate.\nexport type PossibleTypes = Record<string, string[]>;\nexport const possibleTypes: PossibleTypes = {\n Media: [\n 'Image',\n 'Video'\n ],\n Node: [\n 'Brand',\n 'Cart',\n 'Category',\n 'ClientPreferences',\n 'ClientProfile',\n 'Collection',\n 'CustomerAddress',\n 'CustomerOrder',\n 'Customization',\n 'Order',\n 'Payment',\n 'Product',\n 'SalesChannel',\n 'Seller',\n 'Session',\n 'Shipping',\n 'Variant'\n ]\n};\n"],"mappings":";AAEA,MAAa,gBAA+B;CAC1C,OAAO,CACL,SACA,OACF;CACA,MAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountSessionRevalidateDocument, BuyButtonDataFragmentDoc, CartCouponApplyDocument, CartCouponRemoveDocument, CartDataFragmentDoc, CartDiscountLinesDataFragmentDoc, CartFragmentFragmentDoc, CartItemAddDocument, CartItemCompositionsDataFragmentDoc, CartItemCustomizationsDataFragmentDoc, CartItemDiscountsDataFragmentDoc, CartItemFragmentFragmentDoc, CartItemQuantityDataFragmentDoc, CartItemQuantityDecreaseDocument, CartItemQuantityIncreaseDocument, CartItemRemoveDocument, CartItemRootDataFragmentDoc, CartItemSellerInfoDataFragmentDoc, CartItemVariationsDataFragmentDoc, CartItemsRemoveDocument, CartMarkdownDataFragmentDoc, CartShippingSimulationDocument, CartTotalizerDataFragmentDoc, CartValidateDocument, MoneyFragmentFragmentDoc, PricingDataFragmentDoc, ProductGalleryDataFragmentDoc, ProductInformationDataFragmentDoc, RegionDataFragmentDoc, RegionFragmentFragmentDoc, SessionDataFragmentDoc, SessionFragmentFragmentDoc, ShippingAddressUpdateDocument, ShippingSimulationDocument, VariantBuyButtonDataFragmentDoc, VariantBuyButtonQueryDocument, VariantGalleryDataFragmentDoc, VariantGalleryQueryDocument, VariantPricingDataFragmentDoc, VariantPricingQueryDocument, VariantSelectorDataFragmentDoc } from "./graphql.js";
|
|
1
|
+
import { AccountSessionRevalidateDocument, AddressByPostalCodeDocument, BuyButtonDataFragmentDoc, CartCouponApplyDocument, CartCouponRemoveDocument, CartDataFragmentDoc, CartDiscountLinesDataFragmentDoc, CartFragmentFragmentDoc, CartItemAddDocument, CartItemCompositionsDataFragmentDoc, CartItemCustomizationsDataFragmentDoc, CartItemDiscountsDataFragmentDoc, CartItemFragmentFragmentDoc, CartItemQuantityDataFragmentDoc, CartItemQuantityDecreaseDocument, CartItemQuantityIncreaseDocument, CartItemRemoveDocument, CartItemRootDataFragmentDoc, CartItemSellerInfoDataFragmentDoc, CartItemVariationsDataFragmentDoc, CartItemsRemoveDocument, CartMarkdownDataFragmentDoc, CartShippingSimulationDocument, CartTotalizerDataFragmentDoc, CartValidateDocument, CatalogRouteAlternatesDocument, MoneyFragmentFragmentDoc, PricingDataFragmentDoc, ProductGalleryDataFragmentDoc, ProductInformationDataFragmentDoc, RegionDataFragmentDoc, RegionFragmentFragmentDoc, ServerSessionReadDocument, SessionDataFragmentDoc, SessionFragmentFragmentDoc, ShippingAddressUpdateDocument, ShippingSimulationDocument, VariantBuyButtonDataFragmentDoc, VariantBuyButtonQueryDocument, VariantGalleryDataFragmentDoc, VariantGalleryQueryDocument, VariantPricingDataFragmentDoc, VariantPricingQueryDocument, VariantSelectorDataFragmentDoc } from "./graphql.js";
|
|
2
2
|
//#region src/sdk/generated/gql.ts
|
|
3
3
|
const documents = {
|
|
4
4
|
"\n fragment BuyButtonData on Query {\n productBySlug(slug: $slug) {\n id\n title\n slug\n images(first: 1) {\n edges {\n node {\n url\n altText\n }\n }\n }\n variants(first: 1) {\n edges {\n node {\n id\n sku\n availableForSale\n sellers {\n id\n isDefault\n offer {\n price { amount currencyCode }\n listPrice { amount currencyCode }\n }\n }\n }\n }\n }\n }\n }\n": BuyButtonDataFragmentDoc,
|
|
@@ -25,6 +25,7 @@ const documents = {
|
|
|
25
25
|
"\n fragment RegionData on Query {\n region {\n ...RegionFragment\n }\n }\n": RegionDataFragmentDoc,
|
|
26
26
|
"\n fragment SessionData on Query {\n session {\n ...SessionFragment\n }\n }\n": SessionDataFragmentDoc,
|
|
27
27
|
"\n fragment VariantSelectorData on Query {\n productBySlug(slug: $slug) {\n __typename\n id\n options {\n name\n values\n }\n variants(first: 50) {\n edges {\n node {\n __typename\n id\n name\n sku\n availableForSale\n selectedOptions {\n name\n value\n }\n images(first: 1) {\n edges {\n node {\n url\n altText\n }\n }\n }\n }\n }\n }\n }\n }\n": VariantSelectorDataFragmentDoc,
|
|
28
|
+
"\n query AddressByPostalCode($country: String!, $postalCode: String!) {\n addressByPostalCode(country: $country, postalCode: $postalCode) {\n city\n state\n street\n neighborhood\n }\n }\n": AddressByPostalCodeDocument,
|
|
28
29
|
"\n fragment MoneyFragment on Money {\n __typename\n amount\n currencyCode\n }\n": MoneyFragmentFragmentDoc,
|
|
29
30
|
"\n fragment CartItemFragment on CartItem {\n __typename\n id\n quantity\n price {\n ...MoneyFragment\n }\n listPrice {\n ...MoneyFragment\n }\n sellingPrice {\n ...MoneyFragment\n }\n gift\n ownTotal {\n ...MoneyFragment\n }\n total {\n ...MoneyFragment\n }\n variant {\n __typename\n variantId\n sku\n name\n image {\n url\n altText\n }\n availability\n }\n product {\n __typename\n productId\n title\n detailUrl\n categories {\n categoryId\n name\n }\n brand {\n brandId\n name\n }\n }\n }\n": CartItemFragmentFragmentDoc,
|
|
30
31
|
"\n fragment CartFragment on Cart {\n __typename\n id\n items {\n ...CartItemFragment\n }\n totalizers {\n __typename\n id\n name\n value {\n ...MoneyFragment\n }\n }\n total {\n ...MoneyFragment\n }\n messages {\n __typename\n code\n text\n status\n }\n appliedCoupons {\n code\n isUnmatchedCondition\n }\n }\n": CartFragmentFragmentDoc,
|
|
@@ -37,7 +38,9 @@ const documents = {
|
|
|
37
38
|
"\n mutation CartCouponRemove($input: CartCouponRemoveInput!) {\n cartCouponRemove(input: $input) {\n __typename\n cart {\n ...CartFragment\n }\n userErrors {\n code\n message\n }\n }\n }\n": CartCouponRemoveDocument,
|
|
38
39
|
"\n mutation CartValidate {\n cartValidate {\n __typename\n cart {\n ...CartFragment\n }\n userErrors {\n code\n message\n }\n }\n }\n": CartValidateDocument,
|
|
39
40
|
"\n fragment RegionFragment on Region {\n __typename\n id\n postalCode\n city\n }\n": RegionFragmentFragmentDoc,
|
|
41
|
+
"\n query CatalogRouteAlternates($path: String!) {\n catalogRoute(input: { path: $path }) {\n variants {\n locale\n path\n }\n }\n }\n": CatalogRouteAlternatesDocument,
|
|
40
42
|
"\n fragment SessionFragment on Session {\n __typename\n id\n loggedIn\n canEditData\n isIdentified\n }\n": SessionFragmentFragmentDoc,
|
|
43
|
+
"\n query ServerSessionRead {\n session {\n ...SessionFragment\n }\n }\n": ServerSessionReadDocument,
|
|
41
44
|
"\n query AccountSessionRevalidate {\n session {\n ...SessionFragment\n }\n }\n": AccountSessionRevalidateDocument,
|
|
42
45
|
"\n query CartShippingSimulation($input: CartShippingSimulateInput!) {\n cartShippingSimulation(input: $input) {\n shippingOptions {\n id\n name\n channel\n shippingEstimate {\n value\n unit\n }\n price {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n }\n userErrors {\n code\n message\n }\n }\n }\n": CartShippingSimulationDocument,
|
|
43
46
|
"\n query ShippingSimulation($input: ShippingSimulateInput!) {\n shippingSimulation(input: $input) {\n shippingOptions {\n id\n name\n channel\n shippingEstimate {\n value\n unit\n }\n price {\n amount\n currencyCode\n }\n listPrice {\n amount\n currencyCode\n }\n }\n userErrors {\n code\n message\n }\n }\n }\n": ShippingSimulationDocument,
|