apexify.js 5.1.1 → 5.2.0

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 (236) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/README.md +248 -1105
  3. package/dist/cjs/Canvas/ApexPainter.d.ts +182 -204
  4. package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
  5. package/dist/cjs/Canvas/ApexPainter.js +482 -1286
  6. package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
  7. package/dist/cjs/Canvas/extended/CanvasCreator.d.ts +33 -0
  8. package/dist/cjs/Canvas/extended/CanvasCreator.d.ts.map +1 -0
  9. package/dist/cjs/Canvas/extended/CanvasCreator.js +223 -0
  10. package/dist/cjs/Canvas/extended/CanvasCreator.js.map +1 -0
  11. package/dist/cjs/Canvas/extended/ChartCreator.d.ts +26 -0
  12. package/dist/cjs/Canvas/extended/ChartCreator.d.ts.map +1 -0
  13. package/dist/cjs/Canvas/extended/ChartCreator.js +50 -0
  14. package/dist/cjs/Canvas/extended/ChartCreator.js.map +1 -0
  15. package/dist/cjs/Canvas/extended/GIFCreator.d.ts +43 -0
  16. package/dist/cjs/Canvas/extended/GIFCreator.d.ts.map +1 -0
  17. package/dist/cjs/Canvas/extended/GIFCreator.js +157 -0
  18. package/dist/cjs/Canvas/extended/GIFCreator.js.map +1 -0
  19. package/dist/cjs/Canvas/extended/ImageCreator.d.ts +83 -0
  20. package/dist/cjs/Canvas/extended/ImageCreator.d.ts.map +1 -0
  21. package/dist/cjs/Canvas/extended/ImageCreator.js +479 -0
  22. package/dist/cjs/Canvas/extended/ImageCreator.js.map +1 -0
  23. package/dist/cjs/Canvas/extended/TextCreator.d.ts +35 -0
  24. package/dist/cjs/Canvas/extended/TextCreator.d.ts.map +1 -0
  25. package/dist/cjs/Canvas/extended/TextCreator.js +98 -0
  26. package/dist/cjs/Canvas/extended/TextCreator.js.map +1 -0
  27. package/dist/cjs/Canvas/extended/VideoCreator.d.ts +370 -0
  28. package/dist/cjs/Canvas/extended/VideoCreator.d.ts.map +1 -0
  29. package/dist/cjs/Canvas/extended/VideoCreator.js +478 -0
  30. package/dist/cjs/Canvas/extended/VideoCreator.js.map +1 -0
  31. package/dist/cjs/Canvas/utils/Background/bg.d.ts +1 -1
  32. package/dist/cjs/Canvas/utils/Background/bg.d.ts.map +1 -1
  33. package/dist/cjs/Canvas/utils/Background/bg.js +43 -7
  34. package/dist/cjs/Canvas/utils/Background/bg.js.map +1 -1
  35. package/dist/cjs/Canvas/utils/Charts/barchart.d.ts +230 -0
  36. package/dist/cjs/Canvas/utils/Charts/barchart.d.ts.map +1 -0
  37. package/dist/cjs/Canvas/utils/Charts/barchart.js +1891 -0
  38. package/dist/cjs/Canvas/utils/Charts/barchart.js.map +1 -0
  39. package/dist/cjs/Canvas/utils/Charts/comparisonchart.d.ts +103 -0
  40. package/dist/cjs/Canvas/utils/Charts/comparisonchart.d.ts.map +1 -0
  41. package/dist/cjs/Canvas/utils/Charts/comparisonchart.js +368 -0
  42. package/dist/cjs/Canvas/utils/Charts/comparisonchart.js.map +1 -0
  43. package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.d.ts +178 -0
  44. package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.d.ts.map +1 -0
  45. package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.js +1389 -0
  46. package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.js.map +1 -0
  47. package/dist/cjs/Canvas/utils/Charts/index.d.ts +45 -0
  48. package/dist/cjs/Canvas/utils/Charts/index.d.ts.map +1 -0
  49. package/dist/cjs/Canvas/utils/Charts/index.js +17 -0
  50. package/dist/cjs/Canvas/utils/Charts/index.js.map +1 -0
  51. package/dist/cjs/Canvas/utils/Charts/linechart.d.ts +216 -0
  52. package/dist/cjs/Canvas/utils/Charts/linechart.d.ts.map +1 -0
  53. package/dist/cjs/Canvas/utils/Charts/linechart.js +1761 -0
  54. package/dist/cjs/Canvas/utils/Charts/linechart.js.map +1 -0
  55. package/dist/cjs/Canvas/utils/Charts/piechart.d.ts +167 -0
  56. package/dist/cjs/Canvas/utils/Charts/piechart.d.ts.map +1 -0
  57. package/dist/cjs/Canvas/utils/Charts/piechart.js +794 -0
  58. package/dist/cjs/Canvas/utils/Charts/piechart.js.map +1 -0
  59. package/dist/cjs/Canvas/utils/General/batchOperations.d.ts.map +1 -1
  60. package/dist/cjs/Canvas/utils/General/batchOperations.js +3 -4
  61. package/dist/cjs/Canvas/utils/General/batchOperations.js.map +1 -1
  62. package/dist/cjs/Canvas/utils/General/general functions.d.ts.map +1 -1
  63. package/dist/cjs/Canvas/utils/General/general functions.js +62 -33
  64. package/dist/cjs/Canvas/utils/General/general functions.js.map +1 -1
  65. package/dist/cjs/Canvas/utils/General/imageStitching.d.ts.map +1 -1
  66. package/dist/cjs/Canvas/utils/General/imageStitching.js +3 -6
  67. package/dist/cjs/Canvas/utils/General/imageStitching.js.map +1 -1
  68. package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  69. package/dist/cjs/Canvas/utils/Image/imageMasking.js +5 -12
  70. package/dist/cjs/Canvas/utils/Image/imageMasking.js.map +1 -1
  71. package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts +4 -4
  72. package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  73. package/dist/cjs/Canvas/utils/Image/imageProperties.js +44 -9
  74. package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
  75. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts +5 -0
  76. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
  77. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +48 -5
  78. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
  79. package/dist/cjs/Canvas/utils/Texts/textProperties.d.ts +1 -1
  80. package/dist/cjs/Canvas/utils/Texts/textProperties.d.ts.map +1 -1
  81. package/dist/cjs/Canvas/utils/Texts/textProperties.js +48 -5
  82. package/dist/cjs/Canvas/utils/Texts/textProperties.js.map +1 -1
  83. package/dist/cjs/Canvas/utils/Video/videoHelpers.d.ts +489 -0
  84. package/dist/cjs/Canvas/utils/Video/videoHelpers.d.ts.map +1 -0
  85. package/dist/cjs/Canvas/utils/Video/videoHelpers.js +1835 -0
  86. package/dist/cjs/Canvas/utils/Video/videoHelpers.js.map +1 -0
  87. package/dist/cjs/Canvas/utils/errorUtils.d.ts +15 -0
  88. package/dist/cjs/Canvas/utils/errorUtils.d.ts.map +1 -0
  89. package/dist/cjs/Canvas/utils/errorUtils.js +26 -0
  90. package/dist/cjs/Canvas/utils/errorUtils.js.map +1 -0
  91. package/dist/cjs/Canvas/utils/types.d.ts +17 -178
  92. package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
  93. package/dist/cjs/Canvas/utils/types.js.map +1 -1
  94. package/dist/cjs/Canvas/utils/utils.d.ts +4 -3
  95. package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
  96. package/dist/cjs/Canvas/utils/utils.js +40 -6
  97. package/dist/cjs/Canvas/utils/utils.js.map +1 -1
  98. package/dist/cjs/index.d.ts +1 -8
  99. package/dist/cjs/index.d.ts.map +1 -1
  100. package/dist/cjs/index.js +14 -45
  101. package/dist/cjs/index.js.map +1 -1
  102. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  103. package/dist/esm/Canvas/ApexPainter.d.ts +182 -204
  104. package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
  105. package/dist/esm/Canvas/ApexPainter.js +482 -1286
  106. package/dist/esm/Canvas/ApexPainter.js.map +1 -1
  107. package/dist/esm/Canvas/extended/CanvasCreator.d.ts +33 -0
  108. package/dist/esm/Canvas/extended/CanvasCreator.d.ts.map +1 -0
  109. package/dist/esm/Canvas/extended/CanvasCreator.js +223 -0
  110. package/dist/esm/Canvas/extended/CanvasCreator.js.map +1 -0
  111. package/dist/esm/Canvas/extended/ChartCreator.d.ts +26 -0
  112. package/dist/esm/Canvas/extended/ChartCreator.d.ts.map +1 -0
  113. package/dist/esm/Canvas/extended/ChartCreator.js +50 -0
  114. package/dist/esm/Canvas/extended/ChartCreator.js.map +1 -0
  115. package/dist/esm/Canvas/extended/GIFCreator.d.ts +43 -0
  116. package/dist/esm/Canvas/extended/GIFCreator.d.ts.map +1 -0
  117. package/dist/esm/Canvas/extended/GIFCreator.js +157 -0
  118. package/dist/esm/Canvas/extended/GIFCreator.js.map +1 -0
  119. package/dist/esm/Canvas/extended/ImageCreator.d.ts +83 -0
  120. package/dist/esm/Canvas/extended/ImageCreator.d.ts.map +1 -0
  121. package/dist/esm/Canvas/extended/ImageCreator.js +479 -0
  122. package/dist/esm/Canvas/extended/ImageCreator.js.map +1 -0
  123. package/dist/esm/Canvas/extended/TextCreator.d.ts +35 -0
  124. package/dist/esm/Canvas/extended/TextCreator.d.ts.map +1 -0
  125. package/dist/esm/Canvas/extended/TextCreator.js +98 -0
  126. package/dist/esm/Canvas/extended/TextCreator.js.map +1 -0
  127. package/dist/esm/Canvas/extended/VideoCreator.d.ts +370 -0
  128. package/dist/esm/Canvas/extended/VideoCreator.d.ts.map +1 -0
  129. package/dist/esm/Canvas/extended/VideoCreator.js +478 -0
  130. package/dist/esm/Canvas/extended/VideoCreator.js.map +1 -0
  131. package/dist/esm/Canvas/utils/Background/bg.d.ts +1 -1
  132. package/dist/esm/Canvas/utils/Background/bg.d.ts.map +1 -1
  133. package/dist/esm/Canvas/utils/Background/bg.js +43 -7
  134. package/dist/esm/Canvas/utils/Background/bg.js.map +1 -1
  135. package/dist/esm/Canvas/utils/Charts/barchart.d.ts +230 -0
  136. package/dist/esm/Canvas/utils/Charts/barchart.d.ts.map +1 -0
  137. package/dist/esm/Canvas/utils/Charts/barchart.js +1891 -0
  138. package/dist/esm/Canvas/utils/Charts/barchart.js.map +1 -0
  139. package/dist/esm/Canvas/utils/Charts/comparisonchart.d.ts +103 -0
  140. package/dist/esm/Canvas/utils/Charts/comparisonchart.d.ts.map +1 -0
  141. package/dist/esm/Canvas/utils/Charts/comparisonchart.js +368 -0
  142. package/dist/esm/Canvas/utils/Charts/comparisonchart.js.map +1 -0
  143. package/dist/esm/Canvas/utils/Charts/horizontalbarchart.d.ts +178 -0
  144. package/dist/esm/Canvas/utils/Charts/horizontalbarchart.d.ts.map +1 -0
  145. package/dist/esm/Canvas/utils/Charts/horizontalbarchart.js +1389 -0
  146. package/dist/esm/Canvas/utils/Charts/horizontalbarchart.js.map +1 -0
  147. package/dist/esm/Canvas/utils/Charts/index.d.ts +45 -0
  148. package/dist/esm/Canvas/utils/Charts/index.d.ts.map +1 -0
  149. package/dist/esm/Canvas/utils/Charts/index.js +17 -0
  150. package/dist/esm/Canvas/utils/Charts/index.js.map +1 -0
  151. package/dist/esm/Canvas/utils/Charts/linechart.d.ts +216 -0
  152. package/dist/esm/Canvas/utils/Charts/linechart.d.ts.map +1 -0
  153. package/dist/esm/Canvas/utils/Charts/linechart.js +1761 -0
  154. package/dist/esm/Canvas/utils/Charts/linechart.js.map +1 -0
  155. package/dist/esm/Canvas/utils/Charts/piechart.d.ts +167 -0
  156. package/dist/esm/Canvas/utils/Charts/piechart.d.ts.map +1 -0
  157. package/dist/esm/Canvas/utils/Charts/piechart.js +794 -0
  158. package/dist/esm/Canvas/utils/Charts/piechart.js.map +1 -0
  159. package/dist/esm/Canvas/utils/General/batchOperations.d.ts.map +1 -1
  160. package/dist/esm/Canvas/utils/General/batchOperations.js +3 -4
  161. package/dist/esm/Canvas/utils/General/batchOperations.js.map +1 -1
  162. package/dist/esm/Canvas/utils/General/general functions.d.ts.map +1 -1
  163. package/dist/esm/Canvas/utils/General/general functions.js +62 -33
  164. package/dist/esm/Canvas/utils/General/general functions.js.map +1 -1
  165. package/dist/esm/Canvas/utils/General/imageStitching.d.ts.map +1 -1
  166. package/dist/esm/Canvas/utils/General/imageStitching.js +3 -6
  167. package/dist/esm/Canvas/utils/General/imageStitching.js.map +1 -1
  168. package/dist/esm/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  169. package/dist/esm/Canvas/utils/Image/imageMasking.js +5 -12
  170. package/dist/esm/Canvas/utils/Image/imageMasking.js.map +1 -1
  171. package/dist/esm/Canvas/utils/Image/imageProperties.d.ts +4 -4
  172. package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  173. package/dist/esm/Canvas/utils/Image/imageProperties.js +44 -9
  174. package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
  175. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts +5 -0
  176. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
  177. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +48 -5
  178. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
  179. package/dist/esm/Canvas/utils/Texts/textProperties.d.ts +1 -1
  180. package/dist/esm/Canvas/utils/Texts/textProperties.d.ts.map +1 -1
  181. package/dist/esm/Canvas/utils/Texts/textProperties.js +48 -5
  182. package/dist/esm/Canvas/utils/Texts/textProperties.js.map +1 -1
  183. package/dist/esm/Canvas/utils/Video/videoHelpers.d.ts +489 -0
  184. package/dist/esm/Canvas/utils/Video/videoHelpers.d.ts.map +1 -0
  185. package/dist/esm/Canvas/utils/Video/videoHelpers.js +1835 -0
  186. package/dist/esm/Canvas/utils/Video/videoHelpers.js.map +1 -0
  187. package/dist/esm/Canvas/utils/errorUtils.d.ts +15 -0
  188. package/dist/esm/Canvas/utils/errorUtils.d.ts.map +1 -0
  189. package/dist/esm/Canvas/utils/errorUtils.js +26 -0
  190. package/dist/esm/Canvas/utils/errorUtils.js.map +1 -0
  191. package/dist/esm/Canvas/utils/types.d.ts +17 -178
  192. package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
  193. package/dist/esm/Canvas/utils/types.js.map +1 -1
  194. package/dist/esm/Canvas/utils/utils.d.ts +4 -3
  195. package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
  196. package/dist/esm/Canvas/utils/utils.js +40 -6
  197. package/dist/esm/Canvas/utils/utils.js.map +1 -1
  198. package/dist/esm/index.d.ts +1 -8
  199. package/dist/esm/index.d.ts.map +1 -1
  200. package/dist/esm/index.js +14 -45
  201. package/dist/esm/index.js.map +1 -1
  202. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  203. package/package.json +234 -198
  204. package/dist/cjs/Canvas/utils/Charts/charts.d.ts +0 -13
  205. package/dist/cjs/Canvas/utils/Charts/charts.d.ts.map +0 -1
  206. package/dist/cjs/Canvas/utils/Charts/charts.js +0 -466
  207. package/dist/cjs/Canvas/utils/Charts/charts.js.map +0 -1
  208. package/dist/esm/Canvas/utils/Charts/charts.d.ts +0 -13
  209. package/dist/esm/Canvas/utils/Charts/charts.d.ts.map +0 -1
  210. package/dist/esm/Canvas/utils/Charts/charts.js +0 -466
  211. package/dist/esm/Canvas/utils/Charts/charts.js.map +0 -1
  212. package/lib/Canvas/ApexPainter.ts +0 -5414
  213. package/lib/Canvas/utils/Background/bg.ts +0 -285
  214. package/lib/Canvas/utils/Charts/charts.ts +0 -548
  215. package/lib/Canvas/utils/Custom/advancedLines.ts +0 -387
  216. package/lib/Canvas/utils/Custom/customLines.ts +0 -206
  217. package/lib/Canvas/utils/General/batchOperations.ts +0 -103
  218. package/lib/Canvas/utils/General/conversion.ts +0 -34
  219. package/lib/Canvas/utils/General/general functions.ts +0 -726
  220. package/lib/Canvas/utils/General/imageCompression.ts +0 -316
  221. package/lib/Canvas/utils/General/imageStitching.ts +0 -252
  222. package/lib/Canvas/utils/Image/imageEffects.ts +0 -175
  223. package/lib/Canvas/utils/Image/imageFilters.ts +0 -356
  224. package/lib/Canvas/utils/Image/imageMasking.ts +0 -335
  225. package/lib/Canvas/utils/Image/imageProperties.ts +0 -587
  226. package/lib/Canvas/utils/Image/professionalImageFilters.ts +0 -391
  227. package/lib/Canvas/utils/Image/simpleProfessionalFilters.ts +0 -229
  228. package/lib/Canvas/utils/Patterns/enhancedPatternRenderer.ts +0 -455
  229. package/lib/Canvas/utils/Shapes/shapes.ts +0 -528
  230. package/lib/Canvas/utils/Texts/enhancedTextRenderer.ts +0 -716
  231. package/lib/Canvas/utils/Texts/textPathRenderer.ts +0 -320
  232. package/lib/Canvas/utils/Texts/textProperties.ts +0 -231
  233. package/lib/Canvas/utils/types.ts +0 -983
  234. package/lib/Canvas/utils/utils.ts +0 -135
  235. package/lib/index.ts +0 -81
  236. package/lib/utils.ts +0 -5
