@certrev/cert-block 1.0.3 → 1.1.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +6 -1
  3. package/dist/builder/cert-chrome-data.d.ts +26 -1
  4. package/dist/builder/cert-chrome-data.d.ts.map +1 -1
  5. package/dist/builder/cert-chrome-data.js +1 -0
  6. package/dist/builder/cert-chrome-data.js.map +1 -1
  7. package/dist/builder/cert-review-card.d.ts +35 -2
  8. package/dist/builder/cert-review-card.d.ts.map +1 -1
  9. package/dist/builder/cert-review-card.js +112 -2
  10. package/dist/builder/cert-review-card.js.map +1 -1
  11. package/dist/builder/delivery-runtime.d.ts +23 -0
  12. package/dist/builder/delivery-runtime.d.ts.map +1 -0
  13. package/dist/builder/delivery-runtime.js +38 -0
  14. package/dist/builder/delivery-runtime.js.map +1 -0
  15. package/dist/builder/envelope-face.d.ts +63 -0
  16. package/dist/builder/envelope-face.d.ts.map +1 -0
  17. package/dist/builder/envelope-face.js +151 -0
  18. package/dist/builder/envelope-face.js.map +1 -0
  19. package/dist/builder/index.d.ts +15 -3
  20. package/dist/builder/index.d.ts.map +1 -1
  21. package/dist/builder/index.js +14 -2
  22. package/dist/builder/index.js.map +1 -1
  23. package/dist/builder/issuer-key.d.ts +12 -0
  24. package/dist/builder/issuer-key.d.ts.map +1 -0
  25. package/dist/builder/issuer-key.js +14 -0
  26. package/dist/builder/issuer-key.js.map +1 -0
  27. package/dist/components/memo-toggle.d.ts +42 -0
  28. package/dist/components/memo-toggle.d.ts.map +1 -0
  29. package/dist/components/memo-toggle.js +60 -0
  30. package/dist/components/memo-toggle.js.map +1 -0
  31. package/dist/components/render-cert-block.d.ts +9 -0
  32. package/dist/components/render-cert-block.d.ts.map +1 -1
  33. package/dist/components/render-cert-block.js +80 -19
  34. package/dist/components/render-cert-block.js.map +1 -1
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +3 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/verify/get-verified-delivery.d.ts +91 -0
  40. package/dist/verify/get-verified-delivery.d.ts.map +1 -0
  41. package/dist/verify/get-verified-delivery.js +157 -0
  42. package/dist/verify/get-verified-delivery.js.map +1 -0
  43. package/package.json +5 -1
  44. package/src/builder/cert-chrome-data.ts +27 -0
  45. package/src/builder/cert-review-card.tsx +143 -3
  46. package/src/builder/delivery-runtime.ts +54 -0
  47. package/src/builder/envelope-face.ts +173 -0
  48. package/src/builder/index.tsx +23 -1
  49. package/src/builder/issuer-key.ts +13 -0
  50. package/src/components/memo-toggle.ts +63 -0
  51. package/src/components/render-cert-block.ts +121 -22
  52. package/src/index.ts +28 -0
  53. package/src/verify/get-verified-delivery.ts +211 -0
@@ -65,6 +65,7 @@
65
65
  */
66
66
  import { escapeAttribute, escapeHtml, safeHttpUrl } from './escape.js';
67
67
  import { dedupeCredential, formatDate } from './format.js';
68
+ import { MEMO_ATTR, MEMO_COLLAPSED_LINES, MEMO_EXPAND_LABEL, MEMO_TEXT_ATTR, MEMO_TOGGLE_ATTR, memoCollapses, NARROW_VIEWPORT, } from './memo-toggle.js';
68
69
  import { CERTREV_LINK_REL } from './rel.js';
69
70
  import { CERT_SCOPE_LINE, CERT_STRINGS_VERSION, COMPENSATED_EXPERT_CUE, CREDENTIAL_VERIFIED_ATTRIBUTION, RENDER_BLOCK_FONT_STACKS, resolveBlockTheme, } from './render-def.js';
70
71
  // ─────────────────────────────────────────────────────────────────────────────
