@tokenoftrust/storefront-runner 1.4.2-rc.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/storefront/astro.config.mjs +3 -3
- package/apps/storefront/env.d.ts +54 -5
- package/apps/storefront/integrations/materialize-guard.mjs +12 -14
- package/apps/storefront/migrations-apps/0004_deep_morph.sql +36 -0
- package/apps/storefront/migrations-apps/0005_common_mystique.sql +23 -0
- package/apps/storefront/migrations-apps/0006_broad_microchip.sql +16 -0
- package/apps/storefront/migrations-apps/0007_brave_outlaw_kid.sql +15 -0
- package/apps/storefront/migrations-apps/0008_blue_dazzler.sql +11 -0
- package/apps/storefront/migrations-apps/0009_bored_shinobi_shaw.sql +15 -0
- package/apps/storefront/migrations-apps/0010_ws4_verified_provider_measurement.sql +35 -0
- package/apps/storefront/migrations-apps/meta/0004_snapshot.json +1474 -0
- package/apps/storefront/migrations-apps/meta/0005_snapshot.json +1617 -0
- package/apps/storefront/migrations-apps/meta/0006_snapshot.json +1716 -0
- package/apps/storefront/migrations-apps/meta/0007_snapshot.json +1812 -0
- package/apps/storefront/migrations-apps/meta/0008_snapshot.json +1881 -0
- package/apps/storefront/migrations-apps/meta/0009_snapshot.json +1979 -0
- package/apps/storefront/migrations-apps/meta/_journal.json +42 -0
- package/apps/storefront/public/apps/tot.demo.analytics/0.1.0/entry.js +42 -0
- package/apps/storefront/public/platform/amplitude-http/v1/entry.mjs +19 -0
- package/apps/storefront/public/platform/google-measurement/v1/entry.mjs +19 -0
- package/apps/storefront/public/shared/commerce-chrome.css +20 -2
- package/apps/storefront/scripts/build-v84-clean-clone-standalone.mjs +68 -0
- package/apps/storefront/scripts/deny-v84-clean-clone-standalone-capabilities.mjs +111 -0
- package/apps/storefront/scripts/deny-v84-dogfood-capabilities.mjs +2 -0
- package/apps/storefront/scripts/deny-v84-lifecycle-capabilities.mjs +247 -0
- package/apps/storefront/scripts/dogfood-v84-nonportable-routes.ts +73 -0
- package/apps/storefront/scripts/fixed-v84-native-install-producer.ts +79 -0
- package/apps/storefront/scripts/generated/v84-clean-clone-replay.bundle.mjs +10982 -0
- package/apps/storefront/scripts/import-v84-through-ws2.ts +38 -0
- package/apps/storefront/scripts/initialize-v84-lifecycle-tooling-dependency.ts +2 -0
- package/apps/storefront/scripts/initialize-v84-lifecycle-tooling.ts +4 -0
- package/apps/storefront/scripts/install-v84-native-through-ws1.ts +185 -0
- package/apps/storefront/scripts/prove-clone-isolation.ts +506 -0
- package/apps/storefront/scripts/replay-v84-clean-clone-pass.ts +148 -0
- package/apps/storefront/scripts/replay-v84-clean-clone-standalone.ts +35 -0
- package/apps/storefront/scripts/replay-v84-clean-clone.ts +214 -0
- package/apps/storefront/scripts/run-fixed-v84-native-install-producer.mjs +18 -0
- package/apps/storefront/scripts/run-v84-clone-isolation-proof.mjs +18 -0
- package/apps/storefront/scripts/run-v84-clone-lifecycle-proof.mjs +18 -0
- package/apps/storefront/scripts/run-v84-import-through-ws2-proof.mjs +17 -0
- package/apps/storefront/scripts/run-v84-nonportable-route-dogfood.mjs +15 -0
- package/apps/storefront/scripts/sanitize-v84-proof-environment.mjs +21 -0
- package/apps/storefront/scripts/v84CleanCloneGraphPin.ts +42 -0
- package/apps/storefront/scripts/v84CleanCloneSourceGraph.ts +145 -0
- package/apps/storefront/scripts/validate-v84-clone-lifecycle.ts +18 -0
- package/apps/storefront/src/components/Img.astro +1 -1
- package/apps/storefront/src/components/admin/AdminBlogTab.astro +19 -16
- package/apps/storefront/src/components/admin/AdminIntegrationsTab.astro +105 -0
- package/apps/storefront/src/components/admin/AdminPublishTab.astro +1057 -412
- package/apps/storefront/src/components/admin/AdminSettingsTab.astro +2 -2
- package/apps/storefront/src/components/admin/orders/OrdersWorkspace.astro +5 -5
- package/apps/storefront/src/components/chrome/NavDropdown.astro +12 -0
- package/apps/storefront/src/components/chrome/SiteFooter.astro +7 -2
- package/apps/storefront/src/components/chrome/SiteHeader.astro +46 -10
- package/apps/storefront/src/components/compliance/AdultSignatureNotice.astro +1 -1
- package/apps/storefront/src/components/compliance/ComplianceNotice.astro +1 -2
- package/apps/storefront/src/components/compliance/ExciseTaxNotice.astro +1 -2
- package/apps/storefront/src/components/compliance/PactActNotice.astro +1 -1
- package/apps/storefront/src/components/compliance/Prop65Warning.astro +1 -2
- package/apps/storefront/src/components/compliance/PurchaseLimitNotice.astro +2 -3
- package/apps/storefront/src/components/compliance/ShippingRestrictionNotice.astro +2 -2
- package/apps/storefront/src/components/compliance/StateEligibilityNotice.astro +2 -3
- package/apps/storefront/src/components/content/TrustStrip.astro +4 -4
- package/apps/storefront/src/components/islands/MobileNav.tsx +26 -1
- package/apps/storefront/src/components/islands/VariantSelector.tsx +27 -2
- package/apps/storefront/src/components/islands/useCheckoutHandoffCorrelation.ts +75 -0
- package/apps/storefront/src/components/membership/IllustrativeLabel.astro +1 -2
- package/apps/storefront/src/components/membership/TierCards.astro +2 -2
- package/apps/storefront/src/components/membership/TierComparisonTable.astro +2 -2
- package/apps/storefront/src/components/subscription/SavingsExplainer.astro +2 -2
- package/apps/storefront/src/config/adminTenantLookup.ts +35 -0
- package/apps/storefront/src/config/devTenantSeed.ts +9 -9
- package/apps/storefront/src/config/resolver.ts +4 -4
- package/apps/storefront/src/layouts/Layout.astro +100 -20
- package/apps/storefront/src/lib/activity/candidateSubmitLease.ts +87 -0
- package/apps/storefront/src/lib/activity/changeActorAttribution.ts +86 -6
- package/apps/storefront/src/lib/activity/deployVersion.ts +1 -1
- package/apps/storefront/src/lib/admin/adminShell.ts +2 -0
- package/apps/storefront/src/lib/admin/envelope.ts +1 -2
- package/apps/storefront/src/lib/apps/adminService.ts +10 -0
- package/apps/storefront/src/lib/apps/adminSession.ts +1 -1
- package/apps/storefront/src/lib/apps/appVersionStore.ts +281 -0
- package/apps/storefront/src/lib/apps/consentConfigStore.ts +228 -0
- package/apps/storefront/src/lib/apps/gtmMigrationInstall.ts +447 -0
- package/apps/storefront/src/lib/apps/gtmMigrationReport.ts +367 -0
- package/apps/storefront/src/lib/apps/gtmMigrationTab.ts +315 -0
- package/apps/storefront/src/lib/apps/integrationLifecycle.ts +614 -0
- package/apps/storefront/src/lib/apps/integrationLifecycleController.ts +125 -0
- package/apps/storefront/src/lib/apps/integrationReadModel.ts +563 -0
- package/apps/storefront/src/lib/apps/integrationsTab.ts +547 -0
- package/apps/storefront/src/lib/apps/integrationsView.ts +106 -0
- package/apps/storefront/src/lib/apps/managedAnalyticsService.ts +599 -0
- package/apps/storefront/src/lib/apps/orders/orderConversionD1.ts +150 -0
- package/apps/storefront/src/lib/apps/orders/orderForwardReceiver.ts +8 -0
- package/apps/storefront/src/lib/apps/orders/ordersStore.ts +1 -1
- package/apps/storefront/src/lib/apps/orders/verifiedProviderMeasurement.ts +117 -0
- package/apps/storefront/src/lib/apps/registryService.ts +264 -10
- package/apps/storefront/src/lib/apps/tenantIntegrationMaterialization.ts +170 -0
- package/apps/storefront/src/lib/apps/v84CleanCloneReplayContext.ts +16 -0
- package/apps/storefront/src/lib/apps/v84CloneLifecycleCacheEvidence.ts +105 -0
- package/apps/storefront/src/lib/apps/v84CloneLifecycleEvidence.ts +177 -0
- package/apps/storefront/src/lib/apps/v84CloneLifecycleMaterialization.ts +251 -0
- package/apps/storefront/src/lib/apps/v84CloneLifecycleSemantics.ts +241 -0
- package/apps/storefront/src/lib/apps/v84CloneMigrationEvidence.ts +211 -0
- package/apps/storefront/src/lib/apps/v84CloneNativeInstallEvidence.ts +409 -0
- package/apps/storefront/src/lib/apps/v84NonportableCodeCoaching.ts +368 -0
- package/apps/storefront/src/lib/apps/v84NonportableRouteContract.ts +188 -0
- package/apps/storefront/src/lib/apps/v84NonportableRouteDogfood.ts +291 -0
- package/apps/storefront/src/lib/apps/ws1ManagedAnalyticsClient.ts +95 -0
- package/apps/storefront/src/lib/auth/adminApiGuard.ts +66 -0
- package/apps/storefront/src/lib/auth/adminEntry.ts +2 -2
- package/apps/storefront/src/lib/auth/adminLanding.ts +88 -0
- package/apps/storefront/src/lib/blog/collection.ts +97 -10
- package/apps/storefront/src/lib/blog/markdown.ts +1 -1
- package/apps/storefront/src/lib/blog/provider.ts +57 -3
- package/apps/storefront/src/lib/blog/types.ts +9 -9
- package/apps/storefront/src/lib/chrome/examples/tokenoftrust.chrome-assignments.example.json +6 -0
- package/apps/storefront/src/lib/chrome/examples/tokenoftrust.chrome.example.json +79 -0
- package/apps/storefront/src/lib/chrome/model.ts +48 -253
- package/apps/storefront/src/lib/chrome/navCurrent.ts +29 -0
- package/apps/storefront/src/lib/chrome/parseConfig.ts +18 -32
- package/apps/storefront/src/lib/chrome/variant.ts +39 -0
- package/apps/storefront/src/lib/commerce/checkoutHandoffCorrelation.ts +105 -0
- package/apps/storefront/src/lib/compliance/tamper-sentinel-boot.ts +152 -0
- package/apps/storefront/src/lib/compliance/tamper-sentinel.ts +327 -0
- package/apps/storefront/src/lib/content/index.ts +5 -5
- package/apps/storefront/src/lib/content-edit/applyDiff.ts +1 -1
- package/apps/storefront/src/lib/content-edit/route.ts +1 -1
- package/apps/storefront/src/lib/d1/catalog.ts +12 -0
- package/apps/storefront/src/lib/d1/schema-apps.ts +276 -0
- package/apps/storefront/src/lib/dev/cockpit/ask.ts +49 -0
- package/apps/storefront/src/lib/dev/cockpit/clickToSource.ts +71 -0
- package/apps/storefront/src/lib/dev/cockpit/copyCommand.ts +227 -0
- package/apps/storefront/src/lib/dev/cockpit/files.ts +249 -0
- package/apps/storefront/src/lib/dev/cockpit/hostedActivity.ts +500 -0
- package/apps/storefront/src/lib/dev/cockpit/infoPopover.ts +12 -0
- package/apps/storefront/src/lib/dev/cockpit/mcpCopy.ts +34 -0
- package/apps/storefront/src/lib/dev/cockpit/monitor.ts +107 -0
- package/apps/storefront/src/lib/dev/cockpit/stepper.ts +116 -0
- package/apps/storefront/src/lib/dev/cockpit/themeToggle.ts +23 -0
- package/apps/storefront/src/lib/dev/runtimeStore.ts +1 -1
- package/apps/storefront/src/lib/edgeCache.ts +18 -6
- package/apps/storefront/src/lib/email/candidateConflictEmail.ts +80 -0
- package/apps/storefront/src/lib/integration/browserEnvironment.ts +137 -0
- package/apps/storefront/src/lib/integration/managedInstallDeclarations.ts +72 -0
- package/apps/storefront/src/lib/integration/nonceStamp.ts +49 -0
- package/apps/storefront/src/lib/integration/tenantDeclarations.ts +116 -0
- package/apps/storefront/src/lib/membership/eligibility.ts +1 -1
- package/apps/storefront/src/lib/membership/model.ts +1 -2
- package/apps/storefront/src/lib/newsletter/confirmationEmail.ts +2 -2
- package/apps/storefront/src/lib/newsletter/consent.ts +2 -2
- package/apps/storefront/src/lib/newsletter/send.ts +3 -3
- package/apps/storefront/src/lib/previewReload.ts +57 -1
- package/apps/storefront/src/lib/publish/adminPublishTab.ts +1775 -669
- package/apps/storefront/src/lib/publish/buildStream.ts +269 -0
- package/apps/storefront/src/lib/publish/collapsePersistence.ts +72 -0
- package/apps/storefront/src/lib/publish/lifecycleState.ts +369 -0
- package/apps/storefront/src/lib/publish/liveReleaseSummary.ts +29 -0
- package/apps/storefront/src/lib/publish/mergeDoctorOnFailure.ts +78 -0
- package/apps/storefront/src/lib/publish/mergeHealthBanner.ts +62 -0
- package/apps/storefront/src/lib/publish/mergeRowFindings.ts +124 -0
- package/apps/storefront/src/lib/publish/mergeSupportEscalation.ts +75 -0
- package/apps/storefront/src/lib/publish/publish-guard.ts +88 -0
- package/apps/storefront/src/lib/publish/publishFormat.ts +165 -0
- package/apps/storefront/src/lib/publish/publishHero.ts +177 -0
- package/apps/storefront/src/lib/publish/reviewRelease/changeState.ts +66 -0
- package/apps/storefront/src/lib/publish/reviewRelease/copy.ts +141 -0
- package/apps/storefront/src/lib/publish/reviewRelease/index.ts +41 -0
- package/apps/storefront/src/lib/publish/reviewRelease/permissions.ts +47 -0
- package/apps/storefront/src/lib/publish/reviewRelease/releaseState.ts +42 -0
- package/apps/storefront/src/lib/publish/reviewRelease/types.ts +59 -0
- package/apps/storefront/src/lib/publish/reviewRelease/viewModel.ts +440 -0
- package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/actions.ts +161 -0
- package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/controller.ts +325 -0
- package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/render.ts +241 -0
- package/apps/storefront/src/lib/publish/shipWorkspace.ts +22 -3
- package/apps/storefront/src/lib/publish/sseRoute.ts +119 -0
- package/apps/storefront/src/lib/publish/streamLogConsole.ts +142 -0
- package/apps/storefront/src/lib/publish/versionNumber.ts +52 -0
- package/apps/storefront/src/lib/rawChrome.ts +125 -47
- package/apps/storefront/src/lib/rawMarketingHtml.ts +74 -3
- package/apps/storefront/src/lib/seo/alternates.ts +1 -1
- package/apps/storefront/src/lib/social/notify.ts +4 -4
- package/apps/storefront/src/lib/storyblok/content-model.ts +7 -33
- package/apps/storefront/src/lib/storyblok/provider.ts +168 -60
- package/apps/storefront/src/lib/subscription/model.ts +4 -4
- package/apps/storefront/src/lib/the-build/provider.ts +9 -4
- package/apps/storefront/src/middleware/index.ts +273 -51
- package/apps/storefront/src/pages/[...slug].astro +9 -4
- package/apps/storefront/src/pages/admin/review-release.astro +265 -0
- package/apps/storefront/src/pages/admin/select.astro +96 -0
- package/apps/storefront/src/pages/admin.astro +16 -2
- package/apps/storefront/src/pages/api/activity.ts +8 -8
- package/apps/storefront/src/pages/api/admin/activity-alerts.ts +5 -20
- package/apps/storefront/src/pages/api/admin/orders/[id].ts +7 -2
- package/apps/storefront/src/pages/api/admin/orders.ts +8 -2
- package/apps/storefront/src/pages/api/apps/admin/gtm-migration-install.ts +174 -0
- package/apps/storefront/src/pages/api/apps/admin/gtm-migration.ts +96 -0
- package/apps/storefront/src/pages/api/apps/admin/integration-lifecycle.ts +118 -0
- package/apps/storefront/src/pages/api/apps/admin/integrations.ts +89 -0
- package/apps/storefront/src/pages/api/apps/admin/platform-adapters.ts +85 -0
- package/apps/storefront/src/pages/api/apps/internal/order-forward.ts +74 -2
- package/apps/storefront/src/pages/api/commerce/checkout-handoff.ts +77 -0
- package/apps/storefront/src/pages/api/compliance/tamper.ts +88 -0
- package/apps/storefront/src/pages/api/integrations/v1/[operation].ts +108 -0
- package/apps/storefront/src/pages/api/rum/vitals.ts +1 -2
- package/apps/storefront/src/pages/blog/[slug].astro +5 -5
- package/apps/storefront/src/pages/blog/author/[author].astro +3 -3
- package/apps/storefront/src/pages/blog/category/[category].astro +2 -2
- package/apps/storefront/src/pages/blog/index.astro +2 -2
- package/apps/storefront/src/pages/blog/tag/[tag].astro +2 -2
- package/apps/storefront/src/pages/cockpit.astro +61 -1362
- package/apps/storefront/src/pages/index.astro +10 -5
- package/apps/storefront/src/pages/llms.txt.ts +1 -1
- package/apps/storefront/src/pages/products/[handle].astro +7 -6
- package/apps/storefront/src/pages/sitemap.xml.ts +2 -2
- package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +31 -27
- package/apps/storefront/src/pages/style-guide/[tenant]/chrome/[theme].astro +1 -1
- package/apps/storefront/src/pages/tenants/[id]/[...path].ts +38 -2
- package/apps/storefront/src/pages/the-build/[slug].astro +4 -4
- package/apps/storefront/src/pages/the-build/index.astro +2 -2
- package/apps/storefront/src/pages/the-build/rss.xml.ts +2 -2
- package/apps/storefront/src/styles/admin.css +27 -1
- package/apps/storefront/tsconfig.json +1 -1
- package/package.json +1 -1
- package/packages/public-runtime/package.json +2 -1
- package/packages/public-runtime/schemas/managed-analytics/v1/adapter-definition.schema.json +427 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/create-integration-install-request.schema.json +161 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/create-migration-draft-request.schema.json +157 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/delete-integration-install-request.schema.json +84 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/delete-migration-draft-request.schema.json +84 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/error-envelope.schema.json +180 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/get-adapter-definition-request.schema.json +52 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/get-integration-install-request.schema.json +52 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/get-integration-revision-request.schema.json +79 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/get-migration-draft-request.schema.json +52 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/integration-install.schema.json +167 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/integration-revision.schema.json +208 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/list-adapter-definitions-request.schema.json +53 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/list-integration-installs-request.schema.json +53 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/list-integration-revisions-request.schema.json +82 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/migration-draft.schema.json +218 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/mutation-request.schema.json +52 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/mutation-success-envelope.schema.json +49 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/read-request.schema.json +20 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/read-success-envelope.schema.json +45 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/revise-integration-install-request.schema.json +156 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/set-integration-install-status-request.schema.json +92 -0
- package/packages/public-runtime/schemas/managed-analytics/v1/update-migration-draft-request.schema.json +184 -0
- package/packages/public-runtime/scripts/generate-managed-analytics-api-v1-schemas.mjs +13 -0
- package/packages/public-runtime/src/activity/catalog.ts +41 -37
- package/packages/public-runtime/src/activity/event.ts +6 -6
- package/packages/public-runtime/src/activity/index.ts +2 -2
- package/packages/public-runtime/src/activity/redaction.ts +4 -4
- package/packages/public-runtime/src/candidate-index.ts +42 -8
- package/packages/public-runtime/src/checkout-orders.ts +2 -2
- package/packages/public-runtime/src/checkout-style-publish.ts +2 -2
- package/packages/public-runtime/src/checkout-style.ts +7 -7
- package/packages/public-runtime/src/checkout.ts +3 -3
- package/packages/public-runtime/src/chrome.ts +777 -0
- package/packages/public-runtime/src/compliance-obligations.ts +310 -0
- package/packages/public-runtime/src/csp.ts +99 -0
- package/packages/public-runtime/src/customization-runtime.ts +32 -1
- package/packages/public-runtime/src/destination-webhook/contract.ts +353 -0
- package/packages/public-runtime/src/embed-catalog.d.mts +9 -0
- package/packages/public-runtime/src/embed-catalog.mjs +40 -0
- package/packages/public-runtime/src/evidence.ts +288 -0
- package/packages/public-runtime/src/gtm-migration/bounds.ts +138 -0
- package/packages/public-runtime/src/gtm-migration/disposition-rules.ts +361 -0
- package/packages/public-runtime/src/gtm-migration/dispositions.ts +181 -0
- package/packages/public-runtime/src/gtm-migration/draft-generator.ts +400 -0
- package/packages/public-runtime/src/gtm-migration/graph.ts +468 -0
- package/packages/public-runtime/src/gtm-migration/index.ts +95 -0
- package/packages/public-runtime/src/gtm-migration/parse.ts +410 -0
- package/packages/public-runtime/src/gtm-migration/references.ts +266 -0
- package/packages/public-runtime/src/gtm-migration/types.ts +86 -0
- package/packages/public-runtime/src/index.ts +16 -1
- package/packages/public-runtime/src/integration/assurance-decision.ts +259 -0
- package/packages/public-runtime/src/integration/assurance.ts +228 -0
- package/packages/public-runtime/src/integration/candidate-evidence.ts +377 -0
- package/packages/public-runtime/src/integration/commerce-broker.ts +497 -0
- package/packages/public-runtime/src/integration/consent-broker.ts +337 -0
- package/packages/public-runtime/src/integration/consent-cmp-demand.ts +115 -0
- package/packages/public-runtime/src/integration/consent-config.ts +260 -0
- package/packages/public-runtime/src/integration/consent-preview.ts +125 -0
- package/packages/public-runtime/src/integration/correlation-token.ts +444 -0
- package/packages/public-runtime/src/integration/csp-compiler.ts +267 -0
- package/packages/public-runtime/src/integration/csp.ts +105 -0
- package/packages/public-runtime/src/integration/digest.ts +43 -0
- package/packages/public-runtime/src/integration/environment.ts +228 -0
- package/packages/public-runtime/src/integration/events-catalog.ts +186 -0
- package/packages/public-runtime/src/integration/events.ts +701 -0
- package/packages/public-runtime/src/integration/g2-action-boundary.ts +106 -0
- package/packages/public-runtime/src/integration/index.ts +90 -0
- package/packages/public-runtime/src/integration/interim-bridge.ts +138 -0
- package/packages/public-runtime/src/integration/lifecycle-boot.ts +317 -0
- package/packages/public-runtime/src/integration/lifecycle-runtime.ts +393 -0
- package/packages/public-runtime/src/integration/lifecycle.ts +94 -0
- package/packages/public-runtime/src/integration/managed-analytics-api-v1-safety.d.mts +2 -0
- package/packages/public-runtime/src/integration/managed-analytics-api-v1-safety.mjs +10 -0
- package/packages/public-runtime/src/integration/managed-analytics-api-v1.schemas.ts +382 -0
- package/packages/public-runtime/src/integration/managed-analytics-api-v1.ts +684 -0
- package/packages/public-runtime/src/integration/managed-analytics-bridge.ts +383 -0
- package/packages/public-runtime/src/integration/managed-analytics-value-safety.ts +14 -0
- package/packages/public-runtime/src/integration/managed-analytics.ts +277 -0
- package/packages/public-runtime/src/integration/manifest.ts +470 -0
- package/packages/public-runtime/src/integration/native-amplitude.ts +362 -0
- package/packages/public-runtime/src/integration/native-ga4.ts +352 -0
- package/packages/public-runtime/src/integration/observability.ts +451 -0
- package/packages/public-runtime/src/integration/order-conversion.ts +0 -0
- package/packages/public-runtime/src/integration/phases.ts +182 -0
- package/packages/public-runtime/src/integration/plan.ts +112 -0
- package/packages/public-runtime/src/integration/platform-adapter-runtime.ts +146 -0
- package/packages/public-runtime/src/integration/platform-adapters.ts +671 -0
- package/packages/public-runtime/src/integration/promotion-gate.ts +451 -0
- package/packages/public-runtime/src/integration/provider-checkout-extension.ts +425 -0
- package/packages/public-runtime/src/integration/receipt-measurement.ts +370 -0
- package/packages/public-runtime/src/integration/regulated-parent-cert.ts +311 -0
- package/packages/public-runtime/src/integration/render-phases.ts +267 -0
- package/packages/public-runtime/src/integration/resolve.ts +465 -0
- package/packages/public-runtime/src/integration/result.ts +239 -0
- package/packages/public-runtime/src/integration/secrets.ts +92 -0
- package/packages/public-runtime/src/integration/tamper-evidence.ts +205 -0
- package/packages/public-runtime/src/integration/tamper-recovery.ts +127 -0
- package/packages/public-runtime/src/integration/version.ts +92 -0
- package/packages/public-runtime/src/integration-capabilities.ts +520 -0
- package/packages/public-runtime/src/membership.ts +2 -2
- package/packages/public-runtime/src/raw-html-policy.ts +2 -4
- package/packages/public-runtime/src/regulated-commerce/broker/consent-dedupe.ts +144 -0
- package/packages/public-runtime/src/regulated-commerce/correlation/contract.ts +177 -0
- package/packages/public-runtime/src/regulated-commerce/diagnostics/local-dispatch.ts +24 -0
- package/packages/public-runtime/src/regulated-commerce/diagnostics/read-model.ts +69 -0
- package/packages/public-runtime/src/regulated-commerce/dispatch/core.ts +134 -0
- package/packages/public-runtime/src/regulated-commerce/events/contract.ts +113 -0
- package/packages/public-runtime/src/regulated-commerce/ledger/core.ts +81 -0
- package/packages/public-runtime/src/regulated-commerce/mappings/ga4-ads.ts +87 -0
- package/packages/public-runtime/src/regulated-commerce/provider-order/bridge.ts +52 -0
- package/packages/public-runtime/src/regulated-commerce/purchase-truth/contract.ts +252 -0
- package/packages/public-runtime/src/regulated-commerce/sources/accepted-browser-operation.ts +67 -0
- package/packages/public-runtime/src/regulated-commerce/testing/fake-destination.ts +93 -0
- package/packages/public-runtime/src/static-bundle.ts +5 -5
- package/packages/public-runtime/src/tenant-assets.ts +143 -4
- package/packages/public-runtime/src/tenant.ts +45 -9
- package/packages/public-runtime/tests/fixtures/integration/browser-environment.example.json +8 -0
- package/packages/public-runtime/tests/fixtures/integration/commerce-event.example.json +44 -0
- package/packages/public-runtime/tests/fixtures/integration/commerce-order-event.example.json +44 -0
- package/packages/public-runtime/tests/fixtures/integration/compliance-assurance-record.example.json +50 -0
- package/packages/public-runtime/tests/fixtures/integration/integration-manifest-v2.example.json +120 -0
- package/packages/public-runtime/tests/fixtures/integration/managed-analytics-v1/fake-adapter-catalog.json +35 -0
- package/packages/public-runtime/tests/fixtures/integration/tenant-action-registry.example.json +11 -0
- package/packages/public-runtime/tests/fixtures/integration/tenant-local-example/README.md +22 -0
- package/packages/public-runtime/tests/fixtures/integration/tenant-local-example/entry.js +30 -0
- package/packages/public-runtime/tests/fixtures/integration/tenant-local-example/manifest.json +75 -0
- package/packages/public-runtime/tests/fixtures/integration/tenant-local-example/public-config.json +3 -0
- package/packages/public-runtime/tests/fixtures/regulated-commerce/fake-destinations.ts +38 -0
- package/packages/public-runtime/tests/gtm-migration/fixtures/gtm-sample-container-v84.provenance.json +29 -0
- package/packages/public-runtime/tests/gtm-migration/fixtures/gtm-sample-container-v84.redacted.json +3397 -0
- package/scripts/dev/file-browser.mjs +2 -2
- package/scripts/dev/file-writer.mjs +2 -2
- package/scripts/dev/integration-guardrails.mjs +498 -0
- package/scripts/dev/safe-path.mjs +2 -2
- package/scripts/dev/tenant-source-root.mjs +1 -1
- package/scripts/tot-dev.mjs +2 -2
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The effective plan and source-reference contracts (ADR 0014 C2
|
|
3
|
+
* `integration-ownership-three-party`, invariants 4, 5, 11).
|
|
4
|
+
*
|
|
5
|
+
* The effective plan is the deterministic, server-computed output the resolver
|
|
6
|
+
* (ext-kernel-03) produces and evidence (ext-kernel-06) reports. It is defined
|
|
7
|
+
* here as a shared type so both mounts and the candidate evidence agree on one
|
|
8
|
+
* shape. `planRevision` participates in candidate/cache identity. Every
|
|
9
|
+
* contribution and config value traces to a `SourceReference`; nothing in the
|
|
10
|
+
* plan is secret-bearing.
|
|
11
|
+
*/
|
|
12
|
+
import type { ContractViolation } from "./result.js";
|
|
13
|
+
import { EFFECTIVE_PLAN_SCHEMA_VERSION } from "./version.js";
|
|
14
|
+
import type { BrowserEnvironment } from "./environment.js";
|
|
15
|
+
import type { ReservedPhase, ExecutionTier, ContributionKind, EntryFormat } from "./phases.js";
|
|
16
|
+
import type { CommerceEventType } from "./events.js";
|
|
17
|
+
import type { CspSourceSet } from "./csp.js";
|
|
18
|
+
import type { IntegrationOrigin, IntegrationDependency, ConsentLoadWhen } from "./manifest.js";
|
|
19
|
+
import { findForbiddenFields } from "./secrets.js";
|
|
20
|
+
|
|
21
|
+
/** Provenance for a resolved contribution or config value. */
|
|
22
|
+
export interface SourceReference {
|
|
23
|
+
origin: IntegrationOrigin;
|
|
24
|
+
/** Declaration id, adapter id, or board slug the value traces to. */
|
|
25
|
+
ref: string;
|
|
26
|
+
appId?: string;
|
|
27
|
+
version?: string;
|
|
28
|
+
digest?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The resolved entry MODULE the lifecycle runtime dynamically imports for one
|
|
33
|
+
* integration: a same-origin, exact-version public asset URL and its format/phase.
|
|
34
|
+
* This is the executable-content handle the render-phase boot descriptor carries
|
|
35
|
+
* and the runtime loads against — pinned by the declaration, so a version change
|
|
36
|
+
* changes both this URL and `planRevision` (hence the candidate/cache identity).
|
|
37
|
+
*/
|
|
38
|
+
export interface PlanIntegrationEntry {
|
|
39
|
+
/** Same-origin public asset URL; version-pinned by the declaration. Never secret. */
|
|
40
|
+
url: string;
|
|
41
|
+
format: EntryFormat;
|
|
42
|
+
phase: ReservedPhase;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The per-integration consent dependency the runtime gates the entry loader on: the
|
|
47
|
+
* declared purposes and when the entry may load. A non-`essential-only` entry does
|
|
48
|
+
* not load until every declared purpose is eligible (ext-policy-03).
|
|
49
|
+
*/
|
|
50
|
+
export interface PlanIntegrationConsent {
|
|
51
|
+
purposes: string[];
|
|
52
|
+
loadWhen: ConsentLoadWhen;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface PlanIntegration {
|
|
56
|
+
origin: IntegrationOrigin;
|
|
57
|
+
appId: string;
|
|
58
|
+
version: string;
|
|
59
|
+
digest: string;
|
|
60
|
+
executionTier: ExecutionTier;
|
|
61
|
+
/** The exact-version entry module the lifecycle runtime imports and inits. */
|
|
62
|
+
entry: PlanIntegrationEntry;
|
|
63
|
+
/** The consent dependency that must be eligible before the entry loads. */
|
|
64
|
+
consent: PlanIntegrationConsent;
|
|
65
|
+
/**
|
|
66
|
+
* The browser-deliverable commerce events this integration declared and was
|
|
67
|
+
* validated for (`manifest.browser.permissions.events`). Cross-checked
|
|
68
|
+
* browser-deliverable at manifest validation, so every entry here is one the
|
|
69
|
+
* runtime's scoped subscribe handle can actually deliver — it bounds the receive-only
|
|
70
|
+
* subscription an entry may register (F2 wire).
|
|
71
|
+
*/
|
|
72
|
+
events: CommerceEventType[];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface NormalizedContribution {
|
|
76
|
+
id: string;
|
|
77
|
+
origin: IntegrationOrigin;
|
|
78
|
+
phase: ReservedPhase;
|
|
79
|
+
kind: ContributionKind;
|
|
80
|
+
source: SourceReference;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface EffectivePlan {
|
|
84
|
+
schemaVersion: typeof EFFECTIVE_PLAN_SCHEMA_VERSION;
|
|
85
|
+
environment: BrowserEnvironment;
|
|
86
|
+
/** Participates in candidate/cache identity; changes when the resolved plan changes. */
|
|
87
|
+
planRevision: string;
|
|
88
|
+
tenantPublicId: string;
|
|
89
|
+
integrations: PlanIntegration[];
|
|
90
|
+
contributions: NormalizedContribution[];
|
|
91
|
+
/** Resolved execution order over contribution ids. */
|
|
92
|
+
order: string[];
|
|
93
|
+
/** Per-integration public config; carries no secret material. */
|
|
94
|
+
publicConfig: Record<string, Record<string, unknown>>;
|
|
95
|
+
dependencies: IntegrationDependency[];
|
|
96
|
+
consentNeeds: string[];
|
|
97
|
+
cspNeeds: CspSourceSet;
|
|
98
|
+
provenance: SourceReference[];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Browser-safety assertion for an effective plan or its evidence: the resolved
|
|
103
|
+
* environment and per-integration public config must carry no nonce, token,
|
|
104
|
+
* credential, or signed URL. Returns an empty array for a browser-safe plan.
|
|
105
|
+
*/
|
|
106
|
+
export function assertPlanBrowserSafe(plan: EffectivePlan): ContractViolation[] {
|
|
107
|
+
return [
|
|
108
|
+
...findForbiddenFields(plan.environment, "environment"),
|
|
109
|
+
...findForbiddenFields(plan.publicConfig, "publicConfig"),
|
|
110
|
+
...findForbiddenFields(plan.cspNeeds, "cspNeeds"),
|
|
111
|
+
];
|
|
112
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Closed runtime registry for reviewed, Storefront-owned platform adapters.
|
|
3
|
+
*
|
|
4
|
+
* Platform authority is never inferred from an app id alone. Admission requires the
|
|
5
|
+
* exact declaration origin, execution tier, app id, version, same-origin entry URL,
|
|
6
|
+
* and module format registered here. A matching data-only entry marker is imported
|
|
7
|
+
* before the bundled runtime factory receives the host-owned network capability.
|
|
8
|
+
* Unknown/mismatched platform tuples fail closed and never reach a generic loader.
|
|
9
|
+
*/
|
|
10
|
+
import type { IntegrationLifecycleModule } from "./lifecycle.js";
|
|
11
|
+
import type { IntegrationModuleLoader } from "./lifecycle-runtime.js";
|
|
12
|
+
import type { BootDescriptorIntegration } from "./render-phases.js";
|
|
13
|
+
import {
|
|
14
|
+
AMPLITUDE_HTTP_ADAPTER_VERSION,
|
|
15
|
+
AMPLITUDE_HTTP_ENTRY_URL,
|
|
16
|
+
AMPLITUDE_HTTP_RUNTIME_ID,
|
|
17
|
+
createAmplitudeLifecycleModule,
|
|
18
|
+
} from "./native-amplitude.js";
|
|
19
|
+
import {
|
|
20
|
+
createNativeGa4FetchTransport,
|
|
21
|
+
createNativeGa4Module,
|
|
22
|
+
NATIVE_GA4_ADAPTER_VERSION,
|
|
23
|
+
NATIVE_GA4_ENTRY_URL,
|
|
24
|
+
NATIVE_GA4_RUNTIME_ID,
|
|
25
|
+
} from "./native-ga4.js";
|
|
26
|
+
import { AMPLITUDE_HTTP_ADAPTER, GOOGLE_MEASUREMENT_ADAPTER } from "./platform-adapters.js";
|
|
27
|
+
|
|
28
|
+
export const PLATFORM_ADAPTER_ENTRY_SCHEMA_VERSION = 1 as const;
|
|
29
|
+
|
|
30
|
+
export interface PlatformAdapterEntryMarker {
|
|
31
|
+
schemaVersion: typeof PLATFORM_ADAPTER_ENTRY_SCHEMA_VERSION;
|
|
32
|
+
origin: "platform-adapter";
|
|
33
|
+
executionTier: "platform-adapter";
|
|
34
|
+
appId: string;
|
|
35
|
+
version: string;
|
|
36
|
+
entry: { url: string; format: "module" };
|
|
37
|
+
runtime: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface PlatformAdapterRuntimeHost {
|
|
41
|
+
fetch: typeof fetch;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface PlatformAdapterRuntimeRegistration {
|
|
45
|
+
marker: PlatformAdapterEntryMarker;
|
|
46
|
+
create(host: PlatformAdapterRuntimeHost): IntegrationLifecycleModule;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const GA4_MARKER: PlatformAdapterEntryMarker = Object.freeze({
|
|
50
|
+
schemaVersion: PLATFORM_ADAPTER_ENTRY_SCHEMA_VERSION,
|
|
51
|
+
origin: "platform-adapter",
|
|
52
|
+
executionTier: "platform-adapter",
|
|
53
|
+
appId: GOOGLE_MEASUREMENT_ADAPTER.adapterId,
|
|
54
|
+
version: NATIVE_GA4_ADAPTER_VERSION,
|
|
55
|
+
entry: Object.freeze({ url: NATIVE_GA4_ENTRY_URL, format: "module" }),
|
|
56
|
+
runtime: NATIVE_GA4_RUNTIME_ID,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const AMPLITUDE_MARKER: PlatformAdapterEntryMarker = Object.freeze({
|
|
60
|
+
schemaVersion: PLATFORM_ADAPTER_ENTRY_SCHEMA_VERSION,
|
|
61
|
+
origin: "platform-adapter",
|
|
62
|
+
executionTier: "platform-adapter",
|
|
63
|
+
appId: AMPLITUDE_HTTP_ADAPTER.adapterId,
|
|
64
|
+
version: AMPLITUDE_HTTP_ADAPTER_VERSION,
|
|
65
|
+
entry: Object.freeze({ url: AMPLITUDE_HTTP_ENTRY_URL, format: "module" }),
|
|
66
|
+
runtime: AMPLITUDE_HTTP_RUNTIME_ID,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
/** The one shared reviewed platform-runtime registry. */
|
|
70
|
+
export const PLATFORM_ADAPTER_RUNTIME_REGISTRY: readonly PlatformAdapterRuntimeRegistration[] = Object.freeze([
|
|
71
|
+
Object.freeze({
|
|
72
|
+
marker: GA4_MARKER,
|
|
73
|
+
create: ({ fetch: fetchCapability }: PlatformAdapterRuntimeHost) => createNativeGa4Module({
|
|
74
|
+
transport: createNativeGa4FetchTransport(fetchCapability),
|
|
75
|
+
}),
|
|
76
|
+
}),
|
|
77
|
+
Object.freeze({
|
|
78
|
+
marker: AMPLITUDE_MARKER,
|
|
79
|
+
create: ({ fetch: fetchCapability }: PlatformAdapterRuntimeHost) =>
|
|
80
|
+
createAmplitudeLifecycleModule({ fetch: fetchCapability }),
|
|
81
|
+
}),
|
|
82
|
+
]);
|
|
83
|
+
|
|
84
|
+
export interface PlatformAdapterRuntimeLoaderOptions {
|
|
85
|
+
fetchCapability?: typeof fetch;
|
|
86
|
+
importModule?: (url: string) => Promise<unknown>;
|
|
87
|
+
fallback: IntegrationModuleLoader;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function platformClaim(integration: BootDescriptorIntegration): boolean {
|
|
91
|
+
return integration.origin === "platform-adapter" || integration.executionTier === "platform-adapter";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function registrationFor(
|
|
95
|
+
integration: BootDescriptorIntegration,
|
|
96
|
+
): PlatformAdapterRuntimeRegistration | undefined {
|
|
97
|
+
return PLATFORM_ADAPTER_RUNTIME_REGISTRY.find(({ marker }) =>
|
|
98
|
+
integration.origin === marker.origin &&
|
|
99
|
+
integration.executionTier === marker.executionTier &&
|
|
100
|
+
integration.appId === marker.appId &&
|
|
101
|
+
integration.version === marker.version &&
|
|
102
|
+
integration.entry.url === marker.entry.url &&
|
|
103
|
+
integration.entry.format === marker.entry.format
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function markerEquals(expected: PlatformAdapterEntryMarker, value: unknown): boolean {
|
|
108
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
109
|
+
const actual = value as Record<string, unknown>;
|
|
110
|
+
if (Object.keys(actual).length !== 7) return false;
|
|
111
|
+
const entry = actual["entry"];
|
|
112
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry)) return false;
|
|
113
|
+
const actualEntry = entry as Record<string, unknown>;
|
|
114
|
+
return (
|
|
115
|
+
Object.keys(actualEntry).length === 2 &&
|
|
116
|
+
actual["schemaVersion"] === expected.schemaVersion &&
|
|
117
|
+
actual["origin"] === expected.origin &&
|
|
118
|
+
actual["executionTier"] === expected.executionTier &&
|
|
119
|
+
actual["appId"] === expected.appId &&
|
|
120
|
+
actual["version"] === expected.version &&
|
|
121
|
+
actual["runtime"] === expected.runtime &&
|
|
122
|
+
actualEntry["url"] === expected.entry.url &&
|
|
123
|
+
actualEntry["format"] === expected.entry.format
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Wrap the ordinary lifecycle loader with platform-first, exact-registry admission.
|
|
129
|
+
* The platform claim is checked before fallback, so neither an option nor a window
|
|
130
|
+
* override can intercept or broaden a platform-tier entry.
|
|
131
|
+
*/
|
|
132
|
+
export function makePlatformAdapterRuntimeLoader(
|
|
133
|
+
options: PlatformAdapterRuntimeLoaderOptions,
|
|
134
|
+
): IntegrationModuleLoader {
|
|
135
|
+
const importModule = options.importModule ?? ((url: string) => import(/* @vite-ignore */ url));
|
|
136
|
+
return async (integration) => {
|
|
137
|
+
if (!platformClaim(integration)) return options.fallback(integration);
|
|
138
|
+
const registration = registrationFor(integration);
|
|
139
|
+
if (!registration) throw new Error("platform_adapter_entry_unreviewed");
|
|
140
|
+
if (!options.fetchCapability) throw new Error("platform_adapter_fetch_unavailable");
|
|
141
|
+
const namespace = await importModule(registration.marker.entry.url);
|
|
142
|
+
const marker = (namespace as { platformAdapterEntry?: unknown })?.platformAdapterEntry;
|
|
143
|
+
if (!markerEquals(registration.marker, marker)) throw new Error("platform_adapter_entry_invalid");
|
|
144
|
+
return registration.create({ fetch: options.fetchCapability });
|
|
145
|
+
};
|
|
146
|
+
}
|