@@ -0,0 +1,33 @@
1
+ import type { CanvasConfig } from "../utils/utils";
2
+ export interface CanvasResults {
3
+ buffer: Buffer;
4
+ canvas: CanvasConfig;
5
+ }
6
+ /**
7
+ * Extended class for canvas creation functionality
8
+ */
9
+ export declare class CanvasCreator {
10
+ /**
11
+ * Extracts a video frame (helper method - will be passed from ApexPainter)
12
+ */
13
+ private extractVideoFrame?;
14
+ /**
15
+ * Sets the extractVideoFrame method (dependency injection)
16
+ */
17
+ setExtractVideoFrame(method: (videoSource: string | Buffer, frameNumber?: number, timeSeconds?: number, outputFormat?: 'jpg' | 'png', quality?: number) => Promise<Buffer | null>): void;
18
+ /**
19
+ * Validates canvas configuration.
20
+ * @private
21
+ * @param canvas - Canvas configuration to validate
22
+ */
23
+ private validateCanvasConfig;
24
+ /**
25
+ * Creates a canvas with the given configuration.
26
+ * Applies rotation, shadow, border effects, background, and stroke.
27
+ *
28
+ * @param canvas - Canvas configuration object
29
+ * @returns Promise<CanvasResults> - Object containing canvas buffer and configuration
30
+ */
31
+ createCanvas(canvas: CanvasConfig): Promise<CanvasResults>;
32
+ }
33
+ //# sourceMappingURL=CanvasCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasCreator.d.ts","sourceRoot":"","sources":["../../../../lib/Canvas/extended/CanvasCreator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgBnD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAC,CAME;IAE5B;;OAEG;IACH,oBAAoB,CAClB,MAAM,EAAE,CACN,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,EAC5B,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC1B,IAAI;IAIP;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA2LjE"}
@@ -0,0 +1,223 @@
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.CanvasCreator = void 0;
7
+ const canvas_1 = require("@napi-rs/canvas");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const errorUtils_1 = require("../utils/errorUtils");
11
+ const utils_1 = require("../utils/utils");
12
+ const enhancedPatternRenderer_1 = require("../utils/Patterns/enhancedPatternRenderer");
13
+ const simpleProfessionalFilters_1 = require("../utils/Image/simpleProfessionalFilters");
14
+ /**
15
+ * Extended class for canvas creation functionality
16
+ */
17
+ class CanvasCreator {
18
+ /**
19
+ * Extracts a video frame (helper method - will be passed from ApexPainter)
20
+ */
21
+ extractVideoFrame;
22
+ /**
23
+ * Sets the extractVideoFrame method (dependency injection)
24
+ */
25
+ setExtractVideoFrame(method) {
26
+ this.extractVideoFrame = method;
27
+ }
28
+ /**
29
+ * Validates canvas configuration.
30
+ * @private
31
+ * @param canvas - Canvas configuration to validate
32
+ */
33
+ validateCanvasConfig(canvas) {
34
+ if (!canvas) {
35
+ throw new Error("createCanvas: canvas configuration is required.");
36
+ }
37
+ if (canvas.width !== undefined && (typeof canvas.width !== 'number' || canvas.width <= 0)) {
38
+ throw new Error("createCanvas: width must be a positive number.");
39
+ }
40
+ if (canvas.height !== undefined && (typeof canvas.height !== 'number' || canvas.height <= 0)) {
41
+ throw new Error("createCanvas: height must be a positive number.");
42
+ }
43
+ if (canvas.opacity !== undefined && (typeof canvas.opacity !== 'number' || canvas.opacity < 0 || canvas.opacity > 1)) {
44
+ throw new Error("createCanvas: opacity must be a number between 0 and 1.");
45
+ }
46
+ if (canvas.zoom?.scale !== undefined && (typeof canvas.zoom.scale !== 'number' || canvas.zoom.scale <= 0)) {
47
+ throw new Error("createCanvas: zoom.scale must be a positive number.");
48
+ }
49
+ }
50
+ /**
51
+ * Creates a canvas with the given configuration.
52
+ * Applies rotation, shadow, border effects, background, and stroke.
53
+ *
54
+ * @param canvas - Canvas configuration object
55
+ * @returns Promise<CanvasResults> - Object containing canvas buffer and configuration
56
+ */
57
+ async createCanvas(canvas) {
58
+ try {
59
+ // Validate canvas configuration
60
+ this.validateCanvasConfig(canvas);
61
+ // Handle inherit sizing
62
+ if (canvas.customBg?.inherit) {
63
+ let p = canvas.customBg.source;
64
+ if (!/^https?:\/\//i.test(p))
65
+ p = path_1.default.join(process.cwd(), p);
66
+ try {
67
+ const img = await (0, canvas_1.loadImage)(p);
68
+ canvas.width = img.width;
69
+ canvas.height = img.height;
70
+ }
71
+ catch (e) {
72
+ const errorMessage = e instanceof Error ? e.message : String(e);
73
+ throw new Error(`createCanvas: Failed to load image for inherit sizing: ${errorMessage}`);
74
+ }
75
+ }
76
+ // Handle video background inherit sizing
77
+ if (canvas.videoBg && this.extractVideoFrame) {
78
+ try {
79
+ const frameBuffer = await this.extractVideoFrame(canvas.videoBg.source, canvas.videoBg.frame ?? 0, canvas.videoBg.time, canvas.videoBg.format || 'jpg', canvas.videoBg.quality || 2);
80
+ if (frameBuffer) {
81
+ const img = await (0, canvas_1.loadImage)(frameBuffer);
82
+ if (!canvas.width)
83
+ canvas.width = img.width;
84
+ if (!canvas.height)
85
+ canvas.height = img.height;
86
+ }
87
+ }
88
+ catch (e) {
89
+ console.warn('createCanvas: Failed to extract video frame for sizing, using defaults');
90
+ }
91
+ }
92
+ // Use final width/height after inherit
93
+ const width = canvas.width ?? 500;
94
+ const height = canvas.height ?? 500;
95
+ const { x = 0, y = 0, rotation = 0, borderRadius = 0, borderPosition = 'all', opacity = 1, colorBg, customBg, gradientBg, videoBg, patternBg, noiseBg, blendMode, zoom, stroke, shadow, blur } = canvas;
96
+ // Validate background configuration
97
+ const bgSources = [
98
+ canvas.colorBg ? 'colorBg' : null,
99
+ canvas.gradientBg ? 'gradientBg' : null,
100
+ canvas.customBg ? 'customBg' : null
101
+ ].filter(Boolean);
102
+ if (bgSources.length > 1) {
103
+ throw new Error(`createCanvas: only one of colorBg, gradientBg, or customBg can be used. You provided: ${bgSources.join(', ')}`);
104
+ }
105
+ const cv = (0, canvas_1.createCanvas)(width, height);
106
+ const ctx = (0, errorUtils_1.getCanvasContext)(cv);
107
+ ctx.globalAlpha = opacity;
108
+ // ---- BACKGROUND (clipped) ----
109
+ ctx.save();
110
+ (0, utils_1.applyRotation)(ctx, rotation, x, y, width, height);
111
+ (0, utils_1.buildPath)(ctx, x, y, width, height, borderRadius, borderPosition);
112
+ ctx.clip();
113
+ (0, utils_1.applyCanvasZoom)(ctx, width, height, zoom);
114
+ ctx.translate(x, y);
115
+ if (typeof blendMode === 'string') {
116
+ ctx.globalCompositeOperation = blendMode;
117
+ }
118
+ // Draw background - videoBg takes priority, then customBg, then gradientBg, then colorBg
119
+ if (videoBg && this.extractVideoFrame) {
120
+ try {
121
+ // For videoBg, always use PNG format to ensure compatibility with loadImage
122
+ const frameBuffer = await this.extractVideoFrame(videoBg.source, videoBg.frame ?? 0, videoBg.time, 'png', // Force PNG format for videoBg
123
+ 2);
124
+ if (frameBuffer && frameBuffer.length > 0) {
125
+ let videoImg;
126
+ try {
127
+ videoImg = await (0, canvas_1.loadImage)(frameBuffer);
128
+ }
129
+ catch (bufferError) {
130
+ // If loading from buffer fails, try saving to temp file and loading from file
131
+ const tempFramePath = path_1.default.join(process.cwd(), '.temp-frames', `video-bg-temp-${Date.now()}.png`);
132
+ const frameDir = path_1.default.dirname(tempFramePath);
133
+ if (!fs_1.default.existsSync(frameDir)) {
134
+ fs_1.default.mkdirSync(frameDir, { recursive: true });
135
+ }
136
+ fs_1.default.writeFileSync(tempFramePath, frameBuffer);
137
+ videoImg = await (0, canvas_1.loadImage)(tempFramePath);
138
+ // Cleanup temp file after loading
139
+ if (fs_1.default.existsSync(tempFramePath)) {
140
+ fs_1.default.unlinkSync(tempFramePath);
141
+ }
142
+ }
143
+ if (videoImg && videoImg.width > 0 && videoImg.height > 0) {
144
+ ctx.globalAlpha = videoBg.opacity ?? 1;
145
+ ctx.drawImage(videoImg, 0, 0, width, height);
146
+ ctx.globalAlpha = opacity;
147
+ }
148
+ else {
149
+ throw new Error(`Extracted video frame has invalid dimensions: ${videoImg?.width}x${videoImg?.height}`);
150
+ }
151
+ }
152
+ else {
153
+ throw new Error('Frame extraction returned empty buffer');
154
+ }
155
+ }
156
+ catch (e) {
157
+ const errorMsg = e instanceof Error ? e.message : 'Unknown error';
158
+ if (errorMsg.includes('FFMPEG NOT FOUND') || errorMsg.includes('FFmpeg')) {
159
+ throw e;
160
+ }
161
+ throw new Error(`createCanvas: videoBg extraction failed: ${errorMsg}`);
162
+ }
163
+ }
164
+ else if (customBg) {
165
+ // Draw custom background with filters and opacity support
166
+ await (0, utils_1.customBackground)(ctx, { ...canvas, blur });
167
+ // Apply filters to background if specified
168
+ if (customBg.filters && customBg.filters.length > 0) {
169
+ const tempCanvas = (0, canvas_1.createCanvas)(width, height);
170
+ const tempCtx = tempCanvas.getContext('2d');
171
+ if (tempCtx) {
172
+ tempCtx.drawImage(cv, 0, 0);
173
+ await (0, simpleProfessionalFilters_1.applySimpleProfessionalFilters)(tempCtx, customBg.filters, width, height);
174
+ ctx.clearRect(0, 0, width, height);
175
+ ctx.globalAlpha = customBg.opacity ?? 1;
176
+ ctx.drawImage(tempCanvas, 0, 0);
177
+ ctx.globalAlpha = opacity;
178
+ }
179
+ }
180
+ else if (customBg.opacity !== undefined && customBg.opacity !== 1) {
181
+ ctx.globalAlpha = customBg.opacity;
182
+ await (0, utils_1.customBackground)(ctx, { ...canvas, blur });
183
+ ctx.globalAlpha = opacity;
184
+ }
185
+ else {
186
+ await (0, utils_1.customBackground)(ctx, { ...canvas, blur });
187
+ }
188
+ }
189
+ else if (gradientBg) {
190
+ await (0, utils_1.drawBackgroundGradient)(ctx, { ...canvas, blur });
191
+ }
192
+ else {
193
+ // Default to black background if no background is specified
194
+ await (0, utils_1.drawBackgroundColor)(ctx, { ...canvas, blur, colorBg: colorBg ?? '#000' });
195
+ }
196
+ if (patternBg)
197
+ await enhancedPatternRenderer_1.EnhancedPatternRenderer.renderPattern(ctx, cv, patternBg);
198
+ if (noiseBg)
199
+ (0, utils_1.applyNoise)(ctx, width, height, noiseBg.intensity ?? 0.05);
200
+ ctx.restore();
201
+ // Apply shadow effect
202
+ if (shadow) {
203
+ ctx.save();
204
+ (0, utils_1.buildPath)(ctx, x, y, width, height, borderRadius, borderPosition);
205
+ (0, utils_1.applyShadow)(ctx, shadow, x, y, width, height);
206
+ ctx.restore();
207
+ }
208
+ // Apply stroke effect
209
+ if (stroke) {
210
+ ctx.save();
211
+ (0, utils_1.buildPath)(ctx, x, y, width, height, borderRadius, borderPosition);
212
+ (0, utils_1.applyStroke)(ctx, stroke, x, y, width, height);
213
+ ctx.restore();
214
+ }
215
+ return { buffer: cv.toBuffer('image/png'), canvas };
216
+ }
217
+ catch (error) {
218
+ throw new Error(`createCanvas failed: ${(0, errorUtils_1.getErrorMessage)(error)}`);
219
+ }
220
+ }
221
+ }
222
+ exports.CanvasCreator = CanvasCreator;
223
+ //# sourceMappingURL=CanvasCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasCreator.js","sourceRoot":"","sources":["../../../../lib/Canvas/extended/CanvasCreator.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAyE;AACzE,gDAAwB;AACxB,4CAAoB;AAEpB,oDAAwE;AACxE,0CAUwB;AACxB,uFAAoF;AACpF,wFAA0F;AAO1F;;GAEG;AACH,MAAa,aAAa;IACxB;;OAEG;IACK,iBAAiB,CAMG;IAE5B;;OAEG;IACH,oBAAoB,CAClB,MAM2B;QAE3B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,MAAoB;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;YACrH,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1G,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,MAAoB;QACrC,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAElC,wBAAwB;YACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAS,EAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;oBACzB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC7B,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChE,MAAM,IAAI,KAAK,CAAC,0DAA0D,YAAY,EAAE,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,EACrB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EACzB,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,EAC9B,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAC5B,CAAC;oBACF,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAS,EAAC,WAAW,CAAC,CAAC;wBACzC,IAAI,CAAC,MAAM,CAAC,KAAK;4BAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;wBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM;4BAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;oBACjD,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;YAEpC,MAAM,EACJ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EACZ,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,CAAC,EAChB,cAAc,GAAG,KAAK,EACtB,OAAO,GAAG,CAAC,EACX,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EACtC,SAAS,EAAE,OAAO,EAAE,SAAS,EAC7B,IAAI,EAAE,MAAM,EAAE,MAAM,EACpB,IAAI,EACL,GAAG,MAAM,CAAC;YAEX,oCAAoC;YACpC,MAAM,SAAS,GAAG;gBAChB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACjC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;gBACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;aACpC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAElB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,yFAAyF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnI,CAAC;YAED,MAAM,EAAE,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,IAAA,6BAAgB,EAAC,EAAE,CAAC,CAAC;YAEjC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAE1B,iCAAiC;YACjC,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,IAAA,qBAAa,EAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAElD,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;YAClE,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,IAAA,uBAAe,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAE1C,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,GAAG,CAAC,wBAAwB,GAAG,SAAqC,CAAC;YACvE,CAAC;YAED,yFAAyF;YACzF,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,4EAA4E;oBAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC9C,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,CAAC,EAClB,OAAO,CAAC,IAAI,EACZ,KAAK,EAAE,+BAA+B;oBACtC,CAAC,CACF,CAAC;oBACF,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1C,IAAI,QAAQ,CAAC;wBACb,IAAI,CAAC;4BACH,QAAQ,GAAG,MAAM,IAAA,kBAAS,EAAC,WAAW,CAAC,CAAC;wBAC1C,CAAC;wBAAC,OAAO,WAAW,EAAE,CAAC;4BACrB,8EAA8E;4BAC9E,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;4BAClG,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;4BAC7C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC7B,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC9C,CAAC;4BACD,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;4BAC7C,QAAQ,GAAG,MAAM,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;4BAC1C,kCAAkC;4BAClC,IAAI,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gCACjC,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;4BAC/B,CAAC;wBACH,CAAC;wBAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1D,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;4BACvC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;4BAC7C,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;wBAC5B,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC1G,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAClE,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzE,MAAM,CAAC,CAAC;oBACV,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,0DAA0D;gBAC1D,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,2CAA2C;gBAC3C,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAkB,CAAC;oBAC7D,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC5B,MAAM,IAAA,0DAA8B,EAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBAC/E,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBACnC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;wBACxC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAChC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;oBACnC,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjD,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAA,8BAAsB,EAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,MAAM,IAAA,2BAAmB,EAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,IAAI,SAAS;gBAAE,MAAM,iDAAuB,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/E,IAAI,OAAO;gBAAE,IAAA,kBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;YAEvE,GAAG,CAAC,OAAO,EAAE,CAAC;YAEd,sBAAsB;YACtB,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,EAAE,CAAC;gBACX,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;gBAClE,IAAA,mBAAW,EAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9C,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,EAAE,CAAC;gBACX,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;gBAClE,IAAA,mBAAW,EAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9C,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAxPD,sCAwPC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Extended class for chart creation functionality
3
+ */
4
+ export declare class ChartCreator {
5
+ /**
6
+ * Creates a chart based on the specified type.
7
+ *
8
+ * @param chartType - Type of chart to create ('pie', 'bar', 'horizontalBar', 'line')
9
+ * @param data - Chart data (type depends on chartType)
10
+ * @param options - Chart options (type depends on chartType)
11
+ * @returns Promise<Buffer> - Chart image buffer
12
+ */
13
+ createChart(chartType: 'pie', data: import('../utils/Charts/piechart').PieSlice[], options?: import('../utils/Charts/piechart').PieChartOptions): Promise<Buffer>;
14
+ createChart(chartType: 'bar', data: import('../utils/Charts/barchart').BarChartData[], options?: import('../utils/Charts/barchart').BarChartOptions): Promise<Buffer>;
15
+ createChart(chartType: 'horizontalBar', data: import('../utils/Charts/horizontalbarchart').HorizontalBarChartData[], options?: import('../utils/Charts/horizontalbarchart').HorizontalBarChartOptions): Promise<Buffer>;
16
+ createChart(chartType: 'line', data: import('../utils/Charts/linechart').LineSeries[], options?: import('../utils/Charts/linechart').LineChartOptions): Promise<Buffer>;
17
+ /**
18
+ * Creates a comparison chart with two charts side by side or top/bottom.
19
+ * Each chart can be of any type (pie, bar, horizontalBar, line, donut) with its own data and config.
20
+ *
21
+ * @param options - Comparison chart configuration
22
+ * @returns Promise<Buffer> - Comparison chart image buffer
23
+ */
24
+ createComparisonChart(options: import('../utils/Charts/comparisonchart').ComparisonChartOptions): Promise<Buffer>;
25
+ }
26
+ //# sourceMappingURL=ChartCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCreator.d.ts","sourceRoot":"","sources":["../../../../lib/Canvas/extended/ChartCreator.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;;;OAOG;IACG,WAAW,CACf,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,OAAO,0BAA0B,EAAE,QAAQ,EAAE,EACnD,OAAO,CAAC,EAAE,OAAO,0BAA0B,EAAE,eAAe,GAC3D,OAAO,CAAC,MAAM,CAAC;IACZ,WAAW,CACf,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,OAAO,0BAA0B,EAAE,YAAY,EAAE,EACvD,OAAO,CAAC,EAAE,OAAO,0BAA0B,EAAE,eAAe,GAC3D,OAAO,CAAC,MAAM,CAAC;IACZ,WAAW,CACf,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,OAAO,oCAAoC,EAAE,sBAAsB,EAAE,EAC3E,OAAO,CAAC,EAAE,OAAO,oCAAoC,EAAE,yBAAyB,GAC/E,OAAO,CAAC,MAAM,CAAC;IACZ,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,2BAA2B,EAAE,UAAU,EAAE,EACtD,OAAO,CAAC,EAAE,OAAO,2BAA2B,EAAE,gBAAgB,GAC7D,OAAO,CAAC,MAAM,CAAC;IA4BlB;;;;;;OAMG;IACG,qBAAqB,CACzB,OAAO,EAAE,OAAO,iCAAiC,EAAE,sBAAsB,GACxE,OAAO,CAAC,MAAM,CAAC;CAOnB"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChartCreator = void 0;
4
+ const piechart_1 = require("../utils/Charts/piechart");
5
+ const barchart_1 = require("../utils/Charts/barchart");
6
+ const horizontalbarchart_1 = require("../utils/Charts/horizontalbarchart");
7
+ const linechart_1 = require("../utils/Charts/linechart");
8
+ const comparisonchart_1 = require("../utils/Charts/comparisonchart");
9
+ const errorUtils_1 = require("../utils/errorUtils");
10
+ /**
11
+ * Extended class for chart creation functionality
12
+ */
13
+ class ChartCreator {
14
+ async createChart(chartType, data, options = {}) {
15
+ try {
16
+ switch (chartType) {
17
+ case 'pie':
18
+ return await (0, piechart_1.createPieChart)(data, options);
19
+ case 'bar':
20
+ return await (0, barchart_1.createBarChart)(data, options);
21
+ case 'horizontalBar':
22
+ return await (0, horizontalbarchart_1.createHorizontalBarChart)(data, options);
23
+ case 'line':
24
+ return await (0, linechart_1.createLineChart)(data, options);
25
+ default:
26
+ throw new Error(`Unsupported chart type: ${chartType}`);
27
+ }
28
+ }
29
+ catch (error) {
30
+ throw new Error(`createChart failed for type '${chartType}': ${(0, errorUtils_1.getErrorMessage)(error)}`);
31
+ }
32
+ }
33
+ /**
34
+ * Creates a comparison chart with two charts side by side or top/bottom.
35
+ * Each chart can be of any type (pie, bar, horizontalBar, line, donut) with its own data and config.
36
+ *
37
+ * @param options - Comparison chart configuration
38
+ * @returns Promise<Buffer> - Comparison chart image buffer
39
+ */
40
+ async createComparisonChart(options) {
41
+ try {
42
+ return await (0, comparisonchart_1.createComparisonChart)(options);
43
+ }
44
+ catch (error) {
45
+ throw new Error(`createComparisonChart failed: ${(0, errorUtils_1.getErrorMessage)(error)}`);
46
+ }
47
+ }
48
+ }
49
+ exports.ChartCreator = ChartCreator;
50
+ //# sourceMappingURL=ChartCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCreator.js","sourceRoot":"","sources":["../../../../lib/Canvas/extended/ChartCreator.ts"],"names":[],"mappings":";;;AAAA,uDAA0D;AAC1D,uDAA0D;AAC1D,2EAA8E;AAC9E,yDAA4D;AAC5D,qEAAwE;AACxE,oDAAsD;AAEtD;;GAEG;AACH,MAAa,YAAY;IA6BvB,KAAK,CAAC,WAAW,CACf,SAAmD,EACnD,IAAS,EACT,UAAe,EAAE;QAEjB,IAAI,CAAC;YACH,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,KAAK;oBACR,OAAO,MAAM,IAAA,yBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE7C,KAAK,KAAK;oBACR,OAAO,MAAM,IAAA,yBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE7C,KAAK,eAAe;oBAClB,OAAO,MAAM,IAAA,6CAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAEvD,KAAK,MAAM;oBACT,OAAO,MAAM,IAAA,2BAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE9C;oBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,MAAM,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB,CACzB,OAAyE;QAEzE,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,uCAAqB,EAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAA,4BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF;AAxED,oCAwEC"}
@@ -0,0 +1,43 @@
1
+ import type { GIFOptions, GIFResults } from "../utils/utils";
2
+ /**
3
+ * Extended class for GIF creation functionality
4
+ */
5
+ export declare class GIFCreator {
6
+ /**
7
+ * Validates GIF options and frames.
8
+ * @private
9
+ * @param gifFrames - GIF frames to validate
10
+ * @param options - GIF options to validate
11
+ */
12
+ private validateGIFOptions;
13
+ /**
14
+ * Resizes an image to target dimensions
15
+ * @private
16
+ */
17
+ private resizeImage;
18
+ /**
19
+ * Creates a file output stream
20
+ * @private
21
+ */
22
+ private createOutputStream;
23
+ /**
24
+ * Creates a buffer stream with getBuffer method
25
+ * @private
26
+ */
27
+ private createBufferStream;
28
+ /**
29
+ * Creates a GIF from frames
30
+ *
31
+ * @param gifFrames - Array of frames with background and duration
32
+ * @param options - GIF creation options
33
+ * @returns Promise<GIFResults | Buffer | string | Array<{ attachment: NodeJS.ReadableStream | any; name: string }> | undefined>
34
+ */
35
+ createGIF(gifFrames: {
36
+ background: string;
37
+ duration: number;
38
+ }[], options: GIFOptions): Promise<GIFResults | Buffer | string | Array<{
39
+ attachment: NodeJS.ReadableStream | any;
40
+ name: string;
41
+ }> | undefined>;
42
+ }
43
+ //# sourceMappingURL=GIFCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GIFCreator.d.ts","sourceRoot":"","sources":["../../../../lib/Canvas/extended/GIFCreator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG7D;;GAEG;AACH,qBAAa,UAAU;IACrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;OAGG;YACW,WAAW;IAOzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;;;OAMG;IACG,SAAS,CACb,SAAS,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EACrD,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CA6ExH"}
@@ -0,0 +1,157 @@
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.GIFCreator = void 0;
7
+ const canvas_1 = require("@napi-rs/canvas");
8
+ const gifencoder_1 = __importDefault(require("gifencoder"));
9
+ const stream_1 = require("stream");
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const errorUtils_1 = require("../utils/errorUtils");
12
+ /**
13
+ * Extended class for GIF creation functionality
14
+ */
15
+ class GIFCreator {
16
+ /**
17
+ * Validates GIF options and frames.
18
+ * @private
19
+ * @param gifFrames - GIF frames to validate
20
+ * @param options - GIF options to validate
21
+ */
22
+ validateGIFOptions(gifFrames, options) {
23
+ if (!gifFrames || gifFrames.length === 0) {
24
+ throw new Error("createGIF: At least one frame is required.");
25
+ }
26
+ for (const frame of gifFrames) {
27
+ if (!frame.background) {
28
+ throw new Error("createGIF: Each frame must have a background property.");
29
+ }
30
+ if (typeof frame.duration !== 'number' || frame.duration < 0) {
31
+ throw new Error("createGIF: Each frame duration must be a non-negative number.");
32
+ }
33
+ }
34
+ if (options.outputFormat === "file" && !options.outputFile) {
35
+ throw new Error("createGIF: outputFile is required when outputFormat is 'file'.");
36
+ }
37
+ if (options.repeat !== undefined && (typeof options.repeat !== "number" || options.repeat < 0)) {
38
+ throw new Error("createGIF: repeat must be a non-negative number or undefined.");
39
+ }
40
+ if (options.quality !== undefined && (typeof options.quality !== "number" || options.quality < 1 || options.quality > 20)) {
41
+ throw new Error("createGIF: quality must be a number between 1 and 20 or undefined.");
42
+ }
43
+ }
44
+ /**
45
+ * Resizes an image to target dimensions
46
+ * @private
47
+ */
48
+ async resizeImage(image, targetWidth, targetHeight) {
49
+ const canvas = (0, canvas_1.createCanvas)(targetWidth, targetHeight);
50
+ const ctx = canvas.getContext("2d");
51
+ ctx.drawImage(image, 0, 0, targetWidth, targetHeight);
52
+ return canvas;
53
+ }
54
+ /**
55
+ * Creates a file output stream
56
+ * @private
57
+ */
58
+ createOutputStream(outputFile) {
59
+ return fs_1.default.createWriteStream(outputFile);
60
+ }
61
+ /**
62
+ * Creates a buffer stream with getBuffer method
63
+ * @private
64
+ */
65
+ createBufferStream() {
66
+ const bufferStream = new stream_1.PassThrough();
67
+ const chunks = [];
68
+ bufferStream.on('data', (chunk) => {
69
+ chunks.push(chunk);
70
+ });
71
+ const extendedStream = bufferStream;
72
+ extendedStream.getBuffer = function () {
73
+ return Buffer.concat(chunks);
74
+ };
75
+ extendedStream.chunks = chunks;
76
+ return extendedStream;
77
+ }
78
+ /**
79
+ * Creates a GIF from frames
80
+ *
81
+ * @param gifFrames - Array of frames with background and duration
82
+ * @param options - GIF creation options
83
+ * @returns Promise<GIFResults | Buffer | string | Array<{ attachment: NodeJS.ReadableStream | any; name: string }> | undefined>
84
+ */
85
+ async createGIF(gifFrames, options) {
86
+ try {
87
+ this.validateGIFOptions(gifFrames, options);
88
+ const canvasWidth = options.width || 1200;
89
+ const canvasHeight = options.height || 1200;
90
+ const encoder = new gifencoder_1.default(canvasWidth, canvasHeight);
91
+ const useBufferStream = options.outputFormat !== "file";
92
+ const outputStream = useBufferStream
93
+ ? this.createBufferStream()
94
+ : (options.outputFile ? this.createOutputStream(options.outputFile) : this.createBufferStream());
95
+ encoder.createReadStream().pipe(outputStream);
96
+ encoder.start();
97
+ encoder.setRepeat(options.repeat || 0);
98
+ encoder.setQuality(options.quality || 10);
99
+ const canvas = (0, canvas_1.createCanvas)(canvasWidth, canvasHeight);
100
+ const ctx = (0, errorUtils_1.getCanvasContext)(canvas);
101
+ for (const frame of gifFrames) {
102
+ const image = await (0, canvas_1.loadImage)(frame.background);
103
+ const resizedImage = await this.resizeImage(image, canvasWidth, canvasHeight);
104
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
105
+ ctx.drawImage(resizedImage, 0, 0);
106
+ if (options.watermark?.enable) {
107
+ const watermark = await (0, canvas_1.loadImage)(options.watermark.url);
108
+ ctx.drawImage(watermark, 10, canvasHeight - watermark.height - 10);
109
+ }
110
+ if (options.textOverlay) {
111
+ ctx.font = `${options.textOverlay.fontSize || 20}px Arial`;
112
+ ctx.fillStyle = options.textOverlay.fontColor || "white";
113
+ ctx.fillText(options.textOverlay.text, options.textOverlay.x || 10, options.textOverlay.y || 30);
114
+ }
115
+ encoder.setDelay(frame.duration);
116
+ encoder.addFrame(ctx);
117
+ }
118
+ encoder.finish();
119
+ if (options.outputFormat === "file") {
120
+ outputStream.end();
121
+ await new Promise((resolve) => outputStream.on("finish", () => resolve()));
122
+ }
123
+ else if (options.outputFormat === "base64") {
124
+ await new Promise((resolve) => {
125
+ outputStream.on("end", () => resolve());
126
+ outputStream.end();
127
+ });
128
+ if ('getBuffer' in outputStream && typeof outputStream.getBuffer === 'function') {
129
+ return outputStream.getBuffer().toString("base64");
130
+ }
131
+ throw new Error("createGIF: Unable to get buffer for base64 output.");
132
+ }
133
+ else if (options.outputFormat === "attachment") {
134
+ const gifStream = encoder.createReadStream();
135
+ return [{ attachment: gifStream, name: "gif.js" }];
136
+ }
137
+ else if (options.outputFormat === "buffer") {
138
+ await new Promise((resolve) => {
139
+ outputStream.on("end", () => resolve());
140
+ outputStream.end();
141
+ });
142
+ if ('getBuffer' in outputStream && typeof outputStream.getBuffer === 'function') {
143
+ return outputStream.getBuffer();
144
+ }
145
+ throw new Error("createGIF: Unable to get buffer for buffer output.");
146
+ }
147
+ else {
148
+ throw new Error("Invalid output format. Supported formats are 'file', 'base64', 'attachment', and 'buffer'.");
149
+ }
150
+ }
151
+ catch (error) {
152
+ throw new Error(`createGIF failed: ${(0, errorUtils_1.getErrorMessage)(error)}`);
153
+ }
154
+ }
155
+ }
156
+ exports.GIFCreator = GIFCreator;
157
+ //# sourceMappingURL=GIFCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GIFCreator.js","sourceRoot":"","sources":["../../../../lib/Canvas/extended/GIFCreator.ts"],"names":[],"mappings":"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"}