@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 +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7 -6
- package/dist/index.mjs +6 -5
- package/package.json +12 -5
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
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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.
|
|
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
|
}
|