@tokenoftrust/storefront-runner 1.4.1 → 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 +17 -1
- package/apps/storefront/env.d.ts +54 -5
- package/apps/storefront/integrations/materialize-guard.mjs +54 -0
- package/apps/storefront/migrations-apps/0002_good_switch.sql +26 -0
- package/apps/storefront/migrations-apps/0003_mute_marauders.sql +12 -0
- 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/0002_snapshot.json +1160 -0
- package/apps/storefront/migrations-apps/meta/0003_snapshot.json +1235 -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 +56 -0
- package/apps/storefront/public/apps/tot.demo.analytics/0.1.0/entry.js +42 -0
- package/apps/storefront/public/js/dashboard-team.js +38 -2
- 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/Seo.astro +65 -1
- package/apps/storefront/src/components/admin/AdminBlogDetailRail.astro +878 -0
- package/apps/storefront/src/components/admin/AdminBlogTab.astro +1435 -0
- package/apps/storefront/src/components/admin/AdminCustomersTab.astro +3 -7
- package/apps/storefront/src/components/admin/AdminIntegrationsTab.astro +105 -0
- package/apps/storefront/src/components/admin/AdminPublishTab.astro +1980 -2564
- package/apps/storefront/src/components/admin/AdminSettingsTab.astro +2 -2
- package/apps/storefront/src/components/admin/AdminSubscriptionsTab.astro +1 -3
- package/apps/storefront/src/components/admin/orders/OrdersWorkspace.astro +5 -5
- package/apps/storefront/src/components/blog/BlogPaywall.astro +87 -0
- package/apps/storefront/src/components/blog/PostAccessBadge.astro +43 -0
- package/apps/storefront/src/components/blog/PostGrid.astro +57 -0
- package/apps/storefront/src/components/blog/ReactionBar.astro +214 -0
- 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 +146 -21
- package/apps/storefront/src/lib/activity/alerts.ts +17 -19
- package/apps/storefront/src/lib/activity/candidateSubmitLease.ts +87 -0
- package/apps/storefront/src/lib/activity/changeActorAttribution.ts +89 -9
- package/apps/storefront/src/lib/activity/deployVersion.ts +20 -27
- package/apps/storefront/src/lib/activity/ingest.ts +8 -8
- package/apps/storefront/src/lib/activity/ingestAuth.ts +1 -1
- package/apps/storefront/src/lib/activity/killSwitch.ts +6 -6
- package/apps/storefront/src/lib/activity/query.ts +9 -9
- package/apps/storefront/src/lib/activity/recordActivity.ts +11 -15
- package/apps/storefront/src/lib/activity/store.ts +4 -6
- package/apps/storefront/src/lib/activity/uiActor.ts +12 -12
- package/apps/storefront/src/lib/activity/workerCommit.ts +6 -6
- package/apps/storefront/src/lib/admin/adminShell.ts +292 -0
- package/apps/storefront/src/lib/admin/ai/approvalMode.ts +2 -3
- package/apps/storefront/src/lib/admin/ai/audit.ts +3 -5
- package/apps/storefront/src/lib/admin/checkoutStyleInput.ts +7 -7
- package/apps/storefront/src/lib/admin/checkoutStyleTarget.ts +3 -3
- package/apps/storefront/src/lib/admin/envelope.ts +1 -2
- package/apps/storefront/src/lib/admin/orderClient.ts +3 -5
- package/apps/storefront/src/lib/admin/services/orders.ts +17 -19
- package/apps/storefront/src/lib/admin/viewmodels/aiWorkflows.ts +4 -6
- package/apps/storefront/src/lib/admin/viewmodels/settings.ts +1 -1
- package/apps/storefront/src/lib/apps/adminService.ts +14 -4
- package/apps/storefront/src/lib/apps/adminSession.ts +54 -45
- package/apps/storefront/src/lib/apps/apiAuth.ts +2 -2
- package/apps/storefront/src/lib/apps/apiRoute.ts +2 -2
- package/apps/storefront/src/lib/apps/appVersionStore.ts +281 -0
- package/apps/storefront/src/lib/apps/catalogMapper.ts +1 -1
- package/apps/storefront/src/lib/apps/consentConfigStore.ts +228 -0
- package/apps/storefront/src/lib/apps/credentials.ts +2 -2
- package/apps/storefront/src/lib/apps/gatewayKeys.ts +4 -4
- 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/healthAggregate.ts +5 -5
- 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/attributionService.ts +2 -2
- package/apps/storefront/src/lib/apps/orders/customerHash.ts +1 -1
- package/apps/storefront/src/lib/apps/orders/foxyOrderClient.ts +12 -12
- package/apps/storefront/src/lib/apps/orders/idempotency.ts +7 -7
- package/apps/storefront/src/lib/apps/orders/orderConversionD1.ts +150 -0
- package/apps/storefront/src/lib/apps/orders/orderForwardReceiver.ts +9 -1
- package/apps/storefront/src/lib/apps/orders/orderMapper.ts +2 -2
- package/apps/storefront/src/lib/apps/orders/ordersStore.ts +7 -7
- package/apps/storefront/src/lib/apps/orders/verifiedProviderMeasurement.ts +117 -0
- package/apps/storefront/src/lib/apps/registryService.ts +270 -16
- package/apps/storefront/src/lib/apps/scopes.ts +2 -2
- package/apps/storefront/src/lib/apps/tenantIntegrationMaterialization.ts +170 -0
- package/apps/storefront/src/lib/apps/tokenIssuer.ts +4 -4
- package/apps/storefront/src/lib/apps/tokenVerifier.ts +6 -6
- 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/widgets/eligibility.ts +2 -2
- package/apps/storefront/src/lib/apps/widgets/frameProps.ts +3 -3
- package/apps/storefront/src/lib/apps/widgets/launchToken.ts +4 -4
- package/apps/storefront/src/lib/apps/widgets/placements.ts +2 -2
- package/apps/storefront/src/lib/apps/widgets/renderSlot.ts +1 -1
- 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 +11 -11
- package/apps/storefront/src/lib/auth/adminLanding.ts +88 -0
- package/apps/storefront/src/lib/auth/identityToken.ts +6 -14
- package/apps/storefront/src/lib/auth/loginGate.ts +75 -13
- package/apps/storefront/src/lib/auth/mcpClientAssertion.ts +2 -4
- package/apps/storefront/src/lib/auth/operatorSession.ts +113 -0
- package/apps/storefront/src/lib/auth/session.ts +7 -8
- package/apps/storefront/src/lib/auth/totAccessClient.ts +8 -18
- package/apps/storefront/src/lib/basePath.ts +9 -2
- package/apps/storefront/src/lib/blog/access.ts +29 -0
- package/apps/storefront/src/lib/blog/collection.ts +400 -0
- package/apps/storefront/src/lib/blog/markdown.ts +174 -0
- package/apps/storefront/src/lib/blog/provider.ts +62 -3
- package/apps/storefront/src/lib/blog/reactions.ts +87 -0
- package/apps/storefront/src/lib/blog/rss.ts +92 -0
- package/apps/storefront/src/lib/blog/teaser.ts +83 -0
- package/apps/storefront/src/lib/blog/types.ts +34 -0
- package/apps/storefront/src/lib/blog/viewCounts.ts +243 -0
- 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 +14 -2
- package/apps/storefront/src/lib/d1/schema-apps.ts +372 -17
- package/apps/storefront/src/lib/dev/activityIngestToken.ts +2 -4
- package/apps/storefront/src/lib/dev/activityStore.ts +3 -5
- package/apps/storefront/src/lib/dev/apiBase.ts +1 -4
- 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/cockpitStore.ts +1 -9
- package/apps/storefront/src/lib/dev/devDraft.ts +1 -1
- package/apps/storefront/src/lib/dev/previewStatus.ts +9 -21
- package/apps/storefront/src/lib/dev/rendezvousBroker.ts +9 -24
- package/apps/storefront/src/lib/dev/runtimeStore.ts +1 -1
- package/apps/storefront/src/lib/edgeCache.ts +34 -5
- package/apps/storefront/src/lib/email/candidateConflictEmail.ts +80 -0
- package/apps/storefront/src/lib/http/fetchTransport.ts +63 -0
- package/apps/storefront/src/lib/i18n.ts +25 -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/jsonld.ts +118 -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/monitoring/manifest.ts +11 -11
- package/apps/storefront/src/lib/newsletter/confirmationEmail.ts +30 -0
- package/apps/storefront/src/lib/newsletter/consent.ts +23 -0
- package/apps/storefront/src/lib/newsletter/digest.ts +117 -0
- package/apps/storefront/src/lib/newsletter/resendClient.ts +79 -0
- package/apps/storefront/src/lib/newsletter/send.ts +265 -0
- package/apps/storefront/src/lib/newsletter/subscribers.ts +156 -0
- package/apps/storefront/src/lib/previewReload.ts +57 -1
- package/apps/storefront/src/lib/publish/adminPublishTab.ts +4625 -0
- package/apps/storefront/src/lib/publish/apex-readiness.ts +41 -18
- 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/dispatchHealth.ts +5 -7
- package/apps/storefront/src/lib/publish/domainState.ts +22 -13
- 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/panelPolling.ts +78 -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 +121 -51
- package/apps/storefront/src/lib/publish/sseRoute.ts +119 -0
- package/apps/storefront/src/lib/publish/stageBundleUpload.ts +215 -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/rate/kvWindow.ts +53 -0
- package/apps/storefront/src/lib/rawChrome.ts +125 -47
- package/apps/storefront/src/lib/rawMarketingHtml.ts +74 -3
- package/apps/storefront/src/lib/search/index.ts +2 -2
- package/apps/storefront/src/lib/seo/alternates.ts +42 -0
- package/apps/storefront/src/lib/seo/meta.ts +65 -0
- package/apps/storefront/src/lib/social/golive.ts +212 -0
- package/apps/storefront/src/lib/social/notify.ts +32 -0
- package/apps/storefront/src/lib/social/tokenStore.ts +171 -0
- 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 +32 -0
- package/apps/storefront/src/lib/the-build/readingTime.ts +35 -0
- package/apps/storefront/src/lib/the-build/toc.ts +95 -0
- package/apps/storefront/src/lib/tot/ToTClient.ts +1 -1
- package/apps/storefront/src/lib/tot/d1Client.ts +2 -2
- package/apps/storefront/src/lib/tot/totClientInterface.ts +3 -4
- package/apps/storefront/src/lib/webhooks/deliveryStore.ts +16 -17
- package/apps/storefront/src/middleware/index.ts +385 -52
- 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 +25 -1313
- 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/blog/[collection]/[slug]/react.ts +104 -0
- 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/newsletter/[collection]/subscribe.ts +146 -0
- package/apps/storefront/src/pages/api/newsletter/confirm.ts +75 -0
- package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +90 -0
- package/apps/storefront/src/pages/api/publish/stage-bundle.ts +70 -0
- package/apps/storefront/src/pages/api/rum/vitals.ts +20 -2
- package/apps/storefront/src/pages/blog/[slug].astro +99 -19
- package/apps/storefront/src/pages/blog/author/[author].astro +140 -0
- package/apps/storefront/src/pages/blog/category/[category].astro +67 -0
- package/apps/storefront/src/pages/blog/index.astro +4 -2
- package/apps/storefront/src/pages/blog/tag/[tag].astro +65 -0
- package/apps/storefront/src/pages/cockpit.astro +77 -1353
- package/apps/storefront/src/pages/dashboard/[appDomain]/team.astro +15 -11
- 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/search.astro +1 -1
- package/apps/storefront/src/pages/sitemap.xml.ts +21 -1
- 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 +129 -0
- package/apps/storefront/src/pages/the-build/index.astro +146 -0
- package/apps/storefront/src/pages/the-build/rss.xml.ts +33 -0
- package/apps/storefront/src/styles/admin.css +1106 -0
- package/apps/storefront/tsconfig.json +6 -1
- package/package.json +1 -1
- package/packages/public-runtime/package.json +3 -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 +89 -33
- 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/catalog-d1.ts +1 -1
- 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-preview.ts +25 -2
- package/packages/public-runtime/src/customization-runtime.ts +156 -3
- package/packages/public-runtime/src/customization-versioning.ts +10 -0
- 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 +17 -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 +357 -0
- package/packages/public-runtime/src/tenant-assets.ts +143 -4
- package/packages/public-runtime/src/tenant.ts +81 -17
- 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/build/copy-tenant-assets.mjs +14 -4
- package/scripts/dev/ai-edit.mjs +1 -1
- package/scripts/dev/checkout-watch.mjs +2 -2
- package/scripts/dev/file-browser.mjs +4 -6
- package/scripts/dev/file-writer.mjs +3 -3
- package/scripts/dev/git-status.mjs +2 -2
- package/scripts/dev/integration-guardrails.mjs +498 -0
- package/scripts/dev/locate-handler.mjs +3 -3
- package/scripts/dev/port-check.mjs +3 -3
- package/scripts/dev/publish.mjs +5 -9
- package/scripts/dev/safe-path.mjs +2 -2
- package/scripts/dev/shot.mjs +1 -1
- package/scripts/dev/tenant-source-root.mjs +1 -1
- package/scripts/dev/unified-diff.mjs +8 -3
- package/scripts/tot-dev.mjs +8 -11
- package/apps/storefront/src/lib/dev/vcBinding.ts +0 -80
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import type { ManagedCheckoutConfig } from "./checkout.js";
|
|
9
9
|
import type { CapabilityConfig } from "./capabilities.js";
|
|
10
10
|
import type { AutopilotConfig, MembershipProgramConfig } from "./membership.js";
|
|
11
|
+
import type { IntegrationDeclarationInput } from "./integration/resolve.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* The shared semantic COLOR contract — the widget library's public API.
|
|
@@ -65,7 +66,7 @@ export interface ThemeColorTokens {
|
|
|
65
66
|
/** Hover/active shade of `accent`. Default: a derived darken of `accent`. */
|
|
66
67
|
"accent-hover"?: string;
|
|
67
68
|
|
|
68
|
-
// --- Interaction/quality-bar extensions
|
|
69
|
+
// --- Interaction/quality-bar extensions. Same "always resolvable"
|
|
69
70
|
// contract: each carries a derived @theme-bridge default so a component may
|
|
70
71
|
// read it unconditionally; a theme sets one only to brand-tune it. ---
|
|
71
72
|
/** Keyboard focus-ring color (`:focus-visible` outline). Default: `accent`. */
|
|
@@ -272,7 +273,7 @@ export interface ComplianceConfig {
|
|
|
272
273
|
export type SiteType = "commerce" | "marketing";
|
|
273
274
|
|
|
274
275
|
/**
|
|
275
|
-
* The storefront paywall mode
|
|
276
|
+
* The storefront paywall mode.
|
|
276
277
|
* `"enabled"` is the ONLY value that permits go-live; `"disabled"` (or an absent
|
|
277
278
|
* `storefront.mode`) fails the paywall closed. Kept OPEN as a string union with an
|
|
278
279
|
* `enabled` member so a future billing state (e.g. "trial", "past_due") can be added
|
|
@@ -286,7 +287,7 @@ export const STOREFRONT_MODE_ENABLED = "enabled" as const;
|
|
|
286
287
|
|
|
287
288
|
/**
|
|
288
289
|
* PURE paywall predicate: does this storefront mode permit go-live? True iff the
|
|
289
|
-
* mode is exactly `"enabled"
|
|
290
|
+
* mode is exactly `"enabled"`.
|
|
290
291
|
* Generic — takes the mode value, NEVER a domain — so there is no per-store
|
|
291
292
|
* special-case. Undefined/unknown → false (fail-closed).
|
|
292
293
|
*/
|
|
@@ -390,8 +391,47 @@ export interface TenantConfig {
|
|
|
390
391
|
siteType?: SiteType;
|
|
391
392
|
/** Explicit feature overrides layered atop the siteType defaults. */
|
|
392
393
|
features?: Partial<TenantFeatures>;
|
|
394
|
+
/**
|
|
395
|
+
* Third-party embeds this tenant is allowed to render, as provider slugs from
|
|
396
|
+
* the platform's `EMBED_PROVIDERS` catalog (e.g. `["pipedrive"]`) — NOT raw
|
|
397
|
+
* origins. The platform owns each provider's exact CSP origins; listing a slug
|
|
398
|
+
* here opts the tenant in, and the strict CSP then permits that embed only on
|
|
399
|
+
* the pages that actually contain it (see `embedCspAdditions`). A provider not
|
|
400
|
+
* in the catalog needs a reviewed platform addition, not a config edit — so
|
|
401
|
+
* this stays an auditable allow-list, never an escape hatch to arbitrary hosts.
|
|
402
|
+
* Declared in the tenant's platform config alongside `siteType`/`capabilities`.
|
|
403
|
+
*/
|
|
404
|
+
embeds?: string[];
|
|
393
405
|
/** Regulated-commerce affordances; undefined for unregulated tenants. */
|
|
394
406
|
compliance?: ComplianceConfig;
|
|
407
|
+
/**
|
|
408
|
+
* Per-tenant newsletter compliance/sender config. Sourced when a digest is
|
|
409
|
+
* built and sent (the send pipeline is a later unit). Distinct from the
|
|
410
|
+
* {@link TenantFeatures} `newsletter` flag, which only gates the CAPTURE form:
|
|
411
|
+
* this object supplies the CAN-SPAM physical postal address rendered in every
|
|
412
|
+
* email footer, plus the sender identity. Absent for tenants that don't send a
|
|
413
|
+
* newsletter; a sender falls back to a platform default when a field is unset.
|
|
414
|
+
*/
|
|
415
|
+
newsletter?: {
|
|
416
|
+
/**
|
|
417
|
+
* Physical postal mailing address rendered in every newsletter email footer
|
|
418
|
+
* (CAN-SPAM §5(a)(5) requirement). Plain text; multi-line allowed.
|
|
419
|
+
*/
|
|
420
|
+
postalAddress: string;
|
|
421
|
+
/** Display name on the `From:` header; falls back to `displayName`. */
|
|
422
|
+
fromName?: string;
|
|
423
|
+
/** `Reply-To:` address for the newsletter; falls back to a platform default. */
|
|
424
|
+
replyTo?: string;
|
|
425
|
+
/**
|
|
426
|
+
* Verified sending address on the `From:` header, e.g.
|
|
427
|
+
* `the-build@mail.tokenoftrust.store`. MUST be an address on a domain that is
|
|
428
|
+
* SPF/DKIM/DMARC-verified with the ESP (Resend) — NOT the tenant's own store
|
|
429
|
+
* domain, which is not a verified sending domain and would fail alignment.
|
|
430
|
+
* Unset → the send path derives `<collection>@mail.tokenoftrust.store` (the
|
|
431
|
+
* shared verified domain). Override only to use a per-tenant verified sender.
|
|
432
|
+
*/
|
|
433
|
+
fromAddress?: string;
|
|
434
|
+
};
|
|
395
435
|
/**
|
|
396
436
|
* Cart/checkout engine wiring (Track A). Present on commerce tenants
|
|
397
437
|
* that have a checkout store; drives the loader + signed add-to-cart. The
|
|
@@ -403,14 +443,14 @@ export interface TenantConfig {
|
|
|
403
443
|
commerce?: {
|
|
404
444
|
checkout?: ManagedCheckoutConfig;
|
|
405
445
|
/**
|
|
406
|
-
* Autopilot (subscription) program visibility
|
|
446
|
+
* Autopilot (subscription) program visibility. Absent → subscription
|
|
407
447
|
* purchase options render wherever a product authors them (framework/dev
|
|
408
448
|
* default). `enabled: false` HIDES Autopilot at launch — the first-class
|
|
409
449
|
* hide-at-launch state for a tenant that isn't selling recurring orders yet.
|
|
410
450
|
*/
|
|
411
451
|
autopilot?: AutopilotConfig;
|
|
412
452
|
/**
|
|
413
|
-
* Membership pricing program
|
|
453
|
+
* Membership pricing program: member-vs-list pricing + how a member
|
|
414
454
|
* discount stacks with a subscription discount. Absent/`enabled:false` → no
|
|
415
455
|
* member pricing renders (the launch default; shopper membership accounts are
|
|
416
456
|
* a Phase-2 managed-checkout capability).
|
|
@@ -426,24 +466,34 @@ export interface TenantConfig {
|
|
|
426
466
|
*/
|
|
427
467
|
capabilities?: Partial<CapabilityConfig>;
|
|
428
468
|
/**
|
|
429
|
-
* Static-publish target
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
* PROPERTY, not a global dark flag: presence opts the tenant in
|
|
433
|
-
* `enabled: false` opts back out without dropping the target
|
|
434
|
-
* dispatch credentials/coordinates live in env/secrets, NEVER
|
|
435
|
-
* an opaque, TARGET-NEUTRAL label
|
|
436
|
-
* publish job so ONE reconcile publish-sink drives any target.
|
|
469
|
+
* Static-publish target. This tenant's PUBLIC site is served by the Worker+R2
|
|
470
|
+
* pointer/digest plane (ADR 0012): go-live and rollback are instant, in-request
|
|
471
|
+
* KV `live` pointer flips over an already-staged, content-addressed bundle in
|
|
472
|
+
* R2. A per-tenant PROPERTY, not a global dark flag: presence opts the tenant in
|
|
473
|
+
* (default ON); `enabled: false` opts back out without dropping the target
|
|
474
|
+
* coordinates. The dispatch credentials/coordinates live in env/secrets, NEVER
|
|
475
|
+
* here. `target` is an opaque, TARGET-NEUTRAL label forwarded verbatim into the
|
|
476
|
+
* background stage/publish job so ONE reconcile publish-sink drives any target.
|
|
437
477
|
*/
|
|
438
478
|
staticPublish?: {
|
|
439
479
|
/** Target-neutral label, e.g. "www-s3". Forwarded into the dispatch payload. */
|
|
440
480
|
target: string;
|
|
441
481
|
/** Opt back out without removing the target. Default true when present. */
|
|
442
482
|
enabled?: boolean;
|
|
483
|
+
/**
|
|
484
|
+
* Where THIS tenant's LIVE public site actually serves its `live/manifest.json`
|
|
485
|
+
* — the per-tenant override for the public-site freshness read-back AND the admin
|
|
486
|
+
* "Live Site" link (see `staticLiveManifestUrl`). Defaults to
|
|
487
|
+
* `https://<canonicalDomain>/manifest.json` when unset; set it only while a
|
|
488
|
+
* tenant's live site serves somewhere OTHER than its canonical apex (e.g. a
|
|
489
|
+
* pre-apex-cutover host). Per-tenant so it never bleeds across stores the way a
|
|
490
|
+
* single global env override would.
|
|
491
|
+
*/
|
|
492
|
+
verifyUrl?: string;
|
|
443
493
|
};
|
|
444
494
|
/**
|
|
445
495
|
* Storefront product/subscription state — the paywall the platform gates GO-LIVE
|
|
446
|
-
* on
|
|
496
|
+
* on. This is the storefront's
|
|
447
497
|
* analog of the ToT platform SDK's `apiClient.options.storefront.mode`: a per-store
|
|
448
498
|
* PROPERTY set from the merchant's account/subscription, NEVER a per-domain
|
|
449
499
|
* special-case in code. Go-live (the public LIVE publish, `POST /api/changes/accept`)
|
|
@@ -467,6 +517,20 @@ export interface TenantConfig {
|
|
|
467
517
|
* (candidate create/ship/rollback) against a CLONE of a real tenant.
|
|
468
518
|
*/
|
|
469
519
|
classification?: "internal-test";
|
|
520
|
+
/**
|
|
521
|
+
* Tenant-local browser-integration declarations (ext-kernel-09) — the tenant's
|
|
522
|
+
* OWN, exact-version integrations (`origin: "tenant-local"`), each a fully
|
|
523
|
+
* materialized {@link IntegrationDeclarationInput}: the shared browser manifest,
|
|
524
|
+
* the resolved public config values, and the set of asset paths present for the
|
|
525
|
+
* declared version. The middleware feeds these to the interim marketing bridge
|
|
526
|
+
* (`resolveInterimBridgePlan`), which refuses a regulated tenant and otherwise
|
|
527
|
+
* resolves them into the effective plan the render engine serves — so a declared
|
|
528
|
+
* unregulated tenant boots its integration on-by-default (consent-gated), and a
|
|
529
|
+
* tenant with NO declaration is byte-identical to environment-only behavior.
|
|
530
|
+
* Distinct from `embeds` (opt-in slugs into a platform-owned catalog): this is a
|
|
531
|
+
* complete self-owned declaration, not a reference into a vetted list.
|
|
532
|
+
*/
|
|
533
|
+
integrations?: readonly IntegrationDeclarationInput[];
|
|
470
534
|
}
|
|
471
535
|
|
|
472
536
|
/**
|
|
@@ -483,7 +547,7 @@ export function isInternalTestTenant(
|
|
|
483
547
|
}
|
|
484
548
|
|
|
485
549
|
// ---------------------------------------------------------------------------
|
|
486
|
-
// Non-premium (self-serve) tenant identity
|
|
550
|
+
// Non-premium (self-serve) tenant identity.
|
|
487
551
|
//
|
|
488
552
|
// A NEW self-serve / non-premium shop is minted with its identity anchored to a
|
|
489
553
|
// per-tenant subdomain on our own Cloudflare zone: `<label>.tokenoftrust.store`.
|
|
@@ -494,7 +558,7 @@ export function isInternalTestTenant(
|
|
|
494
558
|
// A custom `.com` is layered on LATER as an optional premium alias/upgrade
|
|
495
559
|
// (`rebindPremiumDomain`), never a precondition for a preview.
|
|
496
560
|
//
|
|
497
|
-
// See docs/epics/proposed/invite-gated-auto-build.md
|
|
561
|
+
// See docs/epics/proposed/invite-gated-auto-build.md.
|
|
498
562
|
// ---------------------------------------------------------------------------
|
|
499
563
|
|
|
500
564
|
/**
|
|
@@ -546,7 +610,7 @@ export function isHostedStoreDomain(domain: string): boolean {
|
|
|
546
610
|
}
|
|
547
611
|
|
|
548
612
|
/**
|
|
549
|
-
* Mint the identity for a NEW self-serve / non-premium tenant
|
|
613
|
+
* Mint the identity for a NEW self-serve / non-premium tenant.
|
|
550
614
|
*
|
|
551
615
|
* tenant_id == appDomain == canonicalDomain == tot_data_scope ==
|
|
552
616
|
* `<label>.tokenoftrust.store`, with that single hostname as the sole `domains`
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Public browser-safe example. Missing, malformed, or unknown values must never be treated as live.",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"siteSurface": "storefront",
|
|
5
|
+
"environment": "candidate",
|
|
6
|
+
"canonicalHost": "shop.example.com",
|
|
7
|
+
"revision": "sha256:example-non-sensitive-render-revision"
|
|
8
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Architectural browser-event example; contains no customer identity, payment data, signed-cart material, or preview token.",
|
|
3
|
+
"specversion": "1.0",
|
|
4
|
+
"id": "01J6EXAMPLE7J6JX18R2X8P4Y5Q",
|
|
5
|
+
"source": "urn:tokenoftrust:storefront:site-public-example",
|
|
6
|
+
"type": "storefront.checkout.handoff.v1",
|
|
7
|
+
"subject": "cart:anonymous-session-item-set",
|
|
8
|
+
"time": "2026-08-28T20:15:30.000Z",
|
|
9
|
+
"datacontenttype": "application/json",
|
|
10
|
+
"dataschema": "https://schemas.tokenoftrust.example/storefront/events/checkout-handoff-v1.json",
|
|
11
|
+
"storefront": {
|
|
12
|
+
"schemaVersion": 1,
|
|
13
|
+
"tenant": "site_public_example",
|
|
14
|
+
"environment": "staged",
|
|
15
|
+
"siteSurface": "storefront",
|
|
16
|
+
"emitter": "browser",
|
|
17
|
+
"sequence": 7
|
|
18
|
+
},
|
|
19
|
+
"correlation": {
|
|
20
|
+
"id": "corr_public_01J6EXAMPLE",
|
|
21
|
+
"expiresAt": "2026-08-28T21:15:30.000Z"
|
|
22
|
+
},
|
|
23
|
+
"consent": {
|
|
24
|
+
"schemaVersion": 1,
|
|
25
|
+
"snapshotId": "consent_public_01J6EXAMPLE",
|
|
26
|
+
"eligiblePurposes": [
|
|
27
|
+
"essential",
|
|
28
|
+
"analytics"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"data": {
|
|
32
|
+
"currency": "USD",
|
|
33
|
+
"value": "42.50",
|
|
34
|
+
"itemCount": 2,
|
|
35
|
+
"items": [
|
|
36
|
+
{
|
|
37
|
+
"productId": "product_public_example",
|
|
38
|
+
"variantId": "variant_public_example",
|
|
39
|
+
"quantity": 2,
|
|
40
|
+
"unitPrice": "21.25"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Server-authoritative conversion example; emitted from a verified provider webhook, shares the handoff's correlation thread, carries no customer identity or payment data.",
|
|
3
|
+
"specversion": "1.0",
|
|
4
|
+
"id": "01J6EXAMPLEORDER9Q2K7M3ZC4T",
|
|
5
|
+
"source": "urn:tokenoftrust:storefront:site-public-example",
|
|
6
|
+
"type": "storefront.order.created.v1",
|
|
7
|
+
"subject": "order:external-public-example",
|
|
8
|
+
"time": "2026-08-28T20:31:12.000Z",
|
|
9
|
+
"datacontenttype": "application/json",
|
|
10
|
+
"dataschema": "https://schemas.tokenoftrust.example/storefront/events/order-created-v1.json",
|
|
11
|
+
"storefront": {
|
|
12
|
+
"schemaVersion": 1,
|
|
13
|
+
"tenant": "site_public_example",
|
|
14
|
+
"environment": "staged",
|
|
15
|
+
"siteSurface": "storefront",
|
|
16
|
+
"emitter": "server"
|
|
17
|
+
},
|
|
18
|
+
"correlation": {
|
|
19
|
+
"id": "corr_public_01J6EXAMPLE",
|
|
20
|
+
"expiresAt": "2026-08-28T21:15:30.000Z"
|
|
21
|
+
},
|
|
22
|
+
"consent": {
|
|
23
|
+
"schemaVersion": 1,
|
|
24
|
+
"snapshotId": "consent_public_01J6EXAMPLE",
|
|
25
|
+
"eligiblePurposes": [
|
|
26
|
+
"essential",
|
|
27
|
+
"analytics"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"data": {
|
|
31
|
+
"orderId": "order_public_example",
|
|
32
|
+
"currency": "USD",
|
|
33
|
+
"value": "42.50",
|
|
34
|
+
"itemCount": 2,
|
|
35
|
+
"items": [
|
|
36
|
+
{
|
|
37
|
+
"productId": "product_public_example",
|
|
38
|
+
"variantId": "variant_public_example",
|
|
39
|
+
"quantity": 2,
|
|
40
|
+
"unitPrice": "21.25"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
package/packages/public-runtime/tests/fixtures/integration/compliance-assurance-record.example.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Architectural audit example; not an authorization token or approved production schema.",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"recordId": "assurance_public_01J6EXAMPLE",
|
|
5
|
+
"tenantPublicId": "site_public_example",
|
|
6
|
+
"environment": "live",
|
|
7
|
+
"surface": "unregulated-marketing",
|
|
8
|
+
"classification": "elevated-supported",
|
|
9
|
+
"integration": {
|
|
10
|
+
"appId": "com.example.analytics-adapter",
|
|
11
|
+
"version": "2.1.0",
|
|
12
|
+
"digest": "sha256:example-immutable-package-digest",
|
|
13
|
+
"executionTier": "elevated-parent"
|
|
14
|
+
},
|
|
15
|
+
"declaredEffects": {
|
|
16
|
+
"capabilities": [
|
|
17
|
+
"parent-document.full",
|
|
18
|
+
"events.page-and-cart.anonymous"
|
|
19
|
+
],
|
|
20
|
+
"consentPurposes": [
|
|
21
|
+
"analytics"
|
|
22
|
+
],
|
|
23
|
+
"cspOrigins": [
|
|
24
|
+
"https://cdn.analytics.example",
|
|
25
|
+
"https://collect.analytics.example",
|
|
26
|
+
"https://pixel.analytics.example"
|
|
27
|
+
],
|
|
28
|
+
"dataClasses": [
|
|
29
|
+
"public-catalog",
|
|
30
|
+
"anonymous-cart-summary"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"compliance": {
|
|
34
|
+
"regulatedSharedRuntimeWaiver": false,
|
|
35
|
+
"configuredObligations": [],
|
|
36
|
+
"eligibleForOutsideGuarantee": true,
|
|
37
|
+
"protectedSurfaceEvidence": "evidence://candidate/example-assurance-proof"
|
|
38
|
+
},
|
|
39
|
+
"acknowledgement": {
|
|
40
|
+
"actorId": "operator_public_example",
|
|
41
|
+
"actorRole": "tenant-owner",
|
|
42
|
+
"reason": "Approved analytics integration after candidate privacy, performance, and CSP review.",
|
|
43
|
+
"recordedAt": "2026-08-28T20:30:00.000Z",
|
|
44
|
+
"expiresAt": "2027-02-28T20:30:00.000Z"
|
|
45
|
+
},
|
|
46
|
+
"rollback": {
|
|
47
|
+
"knownGoodVersion": "2.0.3",
|
|
48
|
+
"knownGoodRevision": "sha256:example-known-good-revision"
|
|
49
|
+
}
|
|
50
|
+
}
|
package/packages/public-runtime/tests/fixtures/integration/integration-manifest-v2.example.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Architectural example only; field names and schema URI are not approved production contracts.",
|
|
3
|
+
"$schema": "https://schemas.tokenoftrust.example/storefront/integration-manifest-v2.schema.json",
|
|
4
|
+
"schemaVersion": 2,
|
|
5
|
+
"app": {
|
|
6
|
+
"id": "com.example.analytics-adapter",
|
|
7
|
+
"name": "Example Analytics Adapter",
|
|
8
|
+
"version": "2.1.0",
|
|
9
|
+
"digest": "sha256:example-immutable-package-digest",
|
|
10
|
+
"publisher": "Example Vendor",
|
|
11
|
+
"supportUrl": "https://support.example.invalid/storefront"
|
|
12
|
+
},
|
|
13
|
+
"compatibility": {
|
|
14
|
+
"storefrontBrowserContract": ">=2.0.0 <3.0.0",
|
|
15
|
+
"configurationSchemaVersion": 3
|
|
16
|
+
},
|
|
17
|
+
"browser": {
|
|
18
|
+
"executionTier": "elevated-parent",
|
|
19
|
+
"entry": {
|
|
20
|
+
"asset": "public/apps/example-analytics/entry.v2.1.0.js",
|
|
21
|
+
"format": "module",
|
|
22
|
+
"phase": "document.deferred"
|
|
23
|
+
},
|
|
24
|
+
"contributions": [
|
|
25
|
+
{
|
|
26
|
+
"id": "consent-defaults",
|
|
27
|
+
"phase": "consent.defaults",
|
|
28
|
+
"kind": "platform-template",
|
|
29
|
+
"template": "consent-defaults.v1"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "fallback-markup",
|
|
33
|
+
"phase": "body.start",
|
|
34
|
+
"kind": "platform-template",
|
|
35
|
+
"template": "vendor-fallback-frame.v1"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"dependencies": [
|
|
39
|
+
{
|
|
40
|
+
"contribution": "entry",
|
|
41
|
+
"after": "consent-defaults"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"publicConfigSchema": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"additionalProperties": false,
|
|
47
|
+
"required": [
|
|
48
|
+
"destinationId"
|
|
49
|
+
],
|
|
50
|
+
"properties": {
|
|
51
|
+
"destinationId": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"pattern": "^[A-Z0-9_-]{3,64}$",
|
|
54
|
+
"description": "Public vendor destination identifier; never a credential."
|
|
55
|
+
},
|
|
56
|
+
"debugInNonLive": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": false
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"consent": {
|
|
63
|
+
"purposes": [
|
|
64
|
+
"analytics"
|
|
65
|
+
],
|
|
66
|
+
"loadWhen": "all-declared-purposes-eligible",
|
|
67
|
+
"unknownState": "block"
|
|
68
|
+
},
|
|
69
|
+
"csp": {
|
|
70
|
+
"profiles": [],
|
|
71
|
+
"sources": {
|
|
72
|
+
"script-src": [
|
|
73
|
+
"https://cdn.analytics.example"
|
|
74
|
+
],
|
|
75
|
+
"connect-src": [
|
|
76
|
+
"https://collect.analytics.example"
|
|
77
|
+
],
|
|
78
|
+
"frame-src": [],
|
|
79
|
+
"img-src": [
|
|
80
|
+
"https://pixel.analytics.example"
|
|
81
|
+
],
|
|
82
|
+
"style-src": []
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"permissions": {
|
|
86
|
+
"events": [
|
|
87
|
+
"storefront.page.viewed.v1",
|
|
88
|
+
"storefront.product.viewed.v1",
|
|
89
|
+
"storefront.cart.updated.v1"
|
|
90
|
+
],
|
|
91
|
+
"data": [
|
|
92
|
+
"catalog.product.public",
|
|
93
|
+
"cart.summary.anonymous"
|
|
94
|
+
],
|
|
95
|
+
"actions": [],
|
|
96
|
+
"domIntent": "full-parent-authority-review-metadata-only"
|
|
97
|
+
},
|
|
98
|
+
"performanceBudget": {
|
|
99
|
+
"maxTransferredBytes": 75000,
|
|
100
|
+
"maxAdditionalRequests": 4,
|
|
101
|
+
"maxMainThreadMilliseconds": 50,
|
|
102
|
+
"mustBeAsyncOrDeferred": true
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"server": {
|
|
106
|
+
"topics": [],
|
|
107
|
+
"secretRequirements": []
|
|
108
|
+
},
|
|
109
|
+
"assurance": {
|
|
110
|
+
"requestedClassification": "elevated-supported",
|
|
111
|
+
"regulatedTenantDefault": "disabled-until-certified"
|
|
112
|
+
},
|
|
113
|
+
"configurationMigrations": [
|
|
114
|
+
{
|
|
115
|
+
"from": 2,
|
|
116
|
+
"to": 3,
|
|
117
|
+
"migration": "migrations/public-config-2-to-3.v1.json"
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": "v1",
|
|
3
|
+
"requestId": "req_fake_catalog_1",
|
|
4
|
+
"data": {
|
|
5
|
+
"items": [
|
|
6
|
+
{
|
|
7
|
+
"schemaVersion": 1,
|
|
8
|
+
"adapterId": "fake.metrics",
|
|
9
|
+
"adapterVersion": "1.0.0",
|
|
10
|
+
"displayName": "Fake Metrics",
|
|
11
|
+
"description": "A deterministic fake catalog adapter for consumers and tests.",
|
|
12
|
+
"availability": "available",
|
|
13
|
+
"configuration": [
|
|
14
|
+
{
|
|
15
|
+
"key": "datasetId",
|
|
16
|
+
"label": "Dataset id",
|
|
17
|
+
"description": "Public identifier for the fake dataset.",
|
|
18
|
+
"kind": "string",
|
|
19
|
+
"required": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"key": "sampleRate",
|
|
23
|
+
"label": "Sample rate",
|
|
24
|
+
"description": "Integer sampling percentage.",
|
|
25
|
+
"kind": "integer",
|
|
26
|
+
"required": false
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"eventTypes": ["storefront.page.viewed.v1"],
|
|
30
|
+
"consentPurposes": ["analytics"],
|
|
31
|
+
"collectionOrigins": ["https://collector.invalid"]
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
package/packages/public-runtime/tests/fixtures/integration/tenant-action-registry.example.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Canonical v1 action names are explicit authored data and are never inferred from markup or labels.",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"actions": [
|
|
5
|
+
{ "name": "user_clicked_contact_sales_mktg" },
|
|
6
|
+
{ "name": "user_clicked_create_account_mktg" },
|
|
7
|
+
{ "name": "user_clicked_login_mktg" },
|
|
8
|
+
{ "name": "user_clicked_contact_support_consumer_mktg" },
|
|
9
|
+
{ "name": "user_clicked_contact_support_partner_mktg" }
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Tenant-local example integration
|
|
2
|
+
|
|
3
|
+
The smallest complete, valid tenant-local integration declaration: one
|
|
4
|
+
`document.deferred` entry module plus one `body.start` fallback contribution,
|
|
5
|
+
gated on the `analytics` consent purpose and the curated `plausible` CSP
|
|
6
|
+
profile. It validates through `validateIntegrationManifest` — the identical
|
|
7
|
+
function a managed app's manifest validates through (ADR 0014 C1) — so
|
|
8
|
+
nothing here is a tenant-local special case.
|
|
9
|
+
|
|
10
|
+
| File | What it is |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `manifest.json` | The `IntegrationManifest` — the same contract a managed app ships. |
|
|
13
|
+
| `public-config.json` | Resolved tenant values for `manifest.json`'s `browser.publicConfigSchema`. |
|
|
14
|
+
| `entry.js` | The `document.deferred` entry module (`IntegrationLifecycleModule`: `init`/`update`/`dispose`). |
|
|
15
|
+
|
|
16
|
+
Walked end to end — validate → resolve → render → boot → update → dispose →
|
|
17
|
+
remove — by
|
|
18
|
+
[`../../../integration/kernel-docs-harness.test.ts`](../../../integration/kernel-docs-harness.test.ts).
|
|
19
|
+
Run it with `pnpm --filter @tot/public-runtime test kernel-docs-harness`.
|
|
20
|
+
|
|
21
|
+
Full contract reference, ordering/failure guide, and removal walkthrough:
|
|
22
|
+
[`docs/architecture/browser-integration-kernel.md`](../../../../../../docs/architecture/browser-integration-kernel.md).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A minimal tenant-local integration entry module — the shape every entry
|
|
3
|
+
* asset exports (IntegrationLifecycleModule from
|
|
4
|
+
* packages/public-runtime/src/integration/lifecycle.ts): `init` is required,
|
|
5
|
+
* `update`/`dispose` are optional.
|
|
6
|
+
*
|
|
7
|
+
* The deferred lifecycle runtime (lifecycle-runtime.ts's IntegrationLifecycle)
|
|
8
|
+
* calls these hooks exactly once per document; it never imports this file by
|
|
9
|
+
* name. An entry-asset layer maps this integration's appId/version (from the
|
|
10
|
+
* boot descriptor) to this file via an injected IntegrationModuleLoader — see
|
|
11
|
+
* kernel-docs-harness.test.ts, which dynamically imports this exact file
|
|
12
|
+
* through that same loader shape.
|
|
13
|
+
*
|
|
14
|
+
* `calls` is test/demo-only bookkeeping, not part of the contract — it lets
|
|
15
|
+
* the harness assert exactly-once init, in-place update, and terminal dispose
|
|
16
|
+
* without any DOM.
|
|
17
|
+
*/
|
|
18
|
+
export const calls = [];
|
|
19
|
+
|
|
20
|
+
export function init() {
|
|
21
|
+
calls.push("init");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function update(reason) {
|
|
25
|
+
calls.push(`update:${reason}`);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function dispose() {
|
|
29
|
+
calls.push("dispose");
|
|
30
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "A minimal, valid tenant-local integration declaration. Validated by validateIntegrationManifest — the SAME function that validates a managed app (ADR 0014 C1 integration-schema-shared); nothing here is special-cased for tenant-local. Walked end to end by ../../integration/kernel-docs-harness.test.ts; see docs/architecture/browser-integration-kernel.md.",
|
|
3
|
+
"schemaVersion": 2,
|
|
4
|
+
"app": {
|
|
5
|
+
"id": "site.acme.analytics",
|
|
6
|
+
"name": "Acme Analytics (tenant-local)",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"digest": "sha256:tenant-local-example-fixture",
|
|
9
|
+
"publisher": "Acme (tenant-local)",
|
|
10
|
+
"supportUrl": "https://acme.example/support"
|
|
11
|
+
},
|
|
12
|
+
"compatibility": {
|
|
13
|
+
"storefrontBrowserContract": ">=2.0.0 <3.0.0",
|
|
14
|
+
"configurationSchemaVersion": 2
|
|
15
|
+
},
|
|
16
|
+
"browser": {
|
|
17
|
+
"executionTier": "sandbox",
|
|
18
|
+
"entry": {
|
|
19
|
+
"asset": "public/apps/site.acme.analytics/entry.1.0.0.js",
|
|
20
|
+
"format": "module",
|
|
21
|
+
"phase": "document.deferred"
|
|
22
|
+
},
|
|
23
|
+
"contributions": [
|
|
24
|
+
{
|
|
25
|
+
"id": "fallback-badge",
|
|
26
|
+
"phase": "body.start",
|
|
27
|
+
"kind": "platform-template",
|
|
28
|
+
"template": "vendor-fallback-frame.v1"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"dependencies": [
|
|
32
|
+
{ "contribution": "entry", "after": "fallback-badge" }
|
|
33
|
+
],
|
|
34
|
+
"publicConfigSchema": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"required": ["siteId"],
|
|
38
|
+
"properties": {
|
|
39
|
+
"siteId": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Public Plausible site identifier; never a credential."
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"consent": {
|
|
46
|
+
"purposes": ["analytics"],
|
|
47
|
+
"loadWhen": "all-declared-purposes-eligible",
|
|
48
|
+
"unknownState": "block"
|
|
49
|
+
},
|
|
50
|
+
"csp": {
|
|
51
|
+
"profiles": ["plausible"],
|
|
52
|
+
"sources": {}
|
|
53
|
+
},
|
|
54
|
+
"permissions": {
|
|
55
|
+
"events": ["storefront.page.viewed.v1"],
|
|
56
|
+
"data": [],
|
|
57
|
+
"actions": [],
|
|
58
|
+
"domIntent": "none"
|
|
59
|
+
},
|
|
60
|
+
"performanceBudget": {
|
|
61
|
+
"maxTransferredBytes": 15000,
|
|
62
|
+
"maxAdditionalRequests": 1,
|
|
63
|
+
"maxMainThreadMilliseconds": 20,
|
|
64
|
+
"mustBeAsyncOrDeferred": true
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"server": { "topics": [], "secretRequirements": [] },
|
|
68
|
+
"assurance": {
|
|
69
|
+
"requestedClassification": "baseline",
|
|
70
|
+
"regulatedTenantDefault": "disabled-until-certified"
|
|
71
|
+
},
|
|
72
|
+
"configurationMigrations": [
|
|
73
|
+
{ "from": 1, "to": 2, "migration": "migrations/public-config-1-to-2.v1.json" }
|
|
74
|
+
]
|
|
75
|
+
}
|