@@ -147,6 +148,59 @@ function showsCompensationCue(facts, placed) {
147
148
  * matches the badge footer; navy so it still reads as an action.
148
149
  */
149
150
  const STAMP_LINK_STYLE = 'font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);text-decoration:none;cursor:pointer;';
151
+ // ─────────────────────────────────────────────────────────────────────────────
152
+ // The PHONE face (1.1.0, `responsive`): one scoped stylesheet per root, and the
153
+ // collapsible memo markup `memo-toggle.ts` flips
154
+ // ─────────────────────────────────────────────────────────────────────────────
155
+ /**
156
+ * The phone rules, scoped to a responsive root so a host page's other markup is never touched.
157
+ * Every rule lives inside the media query: a desktop viewport, or a host that strips the
158
+ * `<style>`, paints exactly the 1.0.3 card (the toggle stays hidden by its inline `display:none`,
159
+ * which only the `!important` rule here overrides).
160
+ */
161
+ const RESPONSIVE_STYLE = `<style>@media ${NARROW_VIEWPORT}{` +
162
+ `.certrev-cert[data-certrev-responsive] [data-certrev-stack]{grid-template-columns:1fr!important}` +
163
+ `.certrev-cert[data-certrev-responsive] [${MEMO_ATTR}="collapsed"] [${MEMO_TEXT_ATTR}]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:${MEMO_COLLAPSED_LINES};line-clamp:${MEMO_COLLAPSED_LINES};overflow:hidden}` +
164
+ `.certrev-cert[data-certrev-responsive] [${MEMO_TOGGLE_ATTR}]{display:inline-flex!important}` +
165
+ `}</style>`;
166
+ /**
167
+ * The memo toggle: a native button (keyboard and screen reader for free), a 44px touch target,
168
+ * styled as the memo footer's stamp links. Hidden INLINE rather than with `hidden`, so a host
169
+ * stylesheet's `[hidden]{display:none!important}` cannot pin it shut on a phone.
170
+ */
171
+ const MEMO_TOGGLE_STYLE = 'display:none;align-items:center;min-height:44px;padding:0;margin:0;border:0;background:none;cursor:pointer;font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);text-decoration:underline;text-underline-offset:3px;';
172
+ /** A stable short id for the memo text (the toggle's `aria-controls`); FNV-1a, base 36. */
173
+ function memoId(seed) {
174
+ let h = 0x811c9dc5;
175
+ for (let i = 0; i < seed.length; i++) {
176
+ h ^= seed.charCodeAt(i);
177
+ h = Math.imul(h, 0x01000193);
178
+ }
179
+ return `certrev-memo-${(h >>> 0).toString(36)}`;
180
+ }
181
+ const NO_MEMO_COLLAPSE = { box: '', text: '', toggle: '' };
182
+ /**
183
+ * Collapsed by default: the phone rule clamps the text, and the desktop never reads the state.
184
+ * The clamp is visual only, so a screen reader reads the whole memo in either state and hears
185
+ * the toggle as "Read the full memo, button, collapsed".
186
+ */
187
+ function memoCollapse(facts, responsive, mode) {
188
+ if (!responsive || !memoCollapses(facts.memo))
189
+ return NO_MEMO_COLLAPSE;
190
+ const id = memoId(`${mode}\n${facts.certificateUrl}\n${facts.memo}`);
191
+ return {
192
+ box: ` ${MEMO_ATTR}="collapsed"`,
193
+ text: ` id="${id}" ${MEMO_TEXT_ATTR}`,
194
+ toggle: `<button type="button" ${MEMO_TOGGLE_ATTR} aria-expanded="false" aria-controls="${id}" ` +
195
+ `style="${MEMO_TOGGLE_STYLE}">${MEMO_EXPAND_LABEL}</button>`,
196
+ };
197
+ }
198
+ /** The sidebar/custom memo quote, collapsible on a phone. */
199
+ function memoQuote(facts, responsive, mode) {
200
+ const collapse = memoCollapse(facts, responsive, mode);
201
+ const quote = `<blockquote${collapse.text} style="margin:16px 0 0;padding-left:16px;border-left:3px solid var(--ba,#0a1b3f);font-size:15px;line-height:1.5;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</blockquote>`;
202
+ return collapse.toggle ? `<div${collapse.box}>${quote}${collapse.toggle}</div>` : quote;
203
+ }
150
204
  /** A round avatar tile with the given initials. */
151
205
  function avatar(text, size, fontSize) {
152
206
  return (`<div style="width:${size}px;height:${size}px;border-radius:50%;background:var(--stone);color:var(--cr-ink-sub);` +
@@ -264,17 +318,20 @@ function rootStyle(theme) {
264
318
  `color:var(--navy)`,
265
319
  ].join(';');
266
320
  }
267
- function root(mode, theme, inner, face) {
321
+ function root(mode, theme, inner, face, responsive = false) {
268
322
  // The rung is an OBSERVABILITY stamp for the crawl monitor — only emitted when a
269
323
  // face is present, so the grandfathered (face-absent) output stays byte-identical.
270
324
  const rungAttr = face ? ` data-certrev-rung="${escapeAttribute(face.rung)}"` : '';
325
+ // The phone face (1.1.0): the scope its rules key on, and the rules, only when asked for.
326
+ const responsiveAttr = responsive ? ' data-certrev-responsive' : '';
327
+ const style = responsive ? RESPONSIVE_STYLE : '';
271
328
  return (`<div class="certrev-cert certrev-cert--${mode}" data-certrev-mode="${mode}" ` +
272
- `data-certrev-strings-version="${CERT_STRINGS_VERSION}"${rungAttr} style="${rootStyle(theme)}">${inner}</div>`);
329
+ `data-certrev-strings-version="${CERT_STRINGS_VERSION}"${rungAttr}${responsiveAttr} style="${rootStyle(theme)}">${style}${inner}</div>`);
273
330
  }
274
331
  // ─────────────────────────────────────────────────────────────────────────────
275
332
  // Face — BANNER: a certification header card + a separate expert-memo card
276
333
  // ─────────────────────────────────────────────────────────────────────────────
277
- function bannerHeaderCard(facts, placed) {
334
+ function bannerHeaderCard(facts, placed, responsive = false) {
278
335
  const certified = formatDate(facts.certifiedAt);
279
336
  const subtitle = placed('authorTitle') && facts.authorTitle
280
337
  ? `<div style="font-size:13px;color:var(--cr-ink-sub);">${escapeHtml(facts.authorTitle)}</div>`
@@ -335,7 +392,8 @@ function bannerHeaderCard(facts, placed) {
335
392
  return (`<div style="border:1px solid var(--navy-10);border-radius:calc(var(--br,14px) * 0.7);overflow:hidden;font-family:var(--cr-bf);">` +
336
393
  header +
337
394
  `<div style="padding:22px 24px 18px;">` +
338
- `<div style="display:grid;grid-template-columns:${gridCols};gap:22px;">` +
395
+ // On a phone (responsive) the two columns stack: the stylesheet keys on `data-certrev-stack`.
396
+ `<div${responsive ? ' data-certrev-stack' : ''} style="display:grid;grid-template-columns:${gridCols};gap:22px;">` +
339
397
  authorColumn +
340
398
  `<div>` +
341
399
  `<div style="font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);margin-bottom:11px;">Reviewed by</div>` +
@@ -347,7 +405,7 @@ function bannerHeaderCard(facts, placed) {
347
405
  `</div>` +
348
406
  `</div>`);
349
407
  }
350
- function bannerMemoCard(facts, placed) {
408
+ function bannerMemoCard(facts, placed, responsive = false) {
351
409
  // The memo card composes `<name><, credential>` as two spans rather than through
352
410
  // `nameWithCredential`, so it needs the SAME duplicate guard — the doubled "MD, MD" was
353
411
  // visible on this card too. Gated on what SURVIVES the dedupe, not on the raw field: a
@@ -360,14 +418,17 @@ function bannerMemoCard(facts, placed) {
360
418
  // placement (the pattern `bio` already follows): placement alone painted an "Expert
361
419
  // memo" heading over an empty `<p>` for a contract-legal empty memo.
362
420
  const memoAvatar = placed('reviewerPhoto') ? avatar(initials(facts.reviewerName), 46, 13) : '';
421
+ // On a phone a long memo collapses; the name row stays visible above it (the box is the column).
422
+ const collapse = memoCollapse(facts, responsive, 'banner');
363
423
  const memoSection = placed('memo') && facts.memo
364
424
  ? `<div style="font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--navy-55);margin-bottom:14px;">Expert memo</div>` +
365
425
  `<div style="display:flex;gap:15px;">${memoAvatar}` +
366
- `<div style="flex:1;min-width:0;">` +
426
+ `<div${collapse.box} style="flex:1;min-width:0;">` +
367
427
  `<div style="font-size:16px;line-height:1.2;color:var(--cr-ink);"><span style="font-weight:700;">${escapeHtml(facts.reviewerName)}</span>${credTail}</div>` +
368
428
  // Readable, UPRIGHT DM Sans quote (the display-serif italic hurt legibility);
369
429
  // pre-line preserves the reviewer's paragraph breaks. No left accent bar (matches the guide).
370
- `<p style="margin:11px 0 14px;font-size:15.5px;line-height:1.6;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</p>` +
430
+ `<p${collapse.text} style="margin:11px 0 14px;font-size:15.5px;line-height:1.6;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</p>` +
431
+ collapse.toggle +
371
432
  `</div>` +
372
433
  `</div>`
373
434
  : '';
@@ -402,7 +463,7 @@ function bannerMemoCard(facts, placed) {
402
463
  // ─────────────────────────────────────────────────────────────────────────────
403
464
  // Face — SIDEBAR (the DEFAULT): a reviewer card pinned beside the article body
404
465
  // ─────────────────────────────────────────────────────────────────────────────
405
- function sidebarCard(facts, placed) {
466
+ function sidebarCard(facts, placed, responsive = false) {
406
467
  const header = placed('label')
407
468
  ? `<div style="display:flex;align-items:center;justify-content:center;gap:10px;padding:12px;background:var(--certrev-bar-bg,#0a1b3f);color:var(--certrev-bar-fg,#fff);font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;">${logo(18)} Expert reviewed</div>`
408
469
  : '';
@@ -412,9 +473,7 @@ function sidebarCard(facts, placed) {
412
473
  : '';
413
474
  // Gated on CONTENT as well as placement (like `bioPara` above) — placement alone rendered
414
475
  // an empty accent-bordered blockquote for a contract-legal empty memo.
415
- const blockquote = placed('memo') && facts.memo
416
- ? `<blockquote style="margin:16px 0 0;padding-left:16px;border-left:3px solid var(--ba,#0a1b3f);font-size:15px;line-height:1.5;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</blockquote>`
417
- : '';
476
+ const blockquote = placed('memo') && facts.memo ? memoQuote(facts, responsive, 'sidebar') : '';
418
477
  // Disclosure row: cue + ` · ` + scope; the separator only when BOTH land, the row only when either does.
419
478
  const cueEl = showsCompensationCue(facts, placed)
420
479
  ? `<span style="font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;">${escapeHtml(COMPENSATED_EXPERT_CUE)}</span>`
@@ -490,7 +549,7 @@ function floatingPill(facts, placed) {
490
549
  // renderCertBlock produces, on ANY face. Whether it should is a live design question
491
550
  // (which surfaces the switch covers) — not something to settle by quietly adding hooks.
492
551
  // ─────────────────────────────────────────────────────────────────────────────
493
- function renderCustomFace(facts, placed) {
552
+ function renderCustomFace(facts, placed, responsive = false) {
494
553
  const parts = [];
495
554
  // 1. label — the navy "Expert reviewed" header bar (sidebar's header markup)
496
555
  if (placed('label')) {
@@ -519,7 +578,7 @@ function renderCustomFace(facts, placed) {
519
578
  }
520
579
  // 5. memo (sidebar's blockquote) — placement AND content, like `bio` directly above
521
580
  if (placed('memo') && facts.memo) {
522
- parts.push(`<blockquote style="margin:16px 0 0;padding-left:16px;border-left:3px solid var(--ba,#0a1b3f);font-size:15px;line-height:1.5;color:var(--cr-ink-soft);white-space:pre-line;">${escapeHtml(facts.memo)}</blockquote>`);
581
+ parts.push(memoQuote(facts, responsive, 'custom'));
523
582
  }
524
583
  // 6. disclosures (sidebar's cue · scope row; separator only when BOTH land)
525
584
  const cueEl = showsCompensationCue(facts, placed)
@@ -560,12 +619,13 @@ export function renderCertBlock(input) {
560
619
  const theme = resolveBlockTheme(input.theme);
561
620
  const { facts, face } = input;
562
621
  const placed = placedTester(face);
622
+ const responsive = input.responsive === true;
563
623
  switch (input.mode) {
564
624
  case 'banner': {
565
625
  // Suppress the memo card entirely when the engine placed none of its fields
566
626
  // (avoids an empty bordered shell). Grandfather: all placed ⇒ card renders.
567
627
  const memoCard = placed('memo') || placed('profileLink') || placed('certificateLink') || placed('scopeLine')
568
- ? bannerMemoCard(facts, placed)
628
+ ? bannerMemoCard(facts, placed, responsive)
569
629
  : '';
570
630
  // First-class memo split: default 'full' is byte-identical to the prior
571
631
  // header+memo render; 'header'/'memo' emit only that card so the exporter can place
@@ -573,16 +633,17 @@ export function renderCertBlock(input) {
573
633
  // unknown `part` falls back to 'full' by this written rule, not by a catch-all arm.
574
634
  const part = input.part === 'header' || input.part === 'memo' ? input.part : 'full';
575
635
  const inner = part === 'header'
576
- ? bannerHeaderCard(facts, placed)
636
+ ? bannerHeaderCard(facts, placed, responsive)
577
637
  : part === 'memo'
578
638
  ? memoCard
579
- : bannerHeaderCard(facts, placed) + memoCard;
580
- return root('banner', theme, inner, face);
639
+ : bannerHeaderCard(facts, placed, responsive) + memoCard;
640
+ return root('banner', theme, inner, face, responsive);
581
641
  }
582
642
  case 'floating':
643
+ // The pill has no memo and no columns: nothing on it changes on a phone.
583
644
  return root('floating', theme, floatingPill(facts, placed), face);
584
645
  case 'custom':
585
- return root('custom', theme, renderCustomFace(facts, placed), face);
646
+ return root('custom', theme, renderCustomFace(facts, placed, responsive), face, responsive);
586
647
  // THE default placement, named here and nowhere else: the declared default and the
587
648
  // runtime fallback are the same line, so they cannot drift apart. Naming `sidebar` as a
588
649
  // real case also keeps the exhaustiveness read over CertBlockLayout honest — a reader
@@ -590,7 +651,7 @@ export function renderCertBlock(input) {
590
651
  // biome-ignore lint/complexity/noUselessSwitchCase: the redundancy IS the mechanism (see above)
591
652
  case 'sidebar':
592
653
  default:
593
- return root('sidebar', theme, sidebarCard(facts, placed), face);
654
+ return root('sidebar', theme, sidebarCard(facts, placed, responsive), face, responsive);
594
655
  }
595
656
  }
596
657
  //# sourceMappingURL=render-cert-block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-cert-block.js","sourceRoot":"","sources":["../../src/components/render-cert-block.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export { CertReview, type CertReviewProps } from './components/CertReview.js';
26
26
  export { ExpertBio, type ExpertBioProps } from './components/ExpertBio.js';
27
27
  export { escapeAttribute, escapeHtml, safeCssColor, safeHttpUrl, tidyText } from './components/escape.js';
28
28
  export { credentialSuffix, DEFAULT_ACCENT, expertNameWithCredentials, formatDate, type ResolvedDisplay, resolveDisplay, } from './components/format.js';
29
+ export { MEMO_ATTR, MEMO_COLLAPSE_LABEL, MEMO_COLLAPSE_MIN_BREAKS, MEMO_COLLAPSE_MIN_CHARS, MEMO_COLLAPSED_LINES, MEMO_EXPAND_LABEL, MEMO_TEXT_ATTR, MEMO_TOGGLE_ATTR, memoCollapses, memoToggleFor, NARROW_VIEWPORT, toggleMemo, } from './components/memo-toggle.js';
29
30
  export { type PreviewBlockOptions, previewExpiry, renderPreviewBlock, } from './components/preview-block.js';
30
31
  export { CERTREV_LINK_REL } from './components/rel.js';
31
32
  export { type CertBlockFace, type CertBlockFacts, type CertBlockLayout, type CertBlockMode, type RenderCertBlockInput, renderCertBlock, } from './components/render-cert-block.js';
@@ -33,6 +34,7 @@ export { accentFg, type BadgeVisibilityFieldId, CERT_SCOPE_LINE, CERT_STRINGS_VE
33
34
  export { CANONICALIZATION, type CertContent, type CertCredential, type CertDeliveryEnvelope, type CertDisplayConfig, type CertLifecycle, type CertPayload, type CertSignature, type CertSubject, type CertSuppressReason, type CertVerdict, CONTRACT_VERSION, type ContractVersion, type Ed25519PublicKeyInput, type RenderContext, type ResolvePublicKeyByKid, renderVerdict, SIGNATURE_ALG, type SignatureAlg, type VerdictKernel, verifyEnvelope, verifySignatureOnly, } from './contract/kernel.js';
34
35
  export { type JsonLdValue, type ProjectJsonLdOptions, projectCertJsonLd, projectCertJsonLdString, serializeJsonLdForScript, } from './jsonld/project.js';
35
36
  export { TtlCache, type TtlCacheOptions } from './verify/cache.js';
37
+ export { type CachedDelivery, deliveryCacheKey, deliveryUrl, type GetVerifiedDeliveryOptions, getVerifiedDelivery, invalidateDelivery, parseRenderDef, peekVerifiedDelivery, settleDelivery, sharedDeliveryCache, type VerifiedDelivery, } from './verify/get-verified-delivery.js';
36
38
  export { type EnvelopeSource, type GetVerifiedEnvelopeOptions, getVerifiedEnvelope, invalidateVerdict, sharedVerdictCache, } from './verify/get-verified-envelope.js';
37
39
  export { type FetchingKidResolverOptions, fetchingKidResolver, type StaticKeySet, staticKidResolver, } from './verify/resolve-kid.js';
38
40
  export { type RenderBadgeOptions, renderBadgeHtml } from './webcomponent/render-badge-html.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEzG,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,UAAU,EACV,KAAK,eAAe,EACpB,cAAc,GACd,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACN,KAAK,mBAAmB,EACxB,aAAa,EACb,kBAAkB,GAClB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,eAAe,GACf,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACN,QAAQ,EACR,KAAK,sBAAsB,EAC3B,eAAe,EACf,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,4BAA4B,CAAA;AAInC,OAAO,EACN,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,aAAa,EACb,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,cAAc,EACd,mBAAmB,GACnB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACN,KAAK,0BAA0B,EAC/B,mBAAmB,EACnB,KAAK,YAAY,EACjB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,KAAK,kBAAkB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -28,6 +28,8 @@ export { ExpertBio } from './components/ExpertBio.js';
28
28
  export { escapeAttribute, escapeHtml, safeCssColor, safeHttpUrl, tidyText } from './components/escape.js';
29
29
  // ── Presentation helpers (shared with the Web Component) ────────────────────────────
30
30
  export { credentialSuffix, DEFAULT_ACCENT, expertNameWithCredentials, formatDate, resolveDisplay, } from './components/format.js';
31
+ // ── The PHONE face's collapsible memo (1.1.0): the markup contract + the one toggle ──
32
+ export { MEMO_ATTR, MEMO_COLLAPSE_LABEL, MEMO_COLLAPSE_MIN_BREAKS, MEMO_COLLAPSE_MIN_CHARS, MEMO_COLLAPSED_LINES, MEMO_EXPAND_LABEL, MEMO_TEXT_ATTR, MEMO_TOGGLE_ATTR, memoCollapses, memoToggleFor, NARROW_VIEWPORT, toggleMemo, } from './components/memo-toggle.js';
31
33
  // ── Pre-sales PREVIEW block — static, non-delivery, hard-bounded ──
32
34
  export { previewExpiry, renderPreviewBlock, } from './components/preview-block.js';
33
35
  // ── Link qualification — the `rel` every anchor this package emits carries (read-only) ──
@@ -43,6 +45,7 @@ export { CANONICALIZATION, CONTRACT_VERSION, renderVerdict, SIGNATURE_ALG, verif
43
45
  // ── JSON-LD projector ───────────────────────────────────────────────────────────────
44
46
  export { projectCertJsonLd, projectCertJsonLdString, serializeJsonLdForScript, } from './jsonld/project.js';
45
47
  export { TtlCache } from './verify/cache.js';
48
+ export { deliveryCacheKey, deliveryUrl, getVerifiedDelivery, invalidateDelivery, parseRenderDef, peekVerifiedDelivery, settleDelivery, sharedDeliveryCache, } from './verify/get-verified-delivery.js';
46
49
  // ── Verify layer ──────────────────────────────────────────────────────────────────
47
50
  export { getVerifiedEnvelope, invalidateVerdict, sharedVerdictCache, } from './verify/get-verified-envelope.js';
48
51
  export { fetchingKidResolver, staticKidResolver, } from './verify/resolve-kid.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qFAAqF;AACrF,OAAO,EAAE,SAAS,EAAuB,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,eAAe,EAA6B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAuB,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACzG,uFAAuF;AACvF,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,UAAU,EAEV,cAAc,GACd,MAAM,wBAAwB,CAAA;AAC/B,qEAAqE;AACrE,OAAO,EAEN,aAAa,EACb,kBAAkB,GAClB,MAAM,+BAA+B,CAAA;AACtC,2FAA2F;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,qFAAqF;AACrF,OAAO,EAMN,eAAe,GACf,MAAM,mCAAmC,CAAA;AAC1C,oFAAoF;AACpF,OAAO,EACN,QAAQ,EAER,eAAe,EACf,oBAAoB,EAGpB,sBAAsB,EACtB,+BAA+B,EAC/B,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEX,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAIxB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,4BAA4B,CAAA;AACnC,sFAAsF;AACtF,qFAAqF;AACrF,2FAA2F;AAC3F,OAAO,EACN,gBAAgB,EAWhB,gBAAgB,EAKhB,aAAa,EACb,aAAa,EAGb,cAAc,EACd,mBAAmB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,uFAAuF;AACvF,OAAO,EAGN,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAwB,MAAM,mBAAmB,CAAA;AAClE,qFAAqF;AACrF,OAAO,EAGN,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAEN,mBAAmB,EAEnB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,sFAAsF;AACtF,OAAO,EAA2B,eAAe,EAAE,MAAM,qCAAqC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qFAAqF;AACrF,OAAO,EAAE,SAAS,EAAuB,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,eAAe,EAA6B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAuB,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACzG,uFAAuF;AACvF,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,UAAU,EAEV,cAAc,GACd,MAAM,wBAAwB,CAAA;AAC/B,wFAAwF;AACxF,OAAO,EACN,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,GACV,MAAM,6BAA6B,CAAA;AACpC,qEAAqE;AACrE,OAAO,EAEN,aAAa,EACb,kBAAkB,GAClB,MAAM,+BAA+B,CAAA;AACtC,2FAA2F;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,qFAAqF;AACrF,OAAO,EAMN,eAAe,GACf,MAAM,mCAAmC,CAAA;AAC1C,oFAAoF;AACpF,OAAO,EACN,QAAQ,EAER,eAAe,EACf,oBAAoB,EAGpB,sBAAsB,EACtB,+BAA+B,EAC/B,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEX,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAIxB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,4BAA4B,CAAA;AACnC,sFAAsF;AACtF,qFAAqF;AACrF,2FAA2F;AAC3F,OAAO,EACN,gBAAgB,EAWhB,gBAAgB,EAKhB,aAAa,EACb,aAAa,EAGb,cAAc,EACd,mBAAmB,GACnB,MAAM,sBAAsB,CAAA;AAC7B,uFAAuF;AACvF,OAAO,EAGN,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAwB,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAEN,gBAAgB,EAChB,WAAW,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GAEnB,MAAM,mCAAmC,CAAA;AAC1C,qFAAqF;AACrF,OAAO,EAGN,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAEN,mBAAmB,EAEnB,iBAAiB,GACjB,MAAM,yBAAyB,CAAA;AAChC,sFAAsF;AACtF,OAAO,EAA2B,eAAe,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * ─────────────────────────────────────────────────────────────────────────────
3
+ * getVerifiedDelivery — the envelope PLUS the brand's render def, from the Delivery API
4
+ * ─────────────────────────────────────────────────────────────────────────────
5
+ *
6
+ * 1.1.0. The Delivery API answers a Builder placement with the signed artifact and, beside it,
7
+ * the brand's resolved render-def projection as a top-level `renderDef` sibling (the same shape a
8
+ * Shopify store carries in its `render_def` metafield). The envelope's signature covers `payload`
9
+ * only, so the sibling rides the response without touching the signed bytes, and a tombstone
10
+ * carries none. `getVerifiedEnvelope` keeps discarding it; this reads it.
11
+ *
12
+ * The same fetch, deadline, kernel and fail-closed rules as `getVerifiedEnvelope` (every sourcing
13
+ * failure reports the reason it actually is; nothing throws into the render path). Two things are
14
+ * different, and both are the point:
15
+ *
16
+ * 1. WHAT IS CACHED is the cryptographically verified PAYLOAD, not the verdict. The lifecycle
17
+ * policy (revoked, expired) and the subject match are re-run by `renderVerdict` on EVERY call,
18
+ * with the caller's clock. So a payload that was valid when fetched and expires while cached
19
+ * stops rendering at its `expiresAt`, not at the next refetch; and a refetch after the TTL
20
+ * picks up a tombstone (revocation) or a changed def with no write on the brand's side.
21
+ * 2. The CACHE KEY is the Delivery URL plus the rendering placement, so a staging and a
22
+ * production origin never share an entry, and neither do two placements.
23
+ *
24
+ * `peekVerifiedDelivery` is the synchronous read of the same cache: a React component suspends on
25
+ * `getVerifiedDelivery` once, then reads the settled value without a second promise (which is what
26
+ * keeps a streaming SSR render from suspending forever on a fresh promise every retry).
27
+ */
28
+ import type { CertChromeRenderDef } from '../builder/cert-chrome-data.js';
29
+ import type { CertPayload, CertSuppressReason, CertVerdict, RenderContext, ResolvePublicKeyByKid } from '../contract/kernel.js';
30
+ import { TtlCache } from './cache.js';
31
+ /** What one Delivery read settles to, as cached: a verified payload + its def, or the reason not. */
32
+ export type CachedDelivery = {
33
+ readonly kind: 'verified';
34
+ readonly payload: CertPayload;
35
+ readonly renderDef: CertChromeRenderDef | null;
36
+ } | {
37
+ readonly kind: 'suppressed';
38
+ readonly reason: CertSuppressReason;
39
+ };
40
+ /** The answer for one render: the verdict AT THIS RENDER'S CLOCK, and the def to paint it with. */
41
+ export interface VerifiedDelivery {
42
+ readonly verdict: CertVerdict;
43
+ /** The brand's render def, or null (no def resolved, a malformed one, or a suppress verdict). */
44
+ readonly renderDef: CertChromeRenderDef | null;
45
+ }
46
+ export interface GetVerifiedDeliveryOptions {
47
+ /** Base URL of the CertREV app that serves the Delivery API, e.g. 'https://portal.certrev.com'. */
48
+ readonly baseUrl: string;
49
+ readonly platform: string;
50
+ readonly externalId: string;
51
+ /** kid → public-key resolver. Required: no verify without keys. */
52
+ readonly resolveKid: ResolvePublicKeyByKid;
53
+ /** Render context: the platform + externalId this edge IS, and the render's clock (`now`). */
54
+ readonly context: RenderContext;
55
+ readonly fetchImpl?: typeof fetch;
56
+ /** Cache override. Defaults to the module-level shared delivery cache. */
57
+ readonly cache?: TtlCache<CachedDelivery>;
58
+ /** TTL in ms for a VERIFIED read (default: the cache's positive TTL, 60_000 on the shared one). */
59
+ readonly ttlMs?: number;
60
+ /** Deadline in ms for the fetch (default `DEFAULT_FETCH_TIMEOUT_MS`, 3s). */
61
+ readonly timeoutMs?: number;
62
+ }
63
+ /** Shared per-process cache: 60s for a verified read, 5s for a suppressed one. */
64
+ declare const sharedDeliveryCache: TtlCache<CachedDelivery>;
65
+ export declare function deliveryUrl(baseUrl: string, platform: string, externalId: string): string;
66
+ /** Cache key: the URL (origin included) × the placement rendering it. No clock: the TTL bounds time. */
67
+ export declare function deliveryCacheKey(opts: Pick<GetVerifiedDeliveryOptions, 'baseUrl' | 'platform' | 'externalId' | 'context'>): string;
68
+ /**
69
+ * The def sibling, shape-checked. Anything that is not the metafield shape is null, which paints
70
+ * the preset default (the same thing an absent def paints): a def is presentation, never a claim,
71
+ * so a malformed one degrades the styling and nothing else. The TOKEN VALUES are not judged here;
72
+ * `resolveBlockTheme` re-validates each at paint time and drops what is not a safe value.
73
+ */
74
+ export declare function parseRenderDef(value: unknown): CertChromeRenderDef | null;
75
+ /** Apply the render-time policy to a cached read: lifecycle + subject at THIS render's clock. */
76
+ export declare function settleDelivery(cached: CachedDelivery, context: RenderContext): VerifiedDelivery;
77
+ /**
78
+ * Fetch (if needed), verify, cache, and settle one Delivery read for one placement. FAIL-CLOSED:
79
+ * the verdict is `render` only when the artifact verified against `resolveKid` AND, at
80
+ * `context.now`, the payload is unrevoked, unexpired and for this placement.
81
+ */
82
+ export declare function getVerifiedDelivery(opts: GetVerifiedDeliveryOptions): Promise<VerifiedDelivery>;
83
+ /**
84
+ * The synchronous read: the settled answer when a fresh read is cached, else `undefined` (the
85
+ * caller then awaits `getVerifiedDelivery`). Never fetches.
86
+ */
87
+ export declare function peekVerifiedDelivery(opts: Pick<GetVerifiedDeliveryOptions, 'baseUrl' | 'platform' | 'externalId' | 'context' | 'cache'>): VerifiedDelivery | undefined;
88
+ /** Drop every cached read for one placement (e.g. from a revocation webhook). */
89
+ export declare function invalidateDelivery(opts: Pick<GetVerifiedDeliveryOptions, 'baseUrl' | 'platform' | 'externalId' | 'context'>, cache?: TtlCache<CachedDelivery>): void;
90
+ export { sharedDeliveryCache };
91
+ //# sourceMappingURL=get-verified-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-verified-delivery.d.ts","sourceRoot":"","sources":["../../src/verify/get-verified-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,KAAK,EAEX,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,qGAAqG;AACrG,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,GAC5G;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAA;AAEvE,mGAAmG;AACnG,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,iGAAiG;IACjG,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,0BAA0B;IAC1C,mGAAmG;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAA;IAC1C,8FAA8F;IAC9F,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;IACzC,mGAAmG;IACnG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,kFAAkF;AAClF,QAAA,MAAM,mBAAmB,0BAAwE,CAAA;AAMjG,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC,GACvF,MAAM,CAER;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CA4BzE;AAyCD,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAI/F;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CASrG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,GACjG,gBAAgB,GAAG,SAAS,CAG9B;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC,EACzF,KAAK,GAAE,QAAQ,CAAC,cAAc,CAAuB,GACnD,IAAI,CAEN;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * ─────────────────────────────────────────────────────────────────────────────
3
+ * getVerifiedDelivery — the envelope PLUS the brand's render def, from the Delivery API
4
+ * ─────────────────────────────────────────────────────────────────────────────
5
+ *
6
+ * 1.1.0. The Delivery API answers a Builder placement with the signed artifact and, beside it,
7
+ * the brand's resolved render-def projection as a top-level `renderDef` sibling (the same shape a
8
+ * Shopify store carries in its `render_def` metafield). The envelope's signature covers `payload`
9
+ * only, so the sibling rides the response without touching the signed bytes, and a tombstone
10
+ * carries none. `getVerifiedEnvelope` keeps discarding it; this reads it.
11
+ *
12
+ * The same fetch, deadline, kernel and fail-closed rules as `getVerifiedEnvelope` (every sourcing
13
+ * failure reports the reason it actually is; nothing throws into the render path). Two things are
14
+ * different, and both are the point:
15
+ *
16
+ * 1. WHAT IS CACHED is the cryptographically verified PAYLOAD, not the verdict. The lifecycle
17
+ * policy (revoked, expired) and the subject match are re-run by `renderVerdict` on EVERY call,
18
+ * with the caller's clock. So a payload that was valid when fetched and expires while cached
19
+ * stops rendering at its `expiresAt`, not at the next refetch; and a refetch after the TTL
20
+ * picks up a tombstone (revocation) or a changed def with no write on the brand's side.
21
+ * 2. The CACHE KEY is the Delivery URL plus the rendering placement, so a staging and a
22
+ * production origin never share an entry, and neither do two placements.
23
+ *
24
+ * `peekVerifiedDelivery` is the synchronous read of the same cache: a React component suspends on
25
+ * `getVerifiedDelivery` once, then reads the settled value without a second promise (which is what
26
+ * keeps a streaming SSR render from suspending forever on a fresh promise every retry).
27
+ */
28
+ import { renderVerdict, verifyArtifact } from '../contract/kernel.js';
29
+ import { TtlCache } from './cache.js';
30
+ import { DEFAULT_FETCH_TIMEOUT_MS, fetchWithDeadline } from './fetch-with-deadline.js';
31
+ /** Shared per-process cache: 60s for a verified read, 5s for a suppressed one. */
32
+ const sharedDeliveryCache = new TtlCache({ ttlMs: 60_000, negativeTtlMs: 5_000 });
33
+ function suppressed(reason) {
34
+ return { kind: 'suppressed', reason };
35
+ }
36
+ export function deliveryUrl(baseUrl, platform, externalId) {
37
+ const base = baseUrl.replace(/\/+$/, '');
38
+ return `${base}/api/cert/v1/delivery/${encodeURIComponent(platform)}/${encodeURIComponent(externalId)}`;
39
+ }
40
+ /** Cache key: the URL (origin included) × the placement rendering it. No clock: the TTL bounds time. */
41
+ export function deliveryCacheKey(opts) {
42
+ return `delivery:${deliveryUrl(opts.baseUrl, opts.platform, opts.externalId)}|${encodeURIComponent(opts.context.platform)}:${encodeURIComponent(opts.context.externalId)}`;
43
+ }
44
+ const isString = (v) => typeof v === 'string';
45
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
46
+ /**
47
+ * The def sibling, shape-checked. Anything that is not the metafield shape is null, which paints
48
+ * the preset default (the same thing an absent def paints): a def is presentation, never a claim,
49
+ * so a malformed one degrades the styling and nothing else. The TOKEN VALUES are not judged here;
50
+ * `resolveBlockTheme` re-validates each at paint time and drops what is not a safe value.
51
+ */
52
+ export function parseRenderDef(value) {
53
+ if (!isRecord(value))
54
+ return null;
55
+ const { v, preset, rung, tokens, hidden, barInkFg, layout, customFace } = value;
56
+ if (typeof v !== 'number' || !Number.isFinite(v))
57
+ return null;
58
+ if (!isString(preset) || !isString(rung) || !isRecord(tokens))
59
+ return null;
60
+ if (!Array.isArray(hidden) || !hidden.every(isString))
61
+ return null;
62
+ if (layout !== undefined && !isString(layout))
63
+ return null;
64
+ let face;
65
+ if (customFace !== undefined) {
66
+ if (!isRecord(customFace) || !Array.isArray(customFace.placedFields) || !customFace.placedFields.every(isString)) {
67
+ return null;
68
+ }
69
+ face = { placedFields: [...customFace.placedFields] };
70
+ }
71
+ const tokenOut = {};
72
+ for (const key of ['accentColor', 'surface', 'cornerRadius', 'fontSlot', 'barInk', 'inkColor']) {
73
+ if (isString(tokens[key]))
74
+ tokenOut[key] = tokens[key];
75
+ }
76
+ return {
77
+ v,
78
+ preset,
79
+ rung,
80
+ tokens: tokenOut,
81
+ ...(barInkFg === '#141414' || barInkFg === '#ffffff' ? { barInkFg } : {}),
82
+ hidden: [...hidden],
83
+ ...(layout !== undefined ? { layout } : {}),
84
+ ...(face ? { customFace: face } : {}),
85
+ };
86
+ }
87
+ /** Fetch, parse and cryptographically verify one Delivery response. Never throws. */
88
+ async function loadDelivery(opts) {
89
+ const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
90
+ let res;
91
+ try {
92
+ res = await fetchWithDeadline(fetchImpl, deliveryUrl(opts.baseUrl, opts.platform, opts.externalId), { headers: { accept: 'application/json' } }, opts.timeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS);
93
+ }
94
+ catch {
95
+ // Unreachable, DNS/TLS, or the deadline. Same least-wrong member as getVerifiedEnvelope.
96
+ return suppressed('unsupported_contract_version');
97
+ }
98
+ // Nothing served for this placement: never certified, or withdrawn. A LIVE revocation is a 200
99
+ // tombstone, so a 4xx here genuinely means "no credential for this subject".
100
+ if (res.status === 404 || res.status === 410)
101
+ return suppressed('subject_mismatch');
102
+ if (!res.ok)
103
+ return suppressed('unsupported_contract_version');
104
+ let body;
105
+ try {
106
+ body = await res.json();
107
+ }
108
+ catch {
109
+ return suppressed('unsupported_contract_version');
110
+ }
111
+ if (!isRecord(body))
112
+ return suppressed('unsupported_contract_version');
113
+ let verdict;
114
+ try {
115
+ // `verifyArtifact`, so a tombstone verifies as itself and reports 'revoked'. The kernel reads
116
+ // `payload` + `signature` (or the tombstone's own fields); the `renderDef` sibling is not
117
+ // part of what is verified, and is never read unless the artifact verified.
118
+ verdict = await verifyArtifact(body, opts.resolveKid, { ...opts.context });
119
+ }
120
+ catch {
121
+ return suppressed('unknown_key');
122
+ }
123
+ if (verdict.decision !== 'render')
124
+ return suppressed(verdict.reason);
125
+ return { kind: 'verified', payload: verdict.payload, renderDef: parseRenderDef(body.renderDef) };
126
+ }
127
+ /** Apply the render-time policy to a cached read: lifecycle + subject at THIS render's clock. */
128
+ export function settleDelivery(cached, context) {
129
+ if (cached.kind === 'suppressed')
130
+ return { verdict: { decision: 'suppress', reason: cached.reason }, renderDef: null };
131
+ const verdict = renderVerdict(cached.payload, context);
132
+ return { verdict, renderDef: verdict.decision === 'render' ? cached.renderDef : null };
133
+ }
134
+ /**
135
+ * Fetch (if needed), verify, cache, and settle one Delivery read for one placement. FAIL-CLOSED:
136
+ * the verdict is `render` only when the artifact verified against `resolveKid` AND, at
137
+ * `context.now`, the payload is unrevoked, unexpired and for this placement.
138
+ */
139
+ export async function getVerifiedDelivery(opts) {
140
+ const cache = opts.cache ?? sharedDeliveryCache;
141
+ const cached = await cache.getOrLoad(deliveryCacheKey(opts), () => loadDelivery(opts), (v) => v.kind === 'suppressed', opts.ttlMs);
142
+ return settleDelivery(cached, opts.context);
143
+ }
144
+ /**
145
+ * The synchronous read: the settled answer when a fresh read is cached, else `undefined` (the
146
+ * caller then awaits `getVerifiedDelivery`). Never fetches.
147
+ */
148
+ export function peekVerifiedDelivery(opts) {
149
+ const cached = (opts.cache ?? sharedDeliveryCache).peek(deliveryCacheKey(opts));
150
+ return cached === undefined ? undefined : settleDelivery(cached, opts.context);
151
+ }
152
+ /** Drop every cached read for one placement (e.g. from a revocation webhook). */
153
+ export function invalidateDelivery(opts, cache = sharedDeliveryCache) {
154
+ cache.delete(deliveryCacheKey(opts));
155
+ }
156
+ export { sharedDeliveryCache };
157
+ //# sourceMappingURL=get-verified-delivery.js.map