@arcblock/did-connect-service 4.1.55 → 4.1.57

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 (65) hide show
  1. package/dist/blocklet-service.d.ts +5 -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/handlers/auth-handler.d.ts +5 -0
  6. package/dist/handlers/auth-handler.d.ts.map +1 -1
  7. package/dist/handlers/auth-handler.js +15 -14
  8. package/dist/handlers/auth-handler.js.map +1 -1
  9. package/dist/handlers/did-connect-handler.d.ts +2 -0
  10. package/dist/handlers/did-connect-handler.d.ts.map +1 -1
  11. package/dist/handlers/did-connect-handler.js +6 -4
  12. package/dist/handlers/did-connect-handler.js.map +1 -1
  13. package/dist/handlers/email-login-handler.d.ts +2 -0
  14. package/dist/handlers/email-login-handler.d.ts.map +1 -1
  15. package/dist/handlers/email-login-handler.js +11 -8
  16. package/dist/handlers/email-login-handler.js.map +1 -1
  17. package/dist/handlers/oauth-handler.d.ts +2 -0
  18. package/dist/handlers/oauth-handler.d.ts.map +1 -1
  19. package/dist/handlers/oauth-handler.js +28 -30
  20. package/dist/handlers/oauth-handler.js.map +1 -1
  21. package/dist/handlers/passkey-handler.d.ts +12 -3
  22. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  23. package/dist/handlers/passkey-handler.js +44 -18
  24. package/dist/handlers/passkey-handler.js.map +1 -1
  25. package/dist/handlers/team-handler.d.ts.map +1 -1
  26. package/dist/handlers/team-handler.js +8 -3
  27. package/dist/handlers/team-handler.js.map +1 -1
  28. package/dist/handlers/ticket-handler.d.ts +2 -0
  29. package/dist/handlers/ticket-handler.d.ts.map +1 -1
  30. package/dist/handlers/ticket-handler.js +8 -10
  31. package/dist/handlers/ticket-handler.js.map +1 -1
  32. package/dist/identity/session-cookie.d.ts +17 -0
  33. package/dist/identity/session-cookie.d.ts.map +1 -1
  34. package/dist/identity/session-cookie.js +41 -0
  35. package/dist/identity/session-cookie.js.map +1 -1
  36. package/dist/og/generator.d.ts +13 -0
  37. package/dist/og/generator.d.ts.map +1 -1
  38. package/dist/og/generator.js +19 -5
  39. package/dist/og/generator.js.map +1 -1
  40. package/dist/og/index.d.ts +4 -2
  41. package/dist/og/index.d.ts.map +1 -1
  42. package/dist/og/index.js +2 -1
  43. package/dist/og/index.js.map +1 -1
  44. package/dist/og/node-config.d.ts +2 -0
  45. package/dist/og/node-config.d.ts.map +1 -1
  46. package/dist/og/node-config.js +1 -0
  47. package/dist/og/node-config.js.map +1 -1
  48. package/dist/og/node-wasm-fallback.d.ts.map +1 -1
  49. package/dist/og/node-wasm-fallback.js +12 -5
  50. package/dist/og/node-wasm-fallback.js.map +1 -1
  51. package/dist/og/tree-node.d.ts +73 -0
  52. package/dist/og/tree-node.d.ts.map +1 -0
  53. package/dist/og/tree-node.js +192 -0
  54. package/dist/og/tree-node.js.map +1 -0
  55. package/dist/og/tree.d.ts +192 -0
  56. package/dist/og/tree.d.ts.map +1 -0
  57. package/dist/og/tree.js +921 -0
  58. package/dist/og/tree.js.map +1 -0
  59. package/dist/og/worker.d.ts +74 -2
  60. package/dist/og/worker.d.ts.map +1 -1
  61. package/dist/og/worker.js +194 -57
  62. package/dist/og/worker.js.map +1 -1
  63. package/dist/types.d.ts +6 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +3 -3
@@ -12,6 +12,7 @@ import { rasterizeSvgToPngWithWasm } from "./node-wasm-fallback.js";
12
12
  import { prepareOgRender } from "./shared.js";
13
13
  import { assertFetchableUrl, readBodyCapped } from "./ssrf-guard.js";
14
14
  import { getTemplate } from "./templates.js";
