@arcblock/did-connect-service 4.1.41 → 4.1.42

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 (58) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +2 -2
  3. package/dist/app-identity.d.ts +83 -11
  4. package/dist/app-identity.d.ts.map +1 -1
  5. package/dist/app-identity.js +108 -20
  6. package/dist/app-identity.js.map +1 -1
  7. package/dist/assets/{admin-extra.c7a0720f.js → admin-extra.da2c9785.js} +164 -10
  8. package/dist/assets/{admin.ab0009f2.css → admin.d99b416e.css} +23 -0
  9. package/dist/blocklet-service.d.ts +7 -0
  10. package/dist/blocklet-service.d.ts.map +1 -1
  11. package/dist/blocklet-service.js +17 -1
  12. package/dist/blocklet-service.js.map +1 -1
  13. package/dist/branding-sources.d.ts +60 -0
  14. package/dist/branding-sources.d.ts.map +1 -0
  15. package/dist/branding-sources.js +55 -0
  16. package/dist/branding-sources.js.map +1 -0
  17. package/dist/embedded.d.ts +11 -0
  18. package/dist/embedded.d.ts.map +1 -1
  19. package/dist/embedded.js +42 -32
  20. package/dist/embedded.js.map +1 -1
  21. package/dist/handlers/auth-handler.d.ts +18 -0
  22. package/dist/handlers/auth-handler.d.ts.map +1 -1
  23. package/dist/handlers/auth-handler.js +5 -0
  24. package/dist/handlers/auth-handler.js.map +1 -1
  25. package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
  26. package/dist/handlers/blocklet-js-handler.js +30 -18
  27. package/dist/handlers/blocklet-js-handler.js.map +1 -1
  28. package/dist/handlers/branding-handler.d.ts +67 -0
  29. package/dist/handlers/branding-handler.d.ts.map +1 -1
  30. package/dist/handlers/branding-handler.js +142 -57
  31. package/dist/handlers/branding-handler.js.map +1 -1
  32. package/dist/index.d.ts +4 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/logo-paths.d.ts +23 -0
  37. package/dist/logo-paths.d.ts.map +1 -1
  38. package/dist/logo-paths.js +57 -2
  39. package/dist/logo-paths.js.map +1 -1
  40. package/dist/package-branding.d.ts +95 -0
  41. package/dist/package-branding.d.ts.map +1 -1
  42. package/dist/package-branding.js +85 -4
  43. package/dist/package-branding.js.map +1 -1
  44. package/dist/pages/admin/i18n.d.ts.map +1 -1
  45. package/dist/pages/admin/i18n.js +32 -0
  46. package/dist/pages/admin/i18n.js.map +1 -1
  47. package/dist/pages/admin/styles.d.ts +1 -1
  48. package/dist/pages/admin/styles.d.ts.map +1 -1
  49. package/dist/pages/admin/styles.js +23 -0
  50. package/dist/pages/admin/styles.js.map +1 -1
  51. package/dist/pages/admin/tab-branding.d.ts.map +1 -1
  52. package/dist/pages/admin/tab-branding.js +180 -15
  53. package/dist/pages/admin/tab-branding.js.map +1 -1
  54. package/dist/theme-utils.d.ts +21 -0
  55. package/dist/theme-utils.d.ts.map +1 -1
  56. package/dist/theme-utils.js +62 -0
  57. package/dist/theme-utils.js.map +1 -1
  58. package/package.json +3 -3
