@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/assets/fonts/subset-v1/noto-sans-sc-regular.otf +0 -0
- package/dist/og/font-fallback.d.ts +105 -0
- package/dist/og/font-fallback.d.ts.map +1 -0
- package/dist/og/font-fallback.js +170 -0
- package/dist/og/font-fallback.js.map +1 -0
- package/dist/og/font-subset.d.ts +60 -0
- package/dist/og/font-subset.d.ts.map +1 -0
- package/dist/og/font-subset.js +271 -0
- package/dist/og/font-subset.js.map +1 -0
- package/dist/og/generator.d.ts +4 -2
- package/dist/og/generator.d.ts.map +1 -1
- package/dist/og/generator.js +66 -11
- package/dist/og/generator.js.map +1 -1
- package/dist/og/node-font-files.d.ts +86 -0
- package/dist/og/node-font-files.d.ts.map +1 -0
- package/dist/og/node-font-files.js +280 -0
- package/dist/og/node-font-files.js.map +1 -0
- package/dist/og/subset-fonts.generated.d.ts +104 -0
- package/dist/og/subset-fonts.generated.d.ts.map +1 -0
- package/dist/og/subset-fonts.generated.js +46 -0
- package/dist/og/subset-fonts.generated.js.map +1 -0
- package/dist/og/tree-node.d.ts +22 -3
- package/dist/og/tree-node.d.ts.map +1 -1
- package/dist/og/tree-node.js +87 -22
- package/dist/og/tree-node.js.map +1 -1
- package/dist/og/worker.d.ts +63 -4
- package/dist/og/worker.d.ts.map +1 -1
- package/dist/og/worker.js +339 -67
- package/dist/og/worker.js.map +1 -1
- package/package.json +3 -3
package/dist/og/generator.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type Logger } from "../logger.js";
|
|
2
|
+
import { FONT_FETCH_TIMEOUT_MS } from "./node-font-files.js";
|
|
2
3
|
import type { CreateOgGeneratorOptions, OgGenerator } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
export declare const
|
|
4
|
+
/** The bundled Regular face (also the default for `og-node`'s `renderOgTree`). */
|
|
5
|
+
export declare const FONT_PATH: string;
|
|
6
|
+
export { FONT_FETCH_TIMEOUT_MS };
|
|
5
7
|
export interface FontSource {
|
|
6
8
|
fontUrl?: string;
|
|
7
9
|
fontCacheDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/og/generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/og/generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAiF,MAAM,sBAAsB,CAAC;AAO5I,OAAO,KAAK,EAAE,wBAAwB,EAAqB,WAAW,EAAE,MAAM,YAAY,CAAC;AAS3F,kFAAkF;AAClF,eAAO,MAAM,SAAS,QAAiE,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,gHAAgH;AAChH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5D;AAwRD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,WAAW,CA6ErF"}
|
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";
|
|
@@ -19,9 +21,9 @@ import { MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, OgValidationError } from "./types.
|
|
|
19
21
|
// ---------------------------------------------------------------------------
|
|
20
22
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
23
|
// dist/og/generator.js → ../../assets/fonts/…
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export
|
|
24
|
+
/** The bundled Regular face (also the default for `og-node`'s `renderOgTree`). */
|
|
25
|
+
export const FONT_PATH = join(__dirname, "../../assets/fonts/noto-sans-sc-regular.otf");
|
|
26
|
+
export { FONT_FETCH_TIMEOUT_MS };
|
|
25
27
|
// Keyed by fontUrl (or "bundled") so multiple generator instances share one
|
|
26
28
|
// in-memory copy. Rejections are evicted so transient network failures don't
|
|
27
29
|
// poison the cache forever.
|
|
@@ -210,6 +212,12 @@ async function rasterize(svg, fontData, background, logger, forceWasm) {
|
|
|
210
212
|
}
|
|
211
213
|
return rasterizeSvgToPngWithWasm(svg, fontData);
|
|
212
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
|
+
}
|
|
213
221
|
async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource, rasterizer) {
|
|
214
222
|
const { default: satori } = await import("satori");
|
|
215
223
|
await ensureExternalImages(params, tmpDir, fetchImpl, lookupImpl, fontSource.logger);
|
|
@@ -217,10 +225,40 @@ async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl,
|
|
|
217
225
|
if (params.format === "html")
|
|
218
226
|
return Buffer.from(raw);
|
|
219
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
|
+
}
|
|
220
255
|
const svg = await satori(raw, {
|
|
221
256
|
width: Math.min(params.width, MAX_IMAGE_DIMENSION),
|
|
222
257
|
height: Math.min(params.height, MAX_IMAGE_DIMENSION),
|
|
223
|
-
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
|
+
],
|
|
224
262
|
// loadDynamicAsset may return undefined for non-emoji segments;
|
|
225
263
|
// satori expects string | FontOptions[] so we coerce undefined → "".
|
|
226
264
|
loadAdditionalAsset: async (lang, segment) => {
|
|
@@ -228,9 +266,16 @@ async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl,
|
|
|
228
266
|
return result ?? "";
|
|
229
267
|
},
|
|
230
268
|
});
|
|
231
|
-
if (params.format === "svg")
|
|
232
|
-
|
|
233
|
-
|
|
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;
|
|
234
279
|
}
|
|
235
280
|
// ---------------------------------------------------------------------------
|
|
236
281
|
// Public factory
|
|
@@ -249,6 +294,10 @@ export function createOgGenerator(options = {}) {
|
|
|
249
294
|
const defaultCacheDir = options.cacheDir ?? nodeOgConfig.cacheDir;
|
|
250
295
|
const defaultTmpDir = options.tmpDir ?? nodeOgConfig.tmpDir;
|
|
251
296
|
const generateTasks = new Map();
|
|
297
|
+
const fallbackKey = (params) => {
|
|
298
|
+
const families = nodeParamsFallbackFamilies(regularFontUrl(fontSource), params);
|
|
299
|
+
return families.length ? { fontFallbacks: families } : {};
|
|
300
|
+
};
|
|
252
301
|
async function generate(opts) {
|
|
253
302
|
const { input, info, format } = opts;
|
|
254
303
|
const cacheDir = opts.cacheDir ?? defaultCacheDir;
|
|
@@ -268,6 +317,8 @@ export function createOgGenerator(options = {}) {
|
|
|
268
317
|
color: fullParams.color,
|
|
269
318
|
format,
|
|
270
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),
|
|
271
322
|
}));
|
|
272
323
|
const nocache = prepared.nocache;
|
|
273
324
|
const destPath = getCacheFilePath(cacheDir, `${cacheKey}.${format}`);
|
|
@@ -282,9 +333,13 @@ export function createOgGenerator(options = {}) {
|
|
|
282
333
|
generateTasks.set(cacheKey, task);
|
|
283
334
|
}
|
|
284
335
|
const buffer = await task;
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
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;
|
|
288
343
|
}
|
|
289
344
|
return { generate };
|
|
290
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,86 @@
|
|
|
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
|
+
export interface NodeFallbackFonts {
|
|
43
|
+
fallbacks: Array<{
|
|
44
|
+
family: OgCjkFamily;
|
|
45
|
+
url: string;
|
|
46
|
+
regular: Buffer;
|
|
47
|
+
bold: Buffer | null;
|
|
48
|
+
}>;
|
|
49
|
+
/** Families the text needed but the render did not load (over budget, or files missing). */
|
|
50
|
+
skipped: OgCjkFamily[];
|
|
51
|
+
/** A wanted fallback file was missing: the output may change once it is there (do not cache it). */
|
|
52
|
+
degraded: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Plans (`font-fallback.ts`) and loads the cross-script fallbacks of one Node
|
|
56
|
+
* render. `regularUrl` is the resolved Regular font URL (bundled face
|
|
57
|
+
* included); `primaryBytes` what the primary loaded. A missing sibling is
|
|
58
|
+
* skipped (warned once per process); a read error / timeout rejects like a
|
|
59
|
+
* primary font read.
|
|
60
|
+
*/
|
|
61
|
+
export interface NodeFallbackInput {
|
|
62
|
+
regularUrl: string;
|
|
63
|
+
primaryBytes: number;
|
|
64
|
+
/** The primary loaded its full font (not its subset). */
|
|
65
|
+
primaryFull: boolean;
|
|
66
|
+
codepoints: ReadonlySet<number>;
|
|
67
|
+
bold: boolean;
|
|
68
|
+
fontCacheDir: string;
|
|
69
|
+
fetchImpl: typeof fetch;
|
|
70
|
+
logger: Logger;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Every fallback family the render wanted (planned or cut by the budget) —
|
|
74
|
+
* what a render that could not load its fallbacks at all (a read error or
|
|
75
|
+
* timeout) reports as skipped.
|
|
76
|
+
*/
|
|
77
|
+
export declare function nodeFallbackFamiliesWanted(input: Pick<NodeFallbackInput, "regularUrl" | "primaryBytes" | "primaryFull" | "codepoints" | "bold">): OgCjkFamily[];
|
|
78
|
+
export declare function loadNodeFallbackFonts(input: NodeFallbackInput): Promise<NodeFallbackFonts>;
|
|
79
|
+
/**
|
|
80
|
+
* The fallback families an og.png's params text needs (missing from the primary,
|
|
81
|
+
* mapped by another family), for the generator's cache key: a card that now
|
|
82
|
+
* renders with a fallback must not be served from a cache entry drawn before
|
|
83
|
+
* arc#8832. Empty for every other card (its key is unchanged).
|
|
84
|
+
*/
|
|
85
|
+
export declare function nodeParamsFallbackFamilies(regularUrl: string, params: Record<string, unknown>): OgCjkFamily[];
|
|
86
|
+
//# 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,EAMjB,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,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,280 @@
|
|
|
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, 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
|
+
function planNodeFallbacks(input) {
|
|
162
|
+
const primary = nodeFontSetFor(input.regularUrl);
|
|
163
|
+
if (!primary)
|
|
164
|
+
return undefined;
|
|
165
|
+
const planPrimary = { primaryBytes: input.primaryBytes, primaryFull: input.primaryFull, primaryCjk: !!primary.family };
|
|
166
|
+
const plan = planOgFontFallbacks({
|
|
167
|
+
primary: primary.set,
|
|
168
|
+
...planPrimary,
|
|
169
|
+
codepoints: input.codepoints,
|
|
170
|
+
candidates: fallbackCandidates(input.regularUrl, primary.family),
|
|
171
|
+
bold: input.bold,
|
|
172
|
+
});
|
|
173
|
+
return { planPrimary, plan };
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Every fallback family the render wanted (planned or cut by the budget) —
|
|
177
|
+
* what a render that could not load its fallbacks at all (a read error or
|
|
178
|
+
* timeout) reports as skipped.
|
|
179
|
+
*/
|
|
180
|
+
export function nodeFallbackFamiliesWanted(input) {
|
|
181
|
+
const planned = planNodeFallbacks(input);
|
|
182
|
+
if (!planned)
|
|
183
|
+
return [];
|
|
184
|
+
return [...new Set([...planned.plan.fallbacks.map((f) => f.family), ...planned.plan.overBudget])];
|
|
185
|
+
}
|
|
186
|
+
export async function loadNodeFallbackFonts(input) {
|
|
187
|
+
const out = { fallbacks: [], skipped: [], degraded: false };
|
|
188
|
+
const planned = planNodeFallbacks(input);
|
|
189
|
+
if (!planned)
|
|
190
|
+
return out;
|
|
191
|
+
const { regularUrl, bold, fontCacheDir, fetchImpl, logger } = input;
|
|
192
|
+
const { planPrimary, plan } = planned;
|
|
193
|
+
out.skipped.push(...plan.overBudget);
|
|
194
|
+
const loadFull = async (choice) => {
|
|
195
|
+
const fullUrl = siblingUrl(regularUrl, choice.set.regular.file);
|
|
196
|
+
const fullBoldUrl = choice.set.bold ? siblingUrl(regularUrl, choice.set.bold.file) : undefined;
|
|
197
|
+
const [regularBytes, boldBytes] = await Promise.all([
|
|
198
|
+
loadOptionalFullFile(fullUrl, fontCacheDir, fetchImpl),
|
|
199
|
+
bold && fullBoldUrl ? loadOptionalFullFile(fullBoldUrl, fontCacheDir, fetchImpl) : Promise.resolve(null),
|
|
200
|
+
]);
|
|
201
|
+
if (!regularBytes) {
|
|
202
|
+
knownMissing.add(fullUrl);
|
|
203
|
+
if (!fallbackMissingWarned) {
|
|
204
|
+
fallbackMissingWarned = true;
|
|
205
|
+
logger.warn({ message: "[og] fallback font missing; its characters render as .notdef", mod: "og", family: choice.family });
|
|
206
|
+
}
|
|
207
|
+
return "missing";
|
|
208
|
+
}
|
|
209
|
+
return { family: choice.family, url: fullUrl, regular: regularBytes, bold: boldBytes };
|
|
210
|
+
};
|
|
211
|
+
const loadPlanned = async (choice) => {
|
|
212
|
+
if (!choice.subset)
|
|
213
|
+
return loadFull(choice);
|
|
214
|
+
const fullUrl = siblingUrl(regularUrl, choice.set.regular.file);
|
|
215
|
+
const subsetRegular = deriveSubsetFontUrl(fullUrl).url;
|
|
216
|
+
const regularBytes = await loadSubsetFile(subsetRegular, choice.set.regular.sha256, fontCacheDir, fetchImpl, logger);
|
|
217
|
+
const boldBytes = regularBytes && bold && choice.set.bold
|
|
218
|
+
? await loadSubsetFile(deriveSubsetFontUrl(siblingUrl(regularUrl, choice.set.bold.file)).url, choice.set.bold.sha256, fontCacheDir, fetchImpl, logger)
|
|
219
|
+
: null;
|
|
220
|
+
if (regularBytes && (!bold || boldBytes))
|
|
221
|
+
return { family: choice.family, url: subsetRegular, regular: regularBytes, bold: boldBytes };
|
|
222
|
+
return "subset-unusable";
|
|
223
|
+
};
|
|
224
|
+
// Planned fonts in parallel; then a planned subset that is unusable may load
|
|
225
|
+
// its full font, one at a time, only while the whole set still fits.
|
|
226
|
+
const loaded = await Promise.all(plan.fallbacks.map(loadPlanned));
|
|
227
|
+
const effective = plan.fallbacks.map((c) => ({ subset: c.subset, bytes: c.bytes }));
|
|
228
|
+
for (const [i, choice] of plan.fallbacks.entries()) {
|
|
229
|
+
if (loaded[i] !== "subset-unusable")
|
|
230
|
+
continue;
|
|
231
|
+
out.degraded = true;
|
|
232
|
+
const asFull = effective.map((e, j) => (j === i ? { subset: false, bytes: ogFontSetBytes(choice.set, false, bold) } : e));
|
|
233
|
+
if (!ogFontSetFits(planPrimary, asFull))
|
|
234
|
+
continue;
|
|
235
|
+
loaded[i] = await loadFull(choice);
|
|
236
|
+
if (typeof loaded[i] !== "string")
|
|
237
|
+
effective[i] = asFull[i];
|
|
238
|
+
}
|
|
239
|
+
plan.fallbacks.forEach((choice, i) => {
|
|
240
|
+
const result = loaded[i];
|
|
241
|
+
if (typeof result === "string") {
|
|
242
|
+
out.skipped.push(choice.family);
|
|
243
|
+
if (result === "missing")
|
|
244
|
+
out.degraded = true;
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (bold && !result.bold)
|
|
248
|
+
out.degraded = true;
|
|
249
|
+
out.fallbacks.push(result);
|
|
250
|
+
});
|
|
251
|
+
out.skipped = [...new Set(out.skipped)];
|
|
252
|
+
return out;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* The fallback families an og.png's params text needs (missing from the primary,
|
|
256
|
+
* mapped by another family), for the generator's cache key: a card that now
|
|
257
|
+
* renders with a fallback must not be served from a cache entry drawn before
|
|
258
|
+
* arc#8832. Empty for every other card (its key is unchanged).
|
|
259
|
+
*/
|
|
260
|
+
export function nodeParamsFallbackFamilies(regularUrl, params) {
|
|
261
|
+
const primary = nodeFontSetFor(regularUrl);
|
|
262
|
+
if (!primary)
|
|
263
|
+
return [];
|
|
264
|
+
const candidates = fallbackCandidates(regularUrl, primary.family);
|
|
265
|
+
const needed = new Set();
|
|
266
|
+
for (const value of Object.values(params)) {
|
|
267
|
+
if (typeof value !== "string" || value.startsWith("data:"))
|
|
268
|
+
continue;
|
|
269
|
+
for (const ch of value) {
|
|
270
|
+
const cp = ch.codePointAt(0);
|
|
271
|
+
if (cp < 0x80 || ogFallbackIgnorable(cp) || ogFullFontMaps(primary.set, cp))
|
|
272
|
+
continue;
|
|
273
|
+
for (const c of candidates)
|
|
274
|
+
if (ogFullFontMaps(c.set, cp))
|
|
275
|
+
needed.add(c.family);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return OG_CJK_FALLBACK_PREFERENCE.filter((family) => needed.has(family));
|
|
279
|
+
}
|
|
280
|
+
//# 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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EACL,0BAA0B,EAG1B,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAwB,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1H,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,MAAM,UAAU,GAAG,CAAC,CAAS;IAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,UAA8B;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjF,6FAA6F;AAC7F,MAAM,UAAU,mBAAmB,CAAC,GAAuB;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,CAAC,QAAQ,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;IAChF,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,wHAAwH;AACxH,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,YAAoB,EAAE,SAAuB;IAC5F,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAClE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACzF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sGAAsG;AACtG,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAC;AACxD,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAkC;IAC/D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACjB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,KAAK,GAAG,OAAO,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,MAAc,EACd,YAAoB,EACpB,SAAuB,EACvB,MAAc;IAEd,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CACxB,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,yEAAyE;QACzE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,mBAAmB,GAAG,IAAI,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,MAAM,gCAAgC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,SAAS,oBAAoB,CAAC,GAAW,EAAE,YAAoB,EAAE,SAAuB;IACtF,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,8BAA8B;IAC5C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,mBAAmB,GAAG,KAAK,CAAC;IAC5B,qBAAqB,GAAG,KAAK,CAAC;AAChC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpG,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IACxB,oCAAoC;IACpC,MAAM,MAAM,GAAG,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,0BAAgD,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAClJ,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AACjD,CAAC;AAED,kFAAkF;AAClF,SAAS,kBAAkB,CAAC,UAAkB,EAAE,aAAsC;IACpF,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;IAChC,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,MAAM,KAAK,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAE,EAAE,CAAC;QAClC,CAAC,CAAC,EAAE,CACP,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC,SAAS,UAAU,CAAC,UAAkB,EAAE,IAAY;IAClD,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AA6BD,SAAS,iBAAiB,CAAC,KAAqG;IAC9H,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,WAAW,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACvH,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,GAAG,WAAW;QACd,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;QAChE,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAqG;IAC9I,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAwB;IAClE,MAAM,GAAG,GAAsB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/E,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACtC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAuC,EAAmB,EAAE;QAClF,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC;YACtD,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SACzG,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,qBAAqB,GAAG,IAAI,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8DAA8D,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7H,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACzF,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAuC,EAAmB,EAAE;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC;QACxD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrH,MAAM,SAAS,GACb,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI;YACrC,CAAC,CAAC,MAAM,cAAc,CAClB,mBAAmB,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC,GAAG,EACtE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EACtB,YAAY,EACZ,SAAS,EACT,MAAM,CACP;YACH,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvI,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC;IACF,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpF,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,iBAAiB;YAAE,SAAS;QAC9C,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1H,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC;YAAE,SAAS;QAClD,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,MAAM,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB,EAAE,MAA+B;IAC5F,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QACrE,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;YAC9B,IAAI,EAAE,GAAG,IAAI,IAAI,mBAAmB,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;gBAAE,SAAS;YACtF,KAAK,MAAM,CAAC,IAAI,UAAU;gBAAE,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC"}
|