15
+ import { OG_RENDER_UNAVAILABLE_CODES, OgRenderUnavailableError, withTimeout } from "./tree.js";
15
16
  import { MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, OgValidationError } from "./types.js";
16
17
  // ---------------------------------------------------------------------------
17
18
  // Internals
@@ -19,17 +20,28 @@ import { MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, OgValidationError } from "./types.
19
20
  const __dirname = dirname(fileURLToPath(import.meta.url));
20
21
  // dist/og/generator.js → ../../assets/fonts/…
21
22
  const FONT_PATH = join(__dirname, "../../assets/fonts/noto-sans-sc-regular.otf");
23
+ /** Deadline for downloading a remote font (Node). */
24
+ export const FONT_FETCH_TIMEOUT_MS = 10_000;
22
25
  // Keyed by fontUrl (or "bundled") so multiple generator instances share one
23
26
  // in-memory copy. Rejections are evicted so transient network failures don't
24
27
  // poison the cache forever.
25
28
  const fontCache = new Map();
26
- function loadFont(source) {
29
+ /** Regular font bytes (remote `fontUrl` with disk cache, else the bundled face). Shared with `tree-node.ts`. */
30
+ export function loadFont(source) {
27
31
  const key = source.fontUrl ?? "bundled";
28
32
  let p = fontCache.get(key);
29
33
  if (!p) {
30
- p = loadFontUncached(source);
31
- p.catch(() => fontCache.delete(key));
32
- fontCache.set(key, p);
34
+ // The deadline is enforced HERE, not only via the fetch AbortSignal: a
35
+ // custom fetchImpl may ignore the signal, and a never-settling promise in
36
+ // this cache would wedge every later render.
37
+ const timeoutMs = source.timeoutMs ?? FONT_FETCH_TIMEOUT_MS + 1000;
38
+ const entry = withTimeout(loadFontUncached(source), timeoutMs, () => new OgRenderUnavailableError(OG_RENDER_UNAVAILABLE_CODES.fontTimeout, `font load exceeded ${timeoutMs}ms`));
39
+ entry.catch(() => {
40
+ if (fontCache.get(key) === entry)
41
+ fontCache.delete(key);
42
+ });
43
+ fontCache.set(key, entry);
44
+ p = entry;
33
45
  }
34
46
  return p;
35
47
  }
@@ -40,7 +52,9 @@ async function loadFontUncached({ fontUrl, fontCacheDir, fetchImpl, logger }) {
40
52
  if (existsSync(diskPath))
41
53
  return readFile(diskPath);
42
54
  try {
43
- const res = await fetchImpl(fontUrl);
55
+ // Bounded: a hung font download would otherwise stay cached as a pending
56
+ // promise and stall every later render (og.png and renderOgTree).
57
+ const res = await fetchImpl(fontUrl, { signal: AbortSignal.timeout(FONT_FETCH_TIMEOUT_MS) });
44
58
  if (!res.ok)
45
59
  throw new Error(`font fetch failed: ${res.status} ${fontUrl}`);
46
60
  const buf = Buffer.from(await res.arrayBuffer());
@@ -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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"}
@@ -3,6 +3,8 @@ export { EMOJI_TYPES } from "./emoji.js";
3
3
  export { createOgGenerator } from "./generator.js";
4
4
  export type { NodeOgConfig } from "./node-config.js";
5
5
  export { resolveNodeOgConfig } from "./node-config.js";
6
- export type { OgFormat, OgGenerateInput, OgGenerateOptions, OgGenerator, OgInfoContext, OgTemplate, } from "./types.js";
7
- export { MAX_DESCRIPTION_LENGTH, MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, MAX_TITLE_LENGTH, OG_TEMPLATES, OgValidationError, } from "./types.js";
6
+ export type { OgImageInspection, OgImageKind, OgRenderUnavailableCode, OgTreeErrorCode, OgTreeImageStats, OgTreeNode, OgTreeRenderOptions, OgTreeWeight, } from "./tree.js";
7
+ export { inspectOgImage, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OG_TREE_FONT_FAMILY, OG_TREE_LIMITS, OgRenderUnavailableError, OgTreeRenderError, sniffOgImageKind, validateOgTree, } from "./tree.js";
8
+ export type { OgNodeRenderEvent, OgNodeTreeRenderOptions } from "./tree-node.js";
9
+ export { deriveBoldFontUrl, OG_NODE_QUEUE_MAX_WAIT_MS, renderOgTree } from "./tree-node.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/og/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/og/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/og/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { EMOJI_TYPES } from "./emoji.js";
2
2
  export { createOgGenerator } from "./generator.js";
3
3
  export { resolveNodeOgConfig } from "./node-config.js";
4
- export { MAX_DESCRIPTION_LENGTH, MAX_IMAGE_DIMENSION, MAX_IMAGE_SIZE, MAX_TITLE_LENGTH, OG_TEMPLATES, OgValidationError, } from "./types.js";
4
+ export { inspectOgImage, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OG_TREE_FONT_FAMILY, OG_TREE_LIMITS, OgRenderUnavailableError, OgTreeRenderError, sniffOgImageKind, validateOgTree, } from "./tree.js";
5
+ export { deriveBoldFontUrl, OG_NODE_QUEUE_MAX_WAIT_MS, renderOgTree } from "./tree-node.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/og/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/og/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -14,6 +14,8 @@
14
14
  export interface NodeOgConfig {
15
15
  /** Remote CJK font URL (keeps the 8MB font out of the npm package). */
16
16
  fontUrl?: string;
17
+ /** Bold (700) CJK font URL for `renderOgTree`; when unset it is derived from `fontUrl` (Regular→Bold). */
18
+ boldFontUrl?: string;
17
19
  /** Directory for cached final image output. */
18
20
  cacheDir: string;
19
21
  /** Directory for intermediate downloads. */
@@ -1 +1 @@
1
- {"version":3,"file":"node-config.d.ts","sourceRoot":"","sources":["../../src/og/node-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAOlD"}
1
+ {"version":3,"file":"node-config.d.ts","sourceRoot":"","sources":["../../src/og/node-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAQlD"}
@@ -15,6 +15,7 @@ export function resolveNodeOgConfig() {
15
15
  const env = globalThis.process?.env ?? {};
16
16
  return {
17
17
  fontUrl: env.CONNECT_OG_FONT_URL ?? env.OG_FONT_URL,
18
+ boldFontUrl: env.CONNECT_OG_FONT_BOLD_URL,
18
19
  cacheDir: env.CONNECT_OG_CACHE_DIR ?? env.OG_CACHE_DIR ?? "/tmp/og-cache",
19
20
  tmpDir: env.CONNECT_OG_TMP_DIR ?? env.OG_TMP_DIR ?? "/tmp/og-tmp",
20
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"node-config.js","sourceRoot":"","sources":["../../src/og/node-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAI,UAAyE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1G,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,WAAW;QACnD,QAAQ,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,YAAY,IAAI,eAAe;QACzE,MAAM,EAAE,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,UAAU,IAAI,aAAa;KAClE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"node-config.js","sourceRoot":"","sources":["../../src/og/node-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAI,UAAyE,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1G,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,WAAW;QACnD,WAAW,EAAE,GAAG,CAAC,wBAAwB;QACzC,QAAQ,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,YAAY,IAAI,eAAe;QACzE,MAAM,EAAE,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,UAAU,IAAI,aAAa;KAClE,CAAC;AACJ,CAAC"}
@@ -1 +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"}
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,CAiB1F;AAED;qCACqC;AACrC,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD"}
@@ -47,11 +47,18 @@ export async function rasterizeSvgToPngWithWasm(svg, font) {
47
47
  fitTo: { mode: "original" },
48
48
  font: { fontBuffers: [font], loadSystemFonts: false, defaultFontFamily: "Noto" },
49
49
  });
50
- const rendered = resvg.render();
51
- const png = Buffer.from(rendered.asPng());
52
- rendered.free();
53
- resvg.free();
54
- return png;
50
+ try {
51
+ const rendered = resvg.render();
52
+ try {
53
+ return Buffer.from(rendered.asPng());
54
+ }
55
+ finally {
56
+ rendered.free();
57
+ }
58
+ }
59
+ finally {
60
+ resvg.free();
61
+ }
55
62
  }
56
63
  /** Test isolation: force the next rasterizeSvgToPngWithWasm() call to
57
64
  * re-initialize the wasm module. */
@@ -1 +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"}
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,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED;qCACqC;AACrC,MAAM,UAAU,+BAA+B;IAC7C,SAAS,GAAG,SAAS,CAAC;AACxB,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Node entry of the tree renderer (`og-node` → `renderOgTree`, ArcBlock/did#300).
3
+ *
4
+ * Same contract as the Worker's `renderOgTree` (`worker.ts`): the tree is
5
+ * validated by `tree.ts` first (data: images only, hard limits, bounded
6
+ * shadows/filters/text, nothing is fetched), renders run one at a time per
7
+ * process, and the result is PNG bytes from the same satori +
8
+ * `@resvg/resvg-wasm` stack the Worker uses — never sharp, so output and memory
9
+ * behave the same on both runtimes and in a `bun --compile` binary.
10
+ *
11
+ * Fonts: Node has one CJK family (Noto Sans SC — it also covers Latin, kana
12
+ * and most Traditional glyphs), so `locale` only shapes the observer event.
13
+ * - Regular: `fontUrl` / `CONNECT_OG_FONT_URL` / the bundled face (like og.png).
14
+ * - Bold: `boldFontUrl` / `CONNECT_OG_FONT_BOLD_URL`; when neither is set it is
15
+ * DERIVED from the Regular URL by swapping `Regular`→`Bold` in the file name
16
+ * (`…/NotoSansSC-Regular.otf` → `…/NotoSansSC-Bold.otf`,
17
+ * `…/noto-sans-sc-regular.otf` → `…/noto-sans-sc-bold.otf`). No Bold is
18
+ * bundled in the npm package. `file:` URLs are read from disk.
19
+ * - Missing Bold renders 700 with Regular (`boldFallback: true` on the event).
20
+ * Only a success, "not configured", or a missing DERIVED file is cached; a
21
+ * failure of an explicitly configured URL is retried on the next render.
22
+ *
23
+ * No wall-clock guard around satori/resvg here (`Resvg.render()` is one
24
+ * synchronous wasm call; a timer cannot interrupt it). Render cost is bounded
25
+ * up front instead: the validator refuses SVG styles/filters and caps images,
26
+ * text, inline <svg> and an area-weighted shadow/filter budget, and
27
+ * `og-tree.test.ts` asserts the worst tree within those caps renders in < 3 s.
28
+ * Moving renders into `worker_threads` with a timeout is left to the host
29
+ * (ArcBlock/arc#8746) if still wanted.
30
+ */
31
+ import { type Logger } from "../logger.js";
32
+ import { type OgTreeRenderOptions } from "./tree.js";
33
+ /** Default deadline for waiting in the process render queue. */
34
+ export declare const OG_NODE_QUEUE_MAX_WAIT_MS = 20000;
35
+ export interface OgNodeRenderEvent {
36
+ locale: string;
37
+ cacheStatus: "BYPASS";
38
+ /** Wall time of the whole call, INCLUDING `queueMs` and `fontReadMs`. */
39
+ durationMs: number;
40
+ queueMs: number;
41
+ fontReadMs: number;
42
+ template: "tree";
43
+ /** Weight 700 was requested but no Bold font could be loaded — drawn with Regular. */
44
+ boldFallback?: boolean;
45
+ }
46
+ export interface OgNodeTreeRenderOptions extends OgTreeRenderOptions {
47
+ /** Regular font URL. Defaults to `CONNECT_OG_FONT_URL`, then the bundled face. */
48
+ fontUrl?: string;
49
+ /** Bold font URL. Defaults to `CONNECT_OG_FONT_BOLD_URL`, then derived from the Regular URL. */
50
+ boldFontUrl?: string;
51
+ /** Disk cache for remote fonts. Defaults to `<os.tmpdir()>/og-fonts`. */
52
+ fontCacheDir?: string;
53
+ /** Used ONLY to download font URLs — never for tree images. */
54
+ fetchImpl?: typeof fetch;
55
+ /** Per font load. Default 10 s. On expiry the render fails with 503 `OG_FONT_TIMEOUT`. */
56
+ fontReadTimeoutMs?: number;
57
+ /** Max wait in the process render queue. Default {@link OG_NODE_QUEUE_MAX_WAIT_MS}; 503 `OG_QUEUE_TIMEOUT`. */
58
+ queueMaxWaitMs?: number;
59
+ logger?: Logger;
60
+ observer?: (event: OgNodeRenderEvent) => void;
61
+ }
62
+ /** `…Regular…` → `…Bold…` in the last path segment; undefined when the name has no Regular marker. */
63
+ export declare function deriveBoldFontUrl(regularUrl: string | undefined): string | undefined;
64
+ /** Test isolation: forget cached Bold bytes and re-arm the missing-Bold warning. */
65
+ export declare function resetOgNodeTreeFontsForTesting(): void;
66
+ /**
67
+ * Renders a caller-built satori tree to PNG bytes. Rejects with an
68
+ * `OgTreeRenderError` (400, see `OG_TREE_ERROR_CODES`) before any work when the
69
+ * tree breaks a rule, or with an `OgRenderUnavailableError` (503) when fonts or
70
+ * the queue time out.
71
+ */
72
+ export declare function renderOgTree(options: OgNodeTreeRenderOptions): Promise<Uint8Array>;
73
+ //# sourceMappingURL=tree-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node.d.ts","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AASH,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,EAML,KAAK,mBAAmB,EAIzB,MAAM,WAAW,CAAC;AAEnB,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,QAAQ,CAAC;IACtB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAiCD,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOpF;AA4CD,oFAAoF;AACpF,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsExF"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Node entry of the tree renderer (`og-node` → `renderOgTree`, ArcBlock/did#300).
3
+ *
4
+ * Same contract as the Worker's `renderOgTree` (`worker.ts`): the tree is
5
+ * validated by `tree.ts` first (data: images only, hard limits, bounded
6
+ * shadows/filters/text, nothing is fetched), renders run one at a time per
7
+ * process, and the result is PNG bytes from the same satori +
8
+ * `@resvg/resvg-wasm` stack the Worker uses — never sharp, so output and memory
9
+ * behave the same on both runtimes and in a `bun --compile` binary.
10
+ *
11
+ * Fonts: Node has one CJK family (Noto Sans SC — it also covers Latin, kana
12
+ * and most Traditional glyphs), so `locale` only shapes the observer event.
13
+ * - Regular: `fontUrl` / `CONNECT_OG_FONT_URL` / the bundled face (like og.png).
14
+ * - Bold: `boldFontUrl` / `CONNECT_OG_FONT_BOLD_URL`; when neither is set it is
15
+ * DERIVED from the Regular URL by swapping `Regular`→`Bold` in the file name
16
+ * (`…/NotoSansSC-Regular.otf` → `…/NotoSansSC-Bold.otf`,
17
+ * `…/noto-sans-sc-regular.otf` → `…/noto-sans-sc-bold.otf`). No Bold is
18
+ * bundled in the npm package. `file:` URLs are read from disk.
19
+ * - Missing Bold renders 700 with Regular (`boldFallback: true` on the event).
20
+ * Only a success, "not configured", or a missing DERIVED file is cached; a
21
+ * failure of an explicitly configured URL is retried on the next render.
22
+ *
23
+ * No wall-clock guard around satori/resvg here (`Resvg.render()` is one
24
+ * synchronous wasm call; a timer cannot interrupt it). Render cost is bounded
25
+ * up front instead: the validator refuses SVG styles/filters and caps images,
26
+ * text, inline <svg> and an area-weighted shadow/filter budget, and
27
+ * `og-tree.test.ts` asserts the worst tree within those caps renders in < 3 s.
28
+ * Moving renders into `worker_threads` with a timeout is left to the host
29
+ * (ArcBlock/arc#8746) if still wanted.
30
+ */
31
+ import { createHash } from "node:crypto";
32
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
33
+ import { readFile } from "node:fs/promises";
34
+ import { createRequire } from "node:module";
35
+ import { tmpdir } from "node:os";
36
+ import { dirname, join } from "node:path";
37
+ import { fileURLToPath } from "node:url";
38
+ import { consoleLogger } from "../logger.js";
39
+ import { FONT_FETCH_TIMEOUT_MS, loadFont } from "./generator.js";
40
+ import { resolveNodeOgConfig } from "./node-config.js";
41
+ import { rasterizeSvgToPngWithWasm } from "./node-wasm-fallback.js";
42
+ import { createSerialQueue, OG_RENDER_UNAVAILABLE_CODES, OG_TREE_ERROR_CODES, OgRenderUnavailableError, OgTreeRenderError, prepareOgTree, wantsBold, withTimeout, } from "./tree.js";
43
+ /** Default deadline for waiting in the process render queue. */
44
+ export const OG_NODE_QUEUE_MAX_WAIT_MS = 20_000;
45
+ const serialRender = createSerialQueue();
46
+ let satoriReady;
47
+ /** One cached Bold result (keyed by its URL); a different URL replaces it. `null` = no Bold. */
48
+ let boldSlot;
49
+ let boldMissingWarned = false;
50
+ /**
51
+ * `satori/standalone` with yoga.wasm read from disk — the default `satori`
52
+ * build instantiates its inlined yoga by calling `fetch()` on a data: URI,
53
+ * and a tree render makes no fetch calls at all.
54
+ */
55
+ function loadSatori() {
56
+ if (!satoriReady) {
57
+ satoriReady = (async () => {
58
+ const { default: satori, init } = await import("satori/standalone");
59
+ const require = createRequire(import.meta.url);
60
+ await init(readFileSync(require.resolve("satori/yoga.wasm")));
61
+ return satori;
62
+ })().catch((error) => {
63
+ satoriReady = undefined;
64
+ throw error;
65
+ });
66
+ }
67
+ return satoriReady;
68
+ }
69
+ function md5(s) {
70
+ return createHash("md5").update(s).digest("hex");
71
+ }
72
+ /** `…Regular…` → `…Bold…` in the last path segment; undefined when the name has no Regular marker. */
73
+ export function deriveBoldFontUrl(regularUrl) {
74
+ if (!regularUrl)
75
+ return undefined;
76
+ const slash = regularUrl.lastIndexOf("/");
77
+ const head = regularUrl.slice(0, slash + 1);
78
+ const name = regularUrl.slice(slash + 1);
79
+ const bold = name.replace(/Regular/, "Bold").replace(/regular/, "bold");
80
+ return bold === name ? undefined : head + bold;
81
+ }
82
+ async function fetchFontBytes(url, fontCacheDir, fetchImpl) {
83
+ if (url.startsWith("file:"))
84
+ return readFile(fileURLToPath(url));
85
+ const diskPath = join(fontCacheDir, `${md5(url)}.font`);
86
+ if (existsSync(diskPath))
87
+ return readFile(diskPath);
88
+ const res = await fetchImpl(url, { signal: AbortSignal.timeout(FONT_FETCH_TIMEOUT_MS) });
89
+ if (!res.ok)
90
+ throw new Error(`font fetch failed: ${res.status}`);
91
+ const buf = Buffer.from(await res.arrayBuffer());
92
+ mkdirSync(dirname(diskPath), { recursive: true });
93
+ writeFileSync(diskPath, buf);
94
+ return buf;
95
+ }
96
+ async function loadBold(explicitUrl, regularUrl, fontCacheDir, fetchImpl, logger) {
97
+ const url = explicitUrl ?? deriveBoldFontUrl(regularUrl);
98
+ const key = url ?? "(not configured)";
99
+ if (boldSlot?.key === key)
100
+ return boldSlot.bytes;
101
+ if (!url) {
102
+ boldSlot = { key, bytes: null };
103
+ return null;
104
+ }
105
+ try {
106
+ const bytes = await fetchFontBytes(url, fontCacheDir, fetchImpl);
107
+ boldSlot = { key, bytes };
108
+ return bytes;
109
+ }
110
+ catch (err) {
111
+ if (!explicitUrl) {
112
+ // A derived sibling that does not exist is "not configured", not an outage.
113
+ boldSlot = { key, bytes: null };
114
+ return null;
115
+ }
116
+ // Explicit URL failed: fall back for THIS render only; retry next time.
117
+ logger.warn({ message: "[og] bold font load failed; rendering weight 700 with the regular face", mod: "og", err });
118
+ return null;
119
+ }
120
+ }
121
+ /** Test isolation: forget cached Bold bytes and re-arm the missing-Bold warning. */
122
+ export function resetOgNodeTreeFontsForTesting() {
123
+ boldSlot = undefined;
124
+ boldMissingWarned = false;
125
+ }
126
+ /**
127
+ * Renders a caller-built satori tree to PNG bytes. Rejects with an
128
+ * `OgTreeRenderError` (400, see `OG_TREE_ERROR_CODES`) before any work when the
129
+ * tree breaks a rule, or with an `OgRenderUnavailableError` (503) when fonts or
130
+ * the queue time out.
131
+ */
132
+ export async function renderOgTree(options) {
133
+ const startedAt = performance.now();
134
+ const tree = prepareOgTree(options);
135
+ const config = resolveNodeOgConfig();
136
+ const logger = options.logger ?? consoleLogger;
137
+ const fetchImpl = options.fetchImpl ?? fetch;
138
+ const fontCacheDir = options.fontCacheDir ?? join(tmpdir(), "og-fonts");
139
+ const fontTimeout = options.fontReadTimeoutMs ?? FONT_FETCH_TIMEOUT_MS;
140
+ const regularUrl = options.fontUrl ?? config.fontUrl;
141
+ const timeoutError = () => new OgRenderUnavailableError(OG_RENDER_UNAVAILABLE_CODES.fontTimeout, `font load exceeded ${fontTimeout}ms`);
142
+ const { png, queueMs, fontReadMs, boldFallback } = await serialRender(async ({ queueMs }) => {
143
+ const satori = await loadSatori();
144
+ const fontStart = performance.now();
145
+ const regular = await withTimeout(loadFont({ fontUrl: regularUrl, fontCacheDir, fetchImpl, logger, timeoutMs: fontTimeout }), fontTimeout, timeoutError);
146
+ let bold = null;
147
+ const boldWanted = wantsBold(options.weights);
148
+ if (boldWanted) {
149
+ bold = await withTimeout(loadBold(options.boldFontUrl ?? config.boldFontUrl, regularUrl, fontCacheDir, fetchImpl, logger), fontTimeout, timeoutError);
150
+ if (!bold && !boldMissingWarned) {
151
+ boldMissingWarned = true;
152
+ logger.warn({ message: "[og] bold font missing; rendering weight 700 with the regular face", mod: "og" });
153
+ }
154
+ }
155
+ const fontReadMs = performance.now() - fontStart;
156
+ // Fresh ArrayBuffer copies per render: satori's parsed font objects are
157
+ // released with them instead of staying resident (same as the Worker).
158
+ const copy = (b) => b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
159
+ const fonts = [
160
+ { name: "Noto", data: copy(regular), weight: 400, style: "normal" },
161
+ ];
162
+ if (bold)
163
+ fonts.push({ name: "Noto", data: copy(bold), weight: 700, style: "normal" });
164
+ let png;
165
+ try {
166
+ // No `loadAdditionalAsset`: og.png's emoji loader downloads glyphs, and a
167
+ // tree render must make no request on behalf of its content.
168
+ const svg = await satori(tree, {
169
+ width: options.width,
170
+ height: options.height,
171
+ fonts,
172
+ });
173
+ png = await rasterizeSvgToPngWithWasm(svg, regular);
174
+ }
175
+ catch {
176
+ // satori/resvg messages can quote the input; report a generic 400.
177
+ throw new OgTreeRenderError(OG_TREE_ERROR_CODES.renderFailed, "the tree could not be rendered");
178
+ }
179
+ return { png, queueMs, fontReadMs, boldFallback: boldWanted && !bold };
180
+ }, { maxWaitMs: options.queueMaxWaitMs ?? OG_NODE_QUEUE_MAX_WAIT_MS });
181
+ options.observer?.({
182
+ locale: options.locale,
183
+ cacheStatus: "BYPASS",
184
+ durationMs: performance.now() - startedAt,
185
+ queueMs,
186
+ fontReadMs,
187
+ template: "tree",
188
+ ...(boldFallback ? { boldFallback: true } : {}),
189
+ });
190
+ return new Uint8Array(png.buffer, png.byteOffset, png.byteLength);
191
+ }
192
+ //# sourceMappingURL=tree-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node.js","sourceRoot":"","sources":["../../src/og/tree-node.ts"],"names":[],"mappings":"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"}