@tokenoftrust/storefront-runner 2.4.87 → 2.4.89
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/apps/storefront/astro.config.mjs +1 -1
- package/apps/storefront/dev-plugins/tenant-hot-reload.mjs +1 -1
- package/apps/storefront/env.d.ts +1 -1
- package/apps/storefront/perf/README.md +7 -7
- package/apps/storefront/perf/assert-budgets.ts +2 -2
- package/apps/storefront/public/shared/commerce-chrome.css +1 -1
- package/apps/storefront/public/shared/commerce-marketing.css +1 -1
- package/apps/storefront/src/components/catalog/storefront/CollectionCard.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/ProductCard.astro +4 -4
- package/apps/storefront/src/components/catalog/storefront/commerce/BrandGrid.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/commerce/PriceDisplay.astro +2 -2
- package/apps/storefront/src/components/catalog/storefront/commerce/ProductCarousel.astro +2 -2
- package/apps/storefront/src/components/catalog/storefront/commerce/ProductGrid.astro +3 -3
- package/apps/storefront/src/components/catalog/storefront/commerce/ReviewList.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/islands/ImageGallery.tsx +1 -1
- package/apps/storefront/src/components/catalog/storefront/islands/QuickView.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/RecentlyViewed.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/SearchTypeahead.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/VariantSelector.tsx +1 -1
- package/apps/storefront/src/components/compliance/storefront/islands/AgeGate.tsx +2 -2
- package/apps/storefront/src/components/compliance/storefront/islands/IsolatedAgeGate.tsx +1 -1
- package/apps/storefront/src/components/{AsyncStylesheet.astro → content/storefront/AsyncStylesheet.astro} +2 -2
- package/apps/storefront/src/components/{Breadcrumbs.astro → content/storefront/Breadcrumbs.astro} +3 -3
- package/apps/storefront/src/components/{Seo.astro → content/storefront/Seo.astro} +5 -5
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogIndexView.astro +6 -6
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPaywall.astro +2 -2
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPostArticle.astro +7 -7
- package/apps/storefront/src/components/{blog → content/storefront/blog}/PostAccessBadge.astro +1 -1
- package/apps/storefront/src/components/{blog → content/storefront/blog}/PostGrid.astro +3 -3
- package/apps/storefront/src/components/{blog → content/storefront/blog}/ReactionBar.astro +1 -1
- package/apps/storefront/src/components/{blog → content/storefront/blog}/ShareRow.astro +1 -1
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/MegaMenu.astro +3 -3
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/NavDropdown.astro +2 -2
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteFooter.astro +5 -5
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteHeader.astro +8 -8
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/UtilityNav.astro +2 -2
- package/apps/storefront/src/components/content/{Callout.astro → storefront/content/Callout.astro} +1 -1
- package/apps/storefront/src/components/content/{PromoTiles.astro → storefront/content/PromoTiles.astro} +3 -3
- package/apps/storefront/src/components/content/{ProseSections.astro → storefront/content/ProseSections.astro} +3 -3
- package/apps/storefront/src/components/{home → content/storefront/home}/Hero.astro +4 -4
- package/apps/storefront/src/components/{islands → content/storefront/islands}/MobileNav.tsx +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CardGrid.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CodeSample.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CtaBand.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Faq.astro +5 -5
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Integrations.astro +3 -3
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingBlocks.astro +11 -11
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingCtas.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingHero.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/ProofStrip.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/SplitCompare.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Steps.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Testimonials.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/TrustBar.astro +1 -1
- package/apps/storefront/src/components/{style-guide → content/storefront/style-guide}/StyleGuideNav.astro +1 -1
- package/apps/storefront/src/components/{the-build → content/storefront/the-build}/TheBuildIndexView.astro +5 -5
- package/apps/storefront/src/components/customers/storefront/islands/SavedList.tsx +2 -2
- package/apps/storefront/src/config/adminTargetTenant.ts +1 -1
- package/apps/storefront/src/config/devTenants.ts +1 -1
- package/apps/storefront/src/config/resolver.ts +1 -1
- package/apps/storefront/src/layouts/Layout.astro +28 -28
- package/apps/storefront/src/lib/{admin → access/admin}/README.md +3 -3
- package/apps/storefront/src/lib/{admin → access/admin}/adminShell.ts +1 -1
- package/apps/storefront/src/lib/{admin → access/admin}/envelope.ts +2 -2
- package/apps/storefront/src/lib/{admin → access/admin}/viewmodels/settings.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminApiGuard.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminEntry.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminLanding.ts +1 -1
- package/apps/storefront/src/lib/{auth → access/auth}/identityToken.ts +1 -1
- package/apps/storefront/src/lib/{auth → access/auth}/loginGate.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/totAccessClient.ts +4 -4
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/delegateGate.ts +2 -2
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffAdmission.ts +1 -1
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/tenantSelection.ts +1 -1
- package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/settings.ts +4 -4
- package/apps/storefront/src/lib/{email → access/notifications}/magicLinkInviteEmail.ts +1 -1
- package/apps/storefront/src/lib/{shared → access/shared}/accessExplain.ts +1 -1
- package/apps/storefront/src/lib/{adminTenantEnvelope.ts → access/shared/adminTenantEnvelope.ts} +3 -3
- package/apps/storefront/src/lib/{shared → access/shared}/developerInvites.ts +4 -4
- package/apps/storefront/src/lib/{shared → access/shared}/invitePreflight.ts +1 -1
- package/apps/storefront/src/lib/{shared → access/shared}/principalGrants.ts +2 -2
- package/apps/storefront/src/lib/{shared → access/shared}/viewerGrant.ts +1 -1
- package/apps/storefront/src/lib/activity/fixtures/evidence.ts +2 -2
- package/apps/storefront/src/lib/activity/uiActor.ts +4 -4
- package/apps/storefront/src/lib/activity/workerCommit.ts +1 -1
- package/apps/storefront/src/lib/admin/services/mock/index.ts +4 -4
- package/apps/storefront/src/lib/assets/shared/imageAttrs.ts +1 -1
- package/apps/storefront/src/lib/{admin → automation/admin}/viewmodels/aiWorkflows.ts +3 -3
- package/apps/storefront/src/lib/{admin → automation}/ai/askEnvelope.ts +1 -1
- package/apps/storefront/src/lib/{admin → automation}/ai/operationalRuns.ts +4 -4
- package/apps/storefront/src/lib/{admin/services/mock → automation/fixtures}/aiWorkflows.ts +4 -4
- package/apps/storefront/src/lib/basePath.ts +2 -2
- package/apps/storefront/src/lib/catalog/fixtures/products.ts +4 -4
- package/apps/storefront/src/lib/catalog/shared/featuredProductsPresentation.ts +1 -1
- package/apps/storefront/src/lib/catalog/tot/tenantCatalog.ts +1 -1
- package/apps/storefront/src/lib/checkout/admin/checkoutStyleTarget.ts +2 -2
- package/apps/storefront/src/lib/checkout/fixtures/checkoutSettings.ts +1 -1
- package/apps/storefront/src/lib/compliance/browser/checkoutVerificationFlow.ts +1 -1
- package/apps/storefront/src/lib/compliance/verification/totVerificationClient.ts +1 -1
- package/apps/storefront/src/lib/{blog → content/blog}/access.ts +1 -1
- package/apps/storefront/src/lib/{blog → content/blog}/collection.ts +9 -9
- package/apps/storefront/src/lib/{blog → content/blog}/postView.ts +5 -5
- package/apps/storefront/src/lib/{blog → content/blog}/provider.ts +7 -7
- package/apps/storefront/src/lib/{chrome → content/chrome}/footerLegal.ts +2 -2
- package/apps/storefront/src/lib/{chrome → content/chrome}/trackingPlacements.ts +1 -1
- package/apps/storefront/src/lib/{seo → content/seo}/faqItems.ts +1 -1
- package/apps/storefront/src/lib/{seo → content/seo}/structuredData.ts +1 -1
- package/apps/storefront/src/lib/{breadcrumbs.ts → content/shared/breadcrumbs.ts} +1 -1
- package/apps/storefront/src/lib/{heroSlideshow.ts → content/shared/heroSlideshow.ts} +1 -1
- package/apps/storefront/src/lib/{homeVisualParity.ts → content/shared/homeVisualParity.ts} +1 -1
- package/apps/storefront/src/lib/{jsonld.ts → content/shared/jsonld.ts} +1 -1
- package/apps/storefront/src/lib/{rawChrome.ts → content/shared/rawChrome.ts} +12 -12
- package/apps/storefront/src/lib/{rawMarketingHtml.ts → content/shared/rawMarketingHtml.ts} +3 -3
- package/apps/storefront/src/lib/{styleGuideThemes.ts → content/shared/styleGuideThemes.ts} +3 -3
- package/apps/storefront/src/lib/{storyblok → content/storyblok}/content-model.ts +1 -1
- package/apps/storefront/src/lib/{storyblok → content/storyblok}/provider.ts +27 -27
- package/apps/storefront/src/lib/{the-build → content/the-build}/provider.ts +1 -1
- package/apps/storefront/src/lib/{the-build → content/the-build}/toc.ts +1 -1
- package/apps/storefront/src/lib/customers/fixtures/customers.ts +3 -3
- package/apps/storefront/src/lib/d1/schema-apps.ts +2 -2
- package/apps/storefront/src/lib/{admin → developer-experience/admin}/memoizeByEnvelope.ts +1 -1
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityIngestToken.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/cliSignInCode.ts +3 -3
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/livePreview.ts +1 -1
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/previewStatus.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/rendezvousBroker.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/subjectReissue.ts +2 -2
- package/apps/storefront/src/lib/email/candidateConflictEmail.ts +1 -1
- package/apps/storefront/src/lib/{messaging → engagement/messaging}/messagesClient.ts +1 -1
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/digest.ts +2 -2
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/resendClient.ts +1 -1
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/send.ts +2 -2
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/subscribers.ts +1 -1
- package/apps/storefront/src/lib/{social → engagement/social}/golive.ts +2 -2
- package/apps/storefront/src/lib/{social → engagement/social}/notify.ts +1 -1
- package/apps/storefront/src/lib/{social → engagement/social}/tokenStore.ts +3 -3
- package/apps/storefront/src/lib/fulfillment/fulfillmentService.ts +3 -3
- package/apps/storefront/src/lib/integrations/integration/browserEnvironment.ts +1 -1
- package/apps/storefront/src/lib/{apps → measurement/consent}/consentConfigRead.ts +1 -1
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/d1Control.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionCollector.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionStore.ts +0 -0
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/pruneRollup.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/publishSafetyNet.ts +1 -1
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantD1Registry.ts +2 -2
- package/apps/storefront/src/lib/{monitoring → observability/monitoring}/manifest.ts +2 -2
- package/apps/storefront/src/lib/{analytics → observability/performance}/budgets.json +1 -1
- package/apps/storefront/src/lib/orders/fixtures/orders.ts +4 -4
- package/apps/storefront/src/lib/previewReload.ts +1 -1
- package/apps/storefront/src/lib/publication/contentProvider.ts +7 -7
- package/apps/storefront/src/lib/publication/mountedDiscovery.ts +1 -1
- package/apps/storefront/src/lib/publication/rootDiscovery.ts +4 -4
- package/apps/storefront/src/lib/reporting/fixtures/reporting.ts +3 -3
- package/apps/storefront/src/lib/runtimeEnv.ts +1 -1
- package/apps/storefront/src/lib/subscriptions/fixtures/subscriptions.ts +3 -3
- package/apps/storefront/src/middleware/controlPlane.ts +7 -7
- package/apps/storefront/src/middleware/index.ts +11 -11
- package/apps/storefront/src/middleware/renderChain.ts +6 -6
- package/apps/storefront/src/pages/[...slug].astro +13 -13
- package/apps/storefront/src/pages/api/admin/activity-alerts.ts +1 -1
- package/apps/storefront/src/pages/api/admin/commerce-readiness.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/batches.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id]/address.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id].ts +1 -1
- package/apps/storefront/src/pages/api/admin/interaction-insights.ts +4 -4
- package/apps/storefront/src/pages/api/admin/orders/[id].ts +1 -1
- package/apps/storefront/src/pages/api/admin/orders.ts +1 -1
- package/apps/storefront/src/pages/api/auth/logout.ts +2 -2
- package/apps/storefront/src/pages/api/auth/magic-exchange.ts +6 -6
- package/apps/storefront/src/pages/api/auth/send.ts +2 -2
- package/apps/storefront/src/pages/api/auth/step-up-send.ts +1 -1
- package/apps/storefront/src/pages/api/auth/step-up-verify.ts +3 -3
- package/apps/storefront/src/pages/api/auth/verify.ts +4 -4
- package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +2 -2
- package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +4 -4
- package/apps/storefront/src/pages/api/newsletter/confirm.ts +1 -1
- package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +1 -1
- package/apps/storefront/src/pages/api/rum/vitals.ts +2 -2
- package/apps/storefront/src/pages/api/tracking/interaction.ts +5 -5
- package/apps/storefront/src/pages/auth/login.astro +2 -2
- package/apps/storefront/src/pages/auth/magic.astro +1 -1
- package/apps/storefront/src/pages/blog/[slug].astro +2 -2
- package/apps/storefront/src/pages/blog/author/[author].astro +8 -8
- package/apps/storefront/src/pages/blog/category/[category].astro +8 -8
- package/apps/storefront/src/pages/blog/index.astro +4 -4
- package/apps/storefront/src/pages/blog/page/[n].astro +4 -4
- package/apps/storefront/src/pages/blog/tag/[tag].astro +8 -8
- package/apps/storefront/src/pages/cart.ts +1 -1
- package/apps/storefront/src/pages/collections/[handle].astro +7 -7
- package/apps/storefront/src/pages/collections/index.astro +4 -4
- package/apps/storefront/src/pages/index.astro +10 -10
- package/apps/storefront/src/pages/llms.txt.ts +2 -2
- package/apps/storefront/src/pages/products/[handle].astro +11 -11
- package/apps/storefront/src/pages/saved.astro +2 -2
- package/apps/storefront/src/pages/search.astro +5 -5
- package/apps/storefront/src/pages/sitemap.xml.ts +8 -8
- package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +24 -24
- package/apps/storefront/src/pages/style-guide/[tenant]/chrome/[theme].astro +2 -2
- package/apps/storefront/src/pages/style-guide/[tenant]/guide/[theme].astro +3 -3
- package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +3 -3
- package/apps/storefront/src/pages/style-guide/index.astro +1 -1
- package/apps/storefront/src/pages/the-build/[slug].astro +10 -10
- package/apps/storefront/src/pages/the-build/index.astro +5 -5
- package/apps/storefront/src/pages/the-build/page/[n].astro +5 -5
- package/apps/storefront/src/pages/the-build/rss.xml.ts +4 -4
- package/docs/widget-library-guide.md +36 -36
- package/package.json +1 -1
- package/packages/public-runtime/src/chrome.ts +4 -4
- package/packages/public-runtime/src/tracking-id-derivation.ts +1 -1
- package/scripts/dev/locate.mjs +1 -1
- package/apps/storefront/src/lib/admin/ai/index.ts +0 -6
- /package/apps/storefront/src/components/{auth → access/storefront/auth}/AuthBadge.astro +0 -0
- /package/apps/storefront/src/components/{Badge.astro → content/storefront/Badge.astro} +0 -0
- /package/apps/storefront/src/components/{EmptyState.astro → content/storefront/EmptyState.astro} +0 -0
- /package/apps/storefront/src/components/{Section.astro → content/storefront/Section.astro} +0 -0
- /package/apps/storefront/src/components/{chrome → content/storefront/chrome}/AnnouncementBar.astro +0 -0
- /package/apps/storefront/src/components/{commerce → content/storefront/commerce}/ArticleCard.astro +0 -0
- /package/apps/storefront/src/components/content/{NeedsReviewCallout.astro → storefront/content/NeedsReviewCallout.astro} +0 -0
- /package/apps/storefront/src/components/content/{ProseToc.astro → storefront/content/ProseToc.astro} +0 -0
- /package/apps/storefront/src/components/content/{RichText.astro → storefront/content/RichText.astro} +0 -0
- /package/apps/storefront/src/components/content/{TrustStrip.astro → storefront/content/TrustStrip.astro} +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/brokerAssertion.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/devAuth.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/gatePage.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/internalContentAuthority.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/mcpClientAssertion.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/operatorSession.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/route.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/session.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/stepUpChallenge.ts +0 -0
- /package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffVendorAccess.ts +0 -0
- /package/apps/storefront/src/lib/{dashboard → access/dashboard}/vendorQuery.ts +0 -0
- /package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/tenants.ts +0 -0
- /package/apps/storefront/src/lib/{privacy → access/privacy}/emailHint.ts +0 -0
- /package/apps/storefront/src/lib/{rate → access/rate}/kvWindow.ts +0 -0
- /package/apps/storefront/src/lib/{shared → access/shared}/capability.ts +0 -0
- /package/apps/storefront/src/lib/{cspStaticHashes.ts → access/shared/cspStaticHashes.ts} +0 -0
- /package/apps/storefront/src/lib/{demoGate.ts → access/shared/demoGate.ts} +0 -0
- /package/apps/storefront/src/lib/{maintenance.ts → access/shared/maintenance.ts} +0 -0
- /package/apps/storefront/src/lib/{securityHeaders.ts → access/shared/securityHeaders.ts} +0 -0
- /package/apps/storefront/src/lib/{tenantOrigins.ts → access/shared/tenantOrigins.ts} +0 -0
- /package/apps/storefront/src/lib/{tenantRouting.ts → access/shared/tenantRouting.ts} +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/approvalMode.ts +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/audit.ts +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/recommendation.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/collectionPaths.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/markdown.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/pagination.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/presentation.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/reactions.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/rss.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/teaser.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/types.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/viewCounts.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/ctaIdentity.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome-assignments.example.json +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome.example.json +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/managedCart.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/model.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/navCurrent.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/newsletterAgeAttestation.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/parseConfig.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/variant.ts +0 -0
- /package/apps/storefront/src/lib/{commerce → content/policies}/shippingPolicy.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/alternates.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/documentTitle.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/meta.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/urlForm.ts +0 -0
- /package/apps/storefront/src/lib/{asyncCss.ts → content/shared/asyncCss.ts} +0 -0
- /package/apps/storefront/src/lib/{colors.ts → content/shared/colors.ts} +0 -0
- /package/apps/storefront/src/lib/{format.ts → content/shared/format.ts} +0 -0
- /package/apps/storefront/src/lib/{i18n.ts → content/shared/i18n.ts} +0 -0
- /package/apps/storefront/src/lib/{jsonScript.ts → content/shared/jsonScript.ts} +0 -0
- /package/apps/storefront/src/lib/{placeholder.ts → content/shared/placeholder.ts} +0 -0
- /package/apps/storefront/src/lib/{sections.ts → content/shared/sections.ts} +0 -0
- /package/apps/storefront/src/lib/{styleGuidePaths.ts → content/shared/styleGuidePaths.ts} +0 -0
- /package/apps/storefront/src/lib/{the-build → content/the-build}/pagination.ts +0 -0
- /package/apps/storefront/src/lib/{the-build → content/the-build}/readingTime.ts +0 -0
- /package/apps/storefront/src/lib/{admin → developer-experience/admin}/seed.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/ai-widget-client.js +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/apiBase.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/ask.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/clickToSource.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/copyCommand.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/files.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/hostedActivity.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/infoPopover.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/mcpCopy.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/monitor.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/stepper.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/themeToggle.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/devDraft.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/obstacleStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/runtimeStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/storeStatus.ts +0 -0
- /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/regulated-commerce-truth/index.ts +0 -0
- /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/ws3-readonly-clone-preflight/index.ts +0 -0
- /package/apps/storefront/src/lib/{http → developer-experience/http}/fetchTransport.ts +0 -0
- /package/apps/storefront/src/lib/{http → developer-experience/http}/mcpServiceCall.ts +0 -0
- /package/apps/storefront/src/lib/{memoryKv.ts → developer-experience/shared/memoryKv.ts} +0 -0
- /package/apps/storefront/src/lib/{cloudflare-workers.d.ts → developer-experience/types/cloudflare-workers.d.ts} +0 -0
- /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/confirmationEmail.ts +0 -0
- /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/consent.ts +0 -0
- /package/apps/storefront/src/lib/{admin → measurement/admin}/consentSettingsClient.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → measurement/analytics}/index.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/attributionService.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/orderConversionD1.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/verifiedProviderMeasurement.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorAllowlist.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorIngest.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionHealth.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionSchema.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantReadAccess.ts +0 -0
- /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/rewriteTrackingIds.ts +0 -0
- /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/writebackCandidate.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/capture.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/consoleLine.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugConsole.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugMode.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugWindow.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/redact.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/reference.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/referenceStore.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/report.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/session.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/lighthouseReport.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/perfBudgets.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/rumAlert.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/webVitals.ts +0 -0
- /package/apps/storefront/src/lib/{health.ts → observability/shared/health.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AdminTenantEnvelope } from "../../admin/envelope";
|
|
2
|
-
import { memoizeByEnvelope } from "../../admin/memoizeByEnvelope";
|
|
3
|
-
import { pick, randomInt, seededRandom } from "../../admin/seed";
|
|
1
|
+
import type { AdminTenantEnvelope } from "../../access/admin/envelope";
|
|
2
|
+
import { memoizeByEnvelope } from "../../developer-experience/admin/memoizeByEnvelope";
|
|
3
|
+
import { pick, randomInt, seededRandom } from "../../developer-experience/admin/seed";
|
|
4
4
|
import type { AnalysisBriefItem, ReportingCategory, ReportingSummary, ReportingViewModel } from "../admin/viewmodels/reporting";
|
|
5
5
|
|
|
6
6
|
const CATEGORY_DEFS: { category: ReportingCategory; label: string; drilldownHref: string }[] = [
|
|
@@ -22,7 +22,7 @@ let workerEnv: Record<string, unknown> | null | undefined;
|
|
|
22
22
|
export async function getWorkerEnv(): Promise<Record<string, unknown> | null> {
|
|
23
23
|
if (workerEnv !== undefined) return workerEnv;
|
|
24
24
|
try {
|
|
25
|
-
// Only resolvable in the Workers runtime; types in lib/cloudflare-workers.d.ts.
|
|
25
|
+
// Only resolvable in the Workers runtime; types in lib/developer-experience/types/cloudflare-workers.d.ts.
|
|
26
26
|
const mod = await import("cloudflare:workers");
|
|
27
27
|
workerEnv = (mod.env ?? null) as Record<string, unknown> | null;
|
|
28
28
|
} catch {
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
isSubscriptionFrequency,
|
|
8
8
|
purchaseOptionPrice,
|
|
9
9
|
} from "@tot/public-runtime";
|
|
10
|
-
import type { AdminTenantEnvelope } from "../../admin/envelope";
|
|
11
|
-
import { memoizeByEnvelope } from "../../admin/memoizeByEnvelope";
|
|
10
|
+
import type { AdminTenantEnvelope } from "../../access/admin/envelope";
|
|
11
|
+
import { memoizeByEnvelope } from "../../developer-experience/admin/memoizeByEnvelope";
|
|
12
12
|
import {
|
|
13
13
|
MOCK_ANCHOR_ISO,
|
|
14
14
|
offsetIso,
|
|
15
15
|
randomInt,
|
|
16
16
|
seededRandom,
|
|
17
|
-
} from "../../admin/seed";
|
|
17
|
+
} from "../../developer-experience/admin/seed";
|
|
18
18
|
import type { CustomerRow } from "../../customers/admin/viewmodels/customers";
|
|
19
19
|
import type { ProductDetail, ProductRow } from "../../catalog/admin/viewmodels/products";
|
|
20
20
|
import type {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import type { APIContext, MiddlewareNext } from "astro";
|
|
10
10
|
import { readEnv, readD1, readKv } from "@/lib/env";
|
|
11
11
|
import { fromD1, type D1Like } from "@/lib/catalog/d1/catalog";
|
|
12
|
-
import { readCurrentTenantConsentConfig } from "@/lib/
|
|
12
|
+
import { readCurrentTenantConsentConfig } from "@/lib/measurement/consent/consentConfigRead";
|
|
13
13
|
import { loadActiveManagedInstallDeclarations } from "@/lib/integrations/integration/managedInstallDeclarations";
|
|
14
14
|
import { buildTenantConsentBroker, verifyPreviewToken } from "@tot/public-runtime";
|
|
15
15
|
import { tenantIsDeclaredPublic } from "@/config/tenants";
|
|
@@ -30,14 +30,14 @@ import {
|
|
|
30
30
|
sessionAdmitsHost,
|
|
31
31
|
sessionHostCapability,
|
|
32
32
|
type GateMode,
|
|
33
|
-
} from "@/lib/auth/loginGate";
|
|
34
|
-
import { resolveAdminLanding, isAdminSelectPath } from "@/lib/auth/adminLanding";
|
|
35
|
-
import { resolveAdminTenantMode } from "@/lib/adminTenantEnvelope";
|
|
36
|
-
import { gatedApiResponse, gatedHoldingResponse } from "@/lib/auth/gatePage";
|
|
37
|
-
import { readSession, KvSessionStore, SESSION_COOKIE } from "@/lib/auth/session";
|
|
33
|
+
} from "@/lib/access/auth/loginGate";
|
|
34
|
+
import { resolveAdminLanding, isAdminSelectPath } from "@/lib/access/auth/adminLanding";
|
|
35
|
+
import { resolveAdminTenantMode } from "@/lib/access/shared/adminTenantEnvelope";
|
|
36
|
+
import { gatedApiResponse, gatedHoldingResponse } from "@/lib/access/auth/gatePage";
|
|
37
|
+
import { readSession, KvSessionStore, SESSION_COOKIE } from "@/lib/access/auth/session";
|
|
38
38
|
import { runRenderChain } from "./renderChain.js";
|
|
39
39
|
import { resolveCandidateContentPin } from "./candidatePin.js";
|
|
40
|
-
import type { InternalContentGrant } from "@/lib/auth/internalContentAuthority";
|
|
40
|
+
import type { InternalContentGrant } from "@/lib/access/auth/internalContentAuthority";
|
|
41
41
|
|
|
42
42
|
export interface ControlPlaneInput {
|
|
43
43
|
context: APIContext;
|
|
@@ -23,19 +23,19 @@ import { defineMiddleware } from "astro:middleware";
|
|
|
23
23
|
import type { APIContext, MiddlewareNext } from "astro";
|
|
24
24
|
import { getTenantResolver } from "@/config/resolver";
|
|
25
25
|
import { readEnv, readKv, readR2 } from "@/lib/runtimeEnv";
|
|
26
|
-
import { resolveCdnForwardRouting, resolveTenantRouting } from "@/lib/tenantRouting";
|
|
26
|
+
import { resolveCdnForwardRouting, resolveTenantRouting } from "@/lib/access/shared/tenantRouting";
|
|
27
27
|
import { crossSiteFormRefusal, verifyCdnForward } from "@/lib/cdnForward";
|
|
28
28
|
import { compileRouteTierIndexV1, resolvePublicationRoutePlanV1, type RouteTierIndexV1 , storefrontModeRequiresSignIn } from "@tot/public-runtime";
|
|
29
29
|
import type { PublicationArtifactBucketV1, TenantConfig } from "@tot/public-runtime";
|
|
30
|
-
import { DEV_DRAFT_COOKIE } from "@/lib/dev/devDraft";
|
|
31
|
-
import { applySecurityHeaders } from "@/lib/securityHeaders";
|
|
30
|
+
import { DEV_DRAFT_COOKIE } from "@/lib/developer-experience/dev/devDraft";
|
|
31
|
+
import { applySecurityHeaders } from "@/lib/access/shared/securityHeaders";
|
|
32
32
|
import { visitorRegionFor, withVisitorRegionCookie } from "@/lib/compliance/shared/visitorRegionCookie";
|
|
33
33
|
import { tryServeStaticBundle } from "./staticBundle.js";
|
|
34
34
|
import { resolveCandidateContentPin } from "./candidatePin.js";
|
|
35
|
-
import { parseGateMode } from "@/lib/auth/loginGate";
|
|
36
|
-
import { evaluateDemoGate, hostInGateList } from "@/lib/demoGate";
|
|
37
|
-
import { isMaintenanceOn, maintenanceResponse } from "@/lib/maintenance";
|
|
38
|
-
import { HEALTH_PATH, healthResponse } from "@/lib/health";
|
|
35
|
+
import { parseGateMode } from "@/lib/access/auth/loginGate";
|
|
36
|
+
import { evaluateDemoGate, hostInGateList } from "@/lib/access/shared/demoGate";
|
|
37
|
+
import { isMaintenanceOn, maintenanceResponse } from "@/lib/access/shared/maintenance";
|
|
38
|
+
import { HEALTH_PATH, healthResponse } from "@/lib/observability/shared/health";
|
|
39
39
|
import { observeDeployVersion } from "@/lib/activity/deployVersion";
|
|
40
40
|
import { primeActivityKillSwitch } from "@/lib/activity/killSwitch";
|
|
41
41
|
import {
|
|
@@ -46,13 +46,13 @@ import {
|
|
|
46
46
|
} from "./routeBranch.js";
|
|
47
47
|
import { servePublicRender } from "./publicRender.js";
|
|
48
48
|
import { serveControlPlane } from "./controlPlane.js";
|
|
49
|
-
import { KvSessionStore, SESSION_COOKIE } from "@/lib/auth/session";
|
|
50
|
-
import { mintOpaqueBrokerAssertion } from "@/lib/auth/brokerAssertion";
|
|
49
|
+
import { KvSessionStore, SESSION_COOKIE } from "@/lib/access/auth/session";
|
|
50
|
+
import { mintOpaqueBrokerAssertion } from "@/lib/access/auth/brokerAssertion";
|
|
51
51
|
import {
|
|
52
52
|
applyInternalContentResponsePolicy,
|
|
53
53
|
authorizeInternalContentRequest,
|
|
54
54
|
type InternalContentGrant,
|
|
55
|
-
} from "@/lib/auth/internalContentAuthority";
|
|
55
|
+
} from "@/lib/access/auth/internalContentAuthority";
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* Compiled once per tenant-config object, as the resolver's contract asks —
|
|
@@ -109,7 +109,7 @@ async function serveRequest(
|
|
|
109
109
|
// ---- /health — liveness + deploy-identity probe ---------------------------
|
|
110
110
|
// Answered FIRST: before tenant resolution, the access gate, the maintenance
|
|
111
111
|
// kill-switch, and the edge cache — so it reports the running build's commit SHA
|
|
112
|
-
// regardless of Host, an unresolved tenant, or a closed site. See lib/health.
|
|
112
|
+
// regardless of Host, an unresolved tenant, or a closed site. See lib/observability/shared/health.
|
|
113
113
|
if (url.pathname === HEALTH_PATH) {
|
|
114
114
|
return healthResponse();
|
|
115
115
|
}
|
|
@@ -16,10 +16,10 @@ import { readEnv, readR2 } from "@/lib/runtimeEnv";
|
|
|
16
16
|
import { tryServeStaticBundle } from "./staticBundle.js";
|
|
17
17
|
import { isPlatformPublicDiscoveryPath } from "./routeBranch.js";
|
|
18
18
|
import { resolveCandidateContentPin, type CandidateContentPin } from "./candidatePin.js";
|
|
19
|
-
import { createContentProvider, DevDraftContentProvider } from "@/lib/storyblok/provider";
|
|
19
|
+
import { createContentProvider, DevDraftContentProvider } from "@/lib/content/storyblok/provider";
|
|
20
20
|
import { bindPublicationSpaceContentProviderV1 } from "@/lib/publication/contentProvider.js";
|
|
21
21
|
import { resolvePublicationRuntimeSourceV1 } from "@/lib/publication/runtimeSource.js";
|
|
22
|
-
import { DEV_DRAFT_COOKIE, devDraftKey, verifyDevDraftToken } from "@/lib/dev/devDraft";
|
|
22
|
+
import { DEV_DRAFT_COOKIE, devDraftKey, verifyDevDraftToken } from "@/lib/developer-experience/dev/devDraft";
|
|
23
23
|
import {
|
|
24
24
|
isCacheablePath,
|
|
25
25
|
pageCacheKey,
|
|
@@ -27,8 +27,8 @@ import {
|
|
|
27
27
|
getCachedPage,
|
|
28
28
|
putCachedPage,
|
|
29
29
|
} from "@/lib/edgeCache";
|
|
30
|
-
import { STATIC_SCRIPT_HASHES, STATIC_STYLE_HASHES } from "@/lib/cspStaticHashes";
|
|
31
|
-
import { applySecurityHeaders } from "@/lib/securityHeaders";
|
|
30
|
+
import { STATIC_SCRIPT_HASHES, STATIC_STYLE_HASHES } from "@/lib/access/shared/cspStaticHashes";
|
|
31
|
+
import { applySecurityHeaders } from "@/lib/access/shared/securityHeaders";
|
|
32
32
|
import { maybeInjectPreviewReload } from "@/lib/previewReload";
|
|
33
33
|
import {
|
|
34
34
|
resolveCustomizationEnv,
|
|
@@ -104,13 +104,13 @@ import {
|
|
|
104
104
|
} from "@/lib/integrations/integration/renderIntegrationState";
|
|
105
105
|
import { recordActivity } from "@/lib/activity/recordActivity";
|
|
106
106
|
import { middlewareRewriteTargetV1 } from "./routeBranch.js";
|
|
107
|
-
import { declaredTenantOrigins } from "@/lib/tenantOrigins";
|
|
107
|
+
import { declaredTenantOrigins } from "@/lib/access/shared/tenantOrigins";
|
|
108
108
|
import { withDeclaredTenantConfig } from "@/config/declaredTenantConfig";
|
|
109
109
|
import {
|
|
110
110
|
applyInternalContentResponsePolicy,
|
|
111
111
|
internalContentGrantMatchesPlan,
|
|
112
112
|
type InternalContentGrant,
|
|
113
|
-
} from "@/lib/auth/internalContentAuthority";
|
|
113
|
+
} from "@/lib/access/auth/internalContentAuthority";
|
|
114
114
|
|
|
115
115
|
export interface RenderChainInput {
|
|
116
116
|
context: APIContext;
|
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
* prefixes so a stray slug can never shadow a real route.
|
|
7
7
|
*/
|
|
8
8
|
import Layout from "@/layouts/Layout.astro";
|
|
9
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
10
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
11
|
-
import ProseSections from "@/components/content/ProseSections.astro";
|
|
12
|
-
import ProseToc from "@/components/content/ProseToc.astro";
|
|
13
|
-
import { breadcrumbLd } from "@/lib/jsonld";
|
|
14
|
-
import { truncate } from "@/lib/format";
|
|
15
|
-
import { faqFromHtml, faqFromSections } from "@/lib/seo/faqItems";
|
|
16
|
-
import { rawHtmlPolicy, rawHtmlResponse, rawPageCanonicalUrl } from "@/lib/rawMarketingHtml";
|
|
9
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
10
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
11
|
+
import ProseSections from "@/components/content/storefront/content/ProseSections.astro";
|
|
12
|
+
import ProseToc from "@/components/content/storefront/content/ProseToc.astro";
|
|
13
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld";
|
|
14
|
+
import { truncate } from "@/lib/content/shared/format";
|
|
15
|
+
import { faqFromHtml, faqFromSections } from "@/lib/content/seo/faqItems";
|
|
16
|
+
import { rawHtmlPolicy, rawHtmlResponse, rawPageCanonicalUrl } from "@/lib/content/shared/rawMarketingHtml";
|
|
17
17
|
import { renderRawComplianceTop, renderRawComplianceBottom } from "@/lib/compliance/rawComplianceNotices";
|
|
18
|
-
import { styleGuideAliasRewrite } from "@/lib/styleGuidePaths";
|
|
19
|
-
import { getBlogSettings } from "@/lib/blog/provider.js";
|
|
20
|
-
import { loadBlogPostViewV1, type BlogPostViewPropsV1 } from "@/lib/blog/postView.js";
|
|
21
|
-
import BlogPostArticle from "@/components/blog/BlogPostArticle.astro";
|
|
18
|
+
import { styleGuideAliasRewrite } from "@/lib/content/shared/styleGuidePaths";
|
|
19
|
+
import { getBlogSettings } from "@/lib/content/blog/provider.js";
|
|
20
|
+
import { loadBlogPostViewV1, type BlogPostViewPropsV1 } from "@/lib/content/blog/postView.js";
|
|
21
|
+
import BlogPostArticle from "@/components/content/storefront/blog/BlogPostArticle.astro";
|
|
22
22
|
|
|
23
23
|
const { tenant, canonicalBase, content, basePath, apiBasePath, capabilities, features } =
|
|
24
24
|
Astro.locals;
|
|
@@ -45,7 +45,7 @@ if (styleGuideTarget !== undefined) {
|
|
|
45
45
|
return Astro.rewrite(styleGuideTarget);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
// A tenant that declares `BlogSettings.postsAtRoot` (see lib/blog/types.ts) serves its
|
|
48
|
+
// A tenant that declares `BlogSettings.postsAtRoot` (see lib/content/blog/types.ts) serves its
|
|
49
49
|
// individual posts at the site root — a single-segment slug tries the blog collection
|
|
50
50
|
// before falling through to a raw marketing page or a CMS page. Multi-segment slugs are
|
|
51
51
|
// never posts, so this never shadows a nested marketing/CMS path.
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* ops-timeline; never a URL/query value.
|
|
26
26
|
*/
|
|
27
27
|
import type { APIContext } from "astro";
|
|
28
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
28
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
29
29
|
import { readD1 } from "@/lib/env";
|
|
30
30
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
31
31
|
import { checkActivityAlerts } from "@/lib/activity/alerts";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* surface has no ledger, so configured, absent, and unreadable stay unhealthy.
|
|
10
10
|
*/
|
|
11
11
|
import type { APIContext } from "astro";
|
|
12
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
12
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
13
13
|
import { workerCommit } from "@/lib/activity/workerCommit";
|
|
14
14
|
import {
|
|
15
15
|
COMMERCE_SCHEDULER,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Authenticated owner API for whole-order batch claim and batch read.
|
|
3
3
|
*/
|
|
4
4
|
import type { APIContext } from "astro";
|
|
5
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
5
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
6
6
|
import {
|
|
7
7
|
fulfillmentResultResponse,
|
|
8
8
|
isOpaqueId,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* The read runs only after the owner gate admits the caller.
|
|
4
4
|
*/
|
|
5
5
|
import type { APIContext } from "astro";
|
|
6
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
6
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
7
7
|
import {
|
|
8
8
|
fulfillmentResultResponse,
|
|
9
9
|
isOpaqueId,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* The response is state codes and the fulfillment view. It never returns an address.
|
|
4
4
|
*/
|
|
5
5
|
import type { APIContext } from "astro";
|
|
6
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
6
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
7
7
|
import {
|
|
8
8
|
fulfillmentResultResponse,
|
|
9
9
|
isOpaqueId,
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
* scoping) — see the unit's completion report for the reasoning.
|
|
29
29
|
*/
|
|
30
30
|
import type { APIContext } from "astro";
|
|
31
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
31
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
32
32
|
import { readD1 } from "@/lib/env";
|
|
33
33
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
34
|
-
import { resolveTenantStore, trackingNamePrefix } from "@/lib/tracking/tenantD1Registry";
|
|
35
|
-
import { readD1Control } from "@/lib/tracking/d1Control";
|
|
36
|
-
import { readTenantInteractionInsights } from "@/lib/tracking/tenantReadAccess";
|
|
34
|
+
import { resolveTenantStore, trackingNamePrefix } from "@/lib/measurement/tracking/tenantD1Registry";
|
|
35
|
+
import { readD1Control } from "@/lib/measurement/tracking/d1Control";
|
|
36
|
+
import { readTenantInteractionInsights } from "@/lib/measurement/tracking/tenantReadAccess";
|
|
37
37
|
|
|
38
38
|
export const prerender = false;
|
|
39
39
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { APIContext } from "astro";
|
|
10
10
|
import { readEnv } from "@/lib/env";
|
|
11
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
11
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
12
12
|
import {
|
|
13
13
|
commerceActorForAdmin,
|
|
14
14
|
createCheckoutOrderClient,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { APIContext } from "astro";
|
|
13
13
|
import { readEnv } from "@/lib/env";
|
|
14
|
-
import { requireAdminApiEntry } from "@/lib/auth/adminApiGuard";
|
|
14
|
+
import { requireAdminApiEntry } from "@/lib/access/auth/adminApiGuard";
|
|
15
15
|
import {
|
|
16
16
|
createCheckoutOrderClient,
|
|
17
17
|
orderApiBaseUrl,
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* sign out.
|
|
8
8
|
*/
|
|
9
9
|
import type { APIContext } from "astro";
|
|
10
|
-
import { getSessionStore, clearSessionCookie } from "@/lib/auth/route";
|
|
11
|
-
import { revokeSession, SESSION_COOKIE } from "@/lib/auth/session";
|
|
10
|
+
import { getSessionStore, clearSessionCookie } from "@/lib/access/auth/route";
|
|
11
|
+
import { revokeSession, SESSION_COOKIE } from "@/lib/access/auth/session";
|
|
12
12
|
|
|
13
13
|
export const prerender = false;
|
|
14
14
|
|
|
@@ -18,15 +18,15 @@ import {
|
|
|
18
18
|
getSessionStore,
|
|
19
19
|
setSessionCookie,
|
|
20
20
|
safeNext,
|
|
21
|
-
} from "@/lib/auth/route";
|
|
21
|
+
} from "@/lib/access/auth/route";
|
|
22
22
|
import {
|
|
23
23
|
getFederatedVerifier,
|
|
24
24
|
sessionFromFederatedClaims,
|
|
25
|
-
} from "@/lib/auth/identityToken";
|
|
26
|
-
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/auth/session";
|
|
27
|
-
import { normalizeEmailHint } from "@/lib/privacy/emailHint";
|
|
28
|
-
import { acceptDeveloperInvite } from "@/lib/shared/developerInvites";
|
|
29
|
-
import { explainDeveloperAccess } from "@/lib/shared/accessExplain";
|
|
25
|
+
} from "@/lib/access/auth/identityToken";
|
|
26
|
+
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/access/auth/session";
|
|
27
|
+
import { normalizeEmailHint } from "@/lib/access/privacy/emailHint";
|
|
28
|
+
import { acceptDeveloperInvite } from "@/lib/access/shared/developerInvites";
|
|
29
|
+
import { explainDeveloperAccess } from "@/lib/access/shared/accessExplain";
|
|
30
30
|
|
|
31
31
|
export const prerender = false;
|
|
32
32
|
|
|
@@ -15,13 +15,13 @@ import {
|
|
|
15
15
|
getAccessClient,
|
|
16
16
|
safeNext,
|
|
17
17
|
loginRedirect,
|
|
18
|
-
} from "@/lib/auth/route";
|
|
18
|
+
} from "@/lib/access/auth/route";
|
|
19
19
|
import {
|
|
20
20
|
devAuthEnabled,
|
|
21
21
|
devAuthCode,
|
|
22
22
|
storeDevCode,
|
|
23
23
|
DEV_AUTH_CODE_TTL_SECONDS,
|
|
24
|
-
} from "@/lib/auth/devAuth";
|
|
24
|
+
} from "@/lib/access/auth/devAuth";
|
|
25
25
|
|
|
26
26
|
export const prerender = false;
|
|
27
27
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* but also accepts a plain form post so a no-JS fallback stays possible.
|
|
14
14
|
*/
|
|
15
15
|
import type { APIContext } from "astro";
|
|
16
|
-
import { getAccessClient } from "@/lib/auth/route";
|
|
16
|
+
import { getAccessClient } from "@/lib/access/auth/route";
|
|
17
17
|
|
|
18
18
|
export const prerender = false;
|
|
19
19
|
|
|
@@ -22,9 +22,9 @@ import {
|
|
|
22
22
|
setSessionCookie,
|
|
23
23
|
safeNext,
|
|
24
24
|
loginRedirect,
|
|
25
|
-
} from "@/lib/auth/route";
|
|
26
|
-
import { getFederatedVerifier, sessionFromFederatedClaims } from "@/lib/auth/identityToken";
|
|
27
|
-
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/auth/session";
|
|
25
|
+
} from "@/lib/access/auth/route";
|
|
26
|
+
import { getFederatedVerifier, sessionFromFederatedClaims } from "@/lib/access/auth/identityToken";
|
|
27
|
+
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/access/auth/session";
|
|
28
28
|
|
|
29
29
|
export const prerender = false;
|
|
30
30
|
|
|
@@ -21,13 +21,13 @@ import {
|
|
|
21
21
|
setSessionCookie,
|
|
22
22
|
safeNext,
|
|
23
23
|
loginRedirect,
|
|
24
|
-
} from "@/lib/auth/route";
|
|
24
|
+
} from "@/lib/access/auth/route";
|
|
25
25
|
import {
|
|
26
26
|
getFederatedVerifier,
|
|
27
27
|
sessionFromFederatedClaims,
|
|
28
|
-
} from "@/lib/auth/identityToken";
|
|
29
|
-
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/auth/session";
|
|
30
|
-
import { devAuthEnabled, consumeDevCode, devSessionFields } from "@/lib/auth/devAuth";
|
|
28
|
+
} from "@/lib/access/auth/identityToken";
|
|
29
|
+
import { createSession, DEFAULT_SESSION_TTL_SECONDS } from "@/lib/access/auth/session";
|
|
30
|
+
import { devAuthEnabled, consumeDevCode, devSessionFields } from "@/lib/access/auth/devAuth";
|
|
31
31
|
|
|
32
32
|
export const prerender = false;
|
|
33
33
|
|
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
isReaction,
|
|
19
19
|
recordReaction,
|
|
20
20
|
type Reaction,
|
|
21
|
-
} from "@/lib/blog/reactions";
|
|
22
|
-
import { checkRateLimit } from "@/lib/rate/kvWindow";
|
|
21
|
+
} from "@/lib/content/blog/reactions";
|
|
22
|
+
import { checkRateLimit } from "@/lib/access/rate/kvWindow";
|
|
23
23
|
|
|
24
24
|
export const prerender = false;
|
|
25
25
|
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
import type { APIRoute } from "astro";
|
|
18
18
|
import { readD1, readKv, readEnv } from "@/lib/env";
|
|
19
19
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
20
|
-
import { checkRateLimit } from "@/lib/rate/kvWindow";
|
|
21
|
-
import { NewsletterSubscribersStore } from "@/lib/newsletter/subscribers";
|
|
22
|
-
import { randomToken, hashConsentIp } from "@/lib/newsletter/consent";
|
|
23
|
-
import { sendConfirmationEmail } from "@/lib/newsletter/confirmationEmail";
|
|
20
|
+
import { checkRateLimit } from "@/lib/access/rate/kvWindow";
|
|
21
|
+
import { NewsletterSubscribersStore } from "@/lib/engagement/newsletter/subscribers";
|
|
22
|
+
import { randomToken, hashConsentIp } from "@/lib/engagement/newsletter/consent";
|
|
23
|
+
import { sendConfirmationEmail } from "@/lib/engagement/newsletter/confirmationEmail";
|
|
24
24
|
|
|
25
25
|
export const prerender = false;
|
|
26
26
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import type { APIRoute } from "astro";
|
|
13
13
|
import { readD1 } from "@/lib/env";
|
|
14
14
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
15
|
-
import { NewsletterSubscribersStore } from "@/lib/newsletter/subscribers";
|
|
15
|
+
import { NewsletterSubscribersStore } from "@/lib/engagement/newsletter/subscribers";
|
|
16
16
|
|
|
17
17
|
export const prerender = false;
|
|
18
18
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import type { APIContext } from "astro";
|
|
22
22
|
import { readD1 } from "@/lib/env";
|
|
23
23
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
24
|
-
import { unsubscribeByToken } from "@/lib/newsletter/subscribers";
|
|
24
|
+
import { unsubscribeByToken } from "@/lib/engagement/newsletter/subscribers";
|
|
25
25
|
|
|
26
26
|
export const prerender = false;
|
|
27
27
|
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* store/forward is the documented follow-up; the SHAPE it stores is fixed here.
|
|
14
14
|
*/
|
|
15
15
|
import type { APIRoute } from "astro";
|
|
16
|
-
import { rateMetric, type WebVitalName, type WebVitalsSample } from "@/lib/
|
|
16
|
+
import { rateMetric, type WebVitalName, type WebVitalsSample } from "@/lib/observability/performance/webVitals";
|
|
17
17
|
import { readKv, runAfterResponse, type CfExecutionContextLike } from "@/lib/env";
|
|
18
|
-
import { recordBlogView } from "@/lib/blog/viewCounts";
|
|
18
|
+
import { recordBlogView } from "@/lib/content/blog/viewCounts";
|
|
19
19
|
|
|
20
20
|
export const prerender = false;
|
|
21
21
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* POST /api/tracking/interaction (dt-collector-v1) — the beacon sink for
|
|
3
3
|
* declarative interaction tracking.
|
|
4
4
|
*
|
|
5
|
-
* The browser collector (`@/lib/tracking/interactionCollector`) batches
|
|
5
|
+
* The browser collector (`@/lib/measurement/tracking/interactionCollector`) batches
|
|
6
6
|
* `TotInteraction`s captured off `installInteractionTracking` /
|
|
7
7
|
* `onInteraction` (`@tot/public-runtime`) — via `dt-consent-environment-gate`'s
|
|
8
8
|
* consent/environment wrapper in front of it — and POSTs them here with
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
import type { APIContext } from "astro";
|
|
40
40
|
import { readD1, readAnalytics, runAfterResponse, type CfExecutionContextLike } from "@/lib/env";
|
|
41
41
|
import { fromD1 } from "@/lib/catalog/d1/catalog";
|
|
42
|
-
import { ingestInteractions, type StampedInteractionEvent } from "@/lib/tracking/collectorIngest";
|
|
43
|
-
import { readD1Control } from "@/lib/tracking/d1Control";
|
|
44
|
-
import { resolveTenantStore, trackingNamePrefix } from "@/lib/tracking/tenantD1Registry";
|
|
45
|
-
import { persistInteractions } from "@/lib/tracking/interactionStore";
|
|
42
|
+
import { ingestInteractions, type StampedInteractionEvent } from "@/lib/measurement/tracking/collectorIngest";
|
|
43
|
+
import { readD1Control } from "@/lib/measurement/tracking/d1Control";
|
|
44
|
+
import { resolveTenantStore, trackingNamePrefix } from "@/lib/measurement/tracking/tenantD1Registry";
|
|
45
|
+
import { persistInteractions } from "@/lib/measurement/tracking/interactionStore";
|
|
46
46
|
import type { AnalyticsEngineLike } from "@/lib/activity/store";
|
|
47
47
|
|
|
48
48
|
export const prerender = false;
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* (tot20 sends/verifies the code, the storefront mints the session). No secrets
|
|
11
11
|
* reach the browser. Inline style carries the per-request CSP nonce.
|
|
12
12
|
*/
|
|
13
|
-
import { normalizeEmailHint } from "@/lib/privacy/emailHint";
|
|
14
|
-
import { safeNext } from "@/lib/auth/route";
|
|
13
|
+
import { normalizeEmailHint } from "@/lib/access/privacy/emailHint";
|
|
14
|
+
import { safeNext } from "@/lib/access/auth/route";
|
|
15
15
|
// Self-hosted web fonts (audit finding 6) — same-origin @fontsource, replacing
|
|
16
16
|
// the render-blocking fonts.googleapis.com stylesheet. Covers Plus Jakarta Sans,
|
|
17
17
|
// Inter, and JetBrains Mono used by this page's inline styles.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* the token before the user ever clicked. So: NEVER exchange on GET. The token rides
|
|
10
10
|
* in a hidden form field and leaves only via the POST.
|
|
11
11
|
*/
|
|
12
|
-
import { normalizeEmailHint, redactEmailForHint } from "@/lib/privacy/emailHint";
|
|
12
|
+
import { normalizeEmailHint, redactEmailForHint } from "@/lib/access/privacy/emailHint";
|
|
13
13
|
// Self-hosted web fonts (audit finding 6) — same-origin @fontsource, replacing
|
|
14
14
|
// the render-blocking fonts.googleapis.com stylesheet. Covers Plus Jakarta Sans,
|
|
15
15
|
// Inter, and JetBrains Mono used by this page's inline styles.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
import BlogPostArticle from "@/components/blog/BlogPostArticle.astro";
|
|
3
|
-
import { loadBlogPostViewV1 } from "@/lib/blog/postView.js";
|
|
2
|
+
import BlogPostArticle from "@/components/content/storefront/blog/BlogPostArticle.astro";
|
|
3
|
+
import { loadBlogPostViewV1 } from "@/lib/content/blog/postView.js";
|
|
4
4
|
|
|
5
5
|
// These redirects also exist in the published artifact: the publication composition lifts this
|
|
6
6
|
// file into the space's `routes.aliases`, which reach the CDN plane through the live pointer. The
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import Layout from "@/layouts/Layout.astro";
|
|
3
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
4
|
-
import PostAccessBadge from "@/components/blog/PostAccessBadge.astro";
|
|
5
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
6
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
7
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
8
|
-
import { authorSlug, getAuthors } from "@/lib/blog/collection.js";
|
|
9
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
10
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
3
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
4
|
+
import PostAccessBadge from "@/components/content/storefront/blog/PostAccessBadge.astro";
|
|
5
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
6
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
7
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
8
|
+
import { authorSlug, getAuthors } from "@/lib/content/blog/collection.js";
|
|
9
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
10
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
11
11
|
|
|
12
12
|
// Author archive for the `/blog` collection. Lists exactly the posts whose
|
|
13
13
|
// bylines link here (same source as /blog/index.astro + /blog/[slug].astro),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import Layout from "@/layouts/Layout.astro";
|
|
3
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
4
|
-
import PostGrid from "@/components/blog/PostGrid.astro";
|
|
5
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
6
|
-
import { collectPostsByTerm } from "@/lib/blog/collection.js";
|
|
7
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
8
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
9
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
10
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
3
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
4
|
+
import PostGrid from "@/components/content/storefront/blog/PostGrid.astro";
|
|
5
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
6
|
+
import { collectPostsByTerm } from "@/lib/content/blog/collection.js";
|
|
7
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
8
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
9
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
10
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
11
11
|
|
|
12
12
|
const { tenant, basePath, canonicalBase, content, publicationTimestamp } = Astro.locals;
|
|
13
13
|
const param = Astro.params.category ?? "";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
import BlogIndexView from "@/components/blog/BlogIndexView.astro";
|
|
3
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
4
|
-
import { paginateBlogPosts, resolveBlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
5
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
2
|
+
import BlogIndexView from "@/components/content/storefront/blog/BlogIndexView.astro";
|
|
3
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
4
|
+
import { paginateBlogPosts, resolveBlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
5
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
6
6
|
|
|
7
7
|
const { tenant, basePath, canonicalBase, content, publicationTimestamp } = Astro.locals;
|
|
8
8
|
const posts = await listBlogPosts(tenant.tenant_id, content, publicationTimestamp);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// /blog/page/<n>/ — page N≥2 of the blog index. Page 1 lives at /blog/
|
|
3
3
|
// (src/pages/blog/index.astro); both render through the same BlogIndexView so the
|
|
4
4
|
// tenant-copy + pagination contract can't drift between the two routes.
|
|
5
|
-
import BlogIndexView from "@/components/blog/BlogIndexView.astro";
|
|
6
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
7
|
-
import { paginateBlogPosts, parseBlogPageParam, resolveBlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
8
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
5
|
+
import BlogIndexView from "@/components/content/storefront/blog/BlogIndexView.astro";
|
|
6
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
7
|
+
import { paginateBlogPosts, parseBlogPageParam, resolveBlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
8
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
9
9
|
|
|
10
10
|
const page = parseBlogPageParam(Astro.params.n);
|
|
11
11
|
if (page === null) return new Response(null, { status: 404 });
|