@@ -1369,6 +1369,124 @@ async function brandingApi(method, path, body) {
1369
1369
  var __brandingData = {};
1370
1370
  var __brandingDirty = false;
1371
1371
  var __pendingLogos = {}; // { camelType: r2Key } for new uploads, { camelType: null } for deletions
1372
+ // Fields whose instance override is to be removed on save ("restore default" — did#249).
1373
+ // Saved as "null", which DELETES the stored key; the inherited value is never written.
1374
+ var __pendingRestore = {};
1375
+ // The passport color the picker showed on load when it was not overridden (inherited
1376
+ // or built-in) — saving it back unchanged must not turn it into an override.
1377
+ var __brShownPassportColor = "";
1378
+
1379
+ // ─── Per-field source badges (did#249) ───────────────────────────────
1380
+ // Every origin "resolveAppIdentity" can report maps to a label, so a new layer
1381
+ // (the package layer of S5/S8) lights up here without a client change.
1382
+ var __BR_SOURCE_LABELS = {
1383
+ instance: "branding.sourceOverridden",
1384
+ "package": "branding.sourcePackage",
1385
+ deployment: "branding.sourceDeployment",
1386
+ "default": "branding.sourceDefault"
1387
+ };
1388
+ var __BR_LOGO_SLOT_TYPES = [{"type":"square","nameKey":"branding.logoAppLight","subKey":"branding.subLight"},{"type":"square-dark","nameKey":"branding.logoAppDark","subKey":"branding.subDark"},{"type":"rect","nameKey":"branding.logoWebLight","subKey":"branding.subLight"},{"type":"rect-dark","nameKey":"branding.logoWebDark","subKey":"branding.subDark"},{"type":"favicon","nameKey":"branding.logoFavicon","subKey":"branding.subBrowser"},{"type":"splash-portrait","nameKey":"branding.logoSplashP","subKey":"branding.subPortrait"},{"type":"splash-landscape","nameKey":"branding.logoSplashL","subKey":"branding.subLandscape"},{"type":"og-image","nameKey":"branding.logoOg","subKey":"branding.subSocial"}];
1389
+
1390
+ function brCamelType(type) {
1391
+ return type.replace(/-([a-z])/g, function(_, c) { return c.toUpperCase(); });
1392
+ }
1393
+
1394
+ function brSlotLabel(camelSlot) {
1395
+ for (var i = 0; i < __BR_LOGO_SLOT_TYPES.length; i++) {
1396
+ var l = __BR_LOGO_SLOT_TYPES[i];
1397
+ if (brCamelType(l.type) === camelSlot) return __t(l.nameKey) + " · " + __t(l.subKey);
1398
+ }
1399
+ return camelSlot;
1400
+ }
1401
+
1402
+ /**
1403
+ * The badge for one slot: { key, from, params } — "slot" is "name" / "description" /
1404
+ * "passportColor" or a logo type ("square", "og-image", …); "source" is its entry in
1405
+ * the API's "sources". Null when there is nothing to label.
1406
+ */
1407
+ function brSourceBadge(slot, source) {
1408
+ var from = source && source.from ? source.from : "default";
1409
+ if (!Object.prototype.hasOwnProperty.call(__BR_SOURCE_LABELS, from)) from = "default";
1410
+ if (slot === "og-image") {
1411
+ // The og-image slot never claims the app package (it does not render on CF — its
1412
+ // "Node deployments only" note is static); only an override is worth a badge.
1413
+ return from === "instance" ? { key: __BR_SOURCE_LABELS.instance, from: "instance" } : null;
1414
+ }
1415
+ // A logo slot answered through its fallback chain by another OVERRIDDEN slot
1416
+ // ("favicon" served by "square") is not itself overridden — name the slot it uses.
1417
+ if (from === "instance" && source && source.slot && source.slot !== brCamelType(slot)) {
1418
+ return { key: "branding.sourceFollows", from: "follows", params: { slot: brSlotLabel(source.slot) } };
1419
+ }
1420
+ return { key: __BR_SOURCE_LABELS[from], from: from };
1421
+ }
1422
+
1423
+ function brSourceBadgeHtml(slot, source) {
1424
+ var b = brSourceBadge(slot, source);
1425
+ if (!b) return "";
1426
+ return '<span class="br-src br-src-' + b.from + '">' + __t(b.key, b.params) + "</span>";
1427
+ }
1428
+
1429
+ /** The restore action's label key, or null when the slot is not overridden (nothing to restore). */
1430
+ function brRestoreLabelKey(source) {
1431
+ if (!source || source.from !== "instance") return null;
1432
+ return source.restoreTo && source.restoreTo.from === "package" ? "branding.restorePackage" : "branding.restoreDefault";
1433
+ }
1434
+
1435
+ /**
1436
+ * The value to send for one inheritable field on save:
1437
+ * null → restore (delete the stored key)
1438
+ * undefined → omit (the field keeps inheriting; nothing is written)
1439
+ * string → the operator's value (an override)
1440
+ */
1441
+ function brFieldPatch(field, inputValue, stored, restore, shownDefault) {
1442
+ if (restore) return null;
1443
+ if (stored !== undefined && stored !== null) return inputValue;
1444
+ if (field === "passportColor") return inputValue && inputValue !== shownDefault ? inputValue : undefined;
1445
+ return inputValue !== "" ? inputValue : undefined;
1446
+ }
1447
+
1448
+ function renderFieldSource(field, source) {
1449
+ var slot = document.getElementById("br-src-" + field);
1450
+ if (slot) slot.innerHTML = brSourceBadgeHtml(field, source);
1451
+ var btn = document.getElementById("br-restore-" + field);
1452
+ if (btn) {
1453
+ var key = __pendingRestore[field] ? null : brRestoreLabelKey(source);
1454
+ btn.hidden = !key;
1455
+ btn.textContent = key ? __t(key) : "";
1456
+ }
1457
+ }
1458
+
1459
+ function renderLogoSource(type, source) {
1460
+ var slot = document.getElementById("br-src-logo-" + type);
1461
+ if (slot) slot.innerHTML = brSourceBadgeHtml(type, source);
1462
+ }
1463
+
1464
+ function onBrandingFieldInput(field) {
1465
+ delete __pendingRestore[field];
1466
+ markBrandingDirty();
1467
+ }
1468
+
1469
+ function restoreBrandingField(field) {
1470
+ var sources = __brandingData.sources || {};
1471
+ var source = sources[field];
1472
+ if (!source) return;
1473
+ var restoreTo = source.restoreTo || { from: "default" };
1474
+ __pendingRestore[field] = true;
1475
+ if (field === "name") {
1476
+ var nameEl = document.getElementById("br-name");
1477
+ nameEl.value = "";
1478
+ nameEl.placeholder = restoreTo.value || __t("branding.namePlaceholder");
1479
+ } else if (field === "description") {
1480
+ var descEl = document.getElementById("br-desc");
1481
+ descEl.value = "";
1482
+ descEl.placeholder = restoreTo.value || __t("branding.descPlaceholder");
1483
+ } else if (field === "passportColor") {
1484
+ updateAccentUI(restoreTo.value || "#1DC1C7");
1485
+ }
1486
+ // Show where the field lands once saved.
1487
+ renderFieldSource(field, { from: restoreTo.from });
1488
+ markBrandingDirty();
1489
+ }
1372
1490
 
1373
1491
  function markBrandingDirty() {
1374
1492
  __brandingDirty = true;
@@ -1384,6 +1502,7 @@ function hideSaveBar() {
1384
1502
 
1385
1503
  async function discardBrandingChanges() {
1386
1504
  __pendingLogos = {};
1505
+ __pendingRestore = {};
1387
1506
  await loadBranding();
1388
1507
  }
1389
1508
 
@@ -1394,10 +1513,21 @@ async function loadBranding() {
1394
1513
 
1395
1514
  // App Info
1396
1515
  var br = data.branding || {};
1397
- document.getElementById("br-name").value = br.name || "";
1398
- document.getElementById("br-desc").value = br.description || "";
1516
+ var sources = data.sources || {};
1517
+ __pendingRestore = {};
1518
+ var nameEl = document.getElementById("br-name");
1519
+ nameEl.value = br.name || "";
1520
+ // Not overridden → the input stays empty and shows the inherited value it falls back to.
1521
+ nameEl.placeholder = (sources.name && sources.name.from !== "instance" && sources.name.value) || __t("branding.namePlaceholder");
1522
+ var descEl = document.getElementById("br-desc");
1523
+ descEl.value = br.description || "";
1524
+ descEl.placeholder = (sources.description && sources.description.from !== "instance" && sources.description.value) || __t("branding.descPlaceholder");
1399
1525
  document.getElementById("br-url").value = br.url || "";
1400
- var pc = br.passportColor || "#1DC1C7";
1526
+ var pc = br.passportColor || (sources.passportColor && sources.passportColor.value) || "#1DC1C7";
1527
+ __brShownPassportColor = br.passportColor ? "" : pc;
1528
+ renderFieldSource("name", sources.name);
1529
+ renderFieldSource("description", sources.description);
1530
+ renderFieldSource("passportColor", sources.passportColor);
1401
1531
  document.getElementById("br-passport-color").value = pc;
1402
1532
  document.getElementById("br-copyright-owner").value = (br.copyright && br.copyright.owner) || "";
1403
1533
  document.getElementById("br-copyright-year").value = (br.copyright && br.copyright.year) || "";
@@ -1407,8 +1537,11 @@ async function loadBranding() {
1407
1537
 
1408
1538
  // Logos
1409
1539
  var logos = data.logos || {};
1540
+ var logoSources = sources.logos || {};
1410
1541
  [{"type":"square","nameKey":"branding.logoAppLight","subKey":"branding.subLight","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"5\"/><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/></svg>","spec":"512×512"},{"type":"square-dark","nameKey":"branding.logoAppDark","subKey":"branding.subDark","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/></svg>","spec":"512×512"},{"type":"rect","nameKey":"branding.logoWebLight","subKey":"branding.subLight","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"5\"/><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/></svg>","spec":"SVG/PNG"},{"type":"rect-dark","nameKey":"branding.logoWebDark","subKey":"branding.subDark","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/></svg>","spec":"SVG/PNG"},{"type":"favicon","nameKey":"branding.logoFavicon","subKey":"branding.subBrowser","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\"/></svg>","spec":"32×32 ICO"},{"type":"splash-portrait","nameKey":"branding.logoSplashP","subKey":"branding.subPortrait","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\"/><circle cx=\"12\" cy=\"18\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/></svg>","spec":"9:16"},{"type":"splash-landscape","nameKey":"branding.logoSplashL","subKey":"branding.subLandscape","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/><circle cx=\"18\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/></svg>","spec":"16:9"},{"type":"og-image","nameKey":"branding.logoOg","subKey":"branding.subSocial","icon":"<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></svg>","spec":"1200×630"}].forEach(function(l) {
1411
1542
  var key = l.type.replace(/-([a-z])/g, function(_, c) { return c.toUpperCase(); });
1543
+ var logoSource = logoSources[key];
1544
+ renderLogoSource(l.type, logoSource);
1412
1545
  var preview = document.getElementById("br-logo-preview-" + l.type);
1413
1546
  var actions = document.getElementById("br-logo-actions-" + l.type);
1414
1547
  var item = document.getElementById("br-logo-" + l.type);
@@ -1440,7 +1573,10 @@ async function loadBranding() {
1440
1573
  replaceLabel.appendChild(replaceInput);
1441
1574
  var discardBtn = document.createElement("button");
1442
1575
  discardBtn.className = "logo-overlay-btn logo-overlay-btn-discard";
1443
- discardBtn.textContent = __t("branding.removeLogo");
1576
+ // Removing the override deletes the slot's stored key; when the app package
1577
+ // supplies this slot, say that is where it goes back to.
1578
+ var restoreKey = brRestoreLabelKey(logoSource);
1579
+ discardBtn.textContent = __t(restoreKey === "branding.restorePackage" ? restoreKey : "branding.removeLogo");
1444
1580
  (function(logoType) {
1445
1581
  discardBtn.onclick = function() { deleteLogo(logoType); };
1446
1582
  })(l.type);
@@ -1448,6 +1584,11 @@ async function loadBranding() {
1448
1584
  overlay.appendChild(discardBtn);
1449
1585
  item.appendChild(overlay);
1450
1586
  }
1587
+ } else if (logoSource && logoSource.from !== "default") {
1588
+ // Not set on this slot, but served from another layer or another slot (the app
1589
+ // package, or "square" behind "favicon"): show what the public path serves,
1590
+ // through the same no-store alias.
1591
+ preview.innerHTML = '<img src="/.well-known/service/blocklet/logo-preview/' + l.type + '?t=' + Date.now() + '" />';
1451
1592
  } else {
1452
1593
  preview.innerHTML = '';
1453
1594
  }
@@ -1504,12 +1645,12 @@ function updateAccentUI(color) {
1504
1645
  function onAccentInput(color) {
1505
1646
  if (!color || !color.match(/^#[0-9a-fA-F]{6}$/)) return;
1506
1647
  updateAccentUI(color);
1507
- markBrandingDirty();
1648
+ onBrandingFieldInput("passportColor");
1508
1649
  }
1509
1650
 
1510
1651
  function pickAccent(color) {
1511
1652
  updateAccentUI(color);
1512
- markBrandingDirty();
1653
+ onBrandingFieldInput("passportColor");
1513
1654
  }
1514
1655
 
1515
1656
  async function saveBrandingInfo() {
@@ -1519,15 +1660,24 @@ async function saveBrandingInfo() {
1519
1660
  if (owner) copyright.owner = owner;
1520
1661
  if (year) copyright.year = year;
1521
1662
 
1663
+ var stored = __brandingData.branding || {};
1522
1664
  var body = {
1523
1665
  branding: {
1524
- name: document.getElementById("br-name").value.trim(),
1525
- description: document.getElementById("br-desc").value.trim(),
1526
1666
  url: document.getElementById("br-url").value.trim(),
1527
- passportColor: document.getElementById("br-passport-color").value,
1528
1667
  copyright: copyright
1529
1668
  }
1530
1669
  };
1670
+ // Inheritable fields (did#249): an untouched inherited field is omitted so it keeps
1671
+ // inheriting; a restored one is sent as null so the server deletes its key.
1672
+ var inheritable = {
1673
+ name: document.getElementById("br-name").value.trim(),
1674
+ description: document.getElementById("br-desc").value.trim(),
1675
+ passportColor: document.getElementById("br-passport-color").value
1676
+ };
1677
+ Object.keys(inheritable).forEach(function(field) {
1678
+ var patch = brFieldPatch(field, inheritable[field], stored[field], !!__pendingRestore[field], __brShownPassportColor);
1679
+ if (patch !== undefined) body.branding[field] = patch;
1680
+ });
1531
1681
 
1532
1682
  // Also save languages
1533
1683
  var langs = [];
@@ -1554,6 +1704,7 @@ async function saveBrandingInfo() {
1554
1704
  var res = await brandingApi("PUT", "/branding", body);
1555
1705
  if (res && res.ok) {
1556
1706
  __pendingLogos = {};
1707
+ __pendingRestore = {};
1557
1708
  showToast(__t("branding.updated"));
1558
1709
  // Refresh favicon and header logo through the no-store preview alias
1559
1710
  var cacheBust = "?t=" + Date.now();
@@ -1582,6 +1733,7 @@ async function doUploadLogo(type, file) {
1582
1733
  // Store in pending state — not saved to D1 yet
1583
1734
  var camelType = type.replace(/-([a-z])/g, function(_, c) { return c.toUpperCase(); });
1584
1735
  __pendingLogos[camelType] = data.r2Key;
1736
+ renderLogoSource(type, { from: "instance", slot: camelType });
1585
1737
  // Preview the pending upload from the local file — it is in R2 but not
1586
1738
  // yet in D1, so no logo endpoint would serve it until Save.
1587
1739
  var preview = document.getElementById("br-logo-preview-" + type);
@@ -1625,7 +1777,9 @@ async function doUploadLogo(type, file) {
1625
1777
  async function deleteLogo(type) {
1626
1778
  if (!confirm(__t("branding.deleteLogo"))) return;
1627
1779
  var camelType = type.replace(/-([a-z])/g, function(_, c) { return c.toUpperCase(); });
1628
- __pendingLogos[camelType] = null; // mark for deletion on save
1780
+ __pendingLogos[camelType] = null; // mark for deletion on save — deletes the slot's key
1781
+ var logoSource = ((__brandingData.sources || {}).logos || {})[camelType];
1782
+ renderLogoSource(type, logoSource && logoSource.restoreTo ? logoSource.restoreTo : { from: "default" });
1629
1783
  // Clear preview
1630
1784
  var preview = document.getElementById("br-logo-preview-" + type);
1631
1785
  if (preview) preview.innerHTML = '';
@@ -1817,6 +1817,29 @@
1817
1817
  .btn-text:hover { text-decoration: underline; }
1818
1818
  .btn-text-danger { color: var(--red-text); }
1819
1819
 
1820
+ /* ─── Branding: per-field source badge (did#249) ─── */
1821
+ .br-src-slot:empty { display: none; }
1822
+ .br-src-row { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
1823
+ .br-src-row:empty { display: none; }
1824
+ .br-src {
1825
+ display: inline-block;
1826
+ font-size: 10px;
1827
+ font-weight: 600;
1828
+ line-height: 1.5;
1829
+ padding: 1px 6px;
1830
+ margin-left: 6px;
1831
+ border-radius: 999px;
1832
+ border: 1px solid var(--border-subtle);
1833
+ color: var(--text-tertiary);
1834
+ white-space: nowrap;
1835
+ vertical-align: middle;
1836
+ }
1837
+ .br-src-row .br-src { margin-left: 0; }
1838
+ .br-src-instance { color: var(--blue); border-color: var(--blue-muted); }
1839
+ .br-src-package { color: var(--green-text); border-color: var(--green-light); }
1840
+ .br-src-note { font-style: italic; }
1841
+ .br-restore { margin-left: 8px; font-size: 11px; vertical-align: middle; }
1842
+
1820
1843
  /* ─── Branding: Sticky save bar ──────────────────── */
1821
1844
  .br-save-bar {
1822
1845
  position: fixed;
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { type BlockletServiceEnv } from "./env-config.js";
17
17
  import { type AuthHandler } from "./handlers/auth-handler.js";
18
+ import type { PurgeBrandingPaths } from "./handlers/branding-handler.js";
18
19
  import type { GetAccountState } from "./identity/account-state.js";
19
20
  import { type Logger } from "./logger.js";
20
21
  import type { OgWorkerRenderer } from "./og/worker.js";
@@ -27,6 +28,12 @@ export interface BuildHandlerOptions {
27
28
  getAccountState?: GetAccountState;
28
29
  packageBranding?: PackageBranding;
29
30
  ogRenderer?: OgWorkerRenderer;
31
+ /**
32
+ * Host-injected purge of the public branding paths, called after a successful
33
+ * admin branding save with `{ instanceDid, host, paths: BRANDING_PUBLIC_PATHS }` (`host` = the saving request's URL host).
34
+ * Omitted → no purge, today's behaviour. Best effort: never fails the save.
35
+ */
36
+ purgeBrandingPaths?: PurgeBrandingPaths;
30
37
  capabilityKey?: string;
31
38
  /**
32
39
  * Session cookies omit the Domain attribute. Must be part of the handler
@@ -1 +1 @@
1
- {"version":3,"file":"blocklet-service.d.ts","sourceRoot":"","sources":["../src/blocklet-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,KAAK,kBAAkB,EAAoD,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAC;AAK/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAsFD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAI/D;AAOD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIlE;AAED,2CAA2C;AAC3C,wBAAgB,2BAA2B,IAAI,IAAI,CAIlD;AAyLD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAyFtB;AAkCD,mEAAmE;AACnE,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CA4BtB;;mBAGsB,OAAO,OAAO,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD3E,wBAyBE"}
1
+ {"version":3,"file":"blocklet-service.d.ts","sourceRoot":"","sources":["../src/blocklet-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,KAAK,kBAAkB,EAAoD,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAC;AAK/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAsFD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAI/D;AAOD,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIlE;AAED,2CAA2C;AAC3C,wBAAgB,2BAA2B,IAAI,IAAI,CAIlD;AAyLD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAqGtB;AAkCD,mEAAmE;AACnE,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAiCtB;;mBAGsB,OAAO,OAAO,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD3E,wBAyBE"}
@@ -301,6 +301,9 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
301
301
  packageBranding,
302
302
  deploymentName: cfg.appName,
303
303
  });
304
+ // The same layers with no instance rows: the admin API's restore target (did#249).
305
+ // `appIdentity` above folds in this instance's rows and is cached with the handler.
306
+ const baseIdentity = resolveAppIdentity({ instance: {}, packageBranding, deploymentName: cfg.appName });
304
307
  const fed = await resolveFederationConfig(derivedDid, store, cfg);
305
308
  return createAuthHandler({
306
309
  db: cfg.db,
@@ -310,6 +313,9 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
310
313
  appPsk: cfg.appPsk,
311
314
  csrfSecret: cfg.csrfSecret,
312
315
  appIdentity,
316
+ baseIdentity,
317
+ // The build-time identity above is cached with this handler; a branding save drops it.
318
+ invalidateIdentityCache: invalidateConfigCache,
313
319
  r2: cfg.bucket,
314
320
  resendApiKey: cfg.resendApiKey,
315
321
  emailFrom: cfg.emailFrom,
@@ -319,6 +325,7 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
319
325
  logger,
320
326
  getAccountState: options?.getAccountState,
321
327
  ogRenderer: options?.ogRenderer,
328
+ purgeBrandingPaths: options?.purgeBrandingPaths,
322
329
  ...fed,
323
330
  });
324
331
  }
@@ -332,6 +339,7 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
332
339
  packageBranding,
333
340
  deploymentName: cfg.appName,
334
341
  });
342
+ const baseIdentity = resolveAppIdentity({ instance: {}, packageBranding, deploymentName: cfg.appName });
335
343
  const fed = await resolveFederationConfig(instanceDid, store, cfg);
336
344
  return createAuthHandler({
337
345
  db: cfg.db,
@@ -343,6 +351,9 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
343
351
  // consumer's csrf verifier (arc payment) uses a host-global key.
344
352
  csrfSecret: cfg.csrfSecret,
345
353
  appIdentity,
354
+ baseIdentity,
355
+ // The build-time identity above is cached with this handler; a branding save drops it.
356
+ invalidateIdentityCache: invalidateConfigCache,
346
357
  instanceDid,
347
358
  r2: cfg.bucket,
348
359
  rpID: rpDomain,
@@ -351,6 +362,7 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
351
362
  logger,
352
363
  getAccountState: options?.getAccountState,
353
364
  ogRenderer: options?.ogRenderer,
365
+ purgeBrandingPaths: options?.purgeBrandingPaths,
354
366
  ...fed,
355
367
  });
356
368
  }
@@ -388,7 +400,11 @@ export async function buildHandler(instanceDid, env, rpDomain, options) {
388
400
  export async function getOrBuildHandler(instanceDid, env, rpDomain, options) {
389
401
  const normalizedRPDomain = normalizeRPDomain(rpDomain);
390
402
  const packageBranding = sanitizePackageBranding(options?.packageBranding);
391
- const capabilityKey = options?.capabilityKey ?? (options?.ogRenderer ? "og-renderer" : "default");
403
+ // A cached handler keeps the hooks it was built with, so a purge hook is part of
404
+ // the default key: a host that injects it never reuses a handler built without it.
405
+ // Without the hook the key is byte-identical to before.
406
+ const capabilityKey = options?.capabilityKey ??
407
+ `${options?.ogRenderer ? "og-renderer" : "default"}${options?.purgeBrandingPaths ? "+purge" : ""}`;
392
408
  const hostOnlyKey = options?.hostOnlyCookie === true ? "host-only" : "parent-domain";
393
409
  const cacheKey = [
394
410
  instanceDid ?? SINGLE_TENANT_KEY,
@@ -1 +1 @@
1
- {"version":3,"file":"blocklet-service.js","sourceRoot":"","sources":["../src/blocklet-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocklet-service.js","sourceRoot":"","sources":["../src/blocklet-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Per-field source projection for the admin branding API (did#249, S9 of
3
+ * ArcBlock/arc#7073).
4
+ *
5
+ * `GET /.well-known/service/api/branding` keeps its original keys (`branding`,
6
+ * `logos`, `languages`, `appleAppIds` — the stored D1 rows, unchanged) and adds
7
+ * `sources`: for every inheritable slot, where the value in effect comes from and
8
+ * what removing the instance override would fall back to. The admin console uses
9
+ * it to badge each slot "Overridden" / "Inherited from app package" / "Built-in
10
+ * default" and to label its restore action.
11
+ *
12
+ * Pure: it only reads two identities that `resolveAppIdentity` already produced —
13
+ * the effective one (instance rows over the layers below) and the one below the
14
+ * instance layer (package → deployment → default). Restoring a slot deletes its
15
+ * D1 key (arc#7073 red line 2), which by construction lands on `restoreTo`.
16
+ */
17
+ import { type AppIdentity, type LogoType, type Origin } from "./app-identity.js";
18
+ /** A resolved value and the layer it came from. */
19
+ export interface ValueSource {
20
+ from: Origin;
21
+ value?: unknown;
22
+ }
23
+ /** An inheritable scalar field: in effect now, and after its instance override is removed. */
24
+ export interface FieldSource extends ValueSource {
25
+ restoreTo: ValueSource;
26
+ }
27
+ /**
28
+ * A logo slot. `slot` is the slot whose bytes answer this type (its fallback chain —
29
+ * `favicon` served by `square`, say); absent when nothing is configured and the
30
+ * generated default answers.
31
+ */
32
+ export interface LogoSource {
33
+ from: Origin;
34
+ slot?: LogoType;
35
+ /**
36
+ * Whether `__blocklet__.js` advertises this slot's own URL — `advertisesLogoSlot`,
37
+ * the same function that surface calls (did#248). A package hit is always advertised;
38
+ * an instance slot reached only through the chain (a D1 `square` behind `rect`) is not.
39
+ */
40
+ advertised: boolean;
41
+ restoreTo: {
42
+ from: Origin;
43
+ slot?: LogoType;
44
+ };
45
+ }
46
+ export interface BrandingSources {
47
+ name: FieldSource;
48
+ description: FieldSource;
49
+ passportColor: FieldSource;
50
+ theme: {
51
+ from: Origin;
52
+ };
53
+ logos: Record<LogoType, LogoSource>;
54
+ }
55
+ /**
56
+ * @param effective instance rows resolved over `below` — what the app shows now
57
+ * @param below the identity with no instance rows (package → deployment → default)
58
+ */
59
+ export declare function projectBrandingSources(effective: AppIdentity, below: AppIdentity): BrandingSources;
60
+ //# sourceMappingURL=branding-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding-sources.d.ts","sourceRoot":"","sources":["../src/branding-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,QAAQ,EACb,KAAK,MAAM,EAEZ,MAAM,mBAAmB,CAAC;AAE3B,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,8FAA8F;AAC9F,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,SAAS,EAAE,WAAW,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,WAAW,CAAC;IAC3B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CACrC;AAaD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,eAAe,CAsBlG"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Per-field source projection for the admin branding API (did#249, S9 of
3
+ * ArcBlock/arc#7073).
4
+ *
5
+ * `GET /.well-known/service/api/branding` keeps its original keys (`branding`,
6
+ * `logos`, `languages`, `appleAppIds` — the stored D1 rows, unchanged) and adds
7
+ * `sources`: for every inheritable slot, where the value in effect comes from and
8
+ * what removing the instance override would fall back to. The admin console uses
9
+ * it to badge each slot "Overridden" / "Inherited from app package" / "Built-in
10
+ * default" and to label its restore action.
11
+ *
12
+ * Pure: it only reads two identities that `resolveAppIdentity` already produced —
13
+ * the effective one (instance rows over the layers below) and the one below the
14
+ * instance layer (package → deployment → default). Restoring a slot deletes its
15
+ * D1 key (arc#7073 red line 2), which by construction lands on `restoreTo`.
16
+ */
17
+ import { advertisesLogoSlot, LOGO_TYPES, resolveLogoSlot, } from "./app-identity.js";
18
+ /** The identity carries passportColor with its origin (#258); absent = built-in default. */
19
+ function passportColorOf(identity) {
20
+ const resolved = identity.passportColor;
21
+ return resolved ? { from: resolved.from, value: resolved.value } : { from: "default" };
22
+ }
23
+ function logoSourceOf(identity, type) {
24
+ const hit = resolveLogoSlot(identity, type);
25
+ return hit ? { from: hit.from, slot: hit.slot } : { from: "default" };
26
+ }
27
+ /**
28
+ * @param effective instance rows resolved over `below` — what the app shows now
29
+ * @param below the identity with no instance rows (package → deployment → default)
30
+ */
31
+ export function projectBrandingSources(effective, below) {
32
+ const logos = {};
33
+ for (const type of LOGO_TYPES) {
34
+ // Removing THIS slot's instance key leaves every other slot as it is, so the
35
+ // fallback is the effective identity with only this slot taken from below.
36
+ const withoutSlot = { ...effective, logos: { ...effective.logos } };
37
+ if (below.logos[type])
38
+ withoutSlot.logos[type] = { ...below.logos[type] };
39
+ else
40
+ delete withoutSlot.logos[type];
41
+ logos[type] = {
42
+ ...logoSourceOf(effective, type),
43
+ advertised: advertisesLogoSlot(effective, type),
44
+ restoreTo: logoSourceOf(withoutSlot, type),
45
+ };
46
+ }
47
+ return {
48
+ name: { ...effective.name, restoreTo: { ...below.name } },
49
+ description: { ...effective.description, restoreTo: { ...below.description } },
50
+ passportColor: { ...passportColorOf(effective), restoreTo: passportColorOf(below) },
51
+ theme: { from: effective.theme.from },
52
+ logos,
53
+ };
54
+ }
55
+ //# sourceMappingURL=branding-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding-sources.js","sourceRoot":"","sources":["../src/branding-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,kBAAkB,EAClB,UAAU,EAGV,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAsC3B,4FAA4F;AAC5F,SAAS,eAAe,CAAC,QAAqB;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC;IACxC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,YAAY,CAAC,QAAqB,EAAE,IAAc;IACzD,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAsB,EAAE,KAAkB;IAC/E,MAAM,KAAK,GAAG,EAAkC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,6EAA6E;QAC7E,2EAA2E;QAC3E,MAAM,WAAW,GAAgB,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QACjF,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;;YACrE,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG;YACZ,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;YAChC,UAAU,EAAE,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC;YAC/C,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE;QACzD,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE;QAC9E,aAAa,EAAE,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;QACnF,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;QACrC,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { BlockletServiceRPCInterface } from "./blocklet-service-rpc-types.js";
2
2
  import { type AuthHandler } from "./handlers/auth-handler.js";
3
+ import type { PurgeBrandingPaths } from "./handlers/branding-handler.js";
3
4
  import type { GetAccountState } from "./identity/account-state.js";
4
5
  import type { Logger } from "./logger.js";
5
6
  import { type PackageBranding } from "./package-branding.js";
@@ -61,6 +62,14 @@ export interface EmbeddedAuthConfig {
61
62
  * so wallet login can refuse already-migrated DIDs. Omitted → today's login.
62
63
  */
63
64
  getAccountState?: GetAccountState;
65
+ /**
66
+ * Host-injected purge of the public branding paths, called after a successful
67
+ * admin branding save with `{ instanceDid, host, paths: BRANDING_PUBLIC_PATHS }` (`host` = the saving request's URL host).
68
+ * Omitted → no purge, today's behaviour. Best effort: a rejection is logged and
69
+ * the save still succeeds. A Node host without an edge cache in front of the
70
+ * branding paths has nothing to purge and can leave this unset.
71
+ */
72
+ purgeBrandingPaths?: PurgeBrandingPaths;
64
73
  }
65
74
  /**
66
75
  * Per-request context an embedded host passes to {@link EmbeddedAuthHandler.route}.
@@ -121,6 +130,8 @@ export declare function createEmbeddedAuthService(config: EmbeddedAuthConfig): P
121
130
  }>;
122
131
  export type { BlockletServiceRPCInterface } from "./blocklet-service-rpc-types.js";
123
132
  export type { AuthHandler } from "./handlers/auth-handler.js";
133
+ export type { PurgeBrandingPaths } from "./handlers/branding-handler.js";
134
+ export { BRANDING_PUBLIC_PATHS } from "./logo-paths.js";
124
135
  export type { PackageBranding } from "./package-branding.js";
125
136
  export { createD1Compat, type SqliteDatabase } from "./store/d1-compat.js";
126
137
  //# sourceMappingURL=embedded.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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"}