@tokenoftrust/storefront-runner 2.5.6 → 3.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/agency-kit/tools/lib/public-binaries.mjs +95 -0
- package/apps/storefront/astro.config.mjs +7 -0
- package/apps/storefront/env.d.ts +3 -0
- package/apps/storefront/src/components/catalog/storefront/ProductCard.astro +5 -4
- package/apps/storefront/src/components/catalog/storefront/commerce/PriceDisplay.astro +2 -1
- package/apps/storefront/src/components/catalog/storefront/islands/SearchTypeahead.tsx +17 -20
- package/apps/storefront/src/components/catalog/storefront/islands/VariantSelector.tsx +13 -21
- package/apps/storefront/src/components/catalog/storefront/plp/Pagination.astro +9 -5
- package/apps/storefront/src/components/checkout/storefront/commerce/CheckoutLoader.astro +18 -6
- package/apps/storefront/src/components/compliance/storefront/islands/CheckoutComplianceGate.tsx +19 -4
- package/apps/storefront/src/components/content/storefront/Badge.astro +1 -0
- package/apps/storefront/src/components/content/storefront/blog/BlogIndexView.astro +10 -1
- package/apps/storefront/src/components/publication/storefront/islands/CatalogQueryView.tsx +321 -0
- package/apps/storefront/src/config/declaredTenantConfig.ts +59 -27
- package/apps/storefront/src/config/devTenantSeed.ts +2 -1
- package/apps/storefront/src/layouts/Layout.astro +1 -1
- package/apps/storefront/src/lib/access/auth/gatePage.ts +29 -14
- package/apps/storefront/src/lib/access/shared/publicAccess.ts +95 -0
- package/apps/storefront/src/lib/access/shared/tenantRouting.ts +19 -0
- package/apps/storefront/src/lib/catalog/shared/catalogIndex.ts +109 -0
- package/apps/storefront/src/lib/catalog/shared/catalogQueryView.ts +60 -0
- package/apps/storefront/src/lib/catalog/shared/collectionPaging.ts +78 -0
- package/apps/storefront/src/lib/catalog/shared/stockStatus.ts +23 -0
- package/apps/storefront/src/lib/catalog/tot/query.ts +8 -0
- package/apps/storefront/src/lib/checkout/browser/checkoutRequirementsForm.ts +54 -0
- package/apps/storefront/src/lib/checkout/commerce/checkoutHandoffRoute.ts +103 -35
- package/apps/storefront/src/lib/checkout/commerce/checkoutRequirements.ts +88 -0
- package/apps/storefront/src/lib/checkout/commerce/finalCartAuthorization.ts +2 -0
- package/apps/storefront/src/lib/checkout/commerce/sharedStoreAdmission.ts +95 -0
- package/apps/storefront/src/lib/checkout/shared/lazyCheckoutLoader.ts +191 -0
- package/apps/storefront/src/lib/compliance/browser/checkoutVerificationFlow.ts +9 -0
- package/apps/storefront/src/lib/compliance/enforcement.ts +7 -5
- package/apps/storefront/src/lib/content/seo/structuredData.ts +12 -3
- package/apps/storefront/src/lib/content/storyblok/provider.ts +4 -2
- package/apps/storefront/src/lib/observability/shared/serverTiming.ts +110 -0
- package/apps/storefront/src/lib/publication/shared/edgeCache.ts +3 -4
- package/apps/storefront/src/lib/publication/shared/staticQuery.ts +64 -0
- package/apps/storefront/src/middleware/controlPlane.ts +14 -11
- package/apps/storefront/src/middleware/index.ts +33 -12
- package/apps/storefront/src/middleware/renderChain.ts +52 -26
- package/apps/storefront/src/pages/[...slug].astro +3 -0
- package/apps/storefront/src/pages/api/commerce/final-cart-authorization.ts +112 -42
- package/apps/storefront/src/pages/api/compliance/preflight.ts +61 -13
- package/apps/storefront/src/pages/blog/author/[author].astro +1 -1
- package/apps/storefront/src/pages/blog/category/[category].astro +1 -1
- package/apps/storefront/src/pages/blog/tag/[tag].astro +1 -1
- package/apps/storefront/src/pages/catalog-index.json.ts +20 -0
- package/apps/storefront/src/pages/collections/[handle]/page/[n].astro +28 -0
- package/apps/storefront/src/pages/collections/[handle].astro +13 -198
- package/apps/storefront/src/pages/collections/_CollectionView.astro +251 -0
- package/apps/storefront/src/pages/collections/index.astro +1 -1
- package/apps/storefront/src/pages/products/[handle].astro +10 -5
- package/apps/storefront/src/pages/search.astro +33 -33
- package/apps/storefront/src/pages/sitemap.xml.ts +7 -1
- package/apps/storefront/vitest.config.cts +3 -0
- package/package.json +1 -1
- package/packages/cli/src/declared-config.mjs +318 -32
- package/packages/cli/src/publication-spaces.mjs +1 -1
- package/packages/public-runtime/package.json +1 -0
- package/packages/public-runtime/schemas/publication-space/v1/manifest.schema.json +1 -1
- package/packages/public-runtime/schemas/publication-space/v1/normalized-mount.schema.json +1 -1
- package/packages/public-runtime/src/activity/catalog.ts +8 -1
- package/packages/public-runtime/src/candidate-index.ts +5 -0
- package/packages/public-runtime/src/capabilities.ts +12 -9
- package/packages/public-runtime/src/capture-rewrites.ts +687 -0
- package/packages/public-runtime/src/checkout-orders.ts +6 -7
- package/packages/public-runtime/src/checkout.ts +190 -6
- package/packages/public-runtime/src/compliance/evaluate.ts +7 -3
- package/packages/public-runtime/src/compliance/profile.ts +90 -14
- package/packages/public-runtime/src/compliance-coherence.d.mts +10 -1
- package/packages/public-runtime/src/compliance-coherence.mjs +129 -29
- package/packages/public-runtime/src/customization-runtime.ts +64 -2
- package/packages/public-runtime/src/declared-tenant-config.d.mts +13 -2
- package/packages/public-runtime/src/declared-tenant-config.mjs +83 -1
- package/packages/public-runtime/src/image-preview-rewrite-overlay.ts +13 -37
- package/packages/public-runtime/src/membership.ts +3 -0
- package/packages/public-runtime/src/publication-space.ts +1 -0
- package/packages/public-runtime/src/tenant.ts +28 -4
- package/scripts/tenant/validate.mjs +17 -8
|
@@ -45,8 +45,9 @@ import {
|
|
|
45
45
|
parseMappingTarget,
|
|
46
46
|
workspacePathForTenantRelative,
|
|
47
47
|
} from "../../agency-kit/tools/lib/tot-repo-mappings.mjs";
|
|
48
|
+
import { CATALOG_IMAGES_DIR, publicBinaryFindings } from "../../agency-kit/tools/lib/public-binaries.mjs";
|
|
48
49
|
import { validateVisualParityClosure } from "../../packages/cli/src/visual-parity.mjs";
|
|
49
|
-
import { validateDeclaredConfig } from "../../packages/cli/src/declared-config.mjs";
|
|
50
|
+
import { declaredObligations, isRegulatedCompliance, validateDeclaredConfig } from "../../packages/cli/src/declared-config.mjs";
|
|
50
51
|
|
|
51
52
|
/** Catalogued embed slugs a tenant may opt into (mirror of EMBED_PROVIDERS). */
|
|
52
53
|
const KNOWN_EMBED_SLUGS = new Set(KNOWN_EMBEDS.map((p) => p.slug));
|
|
@@ -253,18 +254,17 @@ function providesChrome(contentDir) {
|
|
|
253
254
|
|
|
254
255
|
const CAPABILITY_KEYS = new Set(["cartCheckout", "ageVerification", "exciseTax"]);
|
|
255
256
|
|
|
257
|
+
// What the obligation registry says this store owes (declared-config.mjs mirrors it).
|
|
256
258
|
function complianceObligations(config) {
|
|
257
|
-
const
|
|
259
|
+
const owed = new Set(declaredObligations(config?.compliance).map((o) => o.id));
|
|
258
260
|
return {
|
|
259
|
-
ageVerification:
|
|
260
|
-
exciseTax:
|
|
261
|
+
ageVerification: owed.has("age_gate"),
|
|
262
|
+
exciseTax: owed.has("excise"),
|
|
261
263
|
};
|
|
262
264
|
}
|
|
263
265
|
|
|
264
266
|
function rawHtmlAllowed(config) {
|
|
265
|
-
|
|
266
|
-
const regulated = obligations.ageVerification || obligations.exciseTax;
|
|
267
|
-
return !regulated;
|
|
267
|
+
return !isRegulatedCompliance(config?.compliance);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
function validateCapabilitiesDoc(doc, file, config) {
|
|
@@ -287,7 +287,7 @@ function validateCapabilitiesDoc(doc, file, config) {
|
|
|
287
287
|
out.push(mk(ERROR, "capability-compliance-floor", file, "ageVerification cannot be disabled for a tenant with compliance.minAge"));
|
|
288
288
|
}
|
|
289
289
|
if (obligations.exciseTax && doc.exciseTax?.enabled === false) {
|
|
290
|
-
out.push(mk(ERROR, "capability-compliance-floor", file, "exciseTax cannot be disabled for a tenant with compliance.nicotineWarning"));
|
|
290
|
+
out.push(mk(ERROR, "capability-compliance-floor", file, "exciseTax cannot be disabled for a tenant with compliance.nicotineWarning or compliance.exciseTax"));
|
|
291
291
|
}
|
|
292
292
|
return out;
|
|
293
293
|
}
|
|
@@ -1282,6 +1282,13 @@ export function validateTenant(tenantDir, opts = {}) {
|
|
|
1282
1282
|
// 6. large public assets — advisory (never blocks); see LARGE_PUBLIC_ASSET_FIX.
|
|
1283
1283
|
findings.push(...findLargePublicAssets(publicDir, rel));
|
|
1284
1284
|
|
|
1285
|
+
// Tenant binaries never live in the tenant repo — the same rule the hosted reconcile refuses.
|
|
1286
|
+
const publicEntries = walk(publicDir, () => true)
|
|
1287
|
+
.map((p) => ({ rel: relative(publicDir, p).split("\\").join("/"), bytes: statSync(p).size }));
|
|
1288
|
+
for (const f of publicBinaryFindings(publicEntries)) {
|
|
1289
|
+
findings.push(mk(ERROR, f.code, `${rel(publicDir)}/${f.path.slice("public/".length)}`, f.message, f.remedy));
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1285
1292
|
const ok = !findings.some((f) => f.level === ERROR);
|
|
1286
1293
|
return { ok, findings };
|
|
1287
1294
|
}
|
|
@@ -1360,6 +1367,8 @@ function checkAsset(src, file, publicDir, tenantId) {
|
|
|
1360
1367
|
function findLargePublicAssets(publicDir, rel) {
|
|
1361
1368
|
const out = [];
|
|
1362
1369
|
for (const p of walk(publicDir, () => true)) {
|
|
1370
|
+
// public/catalog-images/ is already an error (catalog-images-in-repo); one line, not thousands.
|
|
1371
|
+
if (relative(publicDir, p).split("\\").join("/").startsWith(CATALOG_IMAGES_DIR)) continue;
|
|
1363
1372
|
const size = statSync(p).size;
|
|
1364
1373
|
if (size >= LARGE_PUBLIC_ASSET_BYTES) {
|
|
1365
1374
|
out.push(mk(WARN, "large-public-asset", rel(p), `${(size / 1024).toFixed(0)}KB`));
|