apexify.js 3.3.6 → 3.3.8
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/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/dependabot.yml +7 -0
- package/.tsbuildinfo +1 -1
- package/CODE_OF_CONDUCT.md +128 -0
- package/LICENSE +21 -0
- package/README.md +27 -21
- package/SECURITY.md +20 -0
- package/change logs.md +1 -1
- package/examples/barchart.txt +0 -2
- package/examples/linechart.txt +0 -2
- package/lib/ai/ApexAI.ts +116 -85
- package/lib/ai/functions/draw.ts +67 -69
- package/lib/ai/functions/generateVoiceResponse.ts +15 -22
- package/lib/ai/functions/readImagess.ts +6 -6
- package/lib/ai/functions/typeWriter.ts +0 -2
- package/lib/canvas/ApexPainter.ts +75 -80
- package/lib/canvas/utils/bg.ts +7 -4
- package/lib/canvas/utils/charts.ts +37 -22
- package/lib/canvas/utils/general functions.ts +71 -53
- package/lib/canvas/utils/types.ts +14 -7
- package/lib/index.ts +6 -6
- package/package.json +3 -3
- package/dist/ai/ApexAI.d.ts +0 -62
- package/dist/ai/ApexAI.d.ts.map +0 -1
- package/dist/ai/ApexAI.js +0 -421
- package/dist/ai/ApexAI.js.map +0 -1
- package/dist/ai/buttons/drawMenu.d.ts +0 -3
- package/dist/ai/buttons/drawMenu.d.ts.map +0 -1
- package/dist/ai/buttons/drawMenu.js +0 -274
- package/dist/ai/buttons/drawMenu.js.map +0 -1
- package/dist/ai/buttons/tools.d.ts +0 -3
- package/dist/ai/buttons/tools.d.ts.map +0 -1
- package/dist/ai/buttons/tools.js +0 -445
- package/dist/ai/buttons/tools.js.map +0 -1
- package/dist/ai/functions/aivoice.d.ts +0 -1
- package/dist/ai/functions/aivoice.d.ts.map +0 -1
- package/dist/ai/functions/aivoice.js +0 -2
- package/dist/ai/functions/aivoice.js.map +0 -1
- package/dist/ai/functions/chunkString.d.ts +0 -2
- package/dist/ai/functions/chunkString.d.ts.map +0 -1
- package/dist/ai/functions/chunkString.js +0 -8
- package/dist/ai/functions/chunkString.js.map +0 -1
- package/dist/ai/functions/draw.d.ts +0 -3
- package/dist/ai/functions/draw.d.ts.map +0 -1
- package/dist/ai/functions/draw.js +0 -387
- package/dist/ai/functions/draw.js.map +0 -1
- package/dist/ai/functions/generateVoiceResponse.d.ts +0 -3
- package/dist/ai/functions/generateVoiceResponse.d.ts.map +0 -1
- package/dist/ai/functions/generateVoiceResponse.js +0 -158
- package/dist/ai/functions/generateVoiceResponse.js.map +0 -1
- package/dist/ai/functions/imageReader.d.ts +0 -3
- package/dist/ai/functions/imageReader.d.ts.map +0 -1
- package/dist/ai/functions/imageReader.js +0 -23
- package/dist/ai/functions/imageReader.js.map +0 -1
- package/dist/ai/functions/readFiles.d.ts +0 -3
- package/dist/ai/functions/readFiles.d.ts.map +0 -1
- package/dist/ai/functions/readFiles.js +0 -62
- package/dist/ai/functions/readFiles.js.map +0 -1
- package/dist/ai/functions/readImagess.d.ts +0 -2
- package/dist/ai/functions/readImagess.d.ts.map +0 -1
- package/dist/ai/functions/readImagess.js +0 -48
- package/dist/ai/functions/readImagess.js.map +0 -1
- package/dist/ai/functions/shouldDrawImage.d.ts +0 -2
- package/dist/ai/functions/shouldDrawImage.d.ts.map +0 -1
- package/dist/ai/functions/shouldDrawImage.js +0 -12
- package/dist/ai/functions/shouldDrawImage.js.map +0 -1
- package/dist/ai/functions/typeWriter.d.ts +0 -2
- package/dist/ai/functions/typeWriter.d.ts.map +0 -1
- package/dist/ai/functions/typeWriter.js +0 -24
- package/dist/ai/functions/typeWriter.js.map +0 -1
- package/dist/ai/models.d.ts +0 -9
- package/dist/ai/models.d.ts.map +0 -1
- package/dist/ai/models.js +0 -575
- package/dist/ai/models.js.map +0 -1
- package/dist/ai/utils.d.ts +0 -11
- package/dist/ai/utils.d.ts.map +0 -1
- package/dist/ai/utils.js +0 -24
- package/dist/ai/utils.js.map +0 -1
- package/dist/canvas/ApexPainter.d.ts +0 -38
- package/dist/canvas/ApexPainter.d.ts.map +0 -1
- package/dist/canvas/ApexPainter.js +0 -439
- package/dist/canvas/ApexPainter.js.map +0 -1
- package/dist/canvas/utils/bg.d.ts +0 -23
- package/dist/canvas/utils/bg.d.ts.map +0 -1
- package/dist/canvas/utils/bg.js +0 -74
- package/dist/canvas/utils/bg.js.map +0 -1
- package/dist/canvas/utils/charts.d.ts +0 -9
- package/dist/canvas/utils/charts.d.ts.map +0 -1
- package/dist/canvas/utils/charts.js +0 -454
- package/dist/canvas/utils/charts.js.map +0 -1
- package/dist/canvas/utils/circular.d.ts +0 -10
- package/dist/canvas/utils/circular.d.ts.map +0 -1
- package/dist/canvas/utils/circular.js +0 -22
- package/dist/canvas/utils/circular.js.map +0 -1
- package/dist/canvas/utils/customLines.d.ts +0 -2
- package/dist/canvas/utils/customLines.d.ts.map +0 -1
- package/dist/canvas/utils/customLines.js +0 -50
- package/dist/canvas/utils/customLines.js.map +0 -1
- package/dist/canvas/utils/general functions.d.ts +0 -21
- package/dist/canvas/utils/general functions.d.ts.map +0 -1
- package/dist/canvas/utils/general functions.js +0 -391
- package/dist/canvas/utils/general functions.js.map +0 -1
- package/dist/canvas/utils/imageProperties.d.ts +0 -60
- package/dist/canvas/utils/imageProperties.d.ts.map +0 -1
- package/dist/canvas/utils/imageProperties.js +0 -331
- package/dist/canvas/utils/imageProperties.js.map +0 -1
- package/dist/canvas/utils/radius.d.ts +0 -10
- package/dist/canvas/utils/radius.d.ts.map +0 -1
- package/dist/canvas/utils/radius.js +0 -31
- package/dist/canvas/utils/radius.js.map +0 -1
- package/dist/canvas/utils/textProperties.d.ts +0 -18
- package/dist/canvas/utils/textProperties.d.ts.map +0 -1
- package/dist/canvas/utils/textProperties.js +0 -67
- package/dist/canvas/utils/textProperties.js.map +0 -1
- package/dist/canvas/utils/types.d.ts +0 -414
- package/dist/canvas/utils/types.d.ts.map +0 -1
- package/dist/canvas/utils/types.js +0 -5
- package/dist/canvas/utils/types.js.map +0 -1
- package/dist/canvas/utils/utils.d.ts +0 -20
- package/dist/canvas/utils/utils.d.ts.map +0 -1
- package/dist/canvas/utils/utils.js +0 -48
- package/dist/canvas/utils/utils.js.map +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -65
- package/dist/index.js.map +0 -1
- package/dist/utils.d.ts +0 -12
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -12
- package/dist/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ApexPainter.d.ts","sourceRoot":"","sources":["../../lib/canvas/ApexPainter.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAG4C,MAAM,eAAe,CAAC;AAGrL,qBAAa,WAAW;IACd,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDnD,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B/E,UAAU,CAAC,gBAAgB,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiC3E,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBvE,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC;IAiRhF,MAAM,CAAC,aAAa,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAI7F,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAIpD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;IAI9C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAInD,aAAa,CAAC,SAAS,EAAE,MAAM;;;;IAI/B,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAI5F,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIjD,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC;IA8CrE,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAkBzC,SAAS;IAqDhB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;CAOvC"}
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ApexPainter = void 0;
|
|
7
|
-
const canvas_1 = require("@napi-rs/canvas");
|
|
8
|
-
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const gifencoder_1 = __importDefault(require("gifencoder"));
|
|
11
|
-
const stream_1 = require("stream");
|
|
12
|
-
const fs_1 = __importDefault(require("fs"));
|
|
13
|
-
const utils_1 = require("./utils/utils");
|
|
14
|
-
class ApexPainter {
|
|
15
|
-
async createCanvas(canvas) {
|
|
16
|
-
let canvasWidth = canvas.width || 500;
|
|
17
|
-
let canvasHeight = canvas.height || 500;
|
|
18
|
-
let borderRadius = canvas.borderRadius || 0;
|
|
19
|
-
if (canvas.customBg) {
|
|
20
|
-
try {
|
|
21
|
-
const response = await axios_1.default.get(canvas.customBg, { responseType: 'arraybuffer' });
|
|
22
|
-
const imageBuffer = Buffer.from(response.data, 'binary');
|
|
23
|
-
const image = await (0, canvas_1.loadImage)(imageBuffer);
|
|
24
|
-
canvasWidth = image.width;
|
|
25
|
-
canvasHeight = image.height;
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
console.error('Error loading custom background image:', error);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const canvasInstance = (0, canvas_1.createCanvas)(canvasWidth, canvasHeight);
|
|
32
|
-
const ctx = canvasInstance.getContext('2d');
|
|
33
|
-
if (!ctx) {
|
|
34
|
-
throw new Error('Unable to get 2D rendering context from canvas');
|
|
35
|
-
}
|
|
36
|
-
(0, utils_1.applyRotation)(ctx, canvas.rotation || 0, canvas.x || 0, canvas.y || 0, canvasWidth, canvasHeight);
|
|
37
|
-
(0, utils_1.applyShadow)(ctx, canvas.shadow, canvas.x || 0, canvas.y || 0, canvasWidth, canvasHeight);
|
|
38
|
-
if (typeof borderRadius === 'string') {
|
|
39
|
-
(0, utils_1.circularBorder)(ctx, canvasWidth, canvasHeight);
|
|
40
|
-
}
|
|
41
|
-
else if (typeof borderRadius === 'number') {
|
|
42
|
-
(0, utils_1.radiusBorder)(ctx, canvas.x || 0, canvas.y || 0, canvasWidth, canvasHeight, borderRadius);
|
|
43
|
-
}
|
|
44
|
-
if (canvas.customBg) {
|
|
45
|
-
await (0, utils_1.customBackground)(ctx, canvas);
|
|
46
|
-
}
|
|
47
|
-
else if (canvas.gradientBg) {
|
|
48
|
-
await (0, utils_1.drawBackgroundGradient)(ctx, canvas);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
await (0, utils_1.drawBackgroundColor)(ctx, canvas);
|
|
52
|
-
}
|
|
53
|
-
(0, utils_1.applyStroke)(ctx, canvas.stroke, canvas.x || 0, canvas.y || 0, canvasWidth, canvasHeight);
|
|
54
|
-
return canvasInstance.toBuffer('image/png');
|
|
55
|
-
}
|
|
56
|
-
async createImage(images, canvasBuffer) {
|
|
57
|
-
if (!canvasBuffer) {
|
|
58
|
-
throw new Error('You need to provide your canvasConfig. Check documentation if you don\'t know.');
|
|
59
|
-
}
|
|
60
|
-
const existingCanvas = await (0, canvas_1.loadImage)(canvasBuffer);
|
|
61
|
-
if (!existingCanvas) {
|
|
62
|
-
throw new Error('Either buffer or canvasConfig is an empty background with no properties');
|
|
63
|
-
}
|
|
64
|
-
const canvas = (0, canvas_1.createCanvas)(existingCanvas.width, existingCanvas.height);
|
|
65
|
-
const ctx = canvas.getContext('2d');
|
|
66
|
-
if (!ctx) {
|
|
67
|
-
throw new Error('Unable to get 2D rendering context from canvas');
|
|
68
|
-
}
|
|
69
|
-
ctx.drawImage(existingCanvas, 0, 0);
|
|
70
|
-
for (const image of images) {
|
|
71
|
-
await this.drawImage(ctx, image);
|
|
72
|
-
}
|
|
73
|
-
return canvas.toBuffer('image/png');
|
|
74
|
-
}
|
|
75
|
-
async createText(textOptionsArray, buffer) {
|
|
76
|
-
try {
|
|
77
|
-
const existingImage = await (0, canvas_1.loadImage)(buffer);
|
|
78
|
-
if (!existingImage)
|
|
79
|
-
throw new Error("Invalid image buffer. Make sure to pass a valid canvas buffer.");
|
|
80
|
-
const canvas = (0, canvas_1.createCanvas)(existingImage.width, existingImage.height);
|
|
81
|
-
const ctx = canvas.getContext("2d");
|
|
82
|
-
ctx.drawImage(existingImage, 0, 0);
|
|
83
|
-
for (const textOptions of textOptionsArray) {
|
|
84
|
-
const mergedTextOptions = textOptions;
|
|
85
|
-
if (mergedTextOptions.fontPath) {
|
|
86
|
-
canvas_1.GlobalFonts.registerFromPath(path_1.default.join(process.cwd(), mergedTextOptions.fontPath), mergedTextOptions.fontName);
|
|
87
|
-
}
|
|
88
|
-
(0, utils_1.drawText)(ctx, mergedTextOptions);
|
|
89
|
-
}
|
|
90
|
-
return canvas.toBuffer("image/png");
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
console.error("Error loading existing image:", error);
|
|
94
|
-
throw new Error("Invalid image buffer");
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async createCustom(buffer, options) {
|
|
98
|
-
try {
|
|
99
|
-
const existingImage = await (0, canvas_1.loadImage)(buffer);
|
|
100
|
-
if (!existingImage)
|
|
101
|
-
throw new Error("Invalid image buffer. Make sure to pass a valid canvas buffer.");
|
|
102
|
-
const canvas = (0, canvas_1.createCanvas)(existingImage.width, existingImage.height);
|
|
103
|
-
const ctx = canvas.getContext("2d");
|
|
104
|
-
ctx.drawImage(existingImage, 0, 0);
|
|
105
|
-
(0, utils_1.customLines)(ctx, options);
|
|
106
|
-
return canvas.toBuffer("image/png");
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
console.error("Error creating custom image:", error);
|
|
110
|
-
throw new Error("Failed to create custom image");
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async crop(data) {
|
|
114
|
-
}
|
|
115
|
-
async createGIF(images, options) {
|
|
116
|
-
var _a, _b;
|
|
117
|
-
async function resizeImage(image, targetWidth, targetHeight) {
|
|
118
|
-
const canvas = (0, canvas_1.createCanvas)(targetWidth, targetHeight);
|
|
119
|
-
const ctx = canvas.getContext("2d");
|
|
120
|
-
ctx.drawImage(image, 0, 0, targetWidth, targetHeight);
|
|
121
|
-
return canvas;
|
|
122
|
-
}
|
|
123
|
-
function createOutputStream(outputFile) {
|
|
124
|
-
return fs_1.default.createWriteStream(outputFile);
|
|
125
|
-
}
|
|
126
|
-
function createBufferStream() {
|
|
127
|
-
const bufferStream = new stream_1.PassThrough();
|
|
128
|
-
const chunks = [];
|
|
129
|
-
bufferStream.on('data', (chunk) => {
|
|
130
|
-
chunks.push(chunk);
|
|
131
|
-
});
|
|
132
|
-
const customBufferStream = bufferStream;
|
|
133
|
-
customBufferStream.getBuffer = function () {
|
|
134
|
-
return Buffer.concat(chunks);
|
|
135
|
-
};
|
|
136
|
-
console.log(`buffer get: ${{ customBufferStream }}`);
|
|
137
|
-
return customBufferStream;
|
|
138
|
-
}
|
|
139
|
-
function validateOptions(options) {
|
|
140
|
-
if (options.outputFormat === "file" && !options.outputFile) {
|
|
141
|
-
throw new Error("Output file path is required when using file output format.");
|
|
142
|
-
}
|
|
143
|
-
if (options.repeat !== undefined &&
|
|
144
|
-
(typeof options.repeat !== "number" || options.repeat < 0)) {
|
|
145
|
-
throw new Error("Repeat must be a non-negative number or undefined.");
|
|
146
|
-
}
|
|
147
|
-
if (options.quality !== undefined &&
|
|
148
|
-
(typeof options.quality !== "number" ||
|
|
149
|
-
options.quality < 1 ||
|
|
150
|
-
options.quality > 20)) {
|
|
151
|
-
throw new Error("Quality must be a number between 1 and 20 or undefined.");
|
|
152
|
-
}
|
|
153
|
-
if (options.canvasSize) {
|
|
154
|
-
if (options.canvasSize.width !== undefined &&
|
|
155
|
-
(!Number.isInteger(options.canvasSize.width) ||
|
|
156
|
-
options.canvasSize.width <= 0)) {
|
|
157
|
-
throw new Error("Canvas width must be a positive integer or undefined.");
|
|
158
|
-
}
|
|
159
|
-
if (options.canvasSize.height !== undefined &&
|
|
160
|
-
(!Number.isInteger(options.canvasSize.height) ||
|
|
161
|
-
options.canvasSize.height <= 0)) {
|
|
162
|
-
throw new Error("Canvas height must be a positive integer or undefined.");
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (options.delay !== undefined &&
|
|
166
|
-
(!Number.isInteger(options.delay) || options.delay <= 0)) {
|
|
167
|
-
throw new Error("Delay must be a positive integer or undefined.");
|
|
168
|
-
}
|
|
169
|
-
if (options.watermark !== undefined &&
|
|
170
|
-
typeof options.watermark !== "boolean") {
|
|
171
|
-
throw new Error("Watermark must be a boolean or undefined.");
|
|
172
|
-
}
|
|
173
|
-
if (options.textOverlay !== undefined) {
|
|
174
|
-
if (!options.textOverlay.text ||
|
|
175
|
-
typeof options.textOverlay.text !== "string") {
|
|
176
|
-
throw new Error("Text overlay text is required and must be a string.");
|
|
177
|
-
}
|
|
178
|
-
if (options.textOverlay.fontName !== undefined &&
|
|
179
|
-
typeof options.textOverlay.fontName !== "string") {
|
|
180
|
-
throw new Error("Text overlay fontName must be a string or undefined.");
|
|
181
|
-
}
|
|
182
|
-
if (options.textOverlay.fontPath !== undefined &&
|
|
183
|
-
typeof options.textOverlay.fontPath !== "string") {
|
|
184
|
-
throw new Error("Text overlay fontPath must be a string or undefined.");
|
|
185
|
-
}
|
|
186
|
-
if (options.textOverlay.fontSize !== undefined &&
|
|
187
|
-
(!Number.isInteger(options.textOverlay.fontSize) ||
|
|
188
|
-
options.textOverlay.fontSize <= 0)) {
|
|
189
|
-
throw new Error("Text overlay fontSize must be a positive integer or undefined.");
|
|
190
|
-
}
|
|
191
|
-
if (options.textOverlay.fontColor !== undefined &&
|
|
192
|
-
typeof options.textOverlay.fontColor !== "string") {
|
|
193
|
-
throw new Error("Text overlay fontColor must be a string or undefined.");
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
function validateImageObject(imageObject) {
|
|
198
|
-
return (imageObject &&
|
|
199
|
-
typeof imageObject === "object" &&
|
|
200
|
-
"source" in imageObject &&
|
|
201
|
-
"isRemote" in imageObject);
|
|
202
|
-
}
|
|
203
|
-
function validateImages(images) {
|
|
204
|
-
if (!Array.isArray(images)) {
|
|
205
|
-
throw new Error('The "images" parameter must be an array.');
|
|
206
|
-
}
|
|
207
|
-
if (images.length === 0) {
|
|
208
|
-
throw new Error('The "images" array must contain at least one image object.');
|
|
209
|
-
}
|
|
210
|
-
for (const imageObject of images) {
|
|
211
|
-
if (!validateImageObject(imageObject)) {
|
|
212
|
-
throw new Error('Each image object must have "source" and "isRemote" properties.');
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
try {
|
|
217
|
-
validateOptions(options);
|
|
218
|
-
validateImages(images);
|
|
219
|
-
const canvasWidth = options.width || 1200;
|
|
220
|
-
const canvasHeight = options.height || 1200;
|
|
221
|
-
const encoder = new gifencoder_1.default(canvasWidth, canvasHeight);
|
|
222
|
-
const outputStream = options.outputFile
|
|
223
|
-
? createOutputStream(options.outputFile)
|
|
224
|
-
: createBufferStream();
|
|
225
|
-
encoder.createReadStream().pipe(outputStream);
|
|
226
|
-
encoder.start();
|
|
227
|
-
encoder.setRepeat(options.repeat || 0);
|
|
228
|
-
encoder.setQuality(options.quality || 10);
|
|
229
|
-
encoder.setDelay(options.delay || 3000);
|
|
230
|
-
const canvas = (0, canvas_1.createCanvas)(canvasWidth, canvasHeight);
|
|
231
|
-
const ctx = canvas.getContext("2d");
|
|
232
|
-
for (const imageInfo of images) {
|
|
233
|
-
const image = imageInfo.isRemote
|
|
234
|
-
? await (0, canvas_1.loadImage)(imageInfo.source)
|
|
235
|
-
: await (0, canvas_1.loadImage)(imageInfo.source);
|
|
236
|
-
const resizedImage = await resizeImage(image, canvasWidth, canvasHeight);
|
|
237
|
-
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
238
|
-
ctx.drawImage(resizedImage, 0, 0);
|
|
239
|
-
if ((_a = options.watermark) === null || _a === void 0 ? void 0 : _a.enable) {
|
|
240
|
-
const watermark = await (0, canvas_1.loadImage)((_b = options.watermark) === null || _b === void 0 ? void 0 : _b.url);
|
|
241
|
-
if (!watermark)
|
|
242
|
-
throw new Error("Invalid watermark url");
|
|
243
|
-
ctx.drawImage(watermark, 10, canvasHeight - watermark.height - 10);
|
|
244
|
-
}
|
|
245
|
-
if (options.textOverlay) {
|
|
246
|
-
const textOptions = options.textOverlay;
|
|
247
|
-
const fontPath = textOptions.fontPath;
|
|
248
|
-
const fontName = textOptions.fontName || "Arial";
|
|
249
|
-
const fontSize = textOptions.fontSize || 20;
|
|
250
|
-
const fontColor = textOptions.fontColor || "white";
|
|
251
|
-
const x = textOptions.x || 10;
|
|
252
|
-
const y = textOptions.y || 30;
|
|
253
|
-
if (fontPath) {
|
|
254
|
-
canvas_1.GlobalFonts.registerFromPath(path_1.default.join(options.basDir, fontPath), fontName);
|
|
255
|
-
}
|
|
256
|
-
ctx.font = `${fontSize}px ${fontName}`;
|
|
257
|
-
ctx.fillStyle = fontColor;
|
|
258
|
-
ctx.fillText(textOptions.text, x, y);
|
|
259
|
-
}
|
|
260
|
-
encoder.addFrame(ctx);
|
|
261
|
-
}
|
|
262
|
-
encoder.finish();
|
|
263
|
-
outputStream.end();
|
|
264
|
-
if (options.outputFormat === "file") {
|
|
265
|
-
if (!options.outputFile) {
|
|
266
|
-
throw new Error("Please provide a valid file path");
|
|
267
|
-
}
|
|
268
|
-
await new Promise((resolve) => outputStream.on("finish", resolve));
|
|
269
|
-
}
|
|
270
|
-
else if (options.outputFormat === "base64") {
|
|
271
|
-
outputStream.on("finish", () => {
|
|
272
|
-
});
|
|
273
|
-
if ('getBuffer' in outputStream) {
|
|
274
|
-
return outputStream.getBuffer().toString("base64");
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
throw new Error("outputStream does not have getBuffer method");
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
else if (options.outputFormat === "attachment") {
|
|
281
|
-
outputStream.on("finish", () => {
|
|
282
|
-
});
|
|
283
|
-
const gifStream = encoder.createReadStream();
|
|
284
|
-
return [{ attachment: gifStream, name: "gif.js" }];
|
|
285
|
-
}
|
|
286
|
-
else if (options.outputFormat === "buffer") {
|
|
287
|
-
outputStream.on("finish", () => {
|
|
288
|
-
});
|
|
289
|
-
if ('getBuffer' in outputStream) {
|
|
290
|
-
return outputStream.getBuffer();
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
throw new Error("outputStream does not have getBuffer method");
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
throw new Error("Error: Please provide a valid format: 'buffer', 'base64', 'attachment', or 'output/file/path'.");
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
catch (e) {
|
|
301
|
-
console.error(e.message);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
async resize(resizeOptions) {
|
|
305
|
-
return (0, utils_1.resizingImg)(resizeOptions);
|
|
306
|
-
}
|
|
307
|
-
async imgConverter(imagePath, newExtension) {
|
|
308
|
-
return (0, utils_1.converter)(imagePath, newExtension);
|
|
309
|
-
}
|
|
310
|
-
async processImage(imagePath, filters) {
|
|
311
|
-
return (0, utils_1.imgEffects)(imagePath, filters);
|
|
312
|
-
}
|
|
313
|
-
async colorsFilter(imagePath, filterColor) {
|
|
314
|
-
return (0, utils_1.applyColorFilters)(imagePath, filterColor);
|
|
315
|
-
}
|
|
316
|
-
async colorAnalysis(imagePath) {
|
|
317
|
-
return (0, utils_1.detectColors)(imagePath);
|
|
318
|
-
}
|
|
319
|
-
async colorsRemover(imagePath, colorToRemove) {
|
|
320
|
-
return (0, utils_1.removeColor)(imagePath, colorToRemove);
|
|
321
|
-
}
|
|
322
|
-
async removeBackground(imageURL, apiKey) {
|
|
323
|
-
return (0, utils_1.bgRemoval)(imageURL, apiKey);
|
|
324
|
-
}
|
|
325
|
-
async createChart(data, type) {
|
|
326
|
-
if (!data || Object.keys(data).length === 0) {
|
|
327
|
-
throw new Error('You need to provide datasets to create charts.');
|
|
328
|
-
}
|
|
329
|
-
if (!type || !type.chartNumber || !type.chartType) {
|
|
330
|
-
throw new Error('Type arguments are missing.');
|
|
331
|
-
}
|
|
332
|
-
const { chartType, chartNumber } = type;
|
|
333
|
-
switch (chartType.toLowerCase()) {
|
|
334
|
-
case 'bar':
|
|
335
|
-
switch (chartNumber) {
|
|
336
|
-
case 1:
|
|
337
|
-
return await (0, utils_1.verticalBarChart)(data);
|
|
338
|
-
case 2:
|
|
339
|
-
throw new Error('Type 2 is still under development.');
|
|
340
|
-
default:
|
|
341
|
-
throw new Error('Invalid chart number for chart type "bar".');
|
|
342
|
-
}
|
|
343
|
-
case 'line':
|
|
344
|
-
switch (chartNumber) {
|
|
345
|
-
case 1:
|
|
346
|
-
return await (0, utils_1.lineChart)(data);
|
|
347
|
-
case 2:
|
|
348
|
-
throw new Error('Type 2 is still under development.');
|
|
349
|
-
default:
|
|
350
|
-
throw new Error('Invalid chart number for chart type "line".');
|
|
351
|
-
}
|
|
352
|
-
case 'pie':
|
|
353
|
-
switch (chartNumber) {
|
|
354
|
-
case 1:
|
|
355
|
-
return await (0, utils_1.pieChart)(data);
|
|
356
|
-
case 2:
|
|
357
|
-
throw new Error('Type 2 is still under development.');
|
|
358
|
-
default:
|
|
359
|
-
throw new Error('Invalid chart number for chart type "pie".');
|
|
360
|
-
}
|
|
361
|
-
default:
|
|
362
|
-
throw new Error(`Unsupported chart type "${chartType}".`);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
async cropImage(options) {
|
|
366
|
-
try {
|
|
367
|
-
if (!options.imageSource)
|
|
368
|
-
throw new Error('The "imageSource" option is needed. Please provide the path to the image to crop.');
|
|
369
|
-
if (!options.coordinates || options.coordinates.length < 3)
|
|
370
|
-
throw new Error('The "coordinates" option is needed. Please provide coordinates to crop the image.');
|
|
371
|
-
if (options.crop === 'outer') {
|
|
372
|
-
return await (0, utils_1.cropOuter)(options);
|
|
373
|
-
}
|
|
374
|
-
else if (options.crop === 'inner') {
|
|
375
|
-
return await (0, utils_1.cropInner)(options);
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
throw new Error('Invalid crop option. Please specify "inner" or "outer".');
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
catch (error) {
|
|
382
|
-
console.error('An error occurred:', error);
|
|
383
|
-
throw error;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
async drawImage(ctx, image) {
|
|
387
|
-
const { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient } = image;
|
|
388
|
-
if (!source || typeof x !== 'number' || typeof y !== 'number' || typeof width !== 'number' || typeof height !== 'number') {
|
|
389
|
-
throw new Error('Invalid image properties');
|
|
390
|
-
}
|
|
391
|
-
try {
|
|
392
|
-
let img;
|
|
393
|
-
const shapeNames = ['circle', 'square', 'triangle', 'pentagon', 'hexagon', 'heptagon', 'octagon', 'star', 'kite'];
|
|
394
|
-
const isShape = shapeNames.includes(source.toLowerCase());
|
|
395
|
-
if (source.startsWith('http')) {
|
|
396
|
-
const response = await axios_1.default.get(source, { responseType: 'arraybuffer' });
|
|
397
|
-
const imageBuffer = Buffer.from(response.data, 'binary');
|
|
398
|
-
img = await (0, canvas_1.loadImage)(imageBuffer);
|
|
399
|
-
}
|
|
400
|
-
else if (isShape) {
|
|
401
|
-
(0, utils_1.drawShape)(ctx, { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient });
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
const imagePath = path_1.default.join(process.cwd(), source);
|
|
405
|
-
try {
|
|
406
|
-
img = await (0, canvas_1.loadImage)(imagePath);
|
|
407
|
-
}
|
|
408
|
-
catch (e) {
|
|
409
|
-
throw new Error(`Error loading image: ${e.message}`);
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
if (img !== undefined) {
|
|
413
|
-
ctx.save();
|
|
414
|
-
(0, utils_1.applyRotation)(ctx, rotation || 0, x, y, width, height);
|
|
415
|
-
(0, utils_1.applyShadow)(ctx, shadow, x, y, width, height);
|
|
416
|
-
(0, utils_1.imageRadius)(ctx, img, x, y, width, height, borderRadius || 0);
|
|
417
|
-
(0, utils_1.applyStroke)(ctx, stroke, x, y, width, height);
|
|
418
|
-
ctx.restore();
|
|
419
|
-
}
|
|
420
|
-
else {
|
|
421
|
-
if (!isShape) {
|
|
422
|
-
throw new Error('Invalid image source or shape name');
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
catch (e) {
|
|
427
|
-
throw new Error(e.message);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
validHex(hexColor) {
|
|
431
|
-
const hexPattern = /^#[0-9a-fA-F]{6}$/;
|
|
432
|
-
if (!hexPattern.test(hexColor)) {
|
|
433
|
-
throw new Error("Invalid hexadecimal color format. It should be in the format '#RRGGBB'.");
|
|
434
|
-
}
|
|
435
|
-
return true;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
exports.ApexPainter = ApexPainter;
|
|
439
|
-
//# sourceMappingURL=ApexPainter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ApexPainter.js","sourceRoot":"","sources":["../../lib/canvas/ApexPainter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { CanvasConfig } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Draws a solid background color on the canvas.
|
|
4
|
-
* @param ctx The canvas rendering context.
|
|
5
|
-
* @param canvas The canvas configuration object.
|
|
6
|
-
* @returns A Promise that resolves once the background color is drawn.
|
|
7
|
-
*/
|
|
8
|
-
export declare function drawBackgroundColor(ctx: any, canvas: CanvasConfig): Promise<void>;
|
|
9
|
-
/**
|
|
10
|
-
* Draws a gradient background on the canvas.
|
|
11
|
-
* @param ctx The canvas rendering context.
|
|
12
|
-
* @param canvas The canvas configuration object.
|
|
13
|
-
* @returns A Promise that resolves once the gradient background is drawn.
|
|
14
|
-
*/
|
|
15
|
-
export declare function drawBackgroundGradient(ctx: any, canvas: CanvasConfig): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Draws a custom background image on the canvas.
|
|
18
|
-
* @param ctx The canvas rendering context.
|
|
19
|
-
* @param canvas The canvas configuration object.
|
|
20
|
-
* @returns A Promise that resolves once the custom background image is drawn.
|
|
21
|
-
*/
|
|
22
|
-
export declare function customBackground(ctx: any, canvas: CanvasConfig): Promise<void>;
|
|
23
|
-
//# sourceMappingURL=bg.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bg.d.ts","sourceRoot":"","sources":["../../../lib/canvas/utils/bg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1F;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBpF"}
|
package/dist/canvas/utils/bg.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.customBackground = exports.drawBackgroundGradient = exports.drawBackgroundColor = void 0;
|
|
7
|
-
const canvas_1 = require("@napi-rs/canvas");
|
|
8
|
-
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const fs_1 = __importDefault(require("fs"));
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
/**
|
|
12
|
-
* Draws a solid background color on the canvas.
|
|
13
|
-
* @param ctx The canvas rendering context.
|
|
14
|
-
* @param canvas The canvas configuration object.
|
|
15
|
-
* @returns A Promise that resolves once the background color is drawn.
|
|
16
|
-
*/
|
|
17
|
-
async function drawBackgroundColor(ctx, canvas) {
|
|
18
|
-
if (canvas.colorBg !== 'transparent') {
|
|
19
|
-
ctx.fillStyle = canvas.colorBg;
|
|
20
|
-
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.drawBackgroundColor = drawBackgroundColor;
|
|
24
|
-
/**
|
|
25
|
-
* Draws a gradient background on the canvas.
|
|
26
|
-
* @param ctx The canvas rendering context.
|
|
27
|
-
* @param canvas The canvas configuration object.
|
|
28
|
-
* @returns A Promise that resolves once the gradient background is drawn.
|
|
29
|
-
*/
|
|
30
|
-
async function drawBackgroundGradient(ctx, canvas) {
|
|
31
|
-
if (canvas.gradientBg) {
|
|
32
|
-
if (!canvas.gradientBg.colors || canvas.gradientBg.colors.length === 0) {
|
|
33
|
-
throw new Error('You need to provide colors for the gradient.');
|
|
34
|
-
}
|
|
35
|
-
const gradient = ctx.createLinearGradient(canvas.gradientBg.startX, canvas.gradientBg.startY, canvas.gradientBg.endX, canvas.gradientBg.endY);
|
|
36
|
-
for (const { stop, color } of canvas.gradientBg.colors) {
|
|
37
|
-
gradient.addColorStop(stop, color);
|
|
38
|
-
}
|
|
39
|
-
ctx.fillStyle = gradient;
|
|
40
|
-
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.drawBackgroundGradient = drawBackgroundGradient;
|
|
44
|
-
/**
|
|
45
|
-
* Draws a custom background image on the canvas.
|
|
46
|
-
* @param ctx The canvas rendering context.
|
|
47
|
-
* @param canvas The canvas configuration object.
|
|
48
|
-
* @returns A Promise that resolves once the custom background image is drawn.
|
|
49
|
-
*/
|
|
50
|
-
async function customBackground(ctx, canvas) {
|
|
51
|
-
if (canvas.customBg) {
|
|
52
|
-
try {
|
|
53
|
-
let imageBuffer;
|
|
54
|
-
let imagePath;
|
|
55
|
-
if (canvas.customBg.startsWith('http')) {
|
|
56
|
-
const response = await axios_1.default.get(canvas.customBg, { responseType: 'arraybuffer' });
|
|
57
|
-
imageBuffer = Buffer.from(response.data, 'binary');
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
imagePath = path_1.default.join(process.cwd(), canvas.customBg);
|
|
61
|
-
imageBuffer = fs_1.default.readFileSync(imagePath);
|
|
62
|
-
}
|
|
63
|
-
const image = await (0, canvas_1.loadImage)(imageBuffer);
|
|
64
|
-
canvas.width = image.width;
|
|
65
|
-
canvas.height = image.height;
|
|
66
|
-
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
console.error('Error loading custom background image:', error);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.customBackground = customBackground;
|
|
74
|
-
//# sourceMappingURL=bg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bg.js","sourceRoot":"","sources":["../../../lib/canvas/utils/bg.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA4C;AAE5C,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AAExB;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CAAC,GAAQ,EAAE,MAAoB;IACpE,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QACnC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;AACL,CAAC;AALD,kDAKC;AAED;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB,CAAC,GAAQ,EAAE,MAAoB;IACvE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CACrC,MAAM,CAAC,UAAU,CAAC,MAAM,EACxB,MAAM,CAAC,UAAU,CAAC,MAAM,EACxB,MAAM,CAAC,UAAU,CAAC,IAAI,EACtB,MAAM,CAAC,UAAU,CAAC,IAAI,CACzB,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACrD,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;AACL,CAAC;AApBD,wDAoBC;AAED;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAAC,GAAQ,EAAE,MAAoB;IACjE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,WAAmB,CAAC;YACxB,IAAI,SAAiB,CAAC;YAEtB,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;gBACnF,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtD,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAS,EAAC,WAAW,CAAC,CAAC;YAE3C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAE7B,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;AACL,CAAC;AAzBD,4CAyBC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { barChart_1, PieChartData, LineChartConfig, DataPoint } from "./types";
|
|
3
|
-
export declare function verticalBarChart(data: barChart_1): Promise<Buffer | undefined>;
|
|
4
|
-
export declare function pieChart(pieChartData: PieChartData): Promise<Buffer>;
|
|
5
|
-
export declare function lineChart(data: {
|
|
6
|
-
data: DataPoint[][];
|
|
7
|
-
lineConfig: LineChartConfig;
|
|
8
|
-
}): Promise<Buffer>;
|
|
9
|
-
//# sourceMappingURL=charts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../lib/canvas/utils/charts.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAmD,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAOhI,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,+BAgJtD;AAwID,wBAAsB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB1E;AAKD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,UAAU,EAAE,eAAe,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiN3G"}
|