@arcblock/did-connect-service 4.1.58 → 4.1.60

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/og/worker.js CHANGED
@@ -1,10 +1,14 @@
1
1
  import stringify from "fast-json-stable-stringify";
2
2
  import satori from "satori/standalone";
3
3
  import { consoleLogger } from "../logger.js";
4
+ import { OG_CJK_FALLBACK_PREFERENCE, ogFallbackIgnorable, ogFontSetBytes, ogFontSetFits, planOgFontFallbacks, } from "./font-fallback.js";
5
+ import { collectOgTreeCodepoints, ogFontSha256, ogFullFontMaps, ogSubsetCovers, ogSubsetFontKey, ogSubsetFontSets, } from "./font-subset.js";
4
6
  import { initializeRendererWasm, Resvg } from "./resvg-runtime.js";
5
7
  import { prepareOgRender } from "./shared.js";
6
8
  import { getTemplate } from "./templates.js";
7
9
  import { createSerialQueue, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OgRenderUnavailableError, OgTreeRenderError, ogImageMime, prepareOgTree, sniffOgImageKind, wantsBold, withTimeout, } from "./tree.js";
10
+ export { OG_CJK_FALLBACK_PREFERENCE, OG_FONT_RENDER_BUDGET_BYTES } from "./font-fallback.js";
11
+ export { OG_SUBSET_FONTS, OG_SUBSET_PREFIX } from "./font-subset.js";
8
12
  export { inspectOgImage, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OG_TREE_FONT_FAMILY, OG_TREE_LIMITS, OgRenderUnavailableError, OgTreeRenderError, sniffOgImageKind, validateOgTree, } from "./tree.js";
9
13
  /** Default deadline for one font object read from the bucket. */
10
14
  export const OG_FONT_READ_TIMEOUT_MS = 10_000;
