@arcblock/did-connect-service 4.1.59 → 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/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 +4 -0
- package/dist/og/font-subset.d.ts.map +1 -1
- package/dist/og/font-subset.js +17 -12
- 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 +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 +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 +11 -8
- package/dist/og/tree-node.d.ts.map +1 -1
- package/dist/og/tree-node.js +39 -109
- package/dist/og/tree-node.js.map +1 -1
- package/dist/og/worker.d.ts +42 -5
- package/dist/og/worker.d.ts.map +1 -1
- package/dist/og/worker.js +290 -92
- 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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-script CJK fallback fonts (ArcBlock/arc#8832).
|
|
3
|
+
*
|
|
4
|
+
* A card's primary font is the viewer locale's regional face (Noto Sans SC /
|
|
5
|
+
* TC / JP, or Noto Sans for Latin locales) so a shared character keeps that
|
|
6
|
+
* region's glyph form. The card's TEXT is whatever the author wrote, so it can
|
|
7
|
+
* hold characters the primary font does not have at all (a Simplified title on
|
|
8
|
+
* a zh-TW card, 歩 on a zh-TW card, kana on an en card). For those, the render
|
|
9
|
+
* adds other CJK families after the primary: satori draws each character with
|
|
10
|
+
* the first font in its `fonts` list that maps it (per glyph, see
|
|
11
|
+
* og-font-fallback.test.ts), so the primary still draws everything it has.
|
|
12
|
+
*
|
|
13
|
+
* The rule (deterministic, from the text alone):
|
|
14
|
+
* 1. `missing` = codepoints of the render that the primary's FULL font does not
|
|
15
|
+
* map (default-ignorable / control codepoints excluded: they draw nothing).
|
|
16
|
+
* 2. Every order of the fallback families (the CJK families other than the
|
|
17
|
+
* primary's; Latin is never a fallback) is evaluated: each family in turn
|
|
18
|
+
* takes the `missing` codepoints its full font maps and that no earlier
|
|
19
|
+
* family took. A family that takes nothing is not loaded. A family is
|
|
20
|
+
* loaded as its subset when the subset maps everything it takes, else as
|
|
21
|
+
* its full font (identical glyphs either way).
|
|
22
|
+
* 3. The order that loads the fewest font bytes wins (bytes ≈ parse CPU and
|
|
23
|
+
* memory). Ties go to the preference order {@link OG_CJK_FALLBACK_PREFERENCE}
|
|
24
|
+
* (zh-CN → ja → zh-TW); when `missing` holds kana, ja must come first (kana
|
|
25
|
+
* drawn with Japanese forms).
|
|
26
|
+
* 4. The whole font set of the render must fit the budget: its raw bytes
|
|
27
|
+
* (primary + fallbacks, every weight loaded) within
|
|
28
|
+
* {@link OG_FONT_RENDER_BUDGET_BYTES}, at most ONE full CJK family, and —
|
|
29
|
+
* when one is full — at most two CJK families (the Latin primary does not
|
|
30
|
+
* count). Each full family costs ~20 MB of parse heap whatever its size, so
|
|
31
|
+
* bytes alone under-count it (measurements in the PR, arc#8832). The
|
|
32
|
+
* cheapest order that fits wins. When no order fits, the fallback whose cut
|
|
33
|
+
* leaves the fewest characters undrawn is cut back and the plan recomputed:
|
|
34
|
+
* a full font is first limited to its subset (it then takes only what its
|
|
35
|
+
* subset maps), a subset is dropped. Either way the family is reported in `overBudget`; the
|
|
36
|
+
* characters it no longer takes go to a later family that maps them, or
|
|
37
|
+
* stay `.notdef`. The primary itself is never refused.
|
|
38
|
+
* Codepoints no family maps (emoji, Hangul — no Korean face) stay `.notdef`,
|
|
39
|
+
* as before. A tree whose text cannot be read reliably gets no fallbacks.
|
|
40
|
+
*/
|
|
41
|
+
import { type OgSubsetFontSet } from "./font-subset.js";
|
|
42
|
+
/** A CJK family that can serve as a fallback (key in the subset table / font maps). */
|
|
43
|
+
export type OgCjkFamily = "zh-CN" | "ja" | "zh-TW";
|
|
44
|
+
/** Tie-break order among fallback families (see the module comment). */
|
|
45
|
+
export declare const OG_CJK_FALLBACK_PREFERENCE: readonly OgCjkFamily[];
|
|
46
|
+
/**
|
|
47
|
+
* Upper bound on the raw bytes of one render's whole font set (primary +
|
|
48
|
+
* fallbacks, Regular + Bold as loaded) once it has fallbacks. Satori parses
|
|
49
|
+
* every font of the set per render; a render holds the raw bytes, a copy, the
|
|
50
|
+
* parse (≈ 20 MB of V8 heap per full CJK family, ≈ 6–8 MB per subset) and
|
|
51
|
+
* ~20 MB of wasm. The budget is the heaviest set renders already use — full
|
|
52
|
+
* Noto Sans SC Regular + Bold, 16.1 MiB — plus a little, so together with the
|
|
53
|
+
* family limits of rule 4 a fallback never makes a render heavier than the
|
|
54
|
+
* heaviest card today (measured, see the PR for arc#8832).
|
|
55
|
+
*/
|
|
56
|
+
export declare const OG_FONT_RENDER_BUDGET_BYTES: number;
|
|
57
|
+
export interface OgFallbackCandidate {
|
|
58
|
+
family: OgCjkFamily;
|
|
59
|
+
set: OgSubsetFontSet;
|
|
60
|
+
}
|
|
61
|
+
export interface OgFallbackChoice extends OgFallbackCandidate {
|
|
62
|
+
/** Load the family's subset (true) or its full font (false). */
|
|
63
|
+
subset: boolean;
|
|
64
|
+
/** Raw bytes this choice loads (Regular, + Bold when bold is wanted). */
|
|
65
|
+
bytes: number;
|
|
66
|
+
/** The codepoints this family draws. */
|
|
67
|
+
codepoints: number[];
|
|
68
|
+
}
|
|
69
|
+
export interface OgFontPlan {
|
|
70
|
+
/** Fallback families in satori `fonts` order (after the primary). */
|
|
71
|
+
fallbacks: OgFallbackChoice[];
|
|
72
|
+
/** Families cut back (limited to their subset, or dropped) to stay within the budget. */
|
|
73
|
+
overBudget: OgCjkFamily[];
|
|
74
|
+
}
|
|
75
|
+
/** Codepoints that draw nothing by themselves — never a reason to load a font. */
|
|
76
|
+
export declare function ogFallbackIgnorable(cp: number): boolean;
|
|
77
|
+
/** Raw bytes of `set`'s subset (or full) objects for the weights a render loads. */
|
|
78
|
+
export declare function ogFontSetBytes(set: OgSubsetFontSet, subset: boolean, bold: boolean): number;
|
|
79
|
+
/** Rule 4: does the primary plus `fallbacks` fit the budget? */
|
|
80
|
+
export declare function ogFontSetFits(primary: {
|
|
81
|
+
primaryBytes: number;
|
|
82
|
+
primaryFull?: boolean;
|
|
83
|
+
primaryCjk?: boolean;
|
|
84
|
+
}, fallbacks: ReadonlyArray<{
|
|
85
|
+
subset: boolean;
|
|
86
|
+
bytes: number;
|
|
87
|
+
}>, budgetBytes?: number): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Plans the fallback fonts of one render (see the module comment for the rule).
|
|
90
|
+
* `primaryBytes` is what the primary loads (subset or full, every weight);
|
|
91
|
+
* `candidates` are the fallback families available to this renderer.
|
|
92
|
+
*/
|
|
93
|
+
export declare function planOgFontFallbacks(input: {
|
|
94
|
+
primary: OgSubsetFontSet;
|
|
95
|
+
primaryBytes: number;
|
|
96
|
+
/** The primary loads its full font (not its subset). */
|
|
97
|
+
primaryFull?: boolean;
|
|
98
|
+
/** The primary is a CJK family (not the Latin face). */
|
|
99
|
+
primaryCjk?: boolean;
|
|
100
|
+
codepoints: ReadonlySet<number>;
|
|
101
|
+
candidates: readonly OgFallbackCandidate[];
|
|
102
|
+
bold: boolean;
|
|
103
|
+
budgetBytes?: number;
|
|
104
|
+
}): OgFontPlan;
|
|
105
|
+
//# sourceMappingURL=font-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-fallback.d.ts","sourceRoot":"","sources":["../../src/og/font-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAoC,MAAM,kBAAkB,CAAC;AAE1F,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AAEnD,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,EAAE,SAAS,WAAW,EAA6B,CAAC;AAE3F;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,eAAe,CAAC;CACtB;AAOD,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,yFAAyF;IACzF,UAAU,EAAE,WAAW,EAAE,CAAC;CAC3B;AAID,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAYvD;AAMD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAG3F;AAQD,gEAAgE;AAChE,wBAAgB,aAAa,CAC3B,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC9E,SAAS,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5D,WAAW,GAAE,MAAoC,GAChD,OAAO,CAKT;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CA2Cb"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-script CJK fallback fonts (ArcBlock/arc#8832).
|
|
3
|
+
*
|
|
4
|
+
* A card's primary font is the viewer locale's regional face (Noto Sans SC /
|
|
5
|
+
* TC / JP, or Noto Sans for Latin locales) so a shared character keeps that
|
|
6
|
+
* region's glyph form. The card's TEXT is whatever the author wrote, so it can
|
|
7
|
+
* hold characters the primary font does not have at all (a Simplified title on
|
|
8
|
+
* a zh-TW card, 歩 on a zh-TW card, kana on an en card). For those, the render
|
|
9
|
+
* adds other CJK families after the primary: satori draws each character with
|
|
10
|
+
* the first font in its `fonts` list that maps it (per glyph, see
|
|
11
|
+
* og-font-fallback.test.ts), so the primary still draws everything it has.
|
|
12
|
+
*
|
|
13
|
+
* The rule (deterministic, from the text alone):
|
|
14
|
+
* 1. `missing` = codepoints of the render that the primary's FULL font does not
|
|
15
|
+
* map (default-ignorable / control codepoints excluded: they draw nothing).
|
|
16
|
+
* 2. Every order of the fallback families (the CJK families other than the
|
|
17
|
+
* primary's; Latin is never a fallback) is evaluated: each family in turn
|
|
18
|
+
* takes the `missing` codepoints its full font maps and that no earlier
|
|
19
|
+
* family took. A family that takes nothing is not loaded. A family is
|
|
20
|
+
* loaded as its subset when the subset maps everything it takes, else as
|
|
21
|
+
* its full font (identical glyphs either way).
|
|
22
|
+
* 3. The order that loads the fewest font bytes wins (bytes ≈ parse CPU and
|
|
23
|
+
* memory). Ties go to the preference order {@link OG_CJK_FALLBACK_PREFERENCE}
|
|
24
|
+
* (zh-CN → ja → zh-TW); when `missing` holds kana, ja must come first (kana
|
|
25
|
+
* drawn with Japanese forms).
|
|
26
|
+
* 4. The whole font set of the render must fit the budget: its raw bytes
|
|
27
|
+
* (primary + fallbacks, every weight loaded) within
|
|
28
|
+
* {@link OG_FONT_RENDER_BUDGET_BYTES}, at most ONE full CJK family, and —
|
|
29
|
+
* when one is full — at most two CJK families (the Latin primary does not
|
|
30
|
+
* count). Each full family costs ~20 MB of parse heap whatever its size, so
|
|
31
|
+
* bytes alone under-count it (measurements in the PR, arc#8832). The
|
|
32
|
+
* cheapest order that fits wins. When no order fits, the fallback whose cut
|
|
33
|
+
* leaves the fewest characters undrawn is cut back and the plan recomputed:
|
|
34
|
+
* a full font is first limited to its subset (it then takes only what its
|
|
35
|
+
* subset maps), a subset is dropped. Either way the family is reported in `overBudget`; the
|
|
36
|
+
* characters it no longer takes go to a later family that maps them, or
|
|
37
|
+
* stay `.notdef`. The primary itself is never refused.
|
|
38
|
+
* Codepoints no family maps (emoji, Hangul — no Korean face) stay `.notdef`,
|
|
39
|
+
* as before. A tree whose text cannot be read reliably gets no fallbacks.
|
|
40
|
+
*/
|
|
41
|
+
import { ogFullFontMaps, ogSubsetFontMaps } from "./font-subset.js";
|
|
42
|
+
/** Tie-break order among fallback families (see the module comment). */
|
|
43
|
+
export const OG_CJK_FALLBACK_PREFERENCE = ["zh-CN", "ja", "zh-TW"];
|
|
44
|
+
/**
|
|
45
|
+
* Upper bound on the raw bytes of one render's whole font set (primary +
|
|
46
|
+
* fallbacks, Regular + Bold as loaded) once it has fallbacks. Satori parses
|
|
47
|
+
* every font of the set per render; a render holds the raw bytes, a copy, the
|
|
48
|
+
* parse (≈ 20 MB of V8 heap per full CJK family, ≈ 6–8 MB per subset) and
|
|
49
|
+
* ~20 MB of wasm. The budget is the heaviest set renders already use — full
|
|
50
|
+
* Noto Sans SC Regular + Bold, 16.1 MiB — plus a little, so together with the
|
|
51
|
+
* family limits of rule 4 a fallback never makes a render heavier than the
|
|
52
|
+
* heaviest card today (measured, see the PR for arc#8832).
|
|
53
|
+
*/
|
|
54
|
+
export const OG_FONT_RENDER_BUDGET_BYTES = 17 * 1024 * 1024;
|
|
55
|
+
const NO_FALLBACKS = { fallbacks: [], overBudget: [] };
|
|
56
|
+
/** Codepoints that draw nothing by themselves — never a reason to load a font. */
|
|
57
|
+
export function ogFallbackIgnorable(cp) {
|
|
58
|
+
return (cp < 0x20 ||
|
|
59
|
+
(cp >= 0x7f && cp <= 0x9f) ||
|
|
60
|
+
cp === 0xad ||
|
|
61
|
+
(cp >= 0x200b && cp <= 0x200f) ||
|
|
62
|
+
(cp >= 0x2028 && cp <= 0x202e) ||
|
|
63
|
+
(cp >= 0x2060 && cp <= 0x206f) ||
|
|
64
|
+
(cp >= 0xfe00 && cp <= 0xfe0f) ||
|
|
65
|
+
cp === 0xfeff ||
|
|
66
|
+
(cp >= 0xe0000 && cp <= 0xe0fff));
|
|
67
|
+
}
|
|
68
|
+
function isKana(cp) {
|
|
69
|
+
return (cp >= 0x3040 && cp <= 0x30ff) || (cp >= 0x31f0 && cp <= 0x31ff) || (cp >= 0xff66 && cp <= 0xff9f);
|
|
70
|
+
}
|
|
71
|
+
/** Raw bytes of `set`'s subset (or full) objects for the weights a render loads. */
|
|
72
|
+
export function ogFontSetBytes(set, subset, bold) {
|
|
73
|
+
if (subset)
|
|
74
|
+
return set.regular.bytes + (bold && set.bold ? set.bold.bytes : 0);
|
|
75
|
+
return set.fullBytes.regular + (bold ? (set.fullBytes.bold ?? 0) : 0);
|
|
76
|
+
}
|
|
77
|
+
/** True when `set`'s subset can stand in for its full font for `codepoints`, in every weight loaded. */
|
|
78
|
+
function subsetServes(set, codepoints, bold) {
|
|
79
|
+
if (bold && !set.bold)
|
|
80
|
+
return false;
|
|
81
|
+
return codepoints.every((cp) => ogSubsetFontMaps(set, cp));
|
|
82
|
+
}
|
|
83
|
+
/** Rule 4: does the primary plus `fallbacks` fit the budget? */
|
|
84
|
+
export function ogFontSetFits(primary, fallbacks, budgetBytes = OG_FONT_RENDER_BUDGET_BYTES) {
|
|
85
|
+
const bytes = fallbacks.reduce((sum, f) => sum + f.bytes, primary.primaryBytes);
|
|
86
|
+
const fulls = fallbacks.filter((f) => !f.subset).length + (primary.primaryFull && primary.primaryCjk ? 1 : 0);
|
|
87
|
+
const families = fallbacks.length + (primary.primaryCjk ? 1 : 0);
|
|
88
|
+
return bytes <= budgetBytes && fulls <= 1 && (fulls === 0 || families <= 2);
|
|
89
|
+
}
|
|
90
|
+
function permutations(items) {
|
|
91
|
+
if (items.length <= 1)
|
|
92
|
+
return [items.slice()];
|
|
93
|
+
return items.flatMap((item, i) => permutations([...items.slice(0, i), ...items.slice(i + 1)]).map((rest) => [item, ...rest]));
|
|
94
|
+
}
|
|
95
|
+
function assign(order, missing, bold) {
|
|
96
|
+
let remaining = missing;
|
|
97
|
+
const choices = [];
|
|
98
|
+
let bytes = 0;
|
|
99
|
+
for (const { subsetOnly, ...candidate } of order) {
|
|
100
|
+
const maps = subsetOnly
|
|
101
|
+
? (cp) => ogFullFontMaps(candidate.set, cp) && ogSubsetFontMaps(candidate.set, cp)
|
|
102
|
+
: (cp) => ogFullFontMaps(candidate.set, cp);
|
|
103
|
+
const taken = remaining.filter(maps);
|
|
104
|
+
if (!taken.length)
|
|
105
|
+
continue;
|
|
106
|
+
remaining = remaining.filter((cp) => !maps(cp));
|
|
107
|
+
const subset = subsetOnly || subsetServes(candidate.set, taken, bold);
|
|
108
|
+
const choiceBytes = ogFontSetBytes(candidate.set, subset, bold);
|
|
109
|
+
choices.push({ ...candidate, subset, bytes: choiceBytes, codepoints: taken });
|
|
110
|
+
bytes += choiceBytes;
|
|
111
|
+
}
|
|
112
|
+
return { choices, bytes };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Plans the fallback fonts of one render (see the module comment for the rule).
|
|
116
|
+
* `primaryBytes` is what the primary loads (subset or full, every weight);
|
|
117
|
+
* `candidates` are the fallback families available to this renderer.
|
|
118
|
+
*/
|
|
119
|
+
export function planOgFontFallbacks(input) {
|
|
120
|
+
const { primary, codepoints, bold } = input;
|
|
121
|
+
const budget = input.budgetBytes ?? OG_FONT_RENDER_BUDGET_BYTES;
|
|
122
|
+
const missing = [];
|
|
123
|
+
for (const cp of codepoints) {
|
|
124
|
+
// Unreadable text (the collector's sentinel): no reliable plan, no fallbacks.
|
|
125
|
+
if (cp < 0)
|
|
126
|
+
return NO_FALLBACKS;
|
|
127
|
+
if (!ogFallbackIgnorable(cp) && !ogFullFontMaps(primary, cp))
|
|
128
|
+
missing.push(cp);
|
|
129
|
+
}
|
|
130
|
+
if (!missing.length)
|
|
131
|
+
return NO_FALLBACKS;
|
|
132
|
+
missing.sort((a, b) => a - b);
|
|
133
|
+
const rank = (family) => OG_CJK_FALLBACK_PREFERENCE.indexOf(family);
|
|
134
|
+
let candidates = input.candidates.filter((c) => c.set !== primary).sort((a, b) => rank(a.family) - rank(b.family));
|
|
135
|
+
const kanaFirst = missing.some(isKana) && candidates.some((c) => c.family === "ja");
|
|
136
|
+
const overBudget = [];
|
|
137
|
+
for (;;) {
|
|
138
|
+
// The cheapest order overall, and the cheapest that fits the budget. Every
|
|
139
|
+
// order covers the same characters, so a fitting order loses nothing.
|
|
140
|
+
// permutations() keeps the preference order lexicographically, so the first
|
|
141
|
+
// cheapest order found is the tie-break winner.
|
|
142
|
+
let best;
|
|
143
|
+
let bestFit;
|
|
144
|
+
for (const order of permutations(candidates)) {
|
|
145
|
+
if (kanaFirst && candidates.some((c) => c.family === "ja") && order[0].family !== "ja")
|
|
146
|
+
continue;
|
|
147
|
+
const plan = assign(order, missing, bold);
|
|
148
|
+
if (!best || plan.bytes < best.bytes)
|
|
149
|
+
best = plan;
|
|
150
|
+
if (ogFontSetFits(input, plan.choices, budget) && (!bestFit || plan.bytes < bestFit.bytes))
|
|
151
|
+
bestFit = plan;
|
|
152
|
+
}
|
|
153
|
+
if (!best?.choices.length)
|
|
154
|
+
return { fallbacks: [], overBudget };
|
|
155
|
+
if (bestFit)
|
|
156
|
+
return { fallbacks: bestFit.choices, overBudget };
|
|
157
|
+
// Cut back the fallback whose cut leaves the fewest characters undrawn
|
|
158
|
+
// (ties: the heavier one): a full font ⇒ its subset (when it has every
|
|
159
|
+
// weight), a subset ⇒ dropped.
|
|
160
|
+
const canLimit = (c) => !c.subset && (!bold || !!c.set.bold);
|
|
161
|
+
const loss = (c) => (canLimit(c) ? c.codepoints.filter((cp) => !ogSubsetFontMaps(c.set, cp)).length : c.codepoints.length);
|
|
162
|
+
const victim = best.choices.reduce((a, b) => (loss(b) < loss(a) || (loss(b) === loss(a) && b.bytes > a.bytes) ? b : a));
|
|
163
|
+
if (!overBudget.includes(victim.family))
|
|
164
|
+
overBudget.push(victim.family);
|
|
165
|
+
candidates = canLimit(victim)
|
|
166
|
+
? candidates.map((c) => (c.family === victim.family ? { ...c, subsetOnly: true } : c))
|
|
167
|
+
: candidates.filter((c) => c.family !== victim.family);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=font-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-fallback.js","sourceRoot":"","sources":["../../src/og/font-fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/og/font-subset.d.ts
CHANGED
|
@@ -40,6 +40,10 @@ export declare function setOgSubsetFontsForTesting(table: Readonly<Record<string
|
|
|
40
40
|
export declare function ogSubsetFontKey(file: string): string;
|
|
41
41
|
/** Decodes the generated page encoding: `"<hex>"` = whole page, `"<hex>:<base64 bitmap>"` = some of it. */
|
|
42
42
|
export declare function decodeOgCodepointPages(encoded: string): Map<number, true | Uint8Array>;
|
|
43
|
+
/** True when the FULL fonts of `set` map `codepoint` (every weight). */
|
|
44
|
+
export declare function ogFullFontMaps(set: OgSubsetFontSet, codepoint: number): boolean;
|
|
45
|
+
/** True when the SUBSET of `set` maps `codepoint` (a page requested whole counts, see the generated table). */
|
|
46
|
+
export declare function ogSubsetFontMaps(set: OgSubsetFontSet, codepoint: number): boolean;
|
|
43
47
|
/** Every codepoint in `codepoints` is drawn identically by the subset and the full font. */
|
|
44
48
|
export declare function ogSubsetCovers(set: OgSubsetFontSet, codepoints: Iterable<number>): boolean;
|
|
45
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font-subset.d.ts","sourceRoot":"","sources":["../../src/og/font-subset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,eAAe,EAAoB,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEtG,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAI7D,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAE5E;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAG7G;AAED,qCAAqC;AACrC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;
|
|
1
|
+
{"version":3,"file":"font-subset.d.ts","sourceRoot":"","sources":["../../src/og/font-subset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,eAAe,EAAoB,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEtG,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAI7D,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAE5E;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAG7G;AAED,qCAAqC;AACrC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAkBD,2GAA2G;AAC3G,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC,CAetF;AAwBD,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,+GAA+G;AAC/G,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjF;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAM1F;AAiHD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAoClE;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAG9F;AAED,+DAA+D;AAC/D,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrE"}
|
package/dist/og/font-subset.js
CHANGED
|
@@ -59,26 +59,31 @@ export function decodeOgCodepointPages(encoded) {
|
|
|
59
59
|
function coverageOf(set) {
|
|
60
60
|
let coverage = decoded.get(set);
|
|
61
61
|
if (!coverage) {
|
|
62
|
-
coverage = {
|
|
63
|
-
pages: decodeOgCodepointPages(set.subset),
|
|
64
|
-
fullPages: new Set(set.full ? set.full.split(",").map((page) => Number.parseInt(page, 16)) : []),
|
|
65
|
-
};
|
|
62
|
+
coverage = { pages: decodeOgCodepointPages(set.subset), cmap: decodeOgCodepointPages(set.cmap) };
|
|
66
63
|
decoded.set(set, coverage);
|
|
67
64
|
}
|
|
68
65
|
return coverage;
|
|
69
66
|
}
|
|
67
|
+
function inPages(pages, codepoint) {
|
|
68
|
+
const entry = pages.get(codepoint >> 8);
|
|
69
|
+
if (entry === true)
|
|
70
|
+
return true;
|
|
71
|
+
return !!entry && (entry[(codepoint & 0xff) >> 3] & (1 << (codepoint & 7))) !== 0;
|
|
72
|
+
}
|
|
70
73
|
/** True when the subset draws `codepoint` exactly like the full font. */
|
|
71
74
|
function covers(coverage, codepoint) {
|
|
72
75
|
if (codepoint < 0)
|
|
73
76
|
return false;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
// Not in the full font ⇒ .notdef (or a fallback font) either way.
|
|
78
|
+
return inPages(coverage.pages, codepoint) || !inPages(coverage.cmap, codepoint);
|
|
79
|
+
}
|
|
80
|
+
/** True when the FULL fonts of `set` map `codepoint` (every weight). */
|
|
81
|
+
export function ogFullFontMaps(set, codepoint) {
|
|
82
|
+
return codepoint >= 0 && inPages(coverageOf(set).cmap, codepoint);
|
|
83
|
+
}
|
|
84
|
+
/** True when the SUBSET of `set` maps `codepoint` (a page requested whole counts, see the generated table). */
|
|
85
|
+
export function ogSubsetFontMaps(set, codepoint) {
|
|
86
|
+
return codepoint >= 0 && inPages(coverageOf(set).pages, codepoint);
|
|
82
87
|
}
|
|
83
88
|
/** Every codepoint in `codepoints` is drawn identically by the subset and the full font. */
|
|
84
89
|
export function ogSubsetCovers(set, codepoints) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font-subset.js","sourceRoot":"","sources":["../../src/og/font-subset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAwB,MAAM,6BAA6B,CAAC;AAGtG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAahF,IAAI,aAAoE,CAAC;AAEzE,gFAAgF;AAChF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,IAAI,eAAe,CAAC;AAC1C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CAAC,KAA4D;IACrG,aAAa,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,GAAG,gBAAgB,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;
|
|
1
|
+
{"version":3,"file":"font-subset.js","sourceRoot":"","sources":["../../src/og/font-subset.ts"],"names":[],"mappings":"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"}
|
package/dist/og/generator.d.ts
CHANGED
|
@@ -1,9 +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
|
/** The bundled Regular face (also the default for `og-node`'s `renderOgTree`). */
|
|
4
5
|
export declare const FONT_PATH: string;
|
|
5
|
-
|
|
6
|
-
export declare const FONT_FETCH_TIMEOUT_MS = 10000;
|
|
6
|
+
export { FONT_FETCH_TIMEOUT_MS };
|
|
7
7
|
export interface FontSource {
|
|
8
8
|
fontUrl?: string;
|
|
9
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";
|
|
@@ -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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"}
|