@ogify/core 0.1.1 → 0.1.2

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/index.d.mts CHANGED
@@ -168,7 +168,7 @@ type OgTemplateRenderer = {
168
168
  * These values are merged with user-provided parameters,
169
169
  * with user values taking precedence.
170
170
  */
171
- defaultParams?: OgTemplateParams;
171
+ defaultParams?: OgTemplateParams | (() => Promise<OgTemplateParams>);
172
172
  /**
173
173
  * Hook called before rendering.
174
174
  *
@@ -315,7 +315,7 @@ declare class TemplateRenderer {
315
315
  * @returns Promise resolving to a PNG image buffer
316
316
  * @throws Error if template is not found or rendering fails
317
317
  */
318
- renderToImage(templateId: string, params: OgTemplateParams, options?: {
318
+ renderToImage(templateId: string, params: OgTemplateParams | (() => Promise<OgTemplateParams>), options?: {
319
319
  width: number;
320
320
  height: number;
321
321
  }): Promise<Buffer>;
@@ -366,7 +366,7 @@ declare function createTemplateRenderer(config: OgTemplateRenderer): TemplateRen
366
366
  * - SVG rendering fails
367
367
  * - PNG conversion fails
368
368
  */
369
- declare function renderTemplate(template: OgTemplate, params: OgTemplateParams, options?: {
369
+ declare function renderTemplate(template: OgTemplate, params: OgTemplateParams | (() => Promise<OgTemplateParams>), options?: {
370
370
  width: number;
371
371
  height: number;
372
372
  }): Promise<Buffer>;
package/dist/index.d.ts CHANGED
@@ -168,7 +168,7 @@ type OgTemplateRenderer = {
168
168
  * These values are merged with user-provided parameters,
169
169
  * with user values taking precedence.
170
170
  */
171
- defaultParams?: OgTemplateParams;
171
+ defaultParams?: OgTemplateParams | (() => Promise<OgTemplateParams>);
172
172
  /**
173
173
  * Hook called before rendering.
174
174
  *
@@ -315,7 +315,7 @@ declare class TemplateRenderer {
315
315
  * @returns Promise resolving to a PNG image buffer
316
316
  * @throws Error if template is not found or rendering fails
317
317
  */
318
- renderToImage(templateId: string, params: OgTemplateParams, options?: {
318
+ renderToImage(templateId: string, params: OgTemplateParams | (() => Promise<OgTemplateParams>), options?: {
319
319
  width: number;
320
320
  height: number;
321
321
  }): Promise<Buffer>;
@@ -366,7 +366,7 @@ declare function createTemplateRenderer(config: OgTemplateRenderer): TemplateRen
366
366
  * - SVG rendering fails
367
367
  * - PNG conversion fails
368
368
  */
369
- declare function renderTemplate(template: OgTemplate, params: OgTemplateParams, options?: {
369
+ declare function renderTemplate(template: OgTemplate, params: OgTemplateParams | (() => Promise<OgTemplateParams>), options?: {
370
370
  width: number;
371
371
  height: number;
372
372
  }): Promise<Buffer>;
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  var satori = require('satori');
4
4
  var satoriHtml = require('satori-html');
5
+ var resvgJs = require('@resvg/resvg-js');
5
6
 
6
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
8
 
@@ -314,8 +315,8 @@ async function renderTemplate(template, params, options) {
314
315
  const width = options?.width || DEFAULT_WIDTH;
315
316
  const height = options?.height || DEFAULT_HEIGHT;
316
317
  const satoriFonts = await loadFonts(template.fonts);
317
- const htmlString = template.renderer({
318
- params,
318
+ const htmlString = await template.renderer({
319
+ params: typeof params === "function" ? await params() : params,
319
320
  width,
320
321
  height
321
322
  });
@@ -343,8 +344,7 @@ async function renderTemplate(template, params, options) {
343
344
  });
344
345
  }
345
346
  });
346
- const { renderAsync } = await import('@resvg/resvg-js');
347
- const pngData = await renderAsync(svg, {
347
+ const pngData = await resvgJs.renderAsync(svg, {
348
348
  fitTo: {
349
349
  mode: "width",
350
350
  // Scale based on width, maintain aspect ratio
@@ -461,13 +461,14 @@ var TemplateRenderer = class {
461
461
  * @throws Error if template is not found or rendering fails
462
462
  */
463
463
  async renderToImage(templateId, params, options) {
464
+ const { defaultParams } = this.config;
464
465
  const template = this.getTemplate(templateId);
465
466
  if (!template) {
466
467
  throw new Error(`Template '${templateId}' not found`);
467
468
  }
468
469
  const mergedParams = {
469
- ...this.config.defaultParams,
470
- ...params
470
+ ...typeof defaultParams === "function" ? await defaultParams() : defaultParams,
471
+ ...typeof params === "function" ? await params() : params
471
472
  };
472
473
  if (this.config.beforeRender) {
473
474
  await this.config.beforeRender(templateId, mergedParams);
package/dist/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import satori from 'satori';
2
2
  import { html } from 'satori-html';
3
+ import { renderAsync } from '@resvg/resvg-js';
3
4
 
4
5
  // src/template.ts
5
6
 
@@ -308,8 +309,8 @@ async function renderTemplate(template, params, options) {
308
309
  const width = options?.width || DEFAULT_WIDTH;
309
310
  const height = options?.height || DEFAULT_HEIGHT;
310
311
  const satoriFonts = await loadFonts(template.fonts);
311
- const htmlString = template.renderer({
312
- params,
312
+ const htmlString = await template.renderer({
313
+ params: typeof params === "function" ? await params() : params,
313
314
  width,
314
315
  height
315
316
  });
@@ -337,7 +338,6 @@ async function renderTemplate(template, params, options) {
337
338
  });
338
339
  }
339
340
  });
340
- const { renderAsync } = await import('@resvg/resvg-js');
341
341
  const pngData = await renderAsync(svg, {
342
342
  fitTo: {
343
343
  mode: "width",
@@ -455,13 +455,14 @@ var TemplateRenderer = class {
455
455
  * @throws Error if template is not found or rendering fails
456
456
  */
457
457
  async renderToImage(templateId, params, options) {
458
+ const { defaultParams } = this.config;
458
459
  const template = this.getTemplate(templateId);
459
460
  if (!template) {
460
461
  throw new Error(`Template '${templateId}' not found`);
461
462
  }
462
463
  const mergedParams = {
463
- ...this.config.defaultParams,
464
- ...params
464
+ ...typeof defaultParams === "function" ? await defaultParams() : defaultParams,
465
+ ...typeof params === "function" ? await params() : params
465
466
  };
466
467
  if (this.config.beforeRender) {
467
468
  await this.config.beforeRender(templateId, mergedParams);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ogify/core",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Core types and utilities for OGify Open Graph image generator",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -21,19 +21,26 @@
21
21
  },
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
+ "@resvg/resvg-js": "^2.6.2",
24
25
  "satori": "^0.18.3",
25
- "satori-html": "^0.3.2",
26
- "@resvg/resvg-js": "^2.6.2"
26
+ "satori-html": "^0.3.2"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^18",
30
+ "@vitest/ui": "^4.0.15",
31
+ "happy-dom": "^20.0.11",
30
32
  "tsup": "^8.5.1",
31
- "typescript": "^5.9.3"
33
+ "typescript": "^5.9.3",
34
+ "vitest": "^4.0.15"
32
35
  },
33
36
  "scripts": {
34
37
  "build": "tsup",
35
38
  "dev": "tsup --watch",
36
39
  "lint": "tsc --noEmit",
37
- "clean": "rm -rf dist"
40
+ "clean": "rm -rf dist",
41
+ "test": "vitest run",
42
+ "test:watch": "vitest",
43
+ "test:ui": "vitest --ui",
44
+ "test:coverage": "vitest run --coverage"
38
45
  }
39
46
  }