@arcblock/did-connect-service 4.1.28 → 4.1.30
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/blocklet-service.d.ts +3 -0
- package/dist/blocklet-service.d.ts.map +1 -1
- package/dist/blocklet-service.js +4 -0
- package/dist/blocklet-service.js.map +1 -1
- package/dist/env-config.d.ts +3 -0
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +1 -0
- package/dist/env-config.js.map +1 -1
- package/dist/handlers/auth-handler.d.ts +3 -0
- package/dist/handlers/auth-handler.d.ts.map +1 -1
- package/dist/handlers/auth-handler.js +1 -0
- package/dist/handlers/auth-handler.js.map +1 -1
- package/dist/handlers/branding-handler.d.ts +3 -0
- package/dist/handlers/branding-handler.d.ts.map +1 -1
- package/dist/handlers/branding-handler.js +23 -3
- package/dist/handlers/branding-handler.js.map +1 -1
- package/dist/og/generator.d.ts.map +1 -1
- package/dist/og/generator.js +43 -124
- package/dist/og/generator.js.map +1 -1
- package/dist/og/node-wasm-fallback.d.ts +8 -0
- package/dist/og/node-wasm-fallback.d.ts.map +1 -0
- package/dist/og/node-wasm-fallback.js +61 -0
- package/dist/og/node-wasm-fallback.js.map +1 -0
- package/dist/og/resvg-runtime.d.ts +4 -0
- package/dist/og/resvg-runtime.d.ts.map +1 -0
- package/dist/og/resvg-runtime.js +9 -0
- package/dist/og/resvg-runtime.js.map +1 -0
- package/dist/og/shared.d.ts +26 -0
- package/dist/og/shared.d.ts.map +1 -0
- package/dist/og/shared.js +87 -0
- package/dist/og/shared.js.map +1 -0
- package/dist/og/templates.d.ts +4 -0
- package/dist/og/templates.d.ts.map +1 -1
- package/dist/og/templates.js +313 -34
- package/dist/og/templates.js.map +1 -1
- package/dist/og/types.d.ts +11 -0
- package/dist/og/types.d.ts.map +1 -1
- package/dist/og/types.js.map +1 -1
- package/dist/og/worker.d.ts +45 -0
- package/dist/og/worker.d.ts.map +1 -0
- package/dist/og/worker.js +141 -0
- package/dist/og/worker.js.map +1 -0
- package/package.json +12 -8
package/dist/og/generator.js
CHANGED
|
@@ -5,15 +5,14 @@ import { tmpdir } from "node:os";
|
|
|
5
5
|
import { dirname, join } from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import stringify from "fast-json-stable-stringify";
|
|
8
|
-
import { joinURL } from "ufo";
|
|
9
|
-
import * as v from "valibot";
|
|
10
8
|
import { consoleLogger } from "../logger.js";
|
|
11
|
-
import {
|
|
9
|
+
import { loadDynamicAsset } from "./emoji.js";
|
|
12
10
|
import { resolveNodeOgConfig } from "./node-config.js";
|
|
13
|
-
import {
|
|
11
|
+
import { rasterizeSvgToPngWithWasm } from "./node-wasm-fallback.js";
|
|
12
|
+
import { prepareOgRender } from "./shared.js";
|
|
14
13
|
import { assertFetchableUrl, readBodyCapped } from "./ssrf-guard.js";
|
|
15
14
|
import { getTemplate } from "./templates.js";
|
|
16
|
-
import {
|
|
15
|
+
import { MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, OgValidationError } from "./types.js";
|
|
17
16
|
// ---------------------------------------------------------------------------
|
|
18
17
|
// Internals
|
|
19
18
|
// ---------------------------------------------------------------------------
|
|
@@ -84,45 +83,6 @@ function md5(s) {
|
|
|
84
83
|
*/
|
|
85
84
|
const OG_RENDER_VERSION = 2;
|
|
86
85
|
// ---------------------------------------------------------------------------
|
|
87
|
-
// Valibot schema
|
|
88
|
-
// ---------------------------------------------------------------------------
|
|
89
|
-
const schema = v.object({
|
|
90
|
-
template: v.optional(v.picklist(["default", "section", "cover", "banner"]), "default"),
|
|
91
|
-
title: v.optional(v.pipe(v.string(), v.maxLength(MAX_TITLE_LENGTH, `title too long: max ${MAX_TITLE_LENGTH} characters`)), ""),
|
|
92
|
-
description: v.optional(v.pipe(v.string(), v.maxLength(MAX_DESCRIPTION_LENGTH, `description too long: max ${MAX_DESCRIPTION_LENGTH} characters`)), ""),
|
|
93
|
-
section: v.optional(v.pipe(v.string(), v.maxLength(64, "section too long: max 64 characters")), ""),
|
|
94
|
-
cover: v.optional(v.pipe(v.string(), v.check((s) => s === "" || /^https:\/\//.test(s), "cover must be an https URL")), ""),
|
|
95
|
-
logo: v.optional(v.pipe(v.string(), v.check((s) => s === "" || /^https:\/\//.test(s), "logo must be an https URL")), ""),
|
|
96
|
-
logoRounded: v.optional(v.picklist(["0", "1"]), "0"),
|
|
97
|
-
emoji: v.optional(v.picklist([...EMOJI_TYPES]), "twemoji"),
|
|
98
|
-
nocache: v.optional(v.picklist(["1"])),
|
|
99
|
-
});
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
// Template constraints (Joi .when() equivalents)
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
|
-
function enforceTemplateConstraints(parsed) {
|
|
104
|
-
if (parsed.template === "section") {
|
|
105
|
-
if (!parsed.section)
|
|
106
|
-
throw new OgValidationError("section is required for template=section");
|
|
107
|
-
if (!parsed.title)
|
|
108
|
-
throw new OgValidationError("title is required for template=section");
|
|
109
|
-
if (!parsed.description)
|
|
110
|
-
throw new OgValidationError("description is required for template=section");
|
|
111
|
-
}
|
|
112
|
-
else if (parsed.template === "cover") {
|
|
113
|
-
if (!parsed.cover)
|
|
114
|
-
throw new OgValidationError("cover is required for template=cover");
|
|
115
|
-
if (!parsed.title)
|
|
116
|
-
throw new OgValidationError("title is required for template=cover");
|
|
117
|
-
}
|
|
118
|
-
else if (parsed.template === "banner") {
|
|
119
|
-
if (!parsed.logo)
|
|
120
|
-
throw new OgValidationError("logo is required for template=banner");
|
|
121
|
-
if (!parsed.title)
|
|
122
|
-
throw new OgValidationError("title is required for template=banner");
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// ---------------------------------------------------------------------------
|
|
126
86
|
// External image fetching / caching
|
|
127
87
|
// ---------------------------------------------------------------------------
|
|
128
88
|
async function convertExternalImage(url, dest, height, fetchImpl, lookupImpl) {
|
|
@@ -208,9 +168,36 @@ async function ensureExternalImages(params, tmpDir, fetchImpl, lookupImpl, logge
|
|
|
208
168
|
// ---------------------------------------------------------------------------
|
|
209
169
|
// Core image generation
|
|
210
170
|
// ---------------------------------------------------------------------------
|
|
211
|
-
async function
|
|
171
|
+
async function rasterize(svg, fontData, background, logger, forceWasm) {
|
|
172
|
+
if (!forceWasm) {
|
|
173
|
+
try {
|
|
174
|
+
const { default: sharp } = await import("sharp");
|
|
175
|
+
const pipeline = sharp(Buffer.from(svg));
|
|
176
|
+
// Format by content: a photographic background compresses ~10× better as
|
|
177
|
+
// JPEG (a lossless PNG of a photo is ~1MB; JPEG q82 is ~100KB). Flat
|
|
178
|
+
// gradient/text cards stay PNG so text edges remain crisp. Both formats
|
|
179
|
+
// are universally accepted by social crawlers; serveOg sets the
|
|
180
|
+
// Content-Type from the file's magic bytes, so the encoder choice is
|
|
181
|
+
// self-describing.
|
|
182
|
+
return await (background
|
|
183
|
+
? pipeline.jpeg({ quality: 82, mozjpeg: true }).toBuffer()
|
|
184
|
+
: pipeline.png({ compressionLevel: 9 }).toBuffer());
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
// sharp ships a platform-specific native addon that some Node-compatible
|
|
188
|
+
// hosts cannot load (e.g. a `bun --compile` single-file binary — see
|
|
189
|
+
// ArcBlock/arc#6410, where og.png returned 500). Fall back to the same
|
|
190
|
+
// wasm rasterizer the Cloudflare Worker renderer uses instead of failing
|
|
191
|
+
// the request. This path only emits PNG (no JPEG re-encode without
|
|
192
|
+
// sharp) — larger than the JPEG a photo background would otherwise get,
|
|
193
|
+
// but the card still renders.
|
|
194
|
+
logger.warn({ message: "[og] sharp unavailable; falling back to wasm rasterizer", mod: "og", err });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return rasterizeSvgToPngWithWasm(svg, fontData);
|
|
198
|
+
}
|
|
199
|
+
async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource, rasterizer) {
|
|
212
200
|
const { default: satori } = await import("satori");
|
|
213
|
-
const { default: sharp } = await import("sharp");
|
|
214
201
|
await ensureExternalImages(params, tmpDir, fetchImpl, lookupImpl, fontSource.logger);
|
|
215
202
|
const raw = await getTemplate(params);
|
|
216
203
|
if (params.format === "html")
|
|
@@ -229,15 +216,7 @@ async function generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl,
|
|
|
229
216
|
});
|
|
230
217
|
if (params.format === "svg")
|
|
231
218
|
return Buffer.from(svg);
|
|
232
|
-
|
|
233
|
-
// Format by content: a photographic background compresses ~10× better as
|
|
234
|
-
// JPEG (a lossless PNG of a photo is ~1MB; JPEG q82 is ~100KB). Flat
|
|
235
|
-
// gradient/text cards stay PNG so text edges remain crisp. Both formats are
|
|
236
|
-
// universally accepted by social crawlers; serveOg sets the Content-Type
|
|
237
|
-
// from the file's magic bytes, so the encoder choice is self-describing.
|
|
238
|
-
return params.background
|
|
239
|
-
? pipeline.jpeg({ quality: 82, mozjpeg: true }).toBuffer()
|
|
240
|
-
: pipeline.png({ compressionLevel: 9 }).toBuffer();
|
|
219
|
+
return rasterize(svg, fontData, params.background, fontSource.logger, rasterizer === "wasm");
|
|
241
220
|
}
|
|
242
221
|
// ---------------------------------------------------------------------------
|
|
243
222
|
// Public factory
|
|
@@ -262,88 +241,28 @@ export function createOgGenerator(options = {}) {
|
|
|
262
241
|
const tmpDir = opts.tmpDir ?? defaultTmpDir;
|
|
263
242
|
mkdirSync(cacheDir, { recursive: true });
|
|
264
243
|
mkdirSync(tmpDir, { recursive: true });
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
try {
|
|
268
|
-
parsed = v.parse(schema, input);
|
|
269
|
-
}
|
|
270
|
-
catch (err) {
|
|
271
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
272
|
-
throw new OgValidationError(`open graph service params invalid: ${msg}`);
|
|
273
|
-
}
|
|
274
|
-
// Trim title and description (Joi did this automatically via .trim()).
|
|
275
|
-
if (parsed.title)
|
|
276
|
-
parsed.title = parsed.title.trim();
|
|
277
|
-
if (parsed.description)
|
|
278
|
-
parsed.description = parsed.description.trim();
|
|
279
|
-
// 2. Apply conditional template constraints (Joi's .when() rules)
|
|
280
|
-
enforceTemplateConstraints(parsed);
|
|
281
|
-
// 3. Defaults from info context (matches source lines 95-124)
|
|
282
|
-
if (parsed.template === "cover" && parsed.title && !parsed.description) {
|
|
283
|
-
parsed.description = parsed.title;
|
|
284
|
-
parsed.title = info.name;
|
|
285
|
-
}
|
|
286
|
-
if (!parsed.title)
|
|
287
|
-
parsed.title = info.name;
|
|
288
|
-
if (!parsed.description)
|
|
289
|
-
parsed.description = info.description;
|
|
290
|
-
// 4. Derive logo/background URLs from info (matches source lines 107-124)
|
|
291
|
-
let logo = parsed.logo;
|
|
292
|
-
if (!logo) {
|
|
293
|
-
logo = joinURL(info.appUrl, "/.well-known/service", `/blocklet/logo?imageFilter=convert&f=png&w=120&hash=${info.logoHash ?? ""}`);
|
|
294
|
-
}
|
|
295
|
-
// Background: only reference the blocklet's uploaded og-image when one
|
|
296
|
-
// actually exists (signalled by info.ogImageHash). Without an upload the
|
|
297
|
-
// BrandingHandler fallback is a tiny letter-SVG that satori would stretch
|
|
298
|
-
// to 1200×630 (blurry); an empty background makes the templates render a
|
|
299
|
-
// brand-color gradient instead. The banner template's legacy
|
|
300
|
-
// /static/images/banner.png asset does not ship with connect-service, so
|
|
301
|
-
// banner always uses the gradient.
|
|
302
|
-
const background = parsed.template !== "banner" && info.ogImageHash
|
|
303
|
-
? joinURL(info.appUrl, "/.well-known/service", `/blocklet/og-image?imageFilter=resize&w=1200&h=630&hash=${info.ogImageHash}`)
|
|
304
|
-
: "";
|
|
305
|
-
// 5. Compute color via passport-svg
|
|
306
|
-
const color = getPassportColor(info.passportColor, info.did);
|
|
307
|
-
// 6. Build full params for template
|
|
308
|
-
const width = parsed.template === "banner" ? 1280 : 1200;
|
|
309
|
-
const height = parsed.template === "banner" ? 441 : 630;
|
|
310
|
-
const logoRounded = parsed.logoRounded === "1";
|
|
311
|
-
const template = parsed.template;
|
|
312
|
-
const emojiType = parsed.emoji;
|
|
313
|
-
const fullParams = {
|
|
314
|
-
width,
|
|
315
|
-
height,
|
|
316
|
-
logo,
|
|
317
|
-
background,
|
|
318
|
-
logoRounded,
|
|
319
|
-
color,
|
|
320
|
-
title: parsed.title,
|
|
321
|
-
description: parsed.description,
|
|
322
|
-
section: parsed.section ?? "",
|
|
323
|
-
cover: parsed.cover ?? "",
|
|
324
|
-
template,
|
|
325
|
-
format,
|
|
326
|
-
};
|
|
244
|
+
const prepared = prepareOgRender({ input, info, format });
|
|
245
|
+
const { input: parsed, params: fullParams, emojiType } = prepared;
|
|
327
246
|
// 7. Cache lookup
|
|
328
247
|
const cacheKey = md5(stringify({
|
|
329
248
|
v: OG_RENDER_VERSION,
|
|
330
249
|
...parsed,
|
|
331
|
-
logo,
|
|
332
|
-
background,
|
|
333
|
-
width,
|
|
334
|
-
height,
|
|
335
|
-
color,
|
|
250
|
+
logo: fullParams.logo,
|
|
251
|
+
background: fullParams.background,
|
|
252
|
+
width: fullParams.width,
|
|
253
|
+
height: fullParams.height,
|
|
254
|
+
color: fullParams.color,
|
|
336
255
|
format,
|
|
337
256
|
info: { name: info.name, did: info.did, appUrl: info.appUrl },
|
|
338
257
|
}));
|
|
339
|
-
const nocache =
|
|
258
|
+
const nocache = prepared.nocache;
|
|
340
259
|
const destPath = getCacheFilePath(cacheDir, `${cacheKey}.${format}`);
|
|
341
260
|
if (!nocache && existsSync(destPath))
|
|
342
261
|
return destPath;
|
|
343
262
|
// 8. Dedup concurrent generation
|
|
344
263
|
let task = generateTasks.get(cacheKey);
|
|
345
264
|
if (!task) {
|
|
346
|
-
task = generateOgImage(fullParams, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource).finally(() => {
|
|
265
|
+
task = generateOgImage(fullParams, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource, options.rasterizer).finally(() => {
|
|
347
266
|
setTimeout(() => generateTasks.delete(cacheKey), 1000);
|
|
348
267
|
});
|
|
349
268
|
generateTasks.set(cacheKey, task);
|
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,8 @@
|
|
|
1
|
+
/** Rasterizes an SVG (with explicit width/height, as satori emits) to PNG
|
|
2
|
+
* bytes using @resvg/resvg-wasm. `font` is the same font buffer already
|
|
3
|
+
* loaded for satori's text layout, reused here for glyph rendering. */
|
|
4
|
+
export declare function rasterizeSvgToPngWithWasm(svg: string, font: Buffer): Promise<Buffer>;
|
|
5
|
+
/** Test isolation: force the next rasterizeSvgToPngWithWasm() call to
|
|
6
|
+
* re-initialize the wasm module. */
|
|
7
|
+
export declare function resetNodeWasmFallbackForTesting(): void;
|
|
8
|
+
//# sourceMappingURL=node-wasm-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-wasm-fallback.d.ts","sourceRoot":"","sources":["../../src/og/node-wasm-fallback.ts"],"names":[],"mappings":"AA0CA;;wEAEwE;AACxE,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1F;AAED;qCACqC;AACrC,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only fallback rasterizer for `og/generator.ts` — renders the same
|
|
3
|
+
* satori SVG output via `@resvg/resvg-wasm` instead of `sharp`.
|
|
4
|
+
*
|
|
5
|
+
* Motivation: `sharp` ships a platform-specific native (`.node`) addon that
|
|
6
|
+
* some Node-compatible hosts cannot load at runtime — notably a `bun
|
|
7
|
+
* --compile` single-file binary, which does not carry it (ArcBlock/arc#6410:
|
|
8
|
+
* `og.png` returns 500 in the `install.sh`-distributed arc binary). Rather
|
|
9
|
+
* than failing the request, `generator.ts` falls back to this rasterizer,
|
|
10
|
+
* which reuses the exact same `@resvg/resvg-wasm` package the Cloudflare
|
|
11
|
+
* Worker renderer uses (`og/worker.ts` / `og/resvg-runtime.ts`) — just loaded
|
|
12
|
+
* from disk via `node:fs` instead of a bundler-only wasm import (Node has no
|
|
13
|
+
* loader for the `import x from "*.wasm"` syntax `resvg-runtime.ts` uses,
|
|
14
|
+
* which only wrangler/esbuild understand).
|
|
15
|
+
*
|
|
16
|
+
* Trade-off: this path only produces PNG. `sharp`'s JPEG re-encode for
|
|
17
|
+
* photographic backgrounds (smaller output) has no wasm equivalent here, so a
|
|
18
|
+
* card that would have been a JPEG is a (larger) PNG instead when this
|
|
19
|
+
* fallback fires. The card still renders, which is the goal.
|
|
20
|
+
*/
|
|
21
|
+
import { readFileSync } from "node:fs";
|
|
22
|
+
import { createRequire } from "node:module";
|
|
23
|
+
let wasmReady;
|
|
24
|
+
/** Lazily initializes @resvg/resvg-wasm exactly once per process; a rejected
|
|
25
|
+
* attempt is evicted so a later call can retry. */
|
|
26
|
+
function ensureWasm() {
|
|
27
|
+
if (!wasmReady) {
|
|
28
|
+
wasmReady = (async () => {
|
|
29
|
+
const { initWasm } = await import("@resvg/resvg-wasm");
|
|
30
|
+
const require = createRequire(import.meta.url);
|
|
31
|
+
const wasmPath = require.resolve("@resvg/resvg-wasm/index_bg.wasm");
|
|
32
|
+
await initWasm(readFileSync(wasmPath));
|
|
33
|
+
})().catch((error) => {
|
|
34
|
+
wasmReady = undefined;
|
|
35
|
+
throw error;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return wasmReady;
|
|
39
|
+
}
|
|
40
|
+
/** Rasterizes an SVG (with explicit width/height, as satori emits) to PNG
|
|
41
|
+
* bytes using @resvg/resvg-wasm. `font` is the same font buffer already
|
|
42
|
+
* loaded for satori's text layout, reused here for glyph rendering. */
|
|
43
|
+
export async function rasterizeSvgToPngWithWasm(svg, font) {
|
|
44
|
+
await ensureWasm();
|
|
45
|
+
const { Resvg } = await import("@resvg/resvg-wasm");
|
|
46
|
+
const resvg = new Resvg(svg, {
|
|
47
|
+
fitTo: { mode: "original" },
|
|
48
|
+
font: { fontBuffers: [font], loadSystemFonts: false, defaultFontFamily: "Noto" },
|
|
49
|
+
});
|
|
50
|
+
const rendered = resvg.render();
|
|
51
|
+
const png = Buffer.from(rendered.asPng());
|
|
52
|
+
rendered.free();
|
|
53
|
+
resvg.free();
|
|
54
|
+
return png;
|
|
55
|
+
}
|
|
56
|
+
/** Test isolation: force the next rasterizeSvgToPngWithWasm() call to
|
|
57
|
+
* re-initialize the wasm module. */
|
|
58
|
+
export function resetNodeWasmFallbackForTesting() {
|
|
59
|
+
wasmReady = undefined;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=node-wasm-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-wasm-fallback.js","sourceRoot":"","sources":["../../src/og/node-wasm-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,IAAI,SAAoC,CAAC;AAEzC;oDACoD;AACpD,SAAS,UAAU;IACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YACpE,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC5B,SAAS,GAAG,SAAS,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;wEAEwE;AACxE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAAW,EAAE,IAAY;IACvE,MAAM,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3B,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE;KACjF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,OAAO,GAAG,CAAC;AACb,CAAC;AAED;qCACqC;AACrC,MAAM,UAAU,+BAA+B;IAC7C,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resvg-runtime.d.ts","sourceRoot":"","sources":["../../src/og/resvg-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { initWasm, Resvg } from "@resvg/resvg-wasm";
|
|
2
|
+
import resvgWasm from "@resvg/resvg-wasm/index_bg.wasm";
|
|
3
|
+
import { init as initSatori } from "satori/standalone";
|
|
4
|
+
import yogaWasm from "satori/yoga.wasm";
|
|
5
|
+
export { Resvg };
|
|
6
|
+
export async function initializeRendererWasm() {
|
|
7
|
+
await Promise.all([initWasm(resvgWasm), initSatori(yogaWasm)]);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=resvg-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resvg-runtime.js","sourceRoot":"","sources":["../../src/og/resvg-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,SAAS,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import type { EmojiType } from "./emoji.js";
|
|
3
|
+
import type { OgTemplateParams } from "./templates.js";
|
|
4
|
+
import type { OgGenerateOptions } from "./types.js";
|
|
5
|
+
declare const schema: v.ObjectSchema<{
|
|
6
|
+
readonly template: v.OptionalSchema<v.PicklistSchema<["default", "section", "cover", "banner"], undefined>, "default">;
|
|
7
|
+
readonly title: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 128, "title too long: max 128 characters">]>, "">;
|
|
8
|
+
readonly description: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, "description too long: max 512 characters">]>, "">;
|
|
9
|
+
readonly section: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 64, "section too long: max 64 characters">]>, "">;
|
|
10
|
+
readonly cover: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.CheckAction<string, "cover must be an https URL">]>, "">;
|
|
11
|
+
readonly logo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.CheckAction<string, "logo must be an https URL">]>, "">;
|
|
12
|
+
readonly logoRounded: v.OptionalSchema<v.PicklistSchema<["0", "1"], undefined>, "0">;
|
|
13
|
+
readonly emoji: v.OptionalSchema<v.PicklistSchema<[EmojiType, ...EmojiType[]], undefined>, "twemoji">;
|
|
14
|
+
readonly nocache: v.OptionalSchema<v.PicklistSchema<["1"], undefined>, undefined>;
|
|
15
|
+
}, undefined>;
|
|
16
|
+
export type NormalizedOgInput = v.InferOutput<typeof schema>;
|
|
17
|
+
export interface PreparedOgRender {
|
|
18
|
+
input: NormalizedOgInput;
|
|
19
|
+
params: OgTemplateParams;
|
|
20
|
+
emojiType: EmojiType;
|
|
21
|
+
nocache: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Runtime-neutral validation and template preparation shared by Node and Worker renderers. */
|
|
24
|
+
export declare function prepareOgRender({ input, info, format }: Pick<OgGenerateOptions, "input" | "info" | "format">): PreparedOgRender;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/og/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOpD,QAAA,MAAM,MAAM;;;;;;;;;;aAyBV,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAgBD,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,gBAAgB,CAyD/H"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { joinURL } from "ufo";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
import { EMOJI_TYPES } from "./emoji.js";
|
|
4
|
+
import { getPassportColor } from "./passport-svg.js";
|
|
5
|
+
import { MAX_DESCRIPTION_LENGTH, MAX_TITLE_LENGTH, OgValidationError, } from "./types.js";
|
|
6
|
+
const schema = v.object({
|
|
7
|
+
template: v.optional(v.picklist(["default", "section", "cover", "banner"]), "default"),
|
|
8
|
+
title: v.optional(v.pipe(v.string(), v.maxLength(MAX_TITLE_LENGTH, `title too long: max ${MAX_TITLE_LENGTH} characters`)), ""),
|
|
9
|
+
description: v.optional(v.pipe(v.string(), v.maxLength(MAX_DESCRIPTION_LENGTH, `description too long: max ${MAX_DESCRIPTION_LENGTH} characters`)), ""),
|
|
10
|
+
section: v.optional(v.pipe(v.string(), v.maxLength(64, "section too long: max 64 characters")), ""),
|
|
11
|
+
cover: v.optional(v.pipe(v.string(), v.check((value) => value === "" || /^https:\/\//.test(value), "cover must be an https URL")), ""),
|
|
12
|
+
logo: v.optional(v.pipe(v.string(), v.check((value) => value === "" || /^https:\/\//.test(value), "logo must be an https URL")), ""),
|
|
13
|
+
logoRounded: v.optional(v.picklist(["0", "1"]), "0"),
|
|
14
|
+
emoji: v.optional(v.picklist([...EMOJI_TYPES]), "twemoji"),
|
|
15
|
+
nocache: v.optional(v.picklist(["1"])),
|
|
16
|
+
});
|
|
17
|
+
function enforceTemplateConstraints(input) {
|
|
18
|
+
if (input.template === "section") {
|
|
19
|
+
if (!input.section)
|
|
20
|
+
throw new OgValidationError("section is required for template=section");
|
|
21
|
+
if (!input.title)
|
|
22
|
+
throw new OgValidationError("title is required for template=section");
|
|
23
|
+
if (!input.description)
|
|
24
|
+
throw new OgValidationError("description is required for template=section");
|
|
25
|
+
}
|
|
26
|
+
else if (input.template === "cover") {
|
|
27
|
+
if (!input.cover)
|
|
28
|
+
throw new OgValidationError("cover is required for template=cover");
|
|
29
|
+
if (!input.title)
|
|
30
|
+
throw new OgValidationError("title is required for template=cover");
|
|
31
|
+
}
|
|
32
|
+
else if (input.template === "banner") {
|
|
33
|
+
if (!input.logo)
|
|
34
|
+
throw new OgValidationError("logo is required for template=banner");
|
|
35
|
+
if (!input.title)
|
|
36
|
+
throw new OgValidationError("title is required for template=banner");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Runtime-neutral validation and template preparation shared by Node and Worker renderers. */
|
|
40
|
+
export function prepareOgRender({ input, info, format }) {
|
|
41
|
+
let parsed;
|
|
42
|
+
try {
|
|
43
|
+
parsed = v.parse(schema, input);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
throw new OgValidationError(`open graph service params invalid: ${message}`);
|
|
48
|
+
}
|
|
49
|
+
parsed.title = parsed.title.trim();
|
|
50
|
+
parsed.description = parsed.description.trim();
|
|
51
|
+
enforceTemplateConstraints(parsed);
|
|
52
|
+
if (parsed.template === "cover" && parsed.title && !parsed.description) {
|
|
53
|
+
parsed.description = parsed.title;
|
|
54
|
+
parsed.title = info.name;
|
|
55
|
+
}
|
|
56
|
+
if (!parsed.title)
|
|
57
|
+
parsed.title = info.name;
|
|
58
|
+
if (!parsed.description)
|
|
59
|
+
parsed.description = info.description;
|
|
60
|
+
const logo = parsed.logo ||
|
|
61
|
+
joinURL(info.appUrl, "/.well-known/service", `/blocklet/logo?imageFilter=convert&f=png&w=120&hash=${info.logoHash ?? ""}`);
|
|
62
|
+
const background = parsed.template !== "banner" && info.ogImageHash
|
|
63
|
+
? joinURL(info.appUrl, "/.well-known/service", `/blocklet/og-image?imageFilter=resize&w=1200&h=630&hash=${info.ogImageHash}`)
|
|
64
|
+
: "";
|
|
65
|
+
const width = parsed.template === "banner" ? 1280 : 1200;
|
|
66
|
+
const height = parsed.template === "banner" ? 441 : 630;
|
|
67
|
+
return {
|
|
68
|
+
input: parsed,
|
|
69
|
+
params: {
|
|
70
|
+
width,
|
|
71
|
+
height,
|
|
72
|
+
logo,
|
|
73
|
+
background,
|
|
74
|
+
logoRounded: parsed.logoRounded === "1",
|
|
75
|
+
color: getPassportColor(info.passportColor, info.did),
|
|
76
|
+
title: parsed.title,
|
|
77
|
+
description: parsed.description,
|
|
78
|
+
section: parsed.section,
|
|
79
|
+
cover: parsed.cover,
|
|
80
|
+
template: parsed.template,
|
|
81
|
+
format,
|
|
82
|
+
},
|
|
83
|
+
emojiType: parsed.emoji,
|
|
84
|
+
nocache: input.nocache === "1",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/og/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/og/templates.d.ts
CHANGED
|
@@ -22,5 +22,9 @@ export interface OgTemplateParams {
|
|
|
22
22
|
* the same brand mark with a custom stroke.
|
|
23
23
|
*/
|
|
24
24
|
export declare const getLogoSvg: (color: string) => string;
|
|
25
|
+
export interface SatoriNode {
|
|
26
|
+
type: string;
|
|
27
|
+
props: Record<string, unknown>;
|
|
28
|
+
}
|
|
25
29
|
export declare const getTemplate: (params: OgTemplateParams) => Promise<unknown>;
|
|
26
30
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/og/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/og/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,QAAQ,CAAC;CAClB;AA6CD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAe1C,CAAC;AA+UF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AA2XD,eAAO,MAAM,WAAW,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,OAAO,CAe3E,CAAC"}
|