@arcblock/did-connect-service 4.1.40 → 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 (89) 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 +283 -0
  4. package/dist/app-identity.d.ts.map +1 -0
  5. package/dist/app-identity.js +431 -0
  6. package/dist/app-identity.js.map +1 -0
  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-rpc-types.d.ts +12 -0
  10. package/dist/blocklet-service-rpc-types.d.ts.map +1 -1
  11. package/dist/blocklet-service-rpc.d.ts +10 -1
  12. package/dist/blocklet-service-rpc.d.ts.map +1 -1
  13. package/dist/blocklet-service-rpc.js +32 -3
  14. package/dist/blocklet-service-rpc.js.map +1 -1
  15. package/dist/blocklet-service.d.ts +7 -0
  16. package/dist/blocklet-service.d.ts.map +1 -1
  17. package/dist/blocklet-service.js +30 -23
  18. package/dist/blocklet-service.js.map +1 -1
  19. package/dist/branding-sources.d.ts +60 -0
  20. package/dist/branding-sources.d.ts.map +1 -0
  21. package/dist/branding-sources.js +55 -0
  22. package/dist/branding-sources.js.map +1 -0
  23. package/dist/embedded.d.ts +20 -0
  24. package/dist/embedded.d.ts.map +1 -1
  25. package/dist/embedded.js +45 -27
  26. package/dist/embedded.js.map +1 -1
  27. package/dist/handlers/access-key-connect-handler.d.ts.map +1 -1
  28. package/dist/handlers/access-key-connect-handler.js +3 -1
  29. package/dist/handlers/access-key-connect-handler.js.map +1 -1
  30. package/dist/handlers/admin-instance-handler.d.ts.map +1 -1
  31. package/dist/handlers/admin-instance-handler.js +4 -1
  32. package/dist/handlers/admin-instance-handler.js.map +1 -1
  33. package/dist/handlers/auth-handler.d.ts +36 -1
  34. package/dist/handlers/auth-handler.d.ts.map +1 -1
  35. package/dist/handlers/auth-handler.js +58 -38
  36. package/dist/handlers/auth-handler.js.map +1 -1
  37. package/dist/handlers/blocklet-js-handler.d.ts +10 -2
  38. package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
  39. package/dist/handlers/blocklet-js-handler.js +55 -25
  40. package/dist/handlers/blocklet-js-handler.js.map +1 -1
  41. package/dist/handlers/branding-handler.d.ts +97 -11
  42. package/dist/handlers/branding-handler.d.ts.map +1 -1
  43. package/dist/handlers/branding-handler.js +212 -113
  44. package/dist/handlers/branding-handler.js.map +1 -1
  45. package/dist/handlers/passkey-handler.d.ts +6 -1
  46. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  47. package/dist/handlers/passkey-handler.js +38 -26
  48. package/dist/handlers/passkey-handler.js.map +1 -1
  49. package/dist/handlers/team-handler.d.ts +4 -0
  50. package/dist/handlers/team-handler.d.ts.map +1 -1
  51. package/dist/handlers/team-handler.js +24 -5
  52. package/dist/handlers/team-handler.js.map +1 -1
  53. package/dist/index.d.ts +5 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +3 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/logo-paths.d.ts +23 -0
  58. package/dist/logo-paths.d.ts.map +1 -1
  59. package/dist/logo-paths.js +57 -2
  60. package/dist/logo-paths.js.map +1 -1
  61. package/dist/package-branding.d.ts +95 -6
  62. package/dist/package-branding.d.ts.map +1 -1
  63. package/dist/package-branding.js +87 -36
  64. package/dist/package-branding.js.map +1 -1
  65. package/dist/pages/admin/i18n.d.ts.map +1 -1
  66. package/dist/pages/admin/i18n.js +32 -0
  67. package/dist/pages/admin/i18n.js.map +1 -1
  68. package/dist/pages/admin/styles.d.ts +1 -1
  69. package/dist/pages/admin/styles.d.ts.map +1 -1
  70. package/dist/pages/admin/styles.js +23 -0
  71. package/dist/pages/admin/styles.js.map +1 -1
  72. package/dist/pages/admin/tab-branding.d.ts.map +1 -1
  73. package/dist/pages/admin/tab-branding.js +180 -15
  74. package/dist/pages/admin/tab-branding.js.map +1 -1
  75. package/dist/store/d1-store.d.ts +9 -1
  76. package/dist/store/d1-store.d.ts.map +1 -1
  77. package/dist/store/d1-store.js +30 -0
  78. package/dist/store/d1-store.js.map +1 -1
  79. package/dist/theme-utils.d.ts +21 -0
  80. package/dist/theme-utils.d.ts.map +1 -1
  81. package/dist/theme-utils.js +63 -1
  82. package/dist/theme-utils.js.map +1 -1
  83. package/dist/types.d.ts +5 -0
  84. package/dist/types.d.ts.map +1 -1
  85. package/package.json +3 -3
  86. package/dist/http/security-headers.d.ts +0 -38
  87. package/dist/http/security-headers.d.ts.map +0 -1
  88. package/dist/http/security-headers.js +0 -67
  89. package/dist/http/security-headers.js.map +0 -1
