@arcblock/did-connect-service 4.1.59 → 4.1.61
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/font-fallback.d.ts +135 -0
- package/dist/og/font-fallback.d.ts.map +1 -0
- package/dist/og/font-fallback.js +229 -0
- package/dist/og/font-fallback.js.map +1 -0
- package/dist/og/font-subset.d.ts +14 -6
- package/dist/og/font-subset.d.ts.map +1 -1
- package/dist/og/font-subset.js +22 -15
- package/dist/og/font-subset.js.map +1 -1
- package/dist/og/generator.d.ts +2 -2
- package/dist/og/generator.d.ts.map +1 -1
- package/dist/og/generator.js +64 -10
- package/dist/og/generator.js.map +1 -1
- package/dist/og/node-font-files.d.ts +93 -0
- package/dist/og/node-font-files.d.ts.map +1 -0
- package/dist/og/node-font-files.js +298 -0
- package/dist/og/node-font-files.js.map +1 -0
- package/dist/og/subset-fonts.generated.d.ts +40 -6
- package/dist/og/subset-fonts.generated.d.ts.map +1 -1
- package/dist/og/subset-fonts.generated.js +24 -19
- package/dist/og/subset-fonts.generated.js.map +1 -1
- package/dist/og/tree-node.d.ts +14 -10
- package/dist/og/tree-node.d.ts.map +1 -1
- package/dist/og/tree-node.js +45 -111
- package/dist/og/tree-node.js.map +1 -1
- package/dist/og/worker.d.ts +44 -5
- package/dist/og/worker.d.ts.map +1 -1
- package/dist/og/worker.js +301 -94
- package/dist/og/worker.js.map +1 -1
- package/package.json +3 -3
- package/dist/http/security-headers.d.ts +0 -38
- package/dist/http/security-headers.d.ts.map +0 -1
- package/dist/http/security-headers.js +0 -67
- package/dist/http/security-headers.js.map +0 -1
package/dist/og/generator.js
CHANGED
|
@@ -3,11 +3,13 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { dirname, join } from "node:path";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
7
7
|
import stringify from "fast-json-stable-stringify";
|
|
8
8
|
import { consoleLogger } from "../logger.js";
|
|
9
9
|
import { loadDynamicAsset } from "./emoji.js";
|
|
10
|
+
import { collectOgTreeCodepoints } from "./font-subset.js";
|
|
10
11
|
import { resolveNodeOgConfig } from "./node-config.js";
|
|
12
|
+
import { FONT_FETCH_TIMEOUT_MS, loadNodeFallbackFonts, nodeFallbackFamiliesWanted, nodeParamsFallbackFamilies } from "./node-font-files.js";
|
|
11
13
|
import { rasterizeSvgToPngWithWasm } from "./node-wasm-fallback.js";
|
|
12
14
|
import { prepareOgRender } from "./shared.js";
|
|
13
15
|
import { assertFetchableUrl, readBodyCapped } from "./ssrf-guard.js";
|
|
@@ -21,8 +23,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
21
23
|
// dist/og/generator.js → ../../assets/fonts/…
|
|
22
24
|
/** The bundled Regular face (also the default for `og-node`'s `renderOgTree`). */
|
|
23
25
|
export const FONT_PATH = join(__dirname, "../../assets/fonts/noto-sans-sc-regular.otf");
|
|
24
|
-
|
|
25
|
-
export const FONT_FETCH_TIMEOUT_MS = 10_000;
|
|
26
|
+
export { FONT_FETCH_TIMEOUT_MS };
|
|
26
27
|
// Keyed by fontUrl (or "bundled") so multiple generator instances share one
|
|
27
28
|
// in-memory copy. Rejections are evicted so transient network failures don't
|
|
28
29
|
// poison the cache forever.
|
|
@@ -211,6 +212,12 @@ async function rasterize(svg, fontData, background, logger, forceWasm) {
|
|
|
211
212
|
}
|
|
212
213
|
return rasterizeSvgToPngWithWasm(svg, fontData);
|
|
213
214
|
}
|
|
215
|
+
/** Images rendered while a wanted fallback font file was missing (not cached, see generate()). */
|
|
216
|
+
const degradedImages = new WeakSet();
|
|
217
|
+
/** The resolved Regular font URL of `source` (the bundled face when unset). */
|
|
218
|
+
function regularFontUrl(source) {
|
|
219
|
+
return source.fontUrl ?? pathToFileURL(FONT_PATH).href;
|
|
220
|
+
}
|
|
214
221
|
async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource, rasterizer) {
|
|
215
222
|
const { default: satori } = await import("satori");
|
|
216
223
|
await ensureExternalImages(params, tmpDir, fetchImpl, lookupImpl, fontSource.logger);
|
|
@@ -218,10 +225,40 @@ async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl,
|
|
|
218
225
|
if (params.format === "html")
|
|
219
226
|
return Buffer.from(raw);
|
|
220
227
|
const fontData = await loadFont(fontSource);
|
|
228
|
+
// Cross-script fallbacks (arc#8832): sibling CJK families of the configured
|
|
229
|
+
// font that draw what it lacks. A failure renders without them.
|
|
230
|
+
const codepoints = collectOgTreeCodepoints(raw);
|
|
231
|
+
let fallbacks = [];
|
|
232
|
+
let degraded = false;
|
|
233
|
+
const fallbackInput = {
|
|
234
|
+
regularUrl: regularFontUrl(fontSource),
|
|
235
|
+
primaryBytes: fontData.byteLength,
|
|
236
|
+
primaryFull: true,
|
|
237
|
+
codepoints,
|
|
238
|
+
bold: false,
|
|
239
|
+
fontCacheDir: fontSource.fontCacheDir,
|
|
240
|
+
fetchImpl: fontSource.fetchImpl,
|
|
241
|
+
logger: fontSource.logger,
|
|
242
|
+
};
|
|
243
|
+
try {
|
|
244
|
+
// Bounded like loadFont: a fetchImpl that ignores its AbortSignal must not
|
|
245
|
+
// leave this render (and every later one needing the family) hanging.
|
|
246
|
+
const timeoutMs = fontSource.timeoutMs ?? FONT_FETCH_TIMEOUT_MS + 1000;
|
|
247
|
+
({ fallbacks, degraded } = await withTimeout(loadNodeFallbackFonts(fallbackInput), timeoutMs, () => new OgRenderUnavailableError(OG_RENDER_UNAVAILABLE_CODES.fontTimeout, `fallback font load exceeded ${timeoutMs}ms`)));
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
// A read error / timeout (5xx, network): render without the fallbacks, but
|
|
251
|
+
// as DEGRADED — never written to the cache, so a later request renders again.
|
|
252
|
+
degraded = nodeFallbackFamiliesWanted(fallbackInput).length > 0;
|
|
253
|
+
fontSource.logger.warn({ message: "[og] fallback font load failed; rendering without fallbacks", mod: "og", err });
|
|
254
|
+
}
|
|
221
255
|
const svg = await satori(raw, {
|
|
222
256
|
width: Math.min(params.width, MAX_IMAGE_DIMENSION),
|
|
223
257
|
height: Math.min(params.height, MAX_IMAGE_DIMENSION),
|
|
224
|
-
fonts: [
|
|
258
|
+
fonts: [
|
|
259
|
+
{ name: "Noto", data: fontData, weight: 400, style: "normal" },
|
|
260
|
+
...fallbacks.map((f) => ({ name: `Noto ${f.family}`, data: f.regular, weight: 400, style: "normal" })),
|
|
261
|
+
],
|
|
225
262
|
// loadDynamicAsset may return undefined for non-emoji segments;
|
|
226
263
|
// satori expects string | FontOptions[] so we coerce undefined → "".
|
|
227
264
|
loadAdditionalAsset: async (lang, segment) => {
|
|
@@ -229,9 +266,16 @@ async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl,
|
|
|
229
266
|
return result ?? "";
|
|
230
267
|
},
|
|
231
268
|
});
|
|
232
|
-
if (params.format === "svg")
|
|
233
|
-
|
|
234
|
-
|
|
269
|
+
if (params.format === "svg") {
|
|
270
|
+
const out = Buffer.from(svg);
|
|
271
|
+
if (degraded)
|
|
272
|
+
degradedImages.add(out);
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
275
|
+
const image = await rasterize(svg, fontData, params.background, fontSource.logger, rasterizer === "wasm");
|
|
276
|
+
if (degraded)
|
|
277
|
+
degradedImages.add(image);
|
|
278
|
+
return image;
|
|
235
279
|
}
|
|
236
280
|
// ---------------------------------------------------------------------------
|
|
237
281
|
// Public factory
|
|
@@ -250,6 +294,10 @@ export function createOgGenerator(options = {}) {
|
|
|
250
294
|
const defaultCacheDir = options.cacheDir ?? nodeOgConfig.cacheDir;
|
|
251
295
|
const defaultTmpDir = options.tmpDir ?? nodeOgConfig.tmpDir;
|
|
252
296
|
const generateTasks = new Map();
|
|
297
|
+
const fallbackKey = (params) => {
|
|
298
|
+
const families = nodeParamsFallbackFamilies(regularFontUrl(fontSource), params);
|
|
299
|
+
return families.length ? { fontFallbacks: families } : {};
|
|
300
|
+
};
|
|
253
301
|
async function generate(opts) {
|
|
254
302
|
const { input, info, format } = opts;
|
|
255
303
|
const cacheDir = opts.cacheDir ?? defaultCacheDir;
|
|
@@ -269,6 +317,8 @@ export function createOgGenerator(options = {}) {
|
|
|
269
317
|
color: fullParams.color,
|
|
270
318
|
format,
|
|
271
319
|
info: { name: info.name, did: info.did, appUrl: info.appUrl },
|
|
320
|
+
// Only cards drawn with a cross-script fallback (arc#8832) get a new key.
|
|
321
|
+
...fallbackKey(fullParams),
|
|
272
322
|
}));
|
|
273
323
|
const nocache = prepared.nocache;
|
|
274
324
|
const destPath = getCacheFilePath(cacheDir, `${cacheKey}.${format}`);
|
|
@@ -283,9 +333,13 @@ export function createOgGenerator(options = {}) {
|
|
|
283
333
|
generateTasks.set(cacheKey, task);
|
|
284
334
|
}
|
|
285
335
|
const buffer = await task;
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
336
|
+
// A card rendered while a fallback font file was missing must not be served
|
|
337
|
+
// from the cache once the file exists: write it outside the cache path
|
|
338
|
+
// (one file per key, overwritten), so the next request renders again.
|
|
339
|
+
const outPath = degradedImages.has(buffer) ? join(tmpDir, "og-degraded", `${cacheKey}.${format}`) : destPath;
|
|
340
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
341
|
+
writeFileSync(outPath, buffer);
|
|
342
|
+
return outPath;
|
|
289
343
|
}
|
|
290
344
|
return { generate };
|
|
291
345
|
}
|
package/dist/og/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/og/generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/og/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node font files shared by `og-node`'s tree renderer (`tree-node.ts`) and
|
|
3
|
+
* og.png generator (`generator.ts`): subset siblings (ArcBlock/arc#8800) and
|
|
4
|
+
* cross-script fallback siblings (ArcBlock/arc#8832) of the configured
|
|
5
|
+
* Regular font.
|
|
6
|
+
*
|
|
7
|
+
* Layout, relative to the Regular font URL (the bundled face, or
|
|
8
|
+
* `CONNECT_OG_FONT_URL`, `file:` URLs included):
|
|
9
|
+
* - Bold: `…Regular…` → `…Bold…` in the file name ({@link deriveBoldFontUrl});
|
|
10
|
+
* - subset: `subset-v1/<same file name>` ({@link deriveSubsetFontUrl});
|
|
11
|
+
* - fallback families: the R2 file names next to it (`NotoSansSC-Regular.otf`,
|
|
12
|
+
* `NotoSansJP-Regular.otf`, `NotoSansTC-Regular.otf`, with their Bold and
|
|
13
|
+
* subset siblings) — the layout of the font bucket, so a `CONNECT_OG_FONT_URL`
|
|
14
|
+
* pointing at it gets fallbacks for free. The npm package bundles only Noto
|
|
15
|
+
* Sans SC Regular (the widest CJK face: 30 890 codepoints, including 歩 and
|
|
16
|
+
* most Japanese shinjitai), so the bundled default has no fallback siblings;
|
|
17
|
+
* each missing sibling is remembered and warned about once per process.
|
|
18
|
+
*/
|
|
19
|
+
import type { Logger } from "../logger.js";
|
|
20
|
+
import { type OgCjkFamily } from "./font-fallback.js";
|
|
21
|
+
import { type OgSubsetFontSet } from "./font-subset.js";
|
|
22
|
+
/** Deadline for downloading a remote font (Node). */
|
|
23
|
+
export declare const FONT_FETCH_TIMEOUT_MS = 10000;
|
|
24
|
+
export declare function md5(s: string): string;
|
|
25
|
+
/** `…Regular…` → `…Bold…` in the last path segment; undefined when the name has no Regular marker. */
|
|
26
|
+
export declare function deriveBoldFontUrl(regularUrl: string | undefined): string | undefined;
|
|
27
|
+
/** `…/NotoSansSC-Regular.otf` → `…/subset-v1/NotoSansSC-Regular.otf` (and the file name). */
|
|
28
|
+
export declare function deriveSubsetFontUrl(url: string | undefined): {
|
|
29
|
+
url: string;
|
|
30
|
+
file: string;
|
|
31
|
+
} | undefined;
|
|
32
|
+
/** A subset file, checked against the build's sha256 (`null` = missing or mismatch, warned once per process). */
|
|
33
|
+
export declare function loadSubsetFile(url: string, sha256: string, fontCacheDir: string, fetchImpl: typeof fetch, logger: Logger): Promise<Buffer | null>;
|
|
34
|
+
/** Test isolation: forget cached subset / fallback bytes and re-arm the warnings. */
|
|
35
|
+
export declare function resetOgNodeFontFilesForTesting(): void;
|
|
36
|
+
/** The subset-table set (and CJK family) of the Regular font at `regularUrl`, matched by file name. */
|
|
37
|
+
export declare function nodeFontSetFor(regularUrl: string): {
|
|
38
|
+
set: OgSubsetFontSet;
|
|
39
|
+
family?: OgCjkFamily;
|
|
40
|
+
subsetUrl: string;
|
|
41
|
+
} | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the primary at `regularUrl` should load its subset for `codepoints`
|
|
44
|
+
* (`ogPrimaryUsesSubset`, the Worker's rule): the subset covers the text, or
|
|
45
|
+
* the fallbacks the text needs anyway draw what only the full primary has.
|
|
46
|
+
* False for a font outside the subset table.
|
|
47
|
+
*/
|
|
48
|
+
export declare function nodePrimaryUsesSubset(regularUrl: string, codepoints: ReadonlySet<number>, bold: boolean): boolean;
|
|
49
|
+
export interface NodeFallbackFonts {
|
|
50
|
+
fallbacks: Array<{
|
|
51
|
+
family: OgCjkFamily;
|
|
52
|
+
url: string;
|
|
53
|
+
regular: Buffer;
|
|
54
|
+
bold: Buffer | null;
|
|
55
|
+
}>;
|
|
56
|
+
/** Families the text needed but the render did not load (over budget, or files missing). */
|
|
57
|
+
skipped: OgCjkFamily[];
|
|
58
|
+
/** A wanted fallback file was missing: the output may change once it is there (do not cache it). */
|
|
59
|
+
degraded: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Plans (`font-fallback.ts`) and loads the cross-script fallbacks of one Node
|
|
63
|
+
* render. `regularUrl` is the resolved Regular font URL (bundled face
|
|
64
|
+
* included); `primaryBytes` what the primary loaded. A missing sibling is
|
|
65
|
+
* skipped (warned once per process); a read error / timeout rejects like a
|
|
66
|
+
* primary font read.
|
|
67
|
+
*/
|
|
68
|
+
export interface NodeFallbackInput {
|
|
69
|
+
regularUrl: string;
|
|
70
|
+
primaryBytes: number;
|
|
71
|
+
/** The primary loaded its full font (not its subset). */
|
|
72
|
+
primaryFull: boolean;
|
|
73
|
+
codepoints: ReadonlySet<number>;
|
|
74
|
+
bold: boolean;
|
|
75
|
+
fontCacheDir: string;
|
|
76
|
+
fetchImpl: typeof fetch;
|
|
77
|
+
logger: Logger;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Every fallback family the render wanted (planned or cut by the budget) —
|
|
81
|
+
* what a render that could not load its fallbacks at all (a read error or
|
|
82
|
+
* timeout) reports as skipped.
|
|
83
|
+
*/
|
|
84
|
+
export declare function nodeFallbackFamiliesWanted(input: Pick<NodeFallbackInput, "regularUrl" | "primaryBytes" | "primaryFull" | "codepoints" | "bold">): OgCjkFamily[];
|
|
85
|
+
export declare function loadNodeFallbackFonts(input: NodeFallbackInput): Promise<NodeFallbackFonts>;
|
|
86
|
+
/**
|
|
87
|
+
* The fallback families an og.png's params text needs (missing from the primary,
|
|
88
|
+
* mapped by another family), for the generator's cache key: a card that now
|
|
89
|
+
* renders with a fallback must not be served from a cache entry drawn before
|
|
90
|
+
* arc#8832. Empty for every other card (its key is unchanged).
|
|
91
|
+
*/
|
|
92
|
+
export declare function nodeParamsFallbackFamilies(regularUrl: string, params: Record<string, unknown>): OgCjkFamily[];
|
|
93
|
+
//# sourceMappingURL=node-font-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-font-files.d.ts","sourceRoot":"","sources":["../../src/og/node-font-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAEL,KAAK,WAAW,EAOjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAoB,KAAK,eAAe,EAAkD,MAAM,kBAAkB,CAAC;AAE1H,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErC;AAED,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOpF;AAID,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmBtG;AAyCD,iHAAiH;AACjH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,OAAO,KAAK,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAOD,qFAAqF;AACrF,wBAAgB,8BAA8B,IAAI,IAAI,CAIrD;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUhI;AAmBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAUjH;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC7F,4FAA4F;IAC5F,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC,GAAG,WAAW,EAAE,CAI/J;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmEhG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAc7G"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node font files shared by `og-node`'s tree renderer (`tree-node.ts`) and
|
|
3
|
+
* og.png generator (`generator.ts`): subset siblings (ArcBlock/arc#8800) and
|
|
4
|
+
* cross-script fallback siblings (ArcBlock/arc#8832) of the configured
|
|
5
|
+
* Regular font.
|
|
6
|
+
*
|
|
7
|
+
* Layout, relative to the Regular font URL (the bundled face, or
|
|
8
|
+
* `CONNECT_OG_FONT_URL`, `file:` URLs included):
|
|
9
|
+
* - Bold: `…Regular…` → `…Bold…` in the file name ({@link deriveBoldFontUrl});
|
|
10
|
+
* - subset: `subset-v1/<same file name>` ({@link deriveSubsetFontUrl});
|
|
11
|
+
* - fallback families: the R2 file names next to it (`NotoSansSC-Regular.otf`,
|
|
12
|
+
* `NotoSansJP-Regular.otf`, `NotoSansTC-Regular.otf`, with their Bold and
|
|
13
|
+
* subset siblings) — the layout of the font bucket, so a `CONNECT_OG_FONT_URL`
|
|
14
|
+
* pointing at it gets fallbacks for free. The npm package bundles only Noto
|
|
15
|
+
* Sans SC Regular (the widest CJK face: 30 890 codepoints, including 歩 and
|
|
16
|
+
* most Japanese shinjitai), so the bundled default has no fallback siblings;
|
|
17
|
+
* each missing sibling is remembered and warned about once per process.
|
|
18
|
+
*/
|
|
19
|
+
import { createHash } from "node:crypto";
|
|
20
|
+
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
21
|
+
import { readFile } from "node:fs/promises";
|
|
22
|
+
import { dirname, join } from "node:path";
|
|
23
|
+
import { fileURLToPath } from "node:url";
|
|
24
|
+
import { OG_CJK_FALLBACK_PREFERENCE, ogFallbackIgnorable, ogFontSetBytes, ogFontSetFits, ogPrimaryUsesSubset, planOgFontFallbacks, } from "./font-fallback.js";
|
|
25
|
+
import { OG_SUBSET_PREFIX, ogFontSha256, ogFullFontMaps, ogSubsetFontSets } from "./font-subset.js";
|
|
26
|
+
/** Deadline for downloading a remote font (Node). */
|
|
27
|
+
export const FONT_FETCH_TIMEOUT_MS = 10_000;
|
|
28
|
+
export function md5(s) {
|
|
29
|
+
return createHash("md5").update(s).digest("hex");
|
|
30
|
+
}
|
|
31
|
+
/** `…Regular…` → `…Bold…` in the last path segment; undefined when the name has no Regular marker. */
|
|
32
|
+
export function deriveBoldFontUrl(regularUrl) {
|
|
33
|
+
if (!regularUrl)
|
|
34
|
+
return undefined;
|
|
35
|
+
const slash = regularUrl.lastIndexOf("/");
|
|
36
|
+
const head = regularUrl.slice(0, slash + 1);
|
|
37
|
+
const name = regularUrl.slice(slash + 1);
|
|
38
|
+
const bold = name.replace(/Regular/, "Bold").replace(/regular/, "bold");
|
|
39
|
+
return bold === name ? undefined : head + bold;
|
|
40
|
+
}
|
|
41
|
+
const SUBSET_DIR = OG_SUBSET_PREFIX.slice(OG_SUBSET_PREFIX.lastIndexOf("/") + 1);
|
|
42
|
+
/** `…/NotoSansSC-Regular.otf` → `…/subset-v1/NotoSansSC-Regular.otf` (and the file name). */
|
|
43
|
+
export function deriveSubsetFontUrl(url) {
|
|
44
|
+
if (!url)
|
|
45
|
+
return undefined;
|
|
46
|
+
let parsed;
|
|
47
|
+
try {
|
|
48
|
+
parsed = new URL(url);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const slash = parsed.pathname.lastIndexOf("/");
|
|
54
|
+
const name = parsed.pathname.slice(slash + 1);
|
|
55
|
+
if (!name)
|
|
56
|
+
return undefined;
|
|
57
|
+
parsed.pathname = `${parsed.pathname.slice(0, slash + 1)}${SUBSET_DIR}/${name}`;
|
|
58
|
+
let file;
|
|
59
|
+
try {
|
|
60
|
+
file = decodeURIComponent(name);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
return { url: parsed.href, file };
|
|
66
|
+
}
|
|
67
|
+
/** A font file that may not exist: `null` on 404 / 403 / ENOENT; other failures throw. Remote files are disk-cached. */
|
|
68
|
+
async function readOptionalFontFile(url, fontCacheDir, fetchImpl) {
|
|
69
|
+
if (url.startsWith("file:")) {
|
|
70
|
+
try {
|
|
71
|
+
return await readFile(fileURLToPath(url));
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
if (err.code === "ENOENT")
|
|
75
|
+
return null;
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const diskPath = join(fontCacheDir, `${md5(url)}.font`);
|
|
80
|
+
if (existsSync(diskPath))
|
|
81
|
+
return readFile(diskPath);
|
|
82
|
+
const res = await fetchImpl(url, { signal: AbortSignal.timeout(FONT_FETCH_TIMEOUT_MS) });
|
|
83
|
+
if (res.status === 404 || res.status === 403)
|
|
84
|
+
return null;
|
|
85
|
+
if (!res.ok)
|
|
86
|
+
throw new Error(`font fetch failed: ${res.status}`);
|
|
87
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
88
|
+
mkdirSync(dirname(diskPath), { recursive: true });
|
|
89
|
+
writeFileSync(diskPath, buf);
|
|
90
|
+
return buf;
|
|
91
|
+
}
|
|
92
|
+
/** Memoized file bytes by URL; `null` (missing / not the build's bytes) is cached, errors are not. */
|
|
93
|
+
const files = new Map();
|
|
94
|
+
let subsetMissingWarned = false;
|
|
95
|
+
let fallbackMissingWarned = false;
|
|
96
|
+
function memoFile(url, load) {
|
|
97
|
+
let entry = files.get(url);
|
|
98
|
+
if (!entry) {
|
|
99
|
+
const created = load();
|
|
100
|
+
created.catch(() => {
|
|
101
|
+
if (files.get(url) === created)
|
|
102
|
+
files.delete(url);
|
|
103
|
+
});
|
|
104
|
+
files.set(url, created);
|
|
105
|
+
entry = created;
|
|
106
|
+
}
|
|
107
|
+
return entry;
|
|
108
|
+
}
|
|
109
|
+
/** A subset file, checked against the build's sha256 (`null` = missing or mismatch, warned once per process). */
|
|
110
|
+
export function loadSubsetFile(url, sha256, fontCacheDir, fetchImpl, logger) {
|
|
111
|
+
return memoFile(url, () => readOptionalFontFile(url, fontCacheDir, fetchImpl).then(async (bytes) => {
|
|
112
|
+
const reason = !bytes ? "missing" : (await ogFontSha256(bytes)) !== sha256 ? "sha256 mismatch" : undefined;
|
|
113
|
+
if (!reason)
|
|
114
|
+
return bytes;
|
|
115
|
+
// A stale / corrupt download must not stay on disk for the next process.
|
|
116
|
+
if (bytes && !url.startsWith("file:"))
|
|
117
|
+
rmSync(join(fontCacheDir, `${md5(url)}.font`), { force: true });
|
|
118
|
+
if (!subsetMissingWarned) {
|
|
119
|
+
subsetMissingWarned = true;
|
|
120
|
+
logger.warn({ message: `[og] subset font ${reason}; rendering with the full font`, mod: "og" });
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
/** A full fallback font file, or `null` when it is not there. */
|
|
126
|
+
function loadOptionalFullFile(url, fontCacheDir, fetchImpl) {
|
|
127
|
+
return memoFile(url, () => readOptionalFontFile(url, fontCacheDir, fetchImpl));
|
|
128
|
+
}
|
|
129
|
+
/** Test isolation: forget cached subset / fallback bytes and re-arm the warnings. */
|
|
130
|
+
export function resetOgNodeFontFilesForTesting() {
|
|
131
|
+
files.clear();
|
|
132
|
+
subsetMissingWarned = false;
|
|
133
|
+
fallbackMissingWarned = false;
|
|
134
|
+
}
|
|
135
|
+
/** The subset-table set (and CJK family) of the Regular font at `regularUrl`, matched by file name. */
|
|
136
|
+
export function nodeFontSetFor(regularUrl) {
|
|
137
|
+
const derived = deriveSubsetFontUrl(regularUrl);
|
|
138
|
+
if (!derived)
|
|
139
|
+
return undefined;
|
|
140
|
+
const sets = ogSubsetFontSets();
|
|
141
|
+
const entry = Object.entries(sets).find(([, candidate]) => candidate.regular.file === derived.file);
|
|
142
|
+
if (!entry)
|
|
143
|
+
return undefined;
|
|
144
|
+
const [id, set] = entry;
|
|
145
|
+
// The bundled face is Noto Sans SC.
|
|
146
|
+
const family = id === "node-bundled" ? "zh-CN" : OG_CJK_FALLBACK_PREFERENCE.includes(id) ? id : undefined;
|
|
147
|
+
return { set, family, subsetUrl: derived.url };
|
|
148
|
+
}
|
|
149
|
+
/** Fallback families next to `regularUrl`, excluding the primary's own family. */
|
|
150
|
+
function fallbackCandidates(regularUrl, primaryFamily) {
|
|
151
|
+
const sets = ogSubsetFontSets();
|
|
152
|
+
return OG_CJK_FALLBACK_PREFERENCE.flatMap((family) => family !== primaryFamily && sets[family] && !knownMissing.has(siblingUrl(regularUrl, sets[family].regular.file))
|
|
153
|
+
? [{ family, set: sets[family] }]
|
|
154
|
+
: []);
|
|
155
|
+
}
|
|
156
|
+
/** Full Regular URLs of fallback families found missing (not probed again by this process). */
|
|
157
|
+
const knownMissing = new Set();
|
|
158
|
+
function siblingUrl(regularUrl, file) {
|
|
159
|
+
return new URL(encodeURIComponent(file), regularUrl).href;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Whether the primary at `regularUrl` should load its subset for `codepoints`
|
|
163
|
+
* (`ogPrimaryUsesSubset`, the Worker's rule): the subset covers the text, or
|
|
164
|
+
* the fallbacks the text needs anyway draw what only the full primary has.
|
|
165
|
+
* False for a font outside the subset table.
|
|
166
|
+
*/
|
|
167
|
+
export function nodePrimaryUsesSubset(regularUrl, codepoints, bold) {
|
|
168
|
+
const primary = nodeFontSetFor(regularUrl);
|
|
169
|
+
if (!primary)
|
|
170
|
+
return false;
|
|
171
|
+
return ogPrimaryUsesSubset({
|
|
172
|
+
primary: primary.set,
|
|
173
|
+
primaryCjk: !!primary.family,
|
|
174
|
+
codepoints,
|
|
175
|
+
candidates: fallbackCandidates(regularUrl, primary.family),
|
|
176
|
+
bold,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
function planNodeFallbacks(input) {
|
|
180
|
+
const primary = nodeFontSetFor(input.regularUrl);
|
|
181
|
+
if (!primary)
|
|
182
|
+
return undefined;
|
|
183
|
+
const planPrimary = { primaryBytes: input.primaryBytes, primaryFull: input.primaryFull, primaryCjk: !!primary.family };
|
|
184
|
+
const plan = planOgFontFallbacks({
|
|
185
|
+
primary: primary.set,
|
|
186
|
+
...planPrimary,
|
|
187
|
+
codepoints: input.codepoints,
|
|
188
|
+
candidates: fallbackCandidates(input.regularUrl, primary.family),
|
|
189
|
+
bold: input.bold,
|
|
190
|
+
});
|
|
191
|
+
return { planPrimary, plan };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Every fallback family the render wanted (planned or cut by the budget) —
|
|
195
|
+
* what a render that could not load its fallbacks at all (a read error or
|
|
196
|
+
* timeout) reports as skipped.
|
|
197
|
+
*/
|
|
198
|
+
export function nodeFallbackFamiliesWanted(input) {
|
|
199
|
+
const planned = planNodeFallbacks(input);
|
|
200
|
+
if (!planned)
|
|
201
|
+
return [];
|
|
202
|
+
return [...new Set([...planned.plan.fallbacks.map((f) => f.family), ...planned.plan.overBudget])];
|
|
203
|
+
}
|
|
204
|
+
export async function loadNodeFallbackFonts(input) {
|
|
205
|
+
const out = { fallbacks: [], skipped: [], degraded: false };
|
|
206
|
+
const planned = planNodeFallbacks(input);
|
|
207
|
+
if (!planned)
|
|
208
|
+
return out;
|
|
209
|
+
const { regularUrl, bold, fontCacheDir, fetchImpl, logger } = input;
|
|
210
|
+
const { planPrimary, plan } = planned;
|
|
211
|
+
out.skipped.push(...plan.overBudget);
|
|
212
|
+
const loadFull = async (choice) => {
|
|
213
|
+
const fullUrl = siblingUrl(regularUrl, choice.set.regular.file);
|
|
214
|
+
const fullBoldUrl = choice.set.bold ? siblingUrl(regularUrl, choice.set.bold.file) : undefined;
|
|
215
|
+
const [regularBytes, boldBytes] = await Promise.all([
|
|
216
|
+
loadOptionalFullFile(fullUrl, fontCacheDir, fetchImpl),
|
|
217
|
+
bold && fullBoldUrl ? loadOptionalFullFile(fullBoldUrl, fontCacheDir, fetchImpl) : Promise.resolve(null),
|
|
218
|
+
]);
|
|
219
|
+
if (!regularBytes) {
|
|
220
|
+
knownMissing.add(fullUrl);
|
|
221
|
+
if (!fallbackMissingWarned) {
|
|
222
|
+
fallbackMissingWarned = true;
|
|
223
|
+
logger.warn({ message: "[og] fallback font missing; its characters render as .notdef", mod: "og", family: choice.family });
|
|
224
|
+
}
|
|
225
|
+
return "missing";
|
|
226
|
+
}
|
|
227
|
+
return { family: choice.family, url: fullUrl, regular: regularBytes, bold: boldBytes };
|
|
228
|
+
};
|
|
229
|
+
const loadPlanned = async (choice) => {
|
|
230
|
+
if (!choice.subset)
|
|
231
|
+
return loadFull(choice);
|
|
232
|
+
const fullUrl = siblingUrl(regularUrl, choice.set.regular.file);
|
|
233
|
+
const subsetRegular = deriveSubsetFontUrl(fullUrl).url;
|
|
234
|
+
const regularBytes = await loadSubsetFile(subsetRegular, choice.set.regular.sha256, fontCacheDir, fetchImpl, logger);
|
|
235
|
+
const boldBytes = regularBytes && bold && choice.set.bold
|
|
236
|
+
? await loadSubsetFile(deriveSubsetFontUrl(siblingUrl(regularUrl, choice.set.bold.file)).url, choice.set.bold.sha256, fontCacheDir, fetchImpl, logger)
|
|
237
|
+
: null;
|
|
238
|
+
if (regularBytes && (!bold || boldBytes))
|
|
239
|
+
return { family: choice.family, url: subsetRegular, regular: regularBytes, bold: boldBytes };
|
|
240
|
+
return "subset-unusable";
|
|
241
|
+
};
|
|
242
|
+
// Planned fonts in parallel; then a planned subset that is unusable may load
|
|
243
|
+
// its full font, one at a time, only while the whole set still fits.
|
|
244
|
+
const loaded = await Promise.all(plan.fallbacks.map(loadPlanned));
|
|
245
|
+
const effective = plan.fallbacks.map((c) => ({ subset: c.subset, bytes: c.bytes }));
|
|
246
|
+
for (const [i, choice] of plan.fallbacks.entries()) {
|
|
247
|
+
if (loaded[i] !== "subset-unusable")
|
|
248
|
+
continue;
|
|
249
|
+
out.degraded = true;
|
|
250
|
+
const asFull = effective.map((e, j) => (j === i ? { subset: false, bytes: ogFontSetBytes(choice.set, false, bold) } : e));
|
|
251
|
+
if (!ogFontSetFits(planPrimary, asFull))
|
|
252
|
+
continue;
|
|
253
|
+
loaded[i] = await loadFull(choice);
|
|
254
|
+
if (typeof loaded[i] !== "string")
|
|
255
|
+
effective[i] = asFull[i];
|
|
256
|
+
}
|
|
257
|
+
plan.fallbacks.forEach((choice, i) => {
|
|
258
|
+
const result = loaded[i];
|
|
259
|
+
if (typeof result === "string") {
|
|
260
|
+
out.skipped.push(choice.family);
|
|
261
|
+
if (result === "missing")
|
|
262
|
+
out.degraded = true;
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
if (bold && !result.bold)
|
|
266
|
+
out.degraded = true;
|
|
267
|
+
out.fallbacks.push(result);
|
|
268
|
+
});
|
|
269
|
+
out.skipped = [...new Set(out.skipped)];
|
|
270
|
+
return out;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* The fallback families an og.png's params text needs (missing from the primary,
|
|
274
|
+
* mapped by another family), for the generator's cache key: a card that now
|
|
275
|
+
* renders with a fallback must not be served from a cache entry drawn before
|
|
276
|
+
* arc#8832. Empty for every other card (its key is unchanged).
|
|
277
|
+
*/
|
|
278
|
+
export function nodeParamsFallbackFamilies(regularUrl, params) {
|
|
279
|
+
const primary = nodeFontSetFor(regularUrl);
|
|
280
|
+
if (!primary)
|
|
281
|
+
return [];
|
|
282
|
+
const candidates = fallbackCandidates(regularUrl, primary.family);
|
|
283
|
+
const needed = new Set();
|
|
284
|
+
for (const value of Object.values(params)) {
|
|
285
|
+
if (typeof value !== "string" || value.startsWith("data:"))
|
|
286
|
+
continue;
|
|
287
|
+
for (const ch of value) {
|
|
288
|
+
const cp = ch.codePointAt(0);
|
|
289
|
+
if (cp < 0x80 || ogFallbackIgnorable(cp) || ogFullFontMaps(primary.set, cp))
|
|
290
|
+
continue;
|
|
291
|
+
for (const c of candidates)
|
|
292
|
+
if (ogFullFontMaps(c.set, cp))
|
|
293
|
+
needed.add(c.family);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return OG_CJK_FALLBACK_PREFERENCE.filter((family) => needed.has(family));
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=node-font-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-font-files.js","sourceRoot":"","sources":["../../src/og/node-font-files.ts"],"names":[],"mappings":"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"}
|