@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.
- package/dist/_generated/asset-bytes.js +1 -1
- package/dist/_generated/asset-manifest.js +2 -2
- package/dist/app-identity.d.ts +83 -11
- package/dist/app-identity.d.ts.map +1 -1
- package/dist/app-identity.js +108 -20
- package/dist/app-identity.js.map +1 -1
- package/dist/assets/{admin-extra.c7a0720f.js → admin-extra.da2c9785.js} +164 -10
- package/dist/assets/{admin.ab0009f2.css → admin.d99b416e.css} +23 -0
- package/dist/blocklet-service.d.ts +7 -0
- package/dist/blocklet-service.d.ts.map +1 -1
- package/dist/blocklet-service.js +17 -1
- package/dist/blocklet-service.js.map +1 -1
- package/dist/branding-sources.d.ts +60 -0
- package/dist/branding-sources.d.ts.map +1 -0
- package/dist/branding-sources.js +55 -0
- package/dist/branding-sources.js.map +1 -0
- package/dist/embedded.d.ts +11 -0
- package/dist/embedded.d.ts.map +1 -1
- package/dist/embedded.js +42 -32
- package/dist/embedded.js.map +1 -1
- package/dist/handlers/auth-handler.d.ts +18 -0
- package/dist/handlers/auth-handler.d.ts.map +1 -1
- package/dist/handlers/auth-handler.js +5 -0
- package/dist/handlers/auth-handler.js.map +1 -1
- package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
- package/dist/handlers/blocklet-js-handler.js +30 -18
- package/dist/handlers/blocklet-js-handler.js.map +1 -1
- package/dist/handlers/branding-handler.d.ts +67 -0
- package/dist/handlers/branding-handler.d.ts.map +1 -1
- package/dist/handlers/branding-handler.js +146 -97
- package/dist/handlers/branding-handler.js.map +1 -1
- package/dist/http/security-headers.d.ts +38 -0
- package/dist/http/security-headers.d.ts.map +1 -0
- package/dist/http/security-headers.js +67 -0
- package/dist/http/security-headers.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +4 -1
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +11 -5
- package/dist/locale.js.map +1 -1
- package/dist/logo-paths.d.ts +23 -0
- package/dist/logo-paths.d.ts.map +1 -1
- package/dist/logo-paths.js +57 -2
- package/dist/logo-paths.js.map +1 -1
- package/dist/package-branding.d.ts +95 -0
- package/dist/package-branding.d.ts.map +1 -1
- package/dist/package-branding.js +85 -4
- package/dist/package-branding.js.map +1 -1
- package/dist/pages/admin/i18n.d.ts.map +1 -1
- package/dist/pages/admin/i18n.js +32 -0
- package/dist/pages/admin/i18n.js.map +1 -1
- package/dist/pages/admin/index.d.ts.map +1 -1
- package/dist/pages/admin/index.js +44 -13
- package/dist/pages/admin/index.js.map +1 -1
- package/dist/pages/admin/styles.d.ts +1 -1
- package/dist/pages/admin/styles.d.ts.map +1 -1
- package/dist/pages/admin/styles.js +23 -0
- package/dist/pages/admin/styles.js.map +1 -1
- package/dist/pages/admin/tab-branding.d.ts.map +1 -1
- package/dist/pages/admin/tab-branding.js +180 -15
- package/dist/pages/admin/tab-branding.js.map +1 -1
- package/dist/theme-utils.d.ts +41 -0
- package/dist/theme-utils.d.ts.map +1 -1
- package/dist/theme-utils.js +124 -0
- package/dist/theme-utils.js.map +1 -1
- 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;
|
|
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,
|
|
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 {
|
|
11
|
-
import {
|
|
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
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
//
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
//
|
|
300
|
-
//
|
|
301
|
-
|
|
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
|
|
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
|
-
|
|
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) : {})
|
|
379
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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"}
|