@@ -6,7 +6,7 @@ export default {
6
6
  "header.js": "header.8703ab26.js",
7
7
  "login.css": "login.fa75e481.css",
8
8
  "design.css": "design.99dc4ddc.css",
9
- "admin.css": "admin.ab0009f2.css",
9
+ "admin.css": "admin.d99b416e.css",
10
10
  "admin-core.js": "admin-core.d42d34ce.js",
11
- "admin-extra.js": "admin-extra.c7a0720f.js"
11
+ "admin-extra.js": "admin-extra.da2c9785.js"
12
12
  };
@@ -0,0 +1,283 @@
1
+ /**
2
+ * App identity — the single resolver for "what is this app called and what does it
3
+ * look like" (did#247, S4 of ArcBlock/arc#7073).
4
+ *
5
+ * Every surface that shows the app's identity (name / description / icon / logos /
6
+ * theme) resolves it here instead of reading D1 and layering fallbacks on its own:
7
+ * `resolveAppInfo`, `BrandingHandler` (logo serving, letter-mark fallback, theme CSS,
8
+ * OG text), `BlockletJsHandler` (`__blocklet__.js`), the login page, the homepage and
9
+ * the access-key page name.
10
+ *
11
+ * Layers, highest first:
12
+ *
13
+ * name instance app:branding.name → instance legacy app:name → package name
14
+ * → deployment name → built-in default
15
+ * description instance app:branding.description (any string, "" included)
16
+ * → package description → absent
17
+ * icon instance app:branding.icon
18
+ * logos instance app:logos.<slot> (R2 key) → package logo (square slot, `v` only;
19
+ * every type whose fallback chain reaches `square` follows it)
20
+ * → fallback-scope app:logos.<slot>
21
+ * theme instance app:theme → package palette → fallback-scope app:theme → default;
22
+ * each deep-merged over the built-in palettes by formatThemeForOutput
23
+ * passportColor instance app:branding.passportColor → package passportColor
24
+ * → fallback-scope app:branding.passportColor → absent
25
+ *
26
+ * connect-service never reads the app package itself (arc#7073 red line 1): the
27
+ * package layer only ever arrives as host-supplied {@link PackageBranding}, and it is
28
+ * never written back into D1 (red line 2).
29
+ *
30
+ * ## Per-field origin
31
+ *
32
+ * Every field carries `from`. `"instance"` means the value is configured on the
33
+ * instance whose identity is being resolved — nothing else. When the host asserted a
34
+ * request's instance X (route-context `instanceDid`, or an opted-in `X-Instance-Did`)
35
+ * but a surface read another scope's rows (e.g. `__blocklet__.js` reading the
36
+ * handler's construction instance), those rows are passed with `scope: "fallback"`
37
+ * and labelled `"deployment"` — see {@link identityScopeFor}. The arc-side lesson
38
+ * recorded on `resolveRawInstanceBranding` (services/shared/src/identity.ts) is that a
39
+ * ROOT fallback masquerading as instance-configured branding permanently outranks the
40
+ * package layer. With no asserted instance (a root / control-plane request), the
41
+ * construction rows ARE the instance's own and are labelled `"instance"`.
42
+ *
43
+ * ## Precedence decision (S5): own instance > package > fallback > default
44
+ *
45
+ * For the layers S5/S8 add — logos, theme, passportColor — a fallback-scope row (the
46
+ * deployment's root instance standing in for an app that has no row of its own) ranks
47
+ * BELOW the package layer. A stand-in row describes a different app; the package is the
48
+ * app's own declaration, so it must win (this is the arc-side lesson above). Only the
49
+ * app's OWN instance rows outrank the package (R3: the operator's override wins, and
50
+ * clearing it falls back to the package).
51
+ *
52
+ * - Logos are resolved per slot: own slot > package slot > fallback slot. The package
53
+ * fills only `square`, so a fallback `rect` / `favicon` / splash row is still used
54
+ * for its own slot; variant/chain semantics on derived surfaces belong to S7.
55
+ * - Theme is one unit: an own configured theme replaces the package palette entirely
56
+ * (no merging of the two); a fallback theme is used only when the package has none.
57
+ * - The package layer never changes output where it is absent: without a package
58
+ * logo/theme/passportColor every surface is byte-identical to S4 (baseline).
59
+ *
60
+ * name / description KEEP S4's order (fallback rows > package): changing it would change
61
+ * existing output on configured deployments, which S5 does not do. Aligning them is a
62
+ * separate, explicit decision.
63
+ *
64
+ * ## Which layers a surface honors is the caller's input, not a flag
65
+ *
66
+ * The surfaces do not all honor the same layers today, and S4 preserves that byte for
67
+ * byte (locked by test/app-identity-baseline.test.ts). The resolver is pure and takes
68
+ * only the layers it is given, so each divergence is expressed by what the caller
69
+ * passes:
70
+ *
71
+ * - Letter-mark logo fallback: passes only the instance `branding` row and the
72
+ * deployment name — legacy app:name and package branding never reach the initial.
73
+ * - Embedded (Node) host: builds its handler identity with no instance rows at all,
74
+ * so legacy app:name is never honored there (per-request surfaces still overlay
75
+ * the request-scope app:branding).
76
+ * - Per-request surfaces pass the handler's build-time identity as `inherited`: the
77
+ * request-scope instance rows sit on top of it, and it replaces the
78
+ * package / deployment / default layers for name and description.
79
+ * - The scope (which instance's rows are read) stays where it is today at each call
80
+ * site; see `readInstanceIdentityRows`.
81
+ * - The package logo / palette / passportColor (S5, S8) enter once, in the build-time
82
+ * identity, and reach per-request surfaces through `inherited`, ranked as described
83
+ * under "Precedence decision" below.
84
+ */
85
+ import { type AppInfo, type PackageBranding } from "./package-branding.js";
86
+ export type Origin = "instance" | "package" | "deployment" | "default";
87
+ /** Logo slots (`app:logos.<type>` = R2 key on the instance layer). */
88
+ export declare const LOGO_TYPES: readonly ["square", "squareDark", "rect", "rectDark", "favicon", "splashPortrait", "splashLandscape", "ogImage"];
89
+ export type LogoType = (typeof LOGO_TYPES)[number];
90
+ /**
91
+ * The D1 settings keys that carry app identity. Every identity SURFACE reads them through
92
+ * `readInstanceIdentityRows` / `instanceIdentityRowsFromSettings`. Raw reads remain in the
93
+ * admin CRUD endpoints, instance listings and federation/invite paths (see the did#253
94
+ * PR's unconverged-readers table).
95
+ */
96
+ export declare const IDENTITY_SETTING_KEYS: {
97
+ readonly branding: "app:branding";
98
+ readonly legacyName: "app:name";
99
+ readonly logos: "app:logos";
100
+ readonly theme: "app:theme";
101
+ };
102
+ export type IdentityRowField = keyof typeof IDENTITY_SETTING_KEYS;
103
+ /**
104
+ * Raw identity rows of one instance, as stored. A field that is `null`/`undefined`
105
+ * is "not configured" (or not read by this caller).
106
+ */
107
+ export interface InstanceIdentityRows {
108
+ branding?: string | null;
109
+ legacyName?: string | null;
110
+ logos?: string | null;
111
+ theme?: string | null;
112
+ /**
113
+ * `"own"` (default): the rows belong to the instance being resolved.
114
+ * `"fallback"`: the caller read a stand-in scope (the deployment's root instance)
115
+ * because it cannot scope to the requesting instance — values are used unchanged
116
+ * but labelled `"deployment"`, never `"instance"`.
117
+ */
118
+ scope?: "own" | "fallback";
119
+ }
120
+ export interface AppIdentityInput {
121
+ instance?: InstanceIdentityRows;
122
+ /**
123
+ * An identity already resolved for this app (the handler's build-time identity).
124
+ * When given, it replaces the package / deployment / default layers for name and
125
+ * description — including an empty inherited name — and keeps its own origins. Its
126
+ * logos / blurhash / theme fill whatever the request-scope rows do not configure.
127
+ */
128
+ inherited?: AppIdentity;
129
+ /** Host-supplied package branding. Ignored when `inherited` is given. */
130
+ packageBranding?: PackageBranding;
131
+ /** Deployment-global name (`CONNECT_APP_NAME` / embedded `appName`). `""` counts as set. */
132
+ deploymentName?: string;
133
+ /** Built-in last resort for the name. Default `"DID Connect"`. */
134
+ defaultName?: string;
135
+ }
136
+ export interface AppIdentity {
137
+ v: 1;
138
+ /** Fingerprint of the instance + package components (and the inherited identity). */
139
+ etag: string;
140
+ name: {
141
+ value: string;
142
+ from: Origin;
143
+ };
144
+ description: {
145
+ value?: string;
146
+ from: Origin;
147
+ };
148
+ icon: {
149
+ value?: string;
150
+ from: Origin;
151
+ };
152
+ /**
153
+ * Configured slots. `key` is the R2 key for instance / fallback slots. A package slot
154
+ * carries no key (connect-service has no package bytes) but `v`, the package logo's
155
+ * 16-char content fingerprint.
156
+ */
157
+ logos: Partial<Record<LogoType, {
158
+ from: Origin;
159
+ key?: string;
160
+ v?: string;
161
+ }>>;
162
+ /** `app:logos.blurhash`, passed through as stored. */
163
+ blurhash?: {
164
+ value: unknown;
165
+ from: Origin;
166
+ };
167
+ /**
168
+ * The passport / brand color (`__blocklet__.js` passportColor, OG gradient). Instance
169
+ * and fallback values pass through as stored; the package value is `#rrggbb`.
170
+ */
171
+ passportColor?: {
172
+ value: unknown;
173
+ from: Origin;
174
+ };
175
+ /**
176
+ * The package layer (logo / palette / passportColor) as the host supplied it, carried
177
+ * SEPARATELY from the resolved fields above. A build-time identity may resolve a field
178
+ * from the instance (e.g. CF `buildHandler` reads app:branding, so its passportColor
179
+ * is the instance's); per-request resolution reads the package layer from here, so
180
+ * clearing the instance value falls back to the package rather than to the default.
181
+ * Absent when the package supplies none of them.
182
+ */
183
+ packageLayer?: PackageLayer;
184
+ theme: {
185
+ /** `formatThemeForOutput` of the stored theme (`{}` when none). */
186
+ value: any;
187
+ /**
188
+ * The prefer the stored theme declares — current concept's prefer, else the
189
+ * top-level prefer — with no default. The login page uses this rule; it differs
190
+ * from `value.prefer` (which defaults to "system" and ignores the top-level prefer
191
+ * in the concepts shape) and both are preserved as-is.
192
+ */
193
+ prefer?: unknown;
194
+ from: Origin;
195
+ };
196
+ }
197
+ export interface PackageLayer {
198
+ logo?: {
199
+ v: string;
200
+ };
201
+ /** `formatPackageThemeForOutput` of the package palette. */
202
+ theme?: any;
203
+ passportColor?: string;
204
+ }
205
+ /** A stored JSON object row, or `{}` for absent / malformed / non-object rows. */
206
+ export declare function parseSettingObject(raw: string | null | undefined): Record<string, any>;
207
+ export declare function resolveAppIdentity(input: AppIdentityInput): AppIdentity;
208
+ /** The legacy `AppInfo` shape (`resolveAppInfo`'s output) of an identity. */
209
+ export declare function toAppInfo(identity: AppIdentity): AppInfo;
210
+ /**
211
+ * Wrap an `AppInfo` a host resolved on its own (no per-field origins available) as an
212
+ * identity. Labelled `"deployment"`: it is host/deployment-supplied, and must never
213
+ * read as instance-configured.
214
+ */
215
+ export declare function identityFromAppInfo(appInfo: AppInfo): AppIdentity;
216
+ interface SettingReader {
217
+ getSetting(instanceDid: string, key: string): Promise<string | null>;
218
+ }
219
+ /**
220
+ * Read the requested identity rows of `instanceDid` (one `getSetting` per field, in
221
+ * parallel). The caller owns the scope decision — which instance's rows answer this
222
+ * request — and says so via `scope`.
223
+ */
224
+ export declare function readInstanceIdentityRows(store: SettingReader, instanceDid: string, fields: readonly IdentityRowField[], scope?: "own" | "fallback"): Promise<InstanceIdentityRows>;
225
+ /**
226
+ * The requested identity rows out of an already-loaded settings map (e.g. from
227
+ * `listSettings`). Pass `fields` explicitly: a surface that does not honor a layer
228
+ * (e.g. legacy `app:name`) must not receive it just because the map happens to hold it.
229
+ */
230
+ export declare function instanceIdentityRowsFromSettings(settings: ReadonlyMap<string, string | null> | undefined, fields?: readonly IdentityRowField[], scope?: "own" | "fallback"): InstanceIdentityRows;
231
+ /**
232
+ * The `scope` of rows read from `readInstanceDid`, given the instance the HOST asserted
233
+ * for this request — the route-context `instanceDid`, or `X-Instance-Did` only on an
234
+ * embedded host that opted in with `trustInstanceHeader` (the same signal that decides
235
+ * branding scope; never a raw client header).
236
+ *
237
+ * - nothing asserted (root / control-plane request, single-tenant) → `"own"`
238
+ * - asserted X and the rows are X's → `"own"`
239
+ * - asserted X but the rows are another scope's (or no scope) → `"fallback"`
240
+ */
241
+ export declare function identityScopeFor(readInstanceDid: string | undefined, assertedInstanceDid: string | undefined): "own" | "fallback";
242
+ /** The slots a logo type falls back through, most specific first. */
243
+ export declare function logoFallbackChain(type: string): readonly string[];
244
+ /**
245
+ * The slot that answers `type`: the FIRST configured slot along its fallback chain.
246
+ * That slot decides — a miss on its bytes serves the generated fallback, it does not
247
+ * continue down the chain.
248
+ */
249
+ export declare function resolveLogoSlot(identity: AppIdentity, type: string): {
250
+ slot: LogoType;
251
+ from: Origin;
252
+ key?: string;
253
+ } | null;
254
+ /**
255
+ * Whether a derived surface (`__blocklet__.js`) advertises `type`'s own URL (did#248).
256
+ *
257
+ * On when `type`'s fallback chain resolves to a slot that is either `type` itself
258
+ * (configured on the instance / fallback scope, or the package's `square`), or the
259
+ * package logo reached through the chain — arc serves the package bytes on every path
260
+ * whose chain reaches it (arc#7077). A D1 slot reached only THROUGH the chain does not
261
+ * turn a variant on: that is today's output for D1-configured apps, locked by the S1
262
+ * baseline (`logoSquare` combo), and this rule leaves it unchanged. Splash / og-image
263
+ * chains never reach `square`, so a package-only app leaves them off.
264
+ */
265
+ export declare function advertisesLogoSlot(identity: AppIdentity, type: string): boolean;
266
+ /**
267
+ * The 16-char content fingerprint of a resolved logo slot: the R2 key's last segment
268
+ * truncated to 16 (an instance / fallback upload), else the package logo's `v` (already
269
+ * 16 chars, arc#7073 red line 4). One length, one lineage — OG cache keys use it.
270
+ */
271
+ export declare function logoFingerprint(entry: {
272
+ key?: string;
273
+ v?: string;
274
+ } | undefined): string | undefined;
275
+ /** `resolveAppInfo`'s historical signature, now a view over {@link resolveAppIdentity}. */
276
+ export declare function resolveAppInfo(params: {
277
+ brandingRaw: string | null;
278
+ legacyAppName: string | null;
279
+ packageBranding?: PackageBranding;
280
+ deploymentName?: string;
281
+ }): AppInfo;
282
+ export {};
283
+ //# sourceMappingURL=app-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-identity.d.ts","sourceRoot":"","sources":["../src/app-identity.ts"],"names":[],"mappings":"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"}