@arcblock/did-connect-service 4.1.41 → 4.1.43

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 (69) 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 +146 -97
  31. package/dist/handlers/branding-handler.js.map +1 -1
  32. package/dist/http/security-headers.d.ts +38 -0
  33. package/dist/http/security-headers.d.ts.map +1 -0
  34. package/dist/http/security-headers.js +67 -0
  35. package/dist/http/security-headers.js.map +1 -0
  36. package/dist/index.d.ts +4 -3
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/locale.d.ts +4 -1
  41. package/dist/locale.d.ts.map +1 -1
  42. package/dist/locale.js +11 -5
  43. package/dist/locale.js.map +1 -1
  44. package/dist/logo-paths.d.ts +23 -0
  45. package/dist/logo-paths.d.ts.map +1 -1
  46. package/dist/logo-paths.js +57 -2
  47. package/dist/logo-paths.js.map +1 -1
  48. package/dist/package-branding.d.ts +95 -0
  49. package/dist/package-branding.d.ts.map +1 -1
  50. package/dist/package-branding.js +85 -4
  51. package/dist/package-branding.js.map +1 -1
  52. package/dist/pages/admin/i18n.d.ts.map +1 -1
  53. package/dist/pages/admin/i18n.js +32 -0
  54. package/dist/pages/admin/i18n.js.map +1 -1
  55. package/dist/pages/admin/index.d.ts.map +1 -1
  56. package/dist/pages/admin/index.js +44 -13
  57. package/dist/pages/admin/index.js.map +1 -1
  58. package/dist/pages/admin/styles.d.ts +1 -1
  59. package/dist/pages/admin/styles.d.ts.map +1 -1
  60. package/dist/pages/admin/styles.js +23 -0
  61. package/dist/pages/admin/styles.js.map +1 -1
  62. package/dist/pages/admin/tab-branding.d.ts.map +1 -1
  63. package/dist/pages/admin/tab-branding.js +180 -15
  64. package/dist/pages/admin/tab-branding.js.map +1 -1
  65. package/dist/theme-utils.d.ts +41 -0
  66. package/dist/theme-utils.d.ts.map +1 -1
  67. package/dist/theme-utils.js +124 -0
  68. package/dist/theme-utils.js.map +1 -1
  69. package/package.json +3 -3
@@ -5,9 +5,34 @@
5
5
  * Admin routes (after enforceAccess): Branding/Theme/Navigation CRUD, Logo upload/delete
6
6
  */
7
7
  import { type AppIdentity } from "../app-identity.js";
8
+ import { type Logger } from "../logger.js";
8
9
  import type { OgWorkerRenderer } from "../og/worker.js";
9
10
  import type { AppInfo } from "../package-branding.js";
10
11
  import type { D1Store } from "../store/d1-store.js";
12
+ /**
13
+ * Host-injected cache purge for an instance's public branding paths.
14
+ *
15
+ * connect-service never talks to a CDN itself: a host whose runtime caches the
16
+ * public branding paths beyond their own `max-age` (arc's Cloudflare worker keeps
17
+ * `/favicon.ico` and the logo paths at the edge for 30 days) injects this, the
18
+ * same way it injects `r2` / `ogRenderer` / `getAccountState`. It is called after
19
+ * a successful branding save with the instance whose branding changed, the host
20
+ * the admin saved from, and the path list to purge — always
21
+ * {@link BRANDING_PUBLIC_PATHS}.
22
+ *
23
+ * `host` is the saving request's own URL host (`new URL(request.url).host`, so a
24
+ * non-default port is kept); no header is consulted. It lets a host that cannot
25
+ * enumerate an instance's domains (arc-services) purge at least the one the admin
26
+ * is on; expanding to the instance's other hosts stays the host's job.
27
+ *
28
+ * Best effort: a rejection (or a throw) is logged and swallowed — the save it
29
+ * follows has already committed and still answers `{ ok: true }`.
30
+ */
31
+ export type PurgeBrandingPaths = (input: {
32
+ instanceDid: string;
33
+ host: string;
34
+ paths: readonly string[];
35
+ }) => Promise<void> | void;
11
36
  export interface BrandingHandlerOptions {
12
37
  store: D1Store;
13
38
  r2?: R2Bucket;
@@ -25,6 +50,30 @@ export interface BrandingHandlerOptions {
25
50
  appIdentity?: AppIdentity;
26
51
  /** @deprecated Pass `appIdentity`. A bare AppInfo is wrapped via `identityFromAppInfo`. */
27
52
  appInfo?: AppInfo;
53
+ /**
54
+ * The identity BELOW the instance layer — package → deployment → default, resolved
55
+ * with no instance rows. It is what removing an instance override falls back to, so
56
+ * the admin API reports sources against it (did#249). A host whose `appIdentity`
57
+ * already folds in instance rows (Workers `buildHandler`, cached for minutes) must
58
+ * pass it, or a just-restored slot would still read as overridden from that cached
59
+ * copy. Omitted → `appIdentity` when it carries no instance-origin field, else the
60
+ * deployment name alone.
61
+ */
62
+ baseIdentity?: AppIdentity;
63
+ /**
64
+ * Whether this host's pages honor the legacy D1 `app:name` key as a name layer.
65
+ * Workers `buildHandler` does (it reads it into the build-time identity); the embedded
66
+ * Node host does not (did#246 baseline). The admin sources report the name the host's
67
+ * pages actually show, so a host that ignores the key sets this false. Default true.
68
+ */
69
+ honorsLegacyName?: boolean;
70
+ /**
71
+ * Host hook run after a successful branding write, for a host that caches an identity
72
+ * built from this instance's rows (Workers `buildHandler` → `invalidateConfigCache`).
73
+ * Without it, public surfaces built on that cached identity (login page, passkey RP
74
+ * name, `__blocklet__.js`) keep a restored override until the cache expires.
75
+ */
76
+ invalidateIdentityCache?: (instanceDid: string) => void;
28
77
  /** Node-only: dynamic OG generator from `@arcblock/did-connect-service/og-node`.
29
78
  * When absent, /og.png falls back to the static /og-image R2 lookup. */
30
79
  ogGenerator?: {
@@ -32,6 +81,10 @@ export interface BrandingHandlerOptions {
32
81
  };
33
82
  /** Worker-compatible byte renderer. Takes precedence over the Node generator. */
34
83
  ogRenderer?: OgWorkerRenderer;
84
+ /** Host purge hook run after a successful branding save. Omitted → no purge (unchanged behaviour). */
85
+ purgeBrandingPaths?: PurgeBrandingPaths;
86
+ /** Where a failed purge is reported. Omitted → `consoleLogger`. */
87
+ logger?: Logger;
35
88
  }
36
89
  export declare class BrandingHandler {
37
90
  private options;
@@ -67,6 +120,8 @@ export declare class BrandingHandler {
67
120
  private identityRows;
68
121
  /** The handler's build-time identity — the layer under the request-scope rows. */
69
122
  private get base();
123
+ /** See {@link BrandingHandlerOptions.baseIdentity}. */
124
+ private belowInstance;
70
125
  private localeFor;
71
126
  private serveLogo;
72
127
  private serveOg;
@@ -76,6 +131,18 @@ export declare class BrandingHandler {
76
131
  private defaultLogoResponse;
77
132
  private getBranding;
78
133
  private updateBranding;
134
+ /**
135
+ * Run the host's purge hook for `instanceDid`, if one was injected. Awaited so a
136
+ * Workers host does not cancel it with the response, but contained: a rejection
137
+ * or throw is logged and swallowed, because the branding write is the primary
138
+ * operation and the purge is only an optimization over the origin's max-age.
139
+ */
140
+ /**
141
+ * Run the host's identity-cache hook for `instanceDid`, if one was injected. Contained
142
+ * like the purge below: it is a public host option, and the save has already committed.
143
+ */
144
+ private invalidateIdentity;
145
+ private purgePublicPaths;
79
146
  private uploadLogo;
80
147
  private deleteLogo;
81
148
  private getTheme;
@@ -1 +1 @@
1
- {"version":3,"file":"branding-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/branding-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,WAAW,EAQjB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yGAAyG;IACzG,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IACvD,iFAAiF;IACjF,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,qBAAa,eAAe;IAcd,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAU;IAKxC,OAAO,CAAC,aAAa,CAAkC;gBAEnC,OAAO,EAAE,sBAAsB;IAEnD;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiCxF;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgCvF;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB,kFAAkF;IAClF,OAAO,KAAK,IAAI,GAGf;YAEa,SAAS;YAKT,SAAS;YAkDT,OAAO;IAgIrB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAmBhD,wFAAwF;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;YAI1B,mBAAmB;YA6BnB,WAAW;YAmBX,cAAc;YAgDd,UAAU;YAgDV,UAAU;YAYV,QAAQ;YAMR,WAAW;YAuBX,gBAAgB;YAoBhB,cAAc;YAkDd,iBAAiB;YAejB,aAAa;YAMb,gBAAgB;CAW/B"}
1
+ {"version":3,"file":"branding-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/branding-handler.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,13 @@
4
4
  * Public routes (before enforceAccess): Logo access, Theme anti-FOUC
5
5
  * Admin routes (after enforceAccess): Branding/Theme/Navigation CRUD, Logo upload/delete
6
6
  */
7
- import { identityFromAppInfo, logoFallbackChain, parseSettingObject, readInstanceIdentityRows, resolveAppIdentity, resolveLogoSlot, } from "../app-identity.js";
7
+ import { identityFromAppInfo, logoFallbackChain, logoFingerprint, readInstanceIdentityRows, resolveAppIdentity, resolveLogoSlot, } from "../app-identity.js";
8
+ import { projectBrandingSources } from "../branding-sources.js";
8
9
  import { handlerError } from "../handler-errors.js";
9
10
  import { DEFAULT_LANGUAGE_ROWS, detectLocale, loadEnabledLocales, resolvePageLocale, } from "../locale.js";
10
- import { LOGO_CACHE_CONTROL, LOGO_PREVIEW_CACHE_CONTROL, previewLogoType, } from "../logo-paths.js";
11
- import { BLOCKLET_THEME_DARK_PALETTE, BLOCKLET_THEME_LIGHT_PALETTE } from "../theme-utils.js";
11
+ import { consoleLogger } from "../logger.js";
12
+ import { BRANDING_PUBLIC_PATHS, LOGO_CACHE_CONTROL, LOGO_PREVIEW_BASE, LOGO_PREVIEW_CACHE_CONTROL, OG_PNG_PATH, previewLogoType, publicLogoType, } from "../logo-paths.js";
13
+ import { BLOCKLET_THEME_DARK_PALETTE, BLOCKLET_THEME_LIGHT_PALETTE, sanitizeThemeColor, themeInitScript, } from "../theme-utils.js";
12
14
  export class BrandingHandler {
13
15
  options;
14
16
  // Per-instance theme cache — avoids D1 read on every styles.css / init.js
@@ -34,20 +36,21 @@ export class BrandingHandler {
34
36
  this._requestScope.set(request, scopeInstanceDid);
35
37
  const url = new URL(request.url);
36
38
  const { pathname } = url;
37
- // Logo access (public)
38
- if (pathname.startsWith("/.well-known/service/blocklet/logo") ||
39
- pathname.startsWith("/.well-known/service/blocklet/splash") ||
40
- pathname.startsWith("/.well-known/service/blocklet/og-image") ||
41
- pathname === "/.well-known/service/blocklet/favicon" ||
42
- pathname === "/favicon.ico") {
39
+ // Public branding paths — routed from the ONE list hosts also purge
40
+ // (BRANDING_PUBLIC_PATHS in logo-paths.ts), never from inline matchers.
41
+ if (BRANDING_PUBLIC_PATHS.includes(pathname)) {
42
+ // Dynamic / static OG image. Only the .png image format is exposed
43
+ // publicly — the .html debug format renders user-controlled title/
44
+ // description as raw, unescaped markup served as text/html and has no
45
+ // consumer, so it is intentionally NOT routed (XSS hardening).
46
+ if (pathname === OG_PNG_PATH)
47
+ return this.serveOg(request);
43
48
  return this.serveLogo(request);
44
49
  }
45
- // Dynamic / static OG image. Only the .png image format is exposed
46
- // publicly — the .html debug format renders user-controlled title/
47
- // description as raw, unescaped markup served as text/html and has no
48
- // consumer, so it is intentionally NOT routed (XSS hardening).
49
- if (pathname === "/.well-known/service/blocklet/og.png") {
50
- return this.serveOg(request);
50
+ // Admin preview alias (no-store, outside the purge list by design). The
51
+ // whole namespace is claimed so an unknown type is a 404, not a fall-through.
52
+ if (pathname.startsWith(`${LOGO_PREVIEW_BASE}/`)) {
53
+ return this.serveLogo(request);
51
54
  }
52
55
  // Theme anti-FOUC (public, cacheable). Pass the request so the per-blocklet
53
56
  // instance scope (X-Instance-Did) drives which theme is served — matching the
@@ -126,6 +129,22 @@ export class BrandingHandler {
126
129
  return this.options.appIdentity
127
130
  ?? (this.options.appInfo ? identityFromAppInfo(this.options.appInfo) : undefined);
128
131
  }
132
+ /** See {@link BrandingHandlerOptions.baseIdentity}. */
133
+ belowInstance() {
134
+ if (this.options.baseIdentity)
135
+ return this.options.baseIdentity;
136
+ const base = this.base;
137
+ const carriesInstance = base
138
+ && [base.name, base.description, base.icon, base.theme, base.passportColor, ...Object.values(base.logos)].some((field) => field?.from === "instance");
139
+ if (base && !carriesInstance)
140
+ return base;
141
+ // The deployment floor, with the package layer the build-time identity carries
142
+ // separately (#258) — so logo / palette / passportColor still restore to the package.
143
+ const floor = resolveAppIdentity({ instance: {}, deploymentName: this.options.rpName || undefined });
144
+ return base?.packageLayer
145
+ ? resolveAppIdentity({ instance: {}, inherited: { ...floor, packageLayer: base.packageLayer } })
146
+ : floor;
147
+ }
129
148
  async localeFor(request) {
130
149
  const enabled = await loadEnabledLocales(this.options.store, this.instanceDidFor(request));
131
150
  return detectLocale(request, enabled);
@@ -196,13 +215,11 @@ export class BrandingHandler {
196
215
  const rows = await this.identityRows(instanceDid, ["branding", "logos"]);
197
216
  const base = this.base;
198
217
  const identity = resolveAppIdentity({ instance: rows, inherited: base, defaultName: "App" });
199
- // Non-identity branding fields (passportColor) still come from the raw row.
200
- const branding = parseSettingObject(rows.branding);
201
218
  // Hash hints double as upload-presence signals: the generator only
202
219
  // references /blocklet/og-image as a background when ogImageHash is set
203
220
  // (no upload → templates render a brand-color gradient instead of the
204
- // stretched letter-SVG fallback).
205
- const hashOf = (key) => (key ? key.split("/").pop()?.slice(0, 16) : undefined);
221
+ // stretched letter-SVG fallback). Both are 16-char fingerprints: the R2 key's
222
+ // tail for an upload, the package logo's `v` for a package-only square (did#248).
206
223
  const effectiveName = identity.name.value;
207
224
  const effectiveDescription = identity.description.value ?? "";
208
225
  const info = {
@@ -210,9 +227,10 @@ export class BrandingHandler {
210
227
  description: effectiveDescription,
211
228
  did: instanceDid,
212
229
  appUrl: url.origin,
213
- passportColor: branding.passportColor,
214
- logoHash: hashOf(identity.logos.square?.key),
215
- ogImageHash: hashOf(identity.logos.ogImage?.key),
230
+ // Own instance > package (S8) > absent — the OG gradient color.
231
+ passportColor: identity.passportColor?.value,
232
+ logoHash: logoFingerprint(identity.logos.square),
233
+ ogImageHash: logoFingerprint(identity.logos.ogImage),
216
234
  };
217
235
  const input = Object.fromEntries(url.searchParams.entries());
218
236
  const enabled = await loadEnabledLocales(this.options.store, instanceDid);
@@ -237,7 +255,10 @@ export class BrandingHandler {
237
255
  // The instance's own square branding logo — read directly from
238
256
  // CONNECT_BUCKET (never fetched over HTTP) when the render is a cache
239
257
  // MISS. `loadLogoAsset` is a lazy callback so a cache HIT inside the
240
- // renderer never touches R2 for it (arc/did#220).
258
+ // renderer never touches R2 for it (arc/did#220). A package-only square
259
+ // has no key and so no loader: connect-service has no package bytes
260
+ // (arc#7073 red line 1) — the card renders without a logo, while
261
+ // `logoHash` (= the package `v`) still versions the render cache.
241
262
  const r2 = this.options.r2;
242
263
  const squareLogoKey = identity.logos.square?.key;
243
264
  const loadLogoAsset = squareLogoKey && r2
@@ -296,33 +317,9 @@ export class BrandingHandler {
296
317
  }
297
318
  }
298
319
  resolveLogoType(pathname) {
299
- // Checked first: `/logo-preview/favicon` and `/logo-preview/og-image` would
300
- // otherwise be caught by the `endsWith` aliases below, which resolve the
301
- // same type but skip the no-store policy the alias exists to carry.
302
- const preview = previewLogoType(pathname);
303
- if (preview)
304
- return preview;
305
- if (pathname === "/favicon.ico")
306
- return "favicon";
307
- if (pathname.endsWith("/logo-rect-dark"))
308
- return "rectDark";
309
- if (pathname.endsWith("/logo-rect"))
310
- return "rect";
311
- if (pathname.endsWith("/logo-dark"))
312
- return "squareDark";
313
- if (pathname.endsWith("/logo-favicon"))
314
- return "favicon";
315
- if (pathname.endsWith("/favicon"))
316
- return "favicon"; // alias added for blocklet-server parity
317
- if (pathname.endsWith("/logo"))
318
- return "square";
319
- if (pathname.endsWith("/splash/portrait"))
320
- return "splashPortrait";
321
- if (pathname.endsWith("/splash/landscape"))
322
- return "splashLandscape";
323
- if (pathname.endsWith("/og-image"))
324
- return "ogImage";
325
- return null;
320
+ // Both are exact table lookups (logo-paths.ts): the preview alias, then the
321
+ // canonical public routes — the same table fetchPublic routes and hosts purge.
322
+ return previewLogoType(pathname) ?? publicLogoType(pathname);
326
323
  }
327
324
  /** @deprecated Use `logoFallbackChain` from app-identity.ts (the single definition). */
328
325
  getFallbackChain(type) {
@@ -354,12 +351,23 @@ export class BrandingHandler {
354
351
  // ─── Branding CRUD ─────────────────────────────────────────────────
355
352
  async getBranding(request) {
356
353
  const instanceDid = this.instanceDidFor(request);
357
- const [brandingRaw, logosRaw, langRaw, appleRaw] = await Promise.all([
354
+ const honorsLegacyName = this.options.honorsLegacyName !== false;
355
+ const [brandingRaw, logosRaw, langRaw, appleRaw, legacyNameRaw, themeRaw] = await Promise.all([
358
356
  this.options.store.getSetting(instanceDid, "app:branding"),
359
357
  this.options.store.getSetting(instanceDid, "app:logos"),
360
358
  this.options.store.getSetting(instanceDid, "app:languages"),
361
359
  this.options.store.getSetting(instanceDid, "apple:appIds"),
360
+ // Only a name layer on hosts whose pages honor it (see honorsLegacyName).
361
+ honorsLegacyName ? this.options.store.getSetting(instanceDid, "app:name") : null,
362
+ this.options.store.getSetting(instanceDid, "app:theme"),
362
363
  ]);
364
+ // Sources (did#249): the instance's own rows resolved over the layers below them.
365
+ // Additive — the four original keys keep their exact stored-row shape.
366
+ const below = this.belowInstance();
367
+ const effective = resolveAppIdentity({
368
+ instance: { branding: brandingRaw, legacyName: legacyNameRaw, logos: logosRaw, theme: themeRaw, scope: "own" },
369
+ inherited: below,
370
+ });
363
371
  return jsonResponse({
364
372
  branding: brandingRaw ? JSON.parse(brandingRaw) : {},
365
373
  logos: logosRaw ? JSON.parse(logosRaw) : {},
@@ -367,20 +375,42 @@ export class BrandingHandler {
367
375
  ? JSON.parse(langRaw)
368
376
  : DEFAULT_LANGUAGE_ROWS.map((row) => ({ code: row.code, name: row.name })),
369
377
  appleAppIds: appleRaw ? JSON.parse(appleRaw) : [],
378
+ sources: projectBrandingSources(effective, below),
370
379
  });
371
380
  }
372
381
  async updateBranding(request) {
373
382
  const body = await request.json();
374
383
  const instanceDid = this.instanceDidFor(request);
375
- // Partial merge update
376
- if (body.branding) {
384
+ // Partial merge update. A field sent as `null` is REMOVED — that is how the admin
385
+ // "restore default" action works: deleting the instance override lets the layer
386
+ // below (package → deployment → default) show through. The inherited value is
387
+ // never written back (arc#7073 red line 2), and a row left empty is deleted.
388
+ if (body.branding && typeof body.branding === "object") {
377
389
  const existing = await this.options.store.getSetting(instanceDid, "app:branding");
378
- const merged = { ...(existing ? JSON.parse(existing) : {}), ...body.branding };
379
- await this.options.store.setSetting(instanceDid, "app:branding", JSON.stringify(merged), 'system');
390
+ const merged = { ...(existing ? JSON.parse(existing) : {}) };
391
+ for (const [field, value] of Object.entries(body.branding)) {
392
+ if (field === "__proto__")
393
+ continue;
394
+ if (value === null)
395
+ delete merged[field];
396
+ else
397
+ merged[field] = value;
398
+ }
399
+ if (Object.keys(merged).length > 0) {
400
+ await this.options.store.setSetting(instanceDid, "app:branding", JSON.stringify(merged), 'system');
401
+ }
402
+ else {
403
+ await this.options.store.deleteSetting(instanceDid, "app:branding");
404
+ }
380
405
  // Sync app:name for instance list display
381
406
  if (merged.name) {
382
407
  await this.options.store.setSetting(instanceDid, "app:name", merged.name, 'system');
383
408
  }
409
+ else if (body.branding.name === null) {
410
+ // Restoring the name must also drop its legacy mirror, which name resolution
411
+ // still honors below app:branding.name — otherwise the override survives.
412
+ await this.options.store.deleteSetting(instanceDid, "app:name");
413
+ }
384
414
  }
385
415
  if (body.languages) {
386
416
  await this.options.store.setSetting(instanceDid, "app:languages", JSON.stringify(body.languages), 'system');
@@ -401,15 +431,70 @@ export class BrandingHandler {
401
431
  logos[key] = value;
402
432
  }
403
433
  }
404
- await this.options.store.setSetting(instanceDid, "app:logos", JSON.stringify(logos), 'system');
434
+ if (Object.keys(logos).length > 0) {
435
+ await this.options.store.setSetting(instanceDid, "app:logos", JSON.stringify(logos), 'system');
436
+ }
437
+ else {
438
+ await this.options.store.deleteSetting(instanceDid, "app:logos");
439
+ }
405
440
  }
406
441
  // Apple App IDs (for /.well-known/apple-app-site-association)
407
442
  if (body.appleAppIds !== undefined) {
408
443
  const ids = Array.isArray(body.appleAppIds) ? body.appleAppIds.filter((s) => typeof s === "string" && s.trim()) : [];
409
444
  await this.options.store.setSetting(instanceDid, "apple:appIds", JSON.stringify(ids), 'system');
410
445
  }
446
+ // Every write above has committed. Drop the host's cached build-time identity (it
447
+ // folded in app:branding) so the next request's pages resolve from the rows as they
448
+ // are now (did#249 review P3-2), then let the host purge its cached copies of the
449
+ // public branding paths (did#250). Neither can fail the save.
450
+ if (body.branding && typeof body.branding === "object")
451
+ this.invalidateIdentity(instanceDid);
452
+ await this.purgePublicPaths(instanceDid, new URL(request.url).host);
411
453
  return jsonResponse({ ok: true });
412
454
  }
455
+ /**
456
+ * Run the host's purge hook for `instanceDid`, if one was injected. Awaited so a
457
+ * Workers host does not cancel it with the response, but contained: a rejection
458
+ * or throw is logged and swallowed, because the branding write is the primary
459
+ * operation and the purge is only an optimization over the origin's max-age.
460
+ */
461
+ /**
462
+ * Run the host's identity-cache hook for `instanceDid`, if one was injected. Contained
463
+ * like the purge below: it is a public host option, and the save has already committed.
464
+ */
465
+ invalidateIdentity(instanceDid) {
466
+ const invalidate = this.options.invalidateIdentityCache;
467
+ if (!invalidate)
468
+ return;
469
+ try {
470
+ invalidate(instanceDid);
471
+ }
472
+ catch (err) {
473
+ (this.options.logger ?? consoleLogger).warn({
474
+ message: "identity cache invalidation failed; the save is kept",
475
+ mod: "branding",
476
+ instanceDid,
477
+ err,
478
+ });
479
+ }
480
+ }
481
+ async purgePublicPaths(instanceDid, host) {
482
+ const purge = this.options.purgeBrandingPaths;
483
+ if (!purge)
484
+ return;
485
+ try {
486
+ await purge({ instanceDid, host, paths: BRANDING_PUBLIC_PATHS });
487
+ }
488
+ catch (err) {
489
+ (this.options.logger ?? consoleLogger).warn({
490
+ message: "branding purge failed; the save is kept",
491
+ mod: "branding",
492
+ instanceDid,
493
+ host,
494
+ err,
495
+ });
496
+ }
497
+ }
413
498
  // ─── Logo Upload/Delete ────────────────────────────────────────────
414
499
  async uploadLogo(request) {
415
500
  const locale = await this.localeFor(request);
@@ -459,7 +544,6 @@ export class BrandingHandler {
459
544
  const type = url.pathname.split("/").pop();
460
545
  if (!type)
461
546
  return jsonResponse({ error: handlerError("missingLogoType", await this.localeFor(request)) }, 400);
462
- const camelType = toCamelCase(type);
463
547
  return jsonResponse({ ok: true });
464
548
  }
465
549
  // ─── Theme ─────────────────────────────────────────────────────────
@@ -495,7 +579,7 @@ export class BrandingHandler {
495
579
  const bgDark = theme.dark?.palette?.background?.default || BLOCKLET_THEME_DARK_PALETTE.background.default;
496
580
  const textDark = theme.dark?.palette?.text?.primary || BLOCKLET_THEME_DARK_PALETTE.text.primary;
497
581
  // Sanitize color values — only allow safe CSS color characters
498
- const sanitize = (v) => v.replace(/[^a-zA-Z0-9#(),.\s%]/g, "");
582
+ const sanitize = sanitizeThemeColor;
499
583
  const css = `:root { --blocklet-background-default-color: ${sanitize(bgLight)}; --blocklet-text-primary-color: ${sanitize(textLight)}; }
500
584
  [data-theme='dark'] { --blocklet-background-default-color: ${sanitize(bgDark)}; --blocklet-text-primary-color: ${sanitize(textDark)}; }
501
585
  html, body { background-color: var(--blocklet-background-default-color); color: var(--blocklet-text-primary-color); transition: background-color 0.2s, color 0.2s; }`;
@@ -505,47 +589,12 @@ html, body { background-color: var(--blocklet-background-default-color); color:
505
589
  }
506
590
  async serveThemeInit(request) {
507
591
  const theme = await this.getFormattedTheme(this.instanceDidFor(request));
508
- // Whitelist validation — prevent XSS injection (prefer is embedded in JS string)
592
+ // Whitelist validation — prevent XSS injection (prefer is embedded in JS string).
593
+ // The shared user choice is localStorage `web-mode` (arc web-device), not
594
+ // `blocklet_theme_prefer`. themeInitScript whitelists `prefer` again.
509
595
  const allowed = ["light", "dark", "system"];
510
596
  const prefer = allowed.includes(theme.prefer) ? theme.prefer : "system";
511
- // Prefer priority chain (aligned with blocklet-server):
512
- // URL ?theme= → sessionStorage → config prefer → localStorage → system matchMedia
513
- const js = `(function(){
514
- var PREFER_KEY = 'blocklet_theme_prefer';
515
- var p = '${prefer}';
516
- var isDark = false;
517
- // 1. URL query override (for preview/testing)
518
- try {
519
- var urlTheme = new URLSearchParams(window.location.search).get('theme');
520
- if (urlTheme === 'dark') { isDark = true; }
521
- else if (urlTheme === 'light') { isDark = false; }
522
- else {
523
- // 2. sessionStorage (per-tab override)
524
- var sessionPref = sessionStorage.getItem(PREFER_KEY);
525
- if (sessionPref === 'dark') { isDark = true; }
526
- else if (sessionPref === 'light') { isDark = false; }
527
- else if (!sessionPref) {
528
- // 3. Config prefer
529
- if (p === 'dark') { isDark = true; }
530
- else if (p === 'light') { isDark = false; }
531
- else {
532
- // 4. localStorage (persistent user preference)
533
- var stored = localStorage.getItem(PREFER_KEY);
534
- if (stored === 'dark') { isDark = true; }
535
- else if (stored === 'light') { isDark = false; }
536
- else {
537
- // 5. System matchMedia
538
- isDark = !!(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches);
539
- }
540
- }
541
- }
542
- }
543
- } catch(e) {
544
- isDark = p === 'dark';
545
- }
546
- if (isDark) document.documentElement.setAttribute('data-theme', 'dark');
547
- else document.documentElement.removeAttribute('data-theme');
548
- })();`;
597
+ const js = themeInitScript(prefer);
549
598
  return new Response(js, {
550
599
  headers: { "Content-Type": "application/javascript", "Cache-Control": "public, max-age=60" },
551
600
  });
@@ -1 +1 @@
1
- {"version":3,"file":"branding-handler.js","sourceRoot":"","sources":["../../src/handlers/branding-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branding-handler.js","sourceRoot":"","sources":["../../src/handlers/branding-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Shared security headers for server-rendered HTML responses (see issue #72).
3
+ *
4
+ * connect-service renders login/homepage/admin/invite/OAuth/error pages as raw
5
+ * HTML strings from several different handlers (there is no single Hono app /
6
+ * router that all of them funnel through — see the handlers listed at each
7
+ * `htmlResponse` call site). Without a common send point, every one of those
8
+ * handlers previously built its own `new Response(html, { headers: {...} })`
9
+ * and could silently drop hardening headers. `htmlResponse` is the one place
10
+ * that guarantees they don't: every HTML response gets `X-Frame-Options`,
11
+ * `X-Content-Type-Options`, and a CSP, even though the pages themselves stay
12
+ * wherever they are.
13
+ *
14
+ * This is defense-in-depth, not a substitute for fixing individual XSS sinks
15
+ * (see #62/#63/#64) — it limits what an attacker can do *if* one of those sinks
16
+ * is (or becomes) exploitable: no clickjacking (`frame-ancestors 'none'` +
17
+ * `X-Frame-Options: DENY`), no cross-origin script/style loads, no MIME-sniff
18
+ * smuggling (`nosniff`).
19
+ *
20
+ * CSP trade-off (intentional, see #72 discussion): connect-service's pages rely
21
+ * heavily on inline `<script>` blocks (see `packages/connect-service/CLAUDE.md` —
22
+ * Browser Asset Externalization) — the login/OAuth/admin/invite pages all inline
23
+ * small bootstrap scripts alongside externalized asset bundles. Migrating every
24
+ * inline script to a nonce- or hash-based CSP is a much larger, higher-regression-risk
25
+ * change than this issue calls for, so `script-src`/`style-src` keep `'unsafe-inline'`
26
+ * for now. The policy still meaningfully narrows the blast radius (no foreign script
27
+ * origins, no framing, no arbitrary form submission targets). Tightening to a
28
+ * nonce-based CSP is a good follow-up once the inline-script surface is consolidated.
29
+ */
30
+ export declare const HTML_SECURITY_HEADERS: Readonly<Record<string, string>>;
31
+ /**
32
+ * Build a `Response` for server-rendered HTML. Merges the shared security headers
33
+ * (always applied — they are not overridable via `init.headers`, see #72) with
34
+ * caller-supplied headers (`Content-Type` defaults to `text/html; charset=utf-8`
35
+ * unless the caller sets its own, `Cache-Control` etc. pass through untouched).
36
+ */
37
+ export declare function htmlResponse(html: string, init?: ResponseInit): Response;
38
+ //# sourceMappingURL=security-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-headers.d.ts","sourceRoot":"","sources":["../../src/http/security-headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAmBH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CASxE"}