@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.
Files changed (43) hide show
  1. package/dist/blocklet-service.d.ts +3 -0
  2. package/dist/blocklet-service.d.ts.map +1 -1
  3. package/dist/blocklet-service.js +4 -0
  4. package/dist/blocklet-service.js.map +1 -1
  5. package/dist/env-config.d.ts +3 -0
  6. package/dist/env-config.d.ts.map +1 -1
  7. package/dist/env-config.js +1 -0
  8. package/dist/env-config.js.map +1 -1
  9. package/dist/handlers/auth-handler.d.ts +3 -0
  10. package/dist/handlers/auth-handler.d.ts.map +1 -1
  11. package/dist/handlers/auth-handler.js +1 -0
  12. package/dist/handlers/auth-handler.js.map +1 -1
  13. package/dist/handlers/branding-handler.d.ts +3 -0
  14. package/dist/handlers/branding-handler.d.ts.map +1 -1
  15. package/dist/handlers/branding-handler.js +23 -3
  16. package/dist/handlers/branding-handler.js.map +1 -1
  17. package/dist/og/generator.d.ts.map +1 -1
  18. package/dist/og/generator.js +43 -124
  19. package/dist/og/generator.js.map +1 -1
  20. package/dist/og/node-wasm-fallback.d.ts +8 -0
  21. package/dist/og/node-wasm-fallback.d.ts.map +1 -0
  22. package/dist/og/node-wasm-fallback.js +61 -0
  23. package/dist/og/node-wasm-fallback.js.map +1 -0
  24. package/dist/og/resvg-runtime.d.ts +4 -0
  25. package/dist/og/resvg-runtime.d.ts.map +1 -0
  26. package/dist/og/resvg-runtime.js +9 -0
  27. package/dist/og/resvg-runtime.js.map +1 -0
  28. package/dist/og/shared.d.ts +26 -0
  29. package/dist/og/shared.d.ts.map +1 -0
  30. package/dist/og/shared.js +87 -0
  31. package/dist/og/shared.js.map +1 -0
  32. package/dist/og/templates.d.ts +4 -0
  33. package/dist/og/templates.d.ts.map +1 -1
  34. package/dist/og/templates.js +313 -34
  35. package/dist/og/templates.js.map +1 -1
  36. package/dist/og/types.d.ts +11 -0
  37. package/dist/og/types.d.ts.map +1 -1
  38. package/dist/og/types.js.map +1 -1
  39. package/dist/og/worker.d.ts +45 -0
  40. package/dist/og/worker.d.ts.map +1 -0
  41. package/dist/og/worker.js +141 -0
  42. package/dist/og/worker.js.map +1 -0
  43. package/package.json +12 -8
@@ -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 { EMOJI_TYPES, loadDynamicAsset } from "./emoji.js";
9
+ import { loadDynamicAsset } from "./emoji.js";
12
10
  import { resolveNodeOgConfig } from "./node-config.js";
13
- import { getPassportColor } from "./passport-svg.js";
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 { MAX_DESCRIPTION_LENGTH, MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, MAX_TITLE_LENGTH, OgValidationError, } from "./types.js";
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 generateOgImage(params, tmpDir, emojiType, fetchImpl, lookupImpl, fontSource) {
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
- const pipeline = sharp(Buffer.from(svg));
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
- // 1. Validate input
266
- let parsed;
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 = input.nocache === "1";
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);
@@ -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,4 @@
1
+ import { Resvg } from "@resvg/resvg-wasm";
2
+ export { Resvg };
3
+ export declare function initializeRendererWasm(): Promise<void>;
4
+ //# sourceMappingURL=resvg-runtime.d.ts.map
@@ -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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"}
@@ -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":"AAEA,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;AAuCD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAe1C,CAAC;AA+TF,eAAO,MAAM,WAAW,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,OAAO,CAiB3E,CAAC"}
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"}