@@ -32,8 +36,28 @@ export const OG_WORKER_BOLD_FONT_KEYS = {
32
36
  const TRANSPARENT_PNG_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";
33
37
  const CACHE_ORIGIN = "https://og-cache.invalid";
34
38
  let wasmInitialization;
35
- let fontSlot;
39
+ /**
40
+ * Raw font bytes kept between renders (ArcBlock/did#300, arc#8832): an LRU of
41
+ * font objects by bucket key, bounded by {@link OG_WORKER_FONT_CACHE_BYTES}.
42
+ * A render may need more than one family (its locale's primary plus
43
+ * cross-script fallbacks, `font-fallback.ts`), so the cache is keyed by object,
44
+ * not by locale. The least recently used objects are dropped once the resident
45
+ * total exceeds the budget; a different bucket clears it. Objects that are
46
+ * missing (or fail their sha256 check) are remembered as `null` for
47
+ * {@link MISSING_RECHECK_MS}, then probed again.
48
+ *
49
+ * Parsed fonts are never kept: each render hands satori fresh copies (see
50
+ * `font-subset.ts` for why a resident parse would grow without bound).
51
+ */
52
+ export const OG_WORKER_FONT_CACHE_BYTES = 20 * 1024 * 1024;
53
+ const MISSING_RECHECK_MS = 5 * 60_000;
54
+ let cacheBucket;
55
+ const fontCache = new Map();
56
+ /** Locale of the most recent render (for {@link getOgWorkerFontCacheStats}). */
57
+ let lastLocale;
36
58
  let boldMissingWarned = false;
59
+ let subsetMissingWarned = false;
60
+ let fallbackMissingWarned = false;
37
61
  /** Every satori + resvg pass in this isolate runs through this FIFO queue. */
38
62
  const serialRender = createSerialQueue();
39
63
  export function normalizeOgLocale(locale) {
@@ -67,68 +91,251 @@ export function resetOgWorkerWasmForTesting() {
67
91
  function readFontObject(bucket, key, timeoutMs) {
68
92
  return withTimeout(bucket.get(key).then(async (object) => (object ? new Uint8Array(await object.arrayBuffer()) : null)), timeoutMs, () => new OgRenderUnavailableError(OG_RENDER_UNAVAILABLE_CODES.fontTimeout, `font read exceeded ${timeoutMs}ms`));
69
93
  }
70
- function slotFor(bucket, locale, timeoutMs) {
71
- if (fontSlot && fontSlot.bucket === bucket && fontSlot.locale === locale)
72
- return fontSlot;
73
- const key = OG_WORKER_FONT_KEYS[locale];
74
- const slot = {
75
- bucket,
76
- locale,
77
- regular: readFontObject(bucket, key, timeoutMs).then((bytes) => {
78
- if (!bytes)
79
- throw new Error(`OG font unavailable: ${key}`);
80
- return bytes;
81
- }),
82
- };
83
- // A failed read must not poison the slot: the next render retries.
84
- slot.regular.catch(() => {
85
- if (fontSlot === slot)
86
- fontSlot = undefined;
94
+ function evictOver(keep) {
95
+ let total = 0;
96
+ for (const entry of fontCache.values())
97
+ total += entry.bytes;
98
+ for (const [key, entry] of fontCache) {
99
+ if (total <= OG_WORKER_FONT_CACHE_BYTES)
100
+ break;
101
+ if (key === keep || entry.bytes === 0)
102
+ continue;
103
+ fontCache.delete(key);
104
+ total -= entry.bytes;
105
+ }
106
+ }
107
+ /** `load()` through the LRU; a rejection is not cached, so the next render retries. */
108
+ function cachedFont(bucket, key, load) {
109
+ if (cacheBucket !== bucket) {
110
+ fontCache.clear();
111
+ cacheBucket = bucket;
112
+ }
113
+ const hit = fontCache.get(key);
114
+ fontCache.delete(key);
115
+ if (hit && (hit.missingAt === undefined || Date.now() - hit.missingAt < MISSING_RECHECK_MS)) {
116
+ fontCache.set(key, hit); // most recently used
117
+ return hit.promise;
118
+ }
119
+ const entry = { promise: Promise.resolve(null), bytes: 0 };
120
+ entry.promise = load().then((bytes) => {
121
+ if (fontCache.get(key) === entry) {
122
+ if (bytes) {
123
+ entry.bytes = bytes.byteLength;
124
+ evictOver(key);
125
+ }
126
+ else {
127
+ entry.missingAt = Date.now();
128
+ }
129
+ }
130
+ return bytes;
87
131
  });
88
- fontSlot = slot;
89
- return slot;
132
+ entry.promise.catch(() => {
133
+ if (fontCache.get(key) === entry)
134
+ fontCache.delete(key);
135
+ });
136
+ fontCache.set(key, entry);
137
+ return entry.promise;
138
+ }
139
+ /** A full font object, or `null` when it is missing from the bucket. */
140
+ function loadFullObject(bucket, key, timeoutMs) {
141
+ return cachedFont(bucket, key, () => readFontObject(bucket, key, timeoutMs));
90
142
  }
91
- /** Regular bytes for `locale`, from the single-locale slot. */
92
- function loadRegularFont(bucket, locale, timeoutMs) {
93
- return slotFor(bucket, locale, timeoutMs).regular;
143
+ /** Full Regular bytes for `locale` (the primary: missing is an error). */
144
+ async function loadRegularFont(bucket, locale, timeoutMs) {
145
+ const key = OG_WORKER_FONT_KEYS[locale];
146
+ const bytes = await loadFullObject(bucket, key, timeoutMs);
147
+ if (!bytes)
148
+ throw new Error(`OG font unavailable: ${key}`);
149
+ return bytes;
94
150
  }
95
- /** Bold bytes for `locale`, or `null` (warned once per isolate) when the object is missing. */
151
+ /** Full Bold bytes for `locale`, or `null` (warned once per isolate) when the object is missing. */
96
152
  async function loadBoldFont(bucket, locale, logger, timeoutMs) {
97
- const slot = slotFor(bucket, locale, timeoutMs);
98
- if (!slot.bold) {
99
- const key = OG_WORKER_BOLD_FONT_KEYS[locale];
100
- const bold = readFontObject(bucket, key, timeoutMs);
101
- bold.catch(() => {
102
- if (slot.bold === bold)
103
- slot.bold = undefined;
104
- });
105
- slot.bold = bold;
106
- }
107
- const bytes = await slot.bold;
153
+ const key = OG_WORKER_BOLD_FONT_KEYS[locale];
154
+ const bytes = await loadFullObject(bucket, key, timeoutMs);
108
155
  if (!bytes && !boldMissingWarned) {
109
156
  boldMissingWarned = true;
110
157
  logger.warn({
111
158
  message: "[og] bold font missing; rendering weight 700 with the regular face",
112
159
  mod: "og",
113
- key: OG_WORKER_BOLD_FONT_KEYS[locale],
160
+ key,
114
161
  locale,
115
162
  });
116
163
  }
117
164
  return bytes;
118
165
  }
119
- /** Test isolation: drop the raw font slot and re-arm the Bold warning. */
166
+ /** One subset object, or `null` when it is missing or not the build's bytes (warned once per isolate). */
167
+ function loadSubsetObject(bucket, file, locale, logger, timeoutMs) {
168
+ const key = ogSubsetFontKey(file.file);
169
+ return cachedFont(bucket, key, async () => {
170
+ const bytes = await readFontObject(bucket, key, timeoutMs);
171
+ const reason = !bytes ? "missing" : (await ogFontSha256(bytes)) !== file.sha256 ? "sha256 mismatch" : undefined;
172
+ if (!reason)
173
+ return bytes;
174
+ if (!subsetMissingWarned) {
175
+ subsetMissingWarned = true;
176
+ logger.warn({ message: `[og] subset font ${reason}; rendering with the full font`, mod: "og", key, locale });
177
+ }
178
+ return null;
179
+ });
180
+ }
181
+ /**
182
+ * Subset Regular (+ Bold when `bold`) of `locale`'s set, or `null` when there
183
+ * is no usable subset — every requested weight must be present, else the
184
+ * render uses the full fonts. A read error / timeout rejects like a full-font
185
+ * read (503), and the next render retries.
186
+ */
187
+ async function loadSubsetFonts(bucket, locale, bold, logger, timeoutMs) {
188
+ const set = ogSubsetFontSets()[locale];
189
+ if (!set || (bold && !set.bold))
190
+ return null;
191
+ const regular = await loadSubsetObject(bucket, set.regular, locale, logger, timeoutMs);
192
+ if (!regular)
193
+ return null;
194
+ if (!bold)
195
+ return { regular, bold: null };
196
+ const boldBytes = await loadSubsetObject(bucket, set.bold, locale, logger, timeoutMs);
197
+ return boldBytes ? { regular, bold: boldBytes } : null;
198
+ }
199
+ /**
200
+ * Whether `codepoints` are covered by `locale`'s subset. A locale without a
201
+ * subset counts as covered, so the render reports `"absent"`, not `"miss"`.
202
+ */
203
+ function coveredForLocale(locale, codepoints) {
204
+ const set = ogSubsetFontSets()[locale];
205
+ return !set || ogSubsetCovers(set, codepoints);
206
+ }
207
+ /** The fallback families this renderer can load (every CJK family the subset table describes). */
208
+ function fallbackCandidates() {
209
+ const sets = ogSubsetFontSets();
210
+ return OG_CJK_FALLBACK_PREFERENCE.flatMap((family) => (sets[family] ? [{ family, set: sets[family] }] : []));
211
+ }
212
+ /** Loads one planned fallback: its subset when planned and usable, else its full font (if still within budget). */
213
+ async function loadFallback(bucket, choice, bold, fullAllowed, logger, timeoutMs) {
214
+ if (choice.subset) {
215
+ const subset = await loadSubsetFonts(bucket, choice.family, bold, logger, timeoutMs);
216
+ if (subset)
217
+ return { key: ogSubsetFontKey(choice.set.regular.file), ...subset };
218
+ if (!fullAllowed)
219
+ return "over-budget";
220
+ }
221
+ const key = OG_WORKER_FONT_KEYS[choice.family];
222
+ const [regular, boldBytes] = await Promise.all([
223
+ loadFullObject(bucket, key, timeoutMs),
224
+ bold ? loadFullObject(bucket, OG_WORKER_BOLD_FONT_KEYS[choice.family], timeoutMs) : Promise.resolve(null),
225
+ ]);
226
+ if (!regular) {
227
+ if (!fallbackMissingWarned) {
228
+ fallbackMissingWarned = true;
229
+ logger.warn({ message: "[og] fallback font missing; its characters render as .notdef", mod: "og", key, family: choice.family });
230
+ }
231
+ return "missing";
232
+ }
233
+ return { key, regular, bold: boldBytes };
234
+ }
235
+ /**
236
+ * The fonts for one render: the locale's subset when `covered` and available,
237
+ * else its full fonts (Bold only when `bold`); then the cross-script fallbacks
238
+ * planned from the ACTUAL primary bytes (`font-fallback.ts`).
239
+ */
240
+ async function loadRenderFonts(bucket, locale, codepoints, covered, bold, logger, timeoutMs) {
241
+ lastLocale = locale;
242
+ let primary;
243
+ if (covered) {
244
+ const subset = await loadSubsetFonts(bucket, locale, bold, logger, timeoutMs);
245
+ if (subset)
246
+ primary = { ...subset, fontSubset: "hit" };
247
+ }
248
+ if (!primary) {
249
+ const [regular, boldBytes] = await Promise.all([
250
+ loadRegularFont(bucket, locale, timeoutMs),
251
+ bold ? loadBoldFont(bucket, locale, logger, timeoutMs) : Promise.resolve(null),
252
+ ]);
253
+ primary = { regular, bold: boldBytes, fontSubset: covered ? "absent" : "miss" };
254
+ }
255
+ const fonts = { ...primary, fallbacks: [], skipped: [], degraded: false };
256
+ const primarySet = ogSubsetFontSets()[locale];
257
+ if (!primarySet)
258
+ return fonts;
259
+ const primaryBytes = primary.regular.byteLength + (primary.bold?.byteLength ?? 0);
260
+ const planPrimary = { primaryBytes, primaryFull: primary.fontSubset !== "hit", primaryCjk: locale !== "en" };
261
+ const plan = planOgFontFallbacks({
262
+ primary: primarySet,
263
+ ...planPrimary,
264
+ codepoints,
265
+ candidates: fallbackCandidates(),
266
+ bold,
267
+ });
268
+ fonts.skipped.push(...plan.overBudget);
269
+ if (!plan.fallbacks.length)
270
+ return fonts;
271
+ // Planned subsets/fulls load in parallel; a planned subset whose object is
272
+ // unusable may then load its full font, one at a time, only while the whole
273
+ // set (with the upgrades accepted so far) still fits the budget.
274
+ const loaded = await Promise.all(plan.fallbacks.map((choice) => loadFallback(bucket, choice, bold, false, logger, timeoutMs)));
275
+ const effective = plan.fallbacks.map((c) => ({ subset: c.subset, bytes: c.bytes }));
276
+ for (const [i, choice] of plan.fallbacks.entries()) {
277
+ if (loaded[i] !== "over-budget")
278
+ continue;
279
+ fonts.degraded = true; // its subset object is missing / not the build's bytes
280
+ const asFull = effective.map((e, j) => (j === i ? { subset: false, bytes: ogFontSetBytes(choice.set, false, bold) } : e));
281
+ if (!ogFontSetFits(planPrimary, asFull))
282
+ continue;
283
+ loaded[i] = await loadFallback(bucket, { ...choice, subset: false }, bold, true, logger, timeoutMs);
284
+ if (typeof loaded[i] !== "string")
285
+ effective[i] = asFull[i];
286
+ }
287
+ plan.fallbacks.forEach((choice, i) => {
288
+ const result = loaded[i];
289
+ if (typeof result === "string") {
290
+ fonts.skipped.push(choice.family);
291
+ if (result === "missing")
292
+ fonts.degraded = true;
293
+ return;
294
+ }
295
+ // A missing fallback Bold draws 700 with its Regular: do not cache that for a year either.
296
+ if (bold && !result.bold)
297
+ fonts.degraded = true;
298
+ fonts.fallbacks.push({ family: choice.family, ...result });
299
+ });
300
+ return fonts;
301
+ }
302
+ /** Test isolation: drop the raw font cache and re-arm the warnings. */
120
303
  export function resetOgWorkerFontCacheForTesting() {
121
- fontSlot = undefined;
304
+ fontCache.clear();
305
+ cacheBucket = undefined;
306
+ lastLocale = undefined;
122
307
  boldMissingWarned = false;
308
+ subsetMissingWarned = false;
309
+ fallbackMissingWarned = false;
123
310
  }
124
- /** Introspection for tests/benchmarks: which locale's raw fonts are resident, and how many bytes. */
311
+ /**
312
+ * Introspection for tests/benchmarks: the most recent render's locale and how
313
+ * many of its bytes are resident (`regularBytes` / `boldBytes`: its full
314
+ * fonts; `subset*`: its subset objects), plus every resident object
315
+ * (`totalBytes`, `keys`, least recently used first).
316
+ */
125
317
  export async function getOgWorkerFontCacheStats() {
126
- const slot = fontSlot;
127
- if (!slot)
128
- return { regularBytes: 0, boldBytes: 0 };
129
- const regular = await slot.regular.catch(() => null);
130
- const bold = slot.bold ? await slot.bold.catch(() => null) : null;
131
- return { locale: slot.locale, regularBytes: regular?.byteLength ?? 0, boldBytes: bold?.byteLength ?? 0 };
318
+ const size = async (key) => key && fontCache.has(key) ? ((await fontCache.get(key).promise.catch(() => null))?.byteLength ?? 0) : 0;
319
+ const keys = [];
320
+ let totalBytes = 0;
321
+ for (const [key, entry] of fontCache) {
322
+ const bytes = await entry.promise.catch(() => null);
323
+ if (!bytes)
324
+ continue;
325
+ keys.push(key);
326
+ totalBytes += bytes.byteLength;
327
+ }
328
+ const locale = lastLocale;
329
+ const set = locale ? ogSubsetFontSets()[locale] : undefined;
330
+ return {
331
+ locale,
332
+ regularBytes: await size(locale && OG_WORKER_FONT_KEYS[locale]),
333
+ boldBytes: await size(locale && OG_WORKER_BOLD_FONT_KEYS[locale]),
334
+ subsetRegularBytes: await size(set && ogSubsetFontKey(set.regular.file)),
335
+ subsetBoldBytes: await size(set?.bold && ogSubsetFontKey(set.bold.file)),
336
+ totalBytes,
337
+ keys,
338
+ };
132
339
  }
133
340
  async function sha256(value) {
134
341
  const bytes = new TextEncoder().encode(value);
@@ -173,21 +380,33 @@ export function resolveOgWorkerLogoDataUri(asset) {
173
380
  // WebP (RIFF….WEBP) or anything else satori/resvg cannot rasterize.
174
381
  return { skipped: "unsupported-format" };
175
382
  }
383
+ /** satori font name of a fallback family (distinct from the trees' `Noto`, so weights match per family). */
384
+ const fallbackFontName = (family) => `Noto ${family}`;
176
385
  /**
177
386
  * satori → resvg for one tree. Callers hold the {@link serialRender} queue.
178
- * `regular` is copied per render (`slice()`), so satori's parse of it is
179
- * garbage once this returns — only the raw bytes stay in {@link fontSlot}.
180
- * resvg gets the Regular face only (for text inside embedded SVG images; satori
181
- * already turns tree text into paths).
387
+ * The fonts are copied per render (`slice()`), so satori's parse of them is
388
+ * garbage once this returns — only the raw bytes stay in the font cache.
389
+ * satori gets the primary (`Noto`) first, then each fallback family under its
390
+ * own name: it draws every character with the first font that maps it.
391
+ * resvg gets the primary Regular only, as before: satori already turns tree
392
+ * text into paths, and resvg-wasm draws no text inside embedded SVG images
393
+ * whatever fonts it is given (og-font-fallback.test.ts), so a fallback buffer
394
+ * there would only grow its wasm heap.
182
395
  */
183
- async function rasterizeTree(tree, width, height, regular, bold) {
184
- const fonts = [{ name: "Noto", data: regular.slice().buffer, weight: 400, style: "normal" }];
185
- if (bold)
186
- fonts.push({ name: "Noto", data: bold.slice().buffer, weight: 700, style: "normal" });
187
- const svg = await satori(tree, { width, height, fonts });
396
+ async function rasterizeTree(tree, width, height, fonts) {
397
+ const satoriFonts = [{ name: "Noto", data: fonts.regular.slice().buffer, weight: 400, style: "normal" }];
398
+ if (fonts.bold)
399
+ satoriFonts.push({ name: "Noto", data: fonts.bold.slice().buffer, weight: 700, style: "normal" });
400
+ for (const fallback of fonts.fallbacks) {
401
+ const name = fallbackFontName(fallback.family);
402
+ satoriFonts.push({ name, data: fallback.regular.slice().buffer, weight: 400, style: "normal" });
403
+ if (fallback.bold)
404
+ satoriFonts.push({ name, data: fallback.bold.slice().buffer, weight: 700, style: "normal" });
405
+ }
406
+ const svg = await satori(tree, { width, height, fonts: satoriFonts });
188
407
  const resvg = new Resvg(svg, {
189
408
  fitTo: { mode: "original" },
190
- font: { fontBuffers: [regular], loadSystemFonts: false, defaultFontFamily: "Noto" },
409
+ font: { fontBuffers: [fonts.regular], loadSystemFonts: false, defaultFontFamily: "Noto" },
191
410
  });
192
411
  try {
193
412
  const rendered = resvg.render();
@@ -202,6 +421,38 @@ async function rasterizeTree(tree, width, height, regular, bold) {
202
421
  resvg.free();
203
422
  }
204
423
  }
424
+ /** The `og-render` fields describing the fallbacks of one render. */
425
+ function fallbackEventFields(fonts) {
426
+ return {
427
+ ...(fonts.fallbacks.length ? { fontFallbacks: fonts.fallbacks.map((f) => f.key) } : {}),
428
+ ...(fonts.skipped.length ? { fontFallbacksSkipped: [...new Set(fonts.skipped)] } : {}),
429
+ };
430
+ }
431
+ /**
432
+ * True when some text of an og.png template's params is missing from the
433
+ * locale's full font but another CJK family has it — the card renders with a
434
+ * fallback, which earlier renderers did not. Such cards get a distinct cache
435
+ * key, so a card cached before arc#8832 (drawn with .notdef) is not served.
436
+ * Every other card keeps its existing key.
437
+ */
438
+ function paramsNeedFallback(locale, params) {
439
+ const primary = ogSubsetFontSets()[locale];
440
+ if (!primary)
441
+ return false;
442
+ const candidates = fallbackCandidates().filter((c) => c.set !== primary);
443
+ for (const value of Object.values(params)) {
444
+ if (typeof value !== "string" || value.startsWith("data:"))
445
+ continue;
446
+ for (const ch of value) {
447
+ const cp = ch.codePointAt(0);
448
+ if (cp < 0x80 || ogFallbackIgnorable(cp) || ogFullFontMaps(primary, cp))
449
+ continue;
450
+ if (candidates.some((c) => ogFullFontMaps(c.set, cp)))
451
+ return true;
452
+ }
453
+ }
454
+ return false;
455
+ }
205
456
  /**
206
457
  * Renders a caller-built satori tree to PNG (ArcBlock/did#300).
207
458
  *
@@ -210,6 +461,14 @@ async function rasterizeTree(tree, width, height, regular, bold) {
210
461
  * render with an `OgTreeRenderError` and nothing is fetched.
211
462
  * - Fonts come from `fontBucket` by locale: Regular always, Bold when
212
463
  * `weights` includes 700 (missing Bold ⇒ Regular + one warning per isolate).
464
+ * When every character of the tree is covered by the locale's subset fonts
465
+ * (`fonts/subset-v1/…`, ArcBlock/arc#8800) those are used instead — same
466
+ * pixels, a fraction of the parse; otherwise, or when the subset object is
467
+ * missing (one warning per isolate), the full fonts.
468
+ * - Characters the locale's full font does not have at all are drawn by
469
+ * cross-script fallback families added after it (arc#8832,
470
+ * `font-fallback.ts`; subset or full, within a per-render byte budget); a
471
+ * missing fallback object renders without it (one warning per isolate).
213
472
  * - Runs inside the isolate-wide serial queue, so concurrent calls never
214
473
  * parse fonts or grow the wasm heap in parallel.
215
474
  * - No cache: callers version and cache the result themselves.
@@ -221,23 +480,24 @@ export async function renderOgTree(options) {
221
480
  const logger = options.logger ?? consoleLogger;
222
481
  const fontTimeout = options.fontReadTimeoutMs ?? OG_FONT_READ_TIMEOUT_MS;
223
482
  const bold = wantsBold(options.weights);
224
- const { body, queueMs, fontReadMs, boldBytes } = await serialRender(async ({ queueMs }) => {
483
+ const codepoints = collectOgTreeCodepoints(tree);
484
+ const covered = coveredForLocale(locale, codepoints);
485
+ const { body, queueMs, fontReadMs, fonts } = await serialRender(async ({ queueMs }) => {
225
486
  const fontStart = performance.now();
226
- const [regular, boldBytes] = await Promise.all([
227
- loadRegularFont(options.fontBucket, locale, fontTimeout),
228
- bold ? loadBoldFont(options.fontBucket, locale, logger, fontTimeout) : Promise.resolve(null),
487
+ const [fonts] = await Promise.all([
488
+ loadRenderFonts(options.fontBucket, locale, codepoints, covered, bold, logger, fontTimeout),
229
489
  ensureWasm(),
230
490
  ]);
231
491
  const fontReadMs = performance.now() - fontStart;
232
492
  let body;
233
493
  try {
234
- body = await rasterizeTree(tree, options.width, options.height, regular, boldBytes);
494
+ body = await rasterizeTree(tree, options.width, options.height, fonts);
235
495
  }
236
496
  catch {
237
497
  // satori/resvg messages can quote the input; report a generic 400.
238
498
  throw new OgTreeRenderError(OG_TREE_ERROR_CODES.renderFailed, "the tree could not be rendered");
239
499
  }
240
- return { body, queueMs, fontReadMs, boldBytes };
500
+ return { body, queueMs, fontReadMs, fonts };
241
501
  }, { maxWaitMs: options.queueMaxWaitMs ?? OG_QUEUE_MAX_WAIT_MS });
242
502
  options.observer?.({
243
503
  locale,
@@ -245,8 +505,10 @@ export async function renderOgTree(options) {
245
505
  durationMs: performance.now() - startedAt,
246
506
  queueMs,
247
507
  fontReadMs,
508
+ fontSubset: fonts.fontSubset,
509
+ ...fallbackEventFields(fonts),
248
510
  template: "tree",
249
- ...(bold && !boldBytes ? { boldFallback: true } : {}),
511
+ ...(bold && !fonts.bold ? { boldFallback: true } : {}),
250
512
  });
251
513
  return body;
252
514
  }
@@ -295,6 +557,8 @@ export function createOgWorkerRenderer(options) {
295
557
  // changes supported/unsupported format.
296
558
  logoHash,
297
559
  params,
560
+ // Only cards drawn with a cross-script fallback (arc#8832) get a new key.
561
+ ...(paramsNeedFallback(locale, params) ? { fontFallback: 1 } : {}),
298
562
  }));
299
563
  const cacheRequest = new Request(`${CACHE_ORIGIN}/${OG_WORKER_RENDERER_VERSION}/${cacheHash}`);
300
564
  const cache = options.cache ?? defaultCache();
@@ -317,20 +581,26 @@ export function createOgWorkerRenderer(options) {
317
581
  const { dataUri: logoDataUri, skipped: logoSkipped } = resolveOgWorkerLogoDataUri(logoAsset ?? undefined);
318
582
  params.logo = logoDataUri ?? TRANSPARENT_PNG_DATA_URI;
319
583
  const tree = await getTemplate(params);
320
- const { body, queueMs, fontReadMs } = await serialRender(async ({ queueMs }) => {
584
+ const codepoints = collectOgTreeCodepoints(tree);
585
+ const covered = coveredForLocale(locale, codepoints);
586
+ const logger = options.logger ?? consoleLogger;
587
+ const { body, queueMs, fontReadMs, fonts } = await serialRender(async ({ queueMs }) => {
321
588
  const fontStart = performance.now();
322
- const [font] = await Promise.all([
323
- loadRegularFont(options.fontBucket, locale, options.fontReadTimeoutMs ?? OG_FONT_READ_TIMEOUT_MS),
589
+ const [fonts] = await Promise.all([
590
+ loadRenderFonts(options.fontBucket, locale, codepoints, covered, false, logger, options.fontReadTimeoutMs ?? OG_FONT_READ_TIMEOUT_MS),
324
591
  ensureWasm(),
325
592
  ]);
326
593
  const fontReadMs = performance.now() - fontStart;
327
- return { body: await rasterizeTree(tree, params.width, params.height, font, null), queueMs, fontReadMs };
594
+ const body = await rasterizeTree(tree, params.width, params.height, fonts);
595
+ return { body, queueMs, fontReadMs, fonts };
328
596
  }, { maxWaitMs: options.queueMaxWaitMs ?? OG_QUEUE_MAX_WAIT_MS });
329
597
  const responseBody = body.slice().buffer;
330
598
  const response = new Response(responseBody, {
331
599
  headers: { "Content-Type": "image/png", "Cache-Control": "public, max-age=31536000, immutable" },
332
600
  });
333
- if (!prepared.nocache) {
601
+ // A card missing a fallback object would be cached for a year as drawn
602
+ // now (with .notdef): serve it, but render again until the object exists.
603
+ if (!prepared.nocache && !fonts.degraded) {
334
604
  try {
335
605
  await cache.put(cacheRequest, response.clone());
336
606
  }
@@ -345,6 +615,8 @@ export function createOgWorkerRenderer(options) {
345
615
  durationMs: performance.now() - startedAt,
346
616
  queueMs,
347
617
  fontReadMs,
618
+ fontSubset: fonts.fontSubset,
619
+ ...fallbackEventFields(fonts),
348
620
  template: params.template,
349
621
  ...(logoSkipped ? { logoSkipped } : {}),
350
622
  });
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/og/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/og/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/did-connect-service",
3
- "version": "4.1.58",
3
+ "version": "4.1.60",
4
4
  "description": "Multi-runtime authentication service framework — Passkey, DID Connect, OAuth, Email, Team, RBAC",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,8 +61,8 @@
61
61
  "sharp": "^0.35.5",
62
62
  "ufo": "^1.6.4",
63
63
  "valibot": "^1.4.2",
64
- "@arcblock/did-connect-core": "^4.1.58",
65
- "@arcblock/did-connect-js": "^4.1.58"
64
+ "@arcblock/did-connect-core": "^4.1.60",
65
+ "@arcblock/did-connect-js": "^4.1.60"
66
66
  },
67
67
  "optionalDependencies": {
68
68
  "@aigne/afs": "^1.11.0-beta.13"