koishi-plugin-vercel-satori-png-service 0.0.1 → 0.0.3
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/lib/index.d.ts +4 -1
- package/lib/index.js +12 -6
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context, Schema, Service } from "koishi";
|
|
2
2
|
import { ReactElement } from "react";
|
|
3
|
-
import { unstable_createNodejsStream } from "@vercel/og";
|
|
4
3
|
import { Readable } from "stream";
|
|
4
|
+
import type { unstable_createNodejsStream } from "@vercel/og";
|
|
5
5
|
export type ImageOptions = Parameters<typeof unstable_createNodejsStream>[1];
|
|
6
6
|
declare module "koishi" {
|
|
7
7
|
interface Context {
|
|
@@ -11,11 +11,14 @@ declare module "koishi" {
|
|
|
11
11
|
declare class VercelSatoriPngService extends Service {
|
|
12
12
|
private _ctx;
|
|
13
13
|
private _config;
|
|
14
|
+
private createNodejsStream;
|
|
14
15
|
constructor(ctx: Context, config: VercelSatoriPngService.Config);
|
|
16
|
+
start(): Promise<void>;
|
|
15
17
|
jsxToReactElement(jsxCode: string, data?: Record<any, any>): Promise<ReactElement<any, any>>;
|
|
16
18
|
jsxToPng(jsxCode: string, options: ImageOptions, data?: Record<any, any>): Promise<Readable>;
|
|
17
19
|
htmlToReactElement(htmlCode: string): ReactElement<any, any>;
|
|
18
20
|
htmlToPng(htmlCode: string, options: ImageOptions): Promise<Readable>;
|
|
21
|
+
reactElementToPng(reactElement: ReactElement<any, any>, options: ImageOptions): Promise<Readable>;
|
|
19
22
|
}
|
|
20
23
|
declare namespace VercelSatoriPngService {
|
|
21
24
|
const usage: string;
|
package/lib/index.js
CHANGED
|
@@ -34,10 +34,9 @@ __export(src_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(src_exports);
|
|
36
36
|
var import_koishi = require("koishi");
|
|
37
|
-
var import_sucrase = __toESM(require("sucrase"));
|
|
38
37
|
var import_react = __toESM(require("react"));
|
|
38
|
+
var import_sucrase = require("sucrase");
|
|
39
39
|
var import_html_react_parser = __toESM(require("html-react-parser"));
|
|
40
|
-
var import_og = require("@vercel/og");
|
|
41
40
|
var serviceName = "vercelSatoriPngService";
|
|
42
41
|
var AsyncFunction = (async () => 0).constructor;
|
|
43
42
|
var VercelSatoriPngService = class extends import_koishi.Service {
|
|
@@ -46,13 +45,17 @@ var VercelSatoriPngService = class extends import_koishi.Service {
|
|
|
46
45
|
}
|
|
47
46
|
_ctx;
|
|
48
47
|
_config;
|
|
48
|
+
createNodejsStream;
|
|
49
49
|
constructor(ctx, config) {
|
|
50
50
|
super(ctx, serviceName);
|
|
51
51
|
this._ctx = ctx;
|
|
52
52
|
this._config = config;
|
|
53
53
|
}
|
|
54
|
+
async start() {
|
|
55
|
+
this.createNodejsStream = (await import("@vercel/og")).unstable_createNodejsStream;
|
|
56
|
+
}
|
|
54
57
|
async jsxToReactElement(jsxCode, data) {
|
|
55
|
-
const hCode = import_sucrase.
|
|
58
|
+
const hCode = (0, import_sucrase.transform)(jsxCode, {
|
|
56
59
|
transforms: ["jsx"],
|
|
57
60
|
jsxRuntime: "classic",
|
|
58
61
|
production: true
|
|
@@ -71,18 +74,21 @@ var VercelSatoriPngService = class extends import_koishi.Service {
|
|
|
71
74
|
}
|
|
72
75
|
async jsxToPng(jsxCode, options, data) {
|
|
73
76
|
const reactElement = await this.jsxToReactElement(jsxCode, data);
|
|
74
|
-
return
|
|
77
|
+
return this.createNodejsStream(reactElement, options);
|
|
75
78
|
}
|
|
76
79
|
htmlToReactElement(htmlCode) {
|
|
77
80
|
return (0, import_html_react_parser.default)(htmlCode);
|
|
78
81
|
}
|
|
79
82
|
htmlToPng(htmlCode, options) {
|
|
80
83
|
const reactElement = this.htmlToReactElement(htmlCode);
|
|
81
|
-
return
|
|
84
|
+
return this.createNodejsStream(reactElement, options);
|
|
85
|
+
}
|
|
86
|
+
async reactElementToPng(reactElement, options) {
|
|
87
|
+
return this.createNodejsStream(reactElement, options);
|
|
82
88
|
}
|
|
83
89
|
};
|
|
84
90
|
((VercelSatoriPngService2) => {
|
|
85
|
-
VercelSatoriPngService2.usage = 'html to ReactElement <a target="_blank" href="https://www.npmjs.com/package/html-react-parser">html-react-parser</a> \njsx to ReactElement <a target="_blank" href="https://www.npmjs.com/package/sucrase">sucrase</a> \nReactElement to png <a target="_blank" href="https://www.npmjs.com/package/@vercel/og">@vercel/og</a
|
|
91
|
+
VercelSatoriPngService2.usage = 'html to ReactElement <a target="_blank" href="https://www.npmjs.com/package/html-react-parser">html-react-parser</a> \njsx to ReactElement <a target="_blank" href="https://www.npmjs.com/package/sucrase">sucrase</a> \nReactElement to png <a target="_blank" href="https://www.npmjs.com/package/@vercel/og">@vercel/og</a> \n<a target="_blank" href="https://og-playground.vercel.app/">og-playground</a> \n<a target="_blank" href="https://github.com/vercel/satori#overview">vercel/satori</a> \n';
|
|
86
92
|
VercelSatoriPngService2.Config = import_koishi.Schema.object({});
|
|
87
93
|
})(VercelSatoriPngService || (VercelSatoriPngService = {}));
|
|
88
94
|
var src_default = VercelSatoriPngService;
|
package/package.json
CHANGED