groove-dev 0.26.14 → 0.26.16

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 (975) hide show
  1. package/GROOVE_AI_PITCH_DECK_OUTLINE.docx +0 -0
  2. package/node_modules/@groove-dev/daemon/src/index.js +34 -4
  3. package/node_modules/@groove-dev/gui/dist/assets/index-7eQvV_N9.js +638 -0
  4. package/node_modules/@groove-dev/gui/dist/assets/index-DAy5FSuv.css +1 -0
  5. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  6. package/node_modules/@groove-dev/gui/src/app.css +16 -0
  7. package/node_modules/@groove-dev/gui/src/components/agents/agent-chat.jsx +2 -1
  8. package/node_modules/@groove-dev/gui/src/components/agents/agent-feed.jsx +2 -12
  9. package/node_modules/@groove-dev/gui/src/components/ui/thinking-indicator.jsx +49 -0
  10. package/node_modules/@groove-dev/gui/src/stores/groove.js +34 -13
  11. package/node_modules/@groove-dev/gui/src/views/agents.jsx +4 -2
  12. package/node_modules/@groove-dev/gui/src/views/editor.jsx +58 -2
  13. package/package.json +1 -1
  14. package/packages/daemon/src/index.js +34 -4
  15. package/packages/gui/dist/assets/index-7eQvV_N9.js +638 -0
  16. package/packages/gui/dist/assets/index-DAy5FSuv.css +1 -0
  17. package/packages/gui/dist/index.html +2 -2
  18. package/packages/gui/src/app.css +16 -0
  19. package/packages/gui/src/components/agents/agent-chat.jsx +2 -1
  20. package/packages/gui/src/components/agents/agent-feed.jsx +2 -12
  21. package/packages/gui/src/components/ui/thinking-indicator.jsx +49 -0
  22. package/packages/gui/src/stores/groove.js +34 -13
  23. package/packages/gui/src/views/agents.jsx +4 -2
  24. package/packages/gui/src/views/editor.jsx +58 -2
  25. package/pitch-deck-groove/convert-slides.js +795 -0
  26. package/pitch-deck-groove/deck.pptx +0 -0
  27. package/pitch-deck-groove/node_modules/.package-lock.json +755 -0
  28. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/.github/workflows/codeql.yml +74 -0
  29. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md +510 -0
  30. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/LICENSE +27 -0
  31. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/README.md +742 -0
  32. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp +4 -0
  33. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/bin/node-pre-gyp.cmd +2 -0
  34. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/contributing.md +10 -0
  35. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/build.js +51 -0
  36. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/clean.js +31 -0
  37. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/configure.js +52 -0
  38. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/info.js +38 -0
  39. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/install.js +235 -0
  40. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/main.js +125 -0
  41. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js +309 -0
  42. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/package.js +73 -0
  43. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js +34 -0
  44. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/publish.js +81 -0
  45. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/rebuild.js +20 -0
  46. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/reinstall.js +19 -0
  47. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/reveal.js +32 -0
  48. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/testbinary.js +79 -0
  49. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/testpackage.js +53 -0
  50. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/unpublish.js +41 -0
  51. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json +2602 -0
  52. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js +93 -0
  53. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/handle_gyp_opts.js +102 -0
  54. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/napi.js +205 -0
  55. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html +26 -0
  56. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/package.json +9 -0
  57. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js +163 -0
  58. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js +335 -0
  59. package/pitch-deck-groove/node_modules/@mapbox/node-pre-gyp/package.json +62 -0
  60. package/pitch-deck-groove/node_modules/@types/node/LICENSE +21 -0
  61. package/pitch-deck-groove/node_modules/@types/node/README.md +15 -0
  62. package/pitch-deck-groove/node_modules/@types/node/assert/strict.d.ts +8 -0
  63. package/pitch-deck-groove/node_modules/@types/node/assert.d.ts +1005 -0
  64. package/pitch-deck-groove/node_modules/@types/node/async_hooks.d.ts +586 -0
  65. package/pitch-deck-groove/node_modules/@types/node/buffer.buffer.d.ts +457 -0
  66. package/pitch-deck-groove/node_modules/@types/node/buffer.d.ts +1901 -0
  67. package/pitch-deck-groove/node_modules/@types/node/child_process.d.ts +1453 -0
  68. package/pitch-deck-groove/node_modules/@types/node/cluster.d.ts +578 -0
  69. package/pitch-deck-groove/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  70. package/pitch-deck-groove/node_modules/@types/node/compatibility/index.d.ts +9 -0
  71. package/pitch-deck-groove/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  72. package/pitch-deck-groove/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  73. package/pitch-deck-groove/node_modules/@types/node/console.d.ts +452 -0
  74. package/pitch-deck-groove/node_modules/@types/node/constants.d.ts +21 -0
  75. package/pitch-deck-groove/node_modules/@types/node/crypto.d.ts +4504 -0
  76. package/pitch-deck-groove/node_modules/@types/node/dgram.d.ts +596 -0
  77. package/pitch-deck-groove/node_modules/@types/node/diagnostics_channel.d.ts +551 -0
  78. package/pitch-deck-groove/node_modules/@types/node/dns/promises.d.ts +477 -0
  79. package/pitch-deck-groove/node_modules/@types/node/dns.d.ts +860 -0
  80. package/pitch-deck-groove/node_modules/@types/node/domain.d.ts +170 -0
  81. package/pitch-deck-groove/node_modules/@types/node/events.d.ts +863 -0
  82. package/pitch-deck-groove/node_modules/@types/node/fs/promises.d.ts +1208 -0
  83. package/pitch-deck-groove/node_modules/@types/node/fs.d.ts +4332 -0
  84. package/pitch-deck-groove/node_modules/@types/node/globals.d.ts +170 -0
  85. package/pitch-deck-groove/node_modules/@types/node/globals.typedarray.d.ts +21 -0
  86. package/pitch-deck-groove/node_modules/@types/node/http.d.ts +1919 -0
  87. package/pitch-deck-groove/node_modules/@types/node/http2.d.ts +2580 -0
  88. package/pitch-deck-groove/node_modules/@types/node/https.d.ts +549 -0
  89. package/pitch-deck-groove/node_modules/@types/node/index.d.ts +92 -0
  90. package/pitch-deck-groove/node_modules/@types/node/inspector.generated.d.ts +2775 -0
  91. package/pitch-deck-groove/node_modules/@types/node/module.d.ts +503 -0
  92. package/pitch-deck-groove/node_modules/@types/node/net.d.ts +924 -0
  93. package/pitch-deck-groove/node_modules/@types/node/os.d.ts +480 -0
  94. package/pitch-deck-groove/node_modules/@types/node/package.json +145 -0
  95. package/pitch-deck-groove/node_modules/@types/node/path.d.ts +191 -0
  96. package/pitch-deck-groove/node_modules/@types/node/perf_hooks.d.ts +860 -0
  97. package/pitch-deck-groove/node_modules/@types/node/process.d.ts +1632 -0
  98. package/pitch-deck-groove/node_modules/@types/node/punycode.d.ts +117 -0
  99. package/pitch-deck-groove/node_modules/@types/node/querystring.d.ts +140 -0
  100. package/pitch-deck-groove/node_modules/@types/node/readline/promises.d.ts +154 -0
  101. package/pitch-deck-groove/node_modules/@types/node/readline.d.ts +715 -0
  102. package/pitch-deck-groove/node_modules/@types/node/repl.d.ts +430 -0
  103. package/pitch-deck-groove/node_modules/@types/node/stream/consumers.d.ts +38 -0
  104. package/pitch-deck-groove/node_modules/@types/node/stream/promises.d.ts +90 -0
  105. package/pitch-deck-groove/node_modules/@types/node/stream/web.d.ts +527 -0
  106. package/pitch-deck-groove/node_modules/@types/node/stream.d.ts +1680 -0
  107. package/pitch-deck-groove/node_modules/@types/node/string_decoder.d.ts +67 -0
  108. package/pitch-deck-groove/node_modules/@types/node/test.d.ts +1208 -0
  109. package/pitch-deck-groove/node_modules/@types/node/timers/promises.d.ts +108 -0
  110. package/pitch-deck-groove/node_modules/@types/node/timers.d.ts +286 -0
  111. package/pitch-deck-groove/node_modules/@types/node/tls.d.ts +1204 -0
  112. package/pitch-deck-groove/node_modules/@types/node/trace_events.d.ts +171 -0
  113. package/pitch-deck-groove/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +455 -0
  114. package/pitch-deck-groove/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +19 -0
  115. package/pitch-deck-groove/node_modules/@types/node/ts5.6/index.d.ts +92 -0
  116. package/pitch-deck-groove/node_modules/@types/node/tty.d.ts +206 -0
  117. package/pitch-deck-groove/node_modules/@types/node/url.d.ts +957 -0
  118. package/pitch-deck-groove/node_modules/@types/node/util.d.ts +2083 -0
  119. package/pitch-deck-groove/node_modules/@types/node/v8.d.ts +753 -0
  120. package/pitch-deck-groove/node_modules/@types/node/vm.d.ts +704 -0
  121. package/pitch-deck-groove/node_modules/@types/node/wasi.d.ts +160 -0
  122. package/pitch-deck-groove/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  123. package/pitch-deck-groove/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  124. package/pitch-deck-groove/node_modules/@types/node/web-globals/events.d.ts +81 -0
  125. package/pitch-deck-groove/node_modules/@types/node/web-globals/fetch.d.ts +38 -0
  126. package/pitch-deck-groove/node_modules/@types/node/worker_threads.d.ts +698 -0
  127. package/pitch-deck-groove/node_modules/@types/node/zlib.d.ts +517 -0
  128. package/pitch-deck-groove/node_modules/abbrev/LICENSE +46 -0
  129. package/pitch-deck-groove/node_modules/abbrev/README.md +23 -0
  130. package/pitch-deck-groove/node_modules/abbrev/abbrev.js +61 -0
  131. package/pitch-deck-groove/node_modules/abbrev/package.json +21 -0
  132. package/pitch-deck-groove/node_modules/agent-base/README.md +145 -0
  133. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.d.ts +78 -0
  134. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.js +203 -0
  135. package/pitch-deck-groove/node_modules/agent-base/dist/src/index.js.map +1 -0
  136. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.d.ts +4 -0
  137. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.js +18 -0
  138. package/pitch-deck-groove/node_modules/agent-base/dist/src/promisify.js.map +1 -0
  139. package/pitch-deck-groove/node_modules/agent-base/package.json +64 -0
  140. package/pitch-deck-groove/node_modules/agent-base/src/index.ts +345 -0
  141. package/pitch-deck-groove/node_modules/agent-base/src/promisify.ts +33 -0
  142. package/pitch-deck-groove/node_modules/ansi-regex/index.d.ts +37 -0
  143. package/pitch-deck-groove/node_modules/ansi-regex/index.js +10 -0
  144. package/pitch-deck-groove/node_modules/ansi-regex/license +9 -0
  145. package/pitch-deck-groove/node_modules/ansi-regex/package.json +55 -0
  146. package/pitch-deck-groove/node_modules/ansi-regex/readme.md +78 -0
  147. package/pitch-deck-groove/node_modules/aproba/LICENSE +14 -0
  148. package/pitch-deck-groove/node_modules/aproba/README.md +94 -0
  149. package/pitch-deck-groove/node_modules/aproba/index.js +105 -0
  150. package/pitch-deck-groove/node_modules/aproba/package.json +35 -0
  151. package/pitch-deck-groove/node_modules/are-we-there-yet/LICENSE.md +18 -0
  152. package/pitch-deck-groove/node_modules/are-we-there-yet/README.md +208 -0
  153. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/index.js +4 -0
  154. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-base.js +11 -0
  155. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-group.js +116 -0
  156. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker-stream.js +36 -0
  157. package/pitch-deck-groove/node_modules/are-we-there-yet/lib/tracker.js +32 -0
  158. package/pitch-deck-groove/node_modules/are-we-there-yet/package.json +53 -0
  159. package/pitch-deck-groove/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  160. package/pitch-deck-groove/node_modules/balanced-match/LICENSE.md +21 -0
  161. package/pitch-deck-groove/node_modules/balanced-match/README.md +97 -0
  162. package/pitch-deck-groove/node_modules/balanced-match/index.js +62 -0
  163. package/pitch-deck-groove/node_modules/balanced-match/package.json +48 -0
  164. package/pitch-deck-groove/node_modules/brace-expansion/LICENSE +21 -0
  165. package/pitch-deck-groove/node_modules/brace-expansion/README.md +129 -0
  166. package/pitch-deck-groove/node_modules/brace-expansion/index.js +203 -0
  167. package/pitch-deck-groove/node_modules/brace-expansion/package.json +50 -0
  168. package/pitch-deck-groove/node_modules/canvas/CHANGELOG.md +1052 -0
  169. package/pitch-deck-groove/node_modules/canvas/Readme.md +600 -0
  170. package/pitch-deck-groove/node_modules/canvas/binding.gyp +230 -0
  171. package/pitch-deck-groove/node_modules/canvas/browser.js +35 -0
  172. package/pitch-deck-groove/node_modules/canvas/build/Makefile +352 -0
  173. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/canvas-postbuild.node.d +1 -0
  174. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/canvas.node.d +1 -0
  175. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Backends.o.d +490 -0
  176. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d +503 -0
  177. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d +474 -0
  178. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d +485 -0
  179. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d +496 -0
  180. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d +484 -0
  181. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d +152 -0
  182. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/Backend.o.d +162 -0
  183. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/ImageBackend.o.d +164 -0
  184. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/PdfBackend.o.d +488 -0
  185. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/backend/SvgBackend.o.d +488 -0
  186. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/bmp/BMPParser.o.d +5 -0
  187. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/closure.o.d +483 -0
  188. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d +4 -0
  189. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d +520 -0
  190. package/pitch-deck-groove/node_modules/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d +357 -0
  191. package/pitch-deck-groove/node_modules/canvas/build/Release/canvas-postbuild.node +0 -0
  192. package/pitch-deck-groove/node_modules/canvas/build/Release/canvas.node +0 -0
  193. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Backends.o +0 -0
  194. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Canvas.o +0 -0
  195. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasGradient.o +0 -0
  196. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasPattern.o +0 -0
  197. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/CanvasRenderingContext2d.o +0 -0
  198. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/Image.o +0 -0
  199. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/ImageData.o +0 -0
  200. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/Backend.o +0 -0
  201. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/ImageBackend.o +0 -0
  202. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/PdfBackend.o +0 -0
  203. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/backend/SvgBackend.o +0 -0
  204. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/bmp/BMPParser.o +0 -0
  205. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/closure.o +0 -0
  206. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/color.o +0 -0
  207. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/init.o +0 -0
  208. package/pitch-deck-groove/node_modules/canvas/build/Release/obj.target/canvas/src/register_font.o +0 -0
  209. package/pitch-deck-groove/node_modules/canvas/build/binding.Makefile +6 -0
  210. package/pitch-deck-groove/node_modules/canvas/build/canvas-postbuild.target.mk +51 -0
  211. package/pitch-deck-groove/node_modules/canvas/build/canvas.target.mk +272 -0
  212. package/pitch-deck-groove/node_modules/canvas/build/gyp-mac-tool +772 -0
  213. package/pitch-deck-groove/node_modules/canvas/changes +19 -0
  214. package/pitch-deck-groove/node_modules/canvas/index.js +94 -0
  215. package/pitch-deck-groove/node_modules/canvas/lib/DOMMatrix.js +620 -0
  216. package/pitch-deck-groove/node_modules/canvas/lib/bindings.js +13 -0
  217. package/pitch-deck-groove/node_modules/canvas/lib/canvas.js +113 -0
  218. package/pitch-deck-groove/node_modules/canvas/lib/context2d.js +14 -0
  219. package/pitch-deck-groove/node_modules/canvas/lib/image.js +96 -0
  220. package/pitch-deck-groove/node_modules/canvas/lib/jpegstream.js +41 -0
  221. package/pitch-deck-groove/node_modules/canvas/lib/parse-font.js +101 -0
  222. package/pitch-deck-groove/node_modules/canvas/lib/pattern.js +17 -0
  223. package/pitch-deck-groove/node_modules/canvas/lib/pdfstream.js +35 -0
  224. package/pitch-deck-groove/node_modules/canvas/lib/pngstream.js +42 -0
  225. package/pitch-deck-groove/node_modules/canvas/package.json +72 -0
  226. package/pitch-deck-groove/node_modules/canvas/src/Backends.cc +18 -0
  227. package/pitch-deck-groove/node_modules/canvas/src/Backends.h +10 -0
  228. package/pitch-deck-groove/node_modules/canvas/src/Canvas.cc +965 -0
  229. package/pitch-deck-groove/node_modules/canvas/src/Canvas.h +96 -0
  230. package/pitch-deck-groove/node_modules/canvas/src/CanvasError.h +23 -0
  231. package/pitch-deck-groove/node_modules/canvas/src/CanvasGradient.cc +123 -0
  232. package/pitch-deck-groove/node_modules/canvas/src/CanvasGradient.h +22 -0
  233. package/pitch-deck-groove/node_modules/canvas/src/CanvasPattern.cc +136 -0
  234. package/pitch-deck-groove/node_modules/canvas/src/CanvasPattern.h +37 -0
  235. package/pitch-deck-groove/node_modules/canvas/src/CanvasRenderingContext2d.cc +3360 -0
  236. package/pitch-deck-groove/node_modules/canvas/src/CanvasRenderingContext2d.h +225 -0
  237. package/pitch-deck-groove/node_modules/canvas/src/Image.cc +1434 -0
  238. package/pitch-deck-groove/node_modules/canvas/src/Image.h +127 -0
  239. package/pitch-deck-groove/node_modules/canvas/src/ImageData.cc +146 -0
  240. package/pitch-deck-groove/node_modules/canvas/src/ImageData.h +27 -0
  241. package/pitch-deck-groove/node_modules/canvas/src/InstanceData.h +8 -0
  242. package/pitch-deck-groove/node_modules/canvas/src/JPEGStream.h +167 -0
  243. package/pitch-deck-groove/node_modules/canvas/src/PNG.h +292 -0
  244. package/pitch-deck-groove/node_modules/canvas/src/Point.h +11 -0
  245. package/pitch-deck-groove/node_modules/canvas/src/Util.h +9 -0
  246. package/pitch-deck-groove/node_modules/canvas/src/backend/Backend.cc +112 -0
  247. package/pitch-deck-groove/node_modules/canvas/src/backend/Backend.h +69 -0
  248. package/pitch-deck-groove/node_modules/canvas/src/backend/ImageBackend.cc +74 -0
  249. package/pitch-deck-groove/node_modules/canvas/src/backend/ImageBackend.h +26 -0
  250. package/pitch-deck-groove/node_modules/canvas/src/backend/PdfBackend.cc +53 -0
  251. package/pitch-deck-groove/node_modules/canvas/src/backend/PdfBackend.h +24 -0
  252. package/pitch-deck-groove/node_modules/canvas/src/backend/SvgBackend.cc +61 -0
  253. package/pitch-deck-groove/node_modules/canvas/src/backend/SvgBackend.h +24 -0
  254. package/pitch-deck-groove/node_modules/canvas/src/bmp/BMPParser.cc +457 -0
  255. package/pitch-deck-groove/node_modules/canvas/src/bmp/BMPParser.h +60 -0
  256. package/pitch-deck-groove/node_modules/canvas/src/bmp/LICENSE.md +24 -0
  257. package/pitch-deck-groove/node_modules/canvas/src/closure.cc +26 -0
  258. package/pitch-deck-groove/node_modules/canvas/src/closure.h +81 -0
  259. package/pitch-deck-groove/node_modules/canvas/src/color.cc +779 -0
  260. package/pitch-deck-groove/node_modules/canvas/src/color.h +30 -0
  261. package/pitch-deck-groove/node_modules/canvas/src/dll_visibility.h +20 -0
  262. package/pitch-deck-groove/node_modules/canvas/src/init.cc +94 -0
  263. package/pitch-deck-groove/node_modules/canvas/src/register_font.cc +408 -0
  264. package/pitch-deck-groove/node_modules/canvas/src/register_font.h +7 -0
  265. package/pitch-deck-groove/node_modules/canvas/types/Readme.md +3 -0
  266. package/pitch-deck-groove/node_modules/canvas/types/index.d.ts +484 -0
  267. package/pitch-deck-groove/node_modules/canvas/util/has_lib.js +119 -0
  268. package/pitch-deck-groove/node_modules/canvas/util/win_jpeg_lookup.js +21 -0
  269. package/pitch-deck-groove/node_modules/chownr/LICENSE +15 -0
  270. package/pitch-deck-groove/node_modules/chownr/README.md +3 -0
  271. package/pitch-deck-groove/node_modules/chownr/chownr.js +167 -0
  272. package/pitch-deck-groove/node_modules/chownr/package.json +32 -0
  273. package/pitch-deck-groove/node_modules/color-support/LICENSE +15 -0
  274. package/pitch-deck-groove/node_modules/color-support/README.md +129 -0
  275. package/pitch-deck-groove/node_modules/color-support/bin.js +3 -0
  276. package/pitch-deck-groove/node_modules/color-support/browser.js +14 -0
  277. package/pitch-deck-groove/node_modules/color-support/index.js +134 -0
  278. package/pitch-deck-groove/node_modules/color-support/package.json +36 -0
  279. package/pitch-deck-groove/node_modules/concat-map/.travis.yml +4 -0
  280. package/pitch-deck-groove/node_modules/concat-map/LICENSE +18 -0
  281. package/pitch-deck-groove/node_modules/concat-map/README.markdown +62 -0
  282. package/pitch-deck-groove/node_modules/concat-map/example/map.js +6 -0
  283. package/pitch-deck-groove/node_modules/concat-map/index.js +13 -0
  284. package/pitch-deck-groove/node_modules/concat-map/package.json +43 -0
  285. package/pitch-deck-groove/node_modules/concat-map/test/map.js +39 -0
  286. package/pitch-deck-groove/node_modules/console-control-strings/LICENSE +13 -0
  287. package/pitch-deck-groove/node_modules/console-control-strings/README.md +145 -0
  288. package/pitch-deck-groove/node_modules/console-control-strings/README.md~ +140 -0
  289. package/pitch-deck-groove/node_modules/console-control-strings/index.js +125 -0
  290. package/pitch-deck-groove/node_modules/console-control-strings/package.json +27 -0
  291. package/pitch-deck-groove/node_modules/core-util-is/LICENSE +19 -0
  292. package/pitch-deck-groove/node_modules/core-util-is/README.md +3 -0
  293. package/pitch-deck-groove/node_modules/core-util-is/lib/util.js +107 -0
  294. package/pitch-deck-groove/node_modules/core-util-is/package.json +38 -0
  295. package/pitch-deck-groove/node_modules/debug/LICENSE +20 -0
  296. package/pitch-deck-groove/node_modules/debug/README.md +481 -0
  297. package/pitch-deck-groove/node_modules/debug/package.json +64 -0
  298. package/pitch-deck-groove/node_modules/debug/src/browser.js +272 -0
  299. package/pitch-deck-groove/node_modules/debug/src/common.js +292 -0
  300. package/pitch-deck-groove/node_modules/debug/src/index.js +10 -0
  301. package/pitch-deck-groove/node_modules/debug/src/node.js +263 -0
  302. package/pitch-deck-groove/node_modules/decompress-response/index.d.ts +29 -0
  303. package/pitch-deck-groove/node_modules/decompress-response/index.js +40 -0
  304. package/pitch-deck-groove/node_modules/decompress-response/license +9 -0
  305. package/pitch-deck-groove/node_modules/decompress-response/package.json +50 -0
  306. package/pitch-deck-groove/node_modules/decompress-response/readme.md +52 -0
  307. package/pitch-deck-groove/node_modules/delegates/History.md +22 -0
  308. package/pitch-deck-groove/node_modules/delegates/License +20 -0
  309. package/pitch-deck-groove/node_modules/delegates/Makefile +8 -0
  310. package/pitch-deck-groove/node_modules/delegates/Readme.md +94 -0
  311. package/pitch-deck-groove/node_modules/delegates/index.js +121 -0
  312. package/pitch-deck-groove/node_modules/delegates/package.json +13 -0
  313. package/pitch-deck-groove/node_modules/delegates/test/index.js +94 -0
  314. package/pitch-deck-groove/node_modules/detect-libc/LICENSE +201 -0
  315. package/pitch-deck-groove/node_modules/detect-libc/README.md +163 -0
  316. package/pitch-deck-groove/node_modules/detect-libc/index.d.ts +14 -0
  317. package/pitch-deck-groove/node_modules/detect-libc/lib/detect-libc.js +313 -0
  318. package/pitch-deck-groove/node_modules/detect-libc/lib/elf.js +39 -0
  319. package/pitch-deck-groove/node_modules/detect-libc/lib/filesystem.js +51 -0
  320. package/pitch-deck-groove/node_modules/detect-libc/lib/process.js +24 -0
  321. package/pitch-deck-groove/node_modules/detect-libc/package.json +44 -0
  322. package/pitch-deck-groove/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  323. package/pitch-deck-groove/node_modules/emoji-regex/README.md +73 -0
  324. package/pitch-deck-groove/node_modules/emoji-regex/es2015/index.js +6 -0
  325. package/pitch-deck-groove/node_modules/emoji-regex/es2015/text.js +6 -0
  326. package/pitch-deck-groove/node_modules/emoji-regex/index.d.ts +23 -0
  327. package/pitch-deck-groove/node_modules/emoji-regex/index.js +6 -0
  328. package/pitch-deck-groove/node_modules/emoji-regex/package.json +50 -0
  329. package/pitch-deck-groove/node_modules/emoji-regex/text.js +6 -0
  330. package/pitch-deck-groove/node_modules/fs-minipass/LICENSE +15 -0
  331. package/pitch-deck-groove/node_modules/fs-minipass/README.md +70 -0
  332. package/pitch-deck-groove/node_modules/fs-minipass/index.js +422 -0
  333. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/LICENSE +15 -0
  334. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/README.md +728 -0
  335. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/index.d.ts +155 -0
  336. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/index.js +649 -0
  337. package/pitch-deck-groove/node_modules/fs-minipass/node_modules/minipass/package.json +56 -0
  338. package/pitch-deck-groove/node_modules/fs-minipass/package.json +39 -0
  339. package/pitch-deck-groove/node_modules/fs.realpath/LICENSE +43 -0
  340. package/pitch-deck-groove/node_modules/fs.realpath/README.md +33 -0
  341. package/pitch-deck-groove/node_modules/fs.realpath/index.js +66 -0
  342. package/pitch-deck-groove/node_modules/fs.realpath/old.js +303 -0
  343. package/pitch-deck-groove/node_modules/fs.realpath/package.json +26 -0
  344. package/pitch-deck-groove/node_modules/gauge/CHANGELOG.md +163 -0
  345. package/pitch-deck-groove/node_modules/gauge/LICENSE +13 -0
  346. package/pitch-deck-groove/node_modules/gauge/README.md +402 -0
  347. package/pitch-deck-groove/node_modules/gauge/base-theme.js +14 -0
  348. package/pitch-deck-groove/node_modules/gauge/error.js +24 -0
  349. package/pitch-deck-groove/node_modules/gauge/has-color.js +4 -0
  350. package/pitch-deck-groove/node_modules/gauge/index.js +233 -0
  351. package/pitch-deck-groove/node_modules/gauge/package.json +66 -0
  352. package/pitch-deck-groove/node_modules/gauge/plumbing.js +48 -0
  353. package/pitch-deck-groove/node_modules/gauge/process.js +3 -0
  354. package/pitch-deck-groove/node_modules/gauge/progress-bar.js +35 -0
  355. package/pitch-deck-groove/node_modules/gauge/render-template.js +178 -0
  356. package/pitch-deck-groove/node_modules/gauge/set-immediate.js +7 -0
  357. package/pitch-deck-groove/node_modules/gauge/set-interval.js +3 -0
  358. package/pitch-deck-groove/node_modules/gauge/spin.js +5 -0
  359. package/pitch-deck-groove/node_modules/gauge/template-item.js +72 -0
  360. package/pitch-deck-groove/node_modules/gauge/theme-set.js +114 -0
  361. package/pitch-deck-groove/node_modules/gauge/themes.js +56 -0
  362. package/pitch-deck-groove/node_modules/gauge/wide-truncate.js +25 -0
  363. package/pitch-deck-groove/node_modules/glob/LICENSE +21 -0
  364. package/pitch-deck-groove/node_modules/glob/README.md +378 -0
  365. package/pitch-deck-groove/node_modules/glob/common.js +238 -0
  366. package/pitch-deck-groove/node_modules/glob/glob.js +790 -0
  367. package/pitch-deck-groove/node_modules/glob/package.json +55 -0
  368. package/pitch-deck-groove/node_modules/glob/sync.js +486 -0
  369. package/pitch-deck-groove/node_modules/has-unicode/LICENSE +14 -0
  370. package/pitch-deck-groove/node_modules/has-unicode/README.md +43 -0
  371. package/pitch-deck-groove/node_modules/has-unicode/index.js +16 -0
  372. package/pitch-deck-groove/node_modules/has-unicode/package.json +30 -0
  373. package/pitch-deck-groove/node_modules/https/package.json +15 -0
  374. package/pitch-deck-groove/node_modules/https-proxy-agent/README.md +137 -0
  375. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.d.ts +30 -0
  376. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.js +177 -0
  377. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/agent.js.map +1 -0
  378. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.d.ts +23 -0
  379. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.js +14 -0
  380. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/index.js.map +1 -0
  381. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -0
  382. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
  383. package/pitch-deck-groove/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
  384. package/pitch-deck-groove/node_modules/https-proxy-agent/package.json +56 -0
  385. package/pitch-deck-groove/node_modules/image-size/LICENSE +9 -0
  386. package/pitch-deck-groove/node_modules/image-size/Readme.md +184 -0
  387. package/pitch-deck-groove/node_modules/image-size/bin/image-size.js +53 -0
  388. package/pitch-deck-groove/node_modules/image-size/dist/detector.d.ts +2 -0
  389. package/pitch-deck-groove/node_modules/image-size/dist/detector.js +30 -0
  390. package/pitch-deck-groove/node_modules/image-size/dist/index.d.ts +10 -0
  391. package/pitch-deck-groove/node_modules/image-size/dist/index.js +129 -0
  392. package/pitch-deck-groove/node_modules/image-size/dist/types/bmp.d.ts +2 -0
  393. package/pitch-deck-groove/node_modules/image-size/dist/types/bmp.js +11 -0
  394. package/pitch-deck-groove/node_modules/image-size/dist/types/cur.d.ts +2 -0
  395. package/pitch-deck-groove/node_modules/image-size/dist/types/cur.js +17 -0
  396. package/pitch-deck-groove/node_modules/image-size/dist/types/dds.d.ts +2 -0
  397. package/pitch-deck-groove/node_modules/image-size/dist/types/dds.js +11 -0
  398. package/pitch-deck-groove/node_modules/image-size/dist/types/gif.d.ts +2 -0
  399. package/pitch-deck-groove/node_modules/image-size/dist/types/gif.js +12 -0
  400. package/pitch-deck-groove/node_modules/image-size/dist/types/heif.d.ts +2 -0
  401. package/pitch-deck-groove/node_modules/image-size/dist/types/heif.js +40 -0
  402. package/pitch-deck-groove/node_modules/image-size/dist/types/icns.d.ts +2 -0
  403. package/pitch-deck-groove/node_modules/image-size/dist/types/icns.js +101 -0
  404. package/pitch-deck-groove/node_modules/image-size/dist/types/ico.d.ts +2 -0
  405. package/pitch-deck-groove/node_modules/image-size/dist/types/ico.js +68 -0
  406. package/pitch-deck-groove/node_modules/image-size/dist/types/index.d.ts +23 -0
  407. package/pitch-deck-groove/node_modules/image-size/dist/types/index.js +46 -0
  408. package/pitch-deck-groove/node_modules/image-size/dist/types/interface.d.ts +13 -0
  409. package/pitch-deck-groove/node_modules/image-size/dist/types/interface.js +2 -0
  410. package/pitch-deck-groove/node_modules/image-size/dist/types/j2c.d.ts +2 -0
  411. package/pitch-deck-groove/node_modules/image-size/dist/types/j2c.js +12 -0
  412. package/pitch-deck-groove/node_modules/image-size/dist/types/jp2.d.ts +2 -0
  413. package/pitch-deck-groove/node_modules/image-size/dist/types/jp2.js +27 -0
  414. package/pitch-deck-groove/node_modules/image-size/dist/types/jpg.d.ts +2 -0
  415. package/pitch-deck-groove/node_modules/image-size/dist/types/jpg.js +123 -0
  416. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl-stream.d.ts +2 -0
  417. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl-stream.js +45 -0
  418. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl.d.ts +2 -0
  419. package/pitch-deck-groove/node_modules/image-size/dist/types/jxl.js +59 -0
  420. package/pitch-deck-groove/node_modules/image-size/dist/types/ktx.d.ts +2 -0
  421. package/pitch-deck-groove/node_modules/image-size/dist/types/ktx.js +19 -0
  422. package/pitch-deck-groove/node_modules/image-size/dist/types/png.d.ts +2 -0
  423. package/pitch-deck-groove/node_modules/image-size/dist/types/png.js +35 -0
  424. package/pitch-deck-groove/node_modules/image-size/dist/types/pnm.d.ts +2 -0
  425. package/pitch-deck-groove/node_modules/image-size/dist/types/pnm.js +72 -0
  426. package/pitch-deck-groove/node_modules/image-size/dist/types/psd.d.ts +2 -0
  427. package/pitch-deck-groove/node_modules/image-size/dist/types/psd.js +11 -0
  428. package/pitch-deck-groove/node_modules/image-size/dist/types/svg.d.ts +2 -0
  429. package/pitch-deck-groove/node_modules/image-size/dist/types/svg.js +90 -0
  430. package/pitch-deck-groove/node_modules/image-size/dist/types/tga.d.ts +2 -0
  431. package/pitch-deck-groove/node_modules/image-size/dist/types/tga.js +15 -0
  432. package/pitch-deck-groove/node_modules/image-size/dist/types/tiff.d.ts +2 -0
  433. package/pitch-deck-groove/node_modules/image-size/dist/types/tiff.js +95 -0
  434. package/pitch-deck-groove/node_modules/image-size/dist/types/utils.d.ts +15 -0
  435. package/pitch-deck-groove/node_modules/image-size/dist/types/utils.js +75 -0
  436. package/pitch-deck-groove/node_modules/image-size/dist/types/webp.d.ts +2 -0
  437. package/pitch-deck-groove/node_modules/image-size/dist/types/webp.js +60 -0
  438. package/pitch-deck-groove/node_modules/image-size/dist/utils/bit-reader.d.ts +10 -0
  439. package/pitch-deck-groove/node_modules/image-size/dist/utils/bit-reader.js +44 -0
  440. package/pitch-deck-groove/node_modules/image-size/package.json +81 -0
  441. package/pitch-deck-groove/node_modules/immediate/LICENSE.txt +20 -0
  442. package/pitch-deck-groove/node_modules/immediate/README.md +93 -0
  443. package/pitch-deck-groove/node_modules/immediate/dist/immediate.js +75 -0
  444. package/pitch-deck-groove/node_modules/immediate/dist/immediate.min.js +1 -0
  445. package/pitch-deck-groove/node_modules/immediate/lib/browser.js +69 -0
  446. package/pitch-deck-groove/node_modules/immediate/lib/index.js +73 -0
  447. package/pitch-deck-groove/node_modules/immediate/package.json +42 -0
  448. package/pitch-deck-groove/node_modules/inflight/LICENSE +15 -0
  449. package/pitch-deck-groove/node_modules/inflight/README.md +37 -0
  450. package/pitch-deck-groove/node_modules/inflight/inflight.js +54 -0
  451. package/pitch-deck-groove/node_modules/inflight/package.json +29 -0
  452. package/pitch-deck-groove/node_modules/inherits/LICENSE +16 -0
  453. package/pitch-deck-groove/node_modules/inherits/README.md +42 -0
  454. package/pitch-deck-groove/node_modules/inherits/inherits.js +9 -0
  455. package/pitch-deck-groove/node_modules/inherits/inherits_browser.js +27 -0
  456. package/pitch-deck-groove/node_modules/inherits/package.json +29 -0
  457. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  458. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/index.js +50 -0
  459. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/license +9 -0
  460. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/package.json +42 -0
  461. package/pitch-deck-groove/node_modules/is-fullwidth-code-point/readme.md +39 -0
  462. package/pitch-deck-groove/node_modules/isarray/.travis.yml +4 -0
  463. package/pitch-deck-groove/node_modules/isarray/Makefile +6 -0
  464. package/pitch-deck-groove/node_modules/isarray/README.md +60 -0
  465. package/pitch-deck-groove/node_modules/isarray/component.json +19 -0
  466. package/pitch-deck-groove/node_modules/isarray/index.js +5 -0
  467. package/pitch-deck-groove/node_modules/isarray/package.json +45 -0
  468. package/pitch-deck-groove/node_modules/isarray/test.js +20 -0
  469. package/pitch-deck-groove/node_modules/jszip/.codeclimate.yml +16 -0
  470. package/pitch-deck-groove/node_modules/jszip/.editorconfig +8 -0
  471. package/pitch-deck-groove/node_modules/jszip/.eslintrc.js +43 -0
  472. package/pitch-deck-groove/node_modules/jszip/.github/workflows/pr.yaml +58 -0
  473. package/pitch-deck-groove/node_modules/jszip/.jekyll-metadata +0 -0
  474. package/pitch-deck-groove/node_modules/jszip/.travis.yml +17 -0
  475. package/pitch-deck-groove/node_modules/jszip/CHANGES.md +204 -0
  476. package/pitch-deck-groove/node_modules/jszip/LICENSE.markdown +651 -0
  477. package/pitch-deck-groove/node_modules/jszip/README.markdown +33 -0
  478. package/pitch-deck-groove/node_modules/jszip/deps.js +37 -0
  479. package/pitch-deck-groove/node_modules/jszip/dist/jszip.js +11577 -0
  480. package/pitch-deck-groove/node_modules/jszip/dist/jszip.min.js +13 -0
  481. package/pitch-deck-groove/node_modules/jszip/graph.svg +601 -0
  482. package/pitch-deck-groove/node_modules/jszip/index.d.ts +330 -0
  483. package/pitch-deck-groove/node_modules/jszip/lib/base64.js +106 -0
  484. package/pitch-deck-groove/node_modules/jszip/lib/compressedObject.js +74 -0
  485. package/pitch-deck-groove/node_modules/jszip/lib/compressions.js +14 -0
  486. package/pitch-deck-groove/node_modules/jszip/lib/crc32.js +77 -0
  487. package/pitch-deck-groove/node_modules/jszip/lib/defaults.js +11 -0
  488. package/pitch-deck-groove/node_modules/jszip/lib/external.js +18 -0
  489. package/pitch-deck-groove/node_modules/jszip/lib/flate.js +85 -0
  490. package/pitch-deck-groove/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
  491. package/pitch-deck-groove/node_modules/jszip/lib/generate/index.js +57 -0
  492. package/pitch-deck-groove/node_modules/jszip/lib/index.js +55 -0
  493. package/pitch-deck-groove/node_modules/jszip/lib/license_header.js +11 -0
  494. package/pitch-deck-groove/node_modules/jszip/lib/load.js +88 -0
  495. package/pitch-deck-groove/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  496. package/pitch-deck-groove/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  497. package/pitch-deck-groove/node_modules/jszip/lib/nodejsUtils.js +57 -0
  498. package/pitch-deck-groove/node_modules/jszip/lib/object.js +384 -0
  499. package/pitch-deck-groove/node_modules/jszip/lib/readable-stream-browser.js +10 -0
  500. package/pitch-deck-groove/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  501. package/pitch-deck-groove/node_modules/jszip/lib/reader/DataReader.js +116 -0
  502. package/pitch-deck-groove/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  503. package/pitch-deck-groove/node_modules/jszip/lib/reader/StringReader.js +38 -0
  504. package/pitch-deck-groove/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  505. package/pitch-deck-groove/node_modules/jszip/lib/reader/readerFor.js +28 -0
  506. package/pitch-deck-groove/node_modules/jszip/lib/signature.js +7 -0
  507. package/pitch-deck-groove/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  508. package/pitch-deck-groove/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  509. package/pitch-deck-groove/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  510. package/pitch-deck-groove/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  511. package/pitch-deck-groove/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  512. package/pitch-deck-groove/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
  513. package/pitch-deck-groove/node_modules/jszip/lib/support.js +38 -0
  514. package/pitch-deck-groove/node_modules/jszip/lib/utf8.js +275 -0
  515. package/pitch-deck-groove/node_modules/jszip/lib/utils.js +501 -0
  516. package/pitch-deck-groove/node_modules/jszip/lib/zipEntries.js +261 -0
  517. package/pitch-deck-groove/node_modules/jszip/lib/zipEntry.js +293 -0
  518. package/pitch-deck-groove/node_modules/jszip/lib/zipObject.js +133 -0
  519. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/.travis.yml +34 -0
  520. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  521. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/GOVERNANCE.md +136 -0
  522. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/LICENSE +47 -0
  523. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/README.md +58 -0
  524. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  525. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/duplex-browser.js +1 -0
  526. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/duplex.js +1 -0
  527. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  528. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  529. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  530. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  531. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  532. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  533. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  534. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  535. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  536. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/package.json +52 -0
  537. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/passthrough.js +1 -0
  538. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/readable-browser.js +7 -0
  539. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/readable.js +19 -0
  540. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/transform.js +1 -0
  541. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/writable-browser.js +1 -0
  542. package/pitch-deck-groove/node_modules/jszip/node_modules/readable-stream/writable.js +8 -0
  543. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/LICENSE +21 -0
  544. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/README.md +584 -0
  545. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/index.d.ts +187 -0
  546. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/index.js +62 -0
  547. package/pitch-deck-groove/node_modules/jszip/node_modules/safe-buffer/package.json +37 -0
  548. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/.travis.yml +50 -0
  549. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/LICENSE +48 -0
  550. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/README.md +47 -0
  551. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/lib/string_decoder.js +296 -0
  552. package/pitch-deck-groove/node_modules/jszip/node_modules/string_decoder/package.json +31 -0
  553. package/pitch-deck-groove/node_modules/jszip/package.json +67 -0
  554. package/pitch-deck-groove/node_modules/jszip/sponsors.md +21 -0
  555. package/pitch-deck-groove/node_modules/jszip/tsconfig.json +101 -0
  556. package/pitch-deck-groove/node_modules/jszip/vendor/FileSaver.js +247 -0
  557. package/pitch-deck-groove/node_modules/lie/README.md +62 -0
  558. package/pitch-deck-groove/node_modules/lie/dist/lie.js +350 -0
  559. package/pitch-deck-groove/node_modules/lie/dist/lie.min.js +1 -0
  560. package/pitch-deck-groove/node_modules/lie/dist/lie.polyfill.js +358 -0
  561. package/pitch-deck-groove/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  562. package/pitch-deck-groove/node_modules/lie/lib/browser.js +273 -0
  563. package/pitch-deck-groove/node_modules/lie/lib/index.js +298 -0
  564. package/pitch-deck-groove/node_modules/lie/license.md +7 -0
  565. package/pitch-deck-groove/node_modules/lie/lie.d.ts +244 -0
  566. package/pitch-deck-groove/node_modules/lie/package.json +69 -0
  567. package/pitch-deck-groove/node_modules/lie/polyfill.js +4 -0
  568. package/pitch-deck-groove/node_modules/make-dir/index.d.ts +66 -0
  569. package/pitch-deck-groove/node_modules/make-dir/index.js +156 -0
  570. package/pitch-deck-groove/node_modules/make-dir/license +9 -0
  571. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/LICENSE +15 -0
  572. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/README.md +443 -0
  573. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/bin/semver.js +174 -0
  574. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/package.json +38 -0
  575. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/range.bnf +16 -0
  576. package/pitch-deck-groove/node_modules/make-dir/node_modules/semver/semver.js +1643 -0
  577. package/pitch-deck-groove/node_modules/make-dir/package.json +59 -0
  578. package/pitch-deck-groove/node_modules/make-dir/readme.md +125 -0
  579. package/pitch-deck-groove/node_modules/mimic-response/index.d.ts +17 -0
  580. package/pitch-deck-groove/node_modules/mimic-response/index.js +38 -0
  581. package/pitch-deck-groove/node_modules/mimic-response/license +9 -0
  582. package/pitch-deck-groove/node_modules/mimic-response/package.json +42 -0
  583. package/pitch-deck-groove/node_modules/mimic-response/readme.md +57 -0
  584. package/pitch-deck-groove/node_modules/minimatch/LICENSE +15 -0
  585. package/pitch-deck-groove/node_modules/minimatch/README.md +267 -0
  586. package/pitch-deck-groove/node_modules/minimatch/minimatch.js +1005 -0
  587. package/pitch-deck-groove/node_modules/minimatch/package.json +33 -0
  588. package/pitch-deck-groove/node_modules/minipass/LICENSE +15 -0
  589. package/pitch-deck-groove/node_modules/minipass/README.md +769 -0
  590. package/pitch-deck-groove/node_modules/minipass/index.d.ts +152 -0
  591. package/pitch-deck-groove/node_modules/minipass/index.js +702 -0
  592. package/pitch-deck-groove/node_modules/minipass/index.mjs +702 -0
  593. package/pitch-deck-groove/node_modules/minipass/package.json +76 -0
  594. package/pitch-deck-groove/node_modules/minizlib/LICENSE +26 -0
  595. package/pitch-deck-groove/node_modules/minizlib/README.md +60 -0
  596. package/pitch-deck-groove/node_modules/minizlib/constants.js +115 -0
  597. package/pitch-deck-groove/node_modules/minizlib/index.js +348 -0
  598. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/LICENSE +15 -0
  599. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/README.md +728 -0
  600. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/index.d.ts +155 -0
  601. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/index.js +649 -0
  602. package/pitch-deck-groove/node_modules/minizlib/node_modules/minipass/package.json +56 -0
  603. package/pitch-deck-groove/node_modules/minizlib/package.json +42 -0
  604. package/pitch-deck-groove/node_modules/mkdirp/CHANGELOG.md +15 -0
  605. package/pitch-deck-groove/node_modules/mkdirp/LICENSE +21 -0
  606. package/pitch-deck-groove/node_modules/mkdirp/bin/cmd.js +68 -0
  607. package/pitch-deck-groove/node_modules/mkdirp/index.js +31 -0
  608. package/pitch-deck-groove/node_modules/mkdirp/lib/find-made.js +29 -0
  609. package/pitch-deck-groove/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  610. package/pitch-deck-groove/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  611. package/pitch-deck-groove/node_modules/mkdirp/lib/opts-arg.js +23 -0
  612. package/pitch-deck-groove/node_modules/mkdirp/lib/path-arg.js +29 -0
  613. package/pitch-deck-groove/node_modules/mkdirp/lib/use-native.js +10 -0
  614. package/pitch-deck-groove/node_modules/mkdirp/package.json +44 -0
  615. package/pitch-deck-groove/node_modules/mkdirp/readme.markdown +266 -0
  616. package/pitch-deck-groove/node_modules/ms/index.js +162 -0
  617. package/pitch-deck-groove/node_modules/ms/license.md +21 -0
  618. package/pitch-deck-groove/node_modules/ms/package.json +38 -0
  619. package/pitch-deck-groove/node_modules/ms/readme.md +59 -0
  620. package/pitch-deck-groove/node_modules/nan/.github/workflows/ci.yml +52 -0
  621. package/pitch-deck-groove/node_modules/nan/.pre-commit-config.yaml +8 -0
  622. package/pitch-deck-groove/node_modules/nan/CHANGELOG.md +599 -0
  623. package/pitch-deck-groove/node_modules/nan/CMakeLists.txt +138 -0
  624. package/pitch-deck-groove/node_modules/nan/LICENSE.md +9 -0
  625. package/pitch-deck-groove/node_modules/nan/README.md +456 -0
  626. package/pitch-deck-groove/node_modules/nan/doc/asyncworker.md +146 -0
  627. package/pitch-deck-groove/node_modules/nan/doc/buffers.md +54 -0
  628. package/pitch-deck-groove/node_modules/nan/doc/callback.md +76 -0
  629. package/pitch-deck-groove/node_modules/nan/doc/converters.md +41 -0
  630. package/pitch-deck-groove/node_modules/nan/doc/errors.md +226 -0
  631. package/pitch-deck-groove/node_modules/nan/doc/json.md +62 -0
  632. package/pitch-deck-groove/node_modules/nan/doc/maybe_types.md +583 -0
  633. package/pitch-deck-groove/node_modules/nan/doc/methods.md +689 -0
  634. package/pitch-deck-groove/node_modules/nan/doc/new.md +147 -0
  635. package/pitch-deck-groove/node_modules/nan/doc/node_misc.md +123 -0
  636. package/pitch-deck-groove/node_modules/nan/doc/object_wrappers.md +263 -0
  637. package/pitch-deck-groove/node_modules/nan/doc/persistent.md +296 -0
  638. package/pitch-deck-groove/node_modules/nan/doc/scopes.md +73 -0
  639. package/pitch-deck-groove/node_modules/nan/doc/script.md +58 -0
  640. package/pitch-deck-groove/node_modules/nan/doc/string_bytes.md +81 -0
  641. package/pitch-deck-groove/node_modules/nan/doc/v8_internals.md +199 -0
  642. package/pitch-deck-groove/node_modules/nan/doc/v8_misc.md +85 -0
  643. package/pitch-deck-groove/node_modules/nan/include_dirs.js +1 -0
  644. package/pitch-deck-groove/node_modules/nan/nan.h +3202 -0
  645. package/pitch-deck-groove/node_modules/nan/nan_callbacks.h +141 -0
  646. package/pitch-deck-groove/node_modules/nan/nan_callbacks_12_inl.h +690 -0
  647. package/pitch-deck-groove/node_modules/nan/nan_callbacks_pre_12_inl.h +524 -0
  648. package/pitch-deck-groove/node_modules/nan/nan_converters.h +72 -0
  649. package/pitch-deck-groove/node_modules/nan/nan_converters_43_inl.h +68 -0
  650. package/pitch-deck-groove/node_modules/nan/nan_converters_pre_43_inl.h +42 -0
  651. package/pitch-deck-groove/node_modules/nan/nan_define_own_property_helper.h +29 -0
  652. package/pitch-deck-groove/node_modules/nan/nan_implementation_12_inl.h +430 -0
  653. package/pitch-deck-groove/node_modules/nan/nan_implementation_pre_12_inl.h +263 -0
  654. package/pitch-deck-groove/node_modules/nan/nan_json.h +166 -0
  655. package/pitch-deck-groove/node_modules/nan/nan_maybe_43_inl.h +360 -0
  656. package/pitch-deck-groove/node_modules/nan/nan_maybe_pre_43_inl.h +268 -0
  657. package/pitch-deck-groove/node_modules/nan/nan_new.h +340 -0
  658. package/pitch-deck-groove/node_modules/nan/nan_object_wrap.h +156 -0
  659. package/pitch-deck-groove/node_modules/nan/nan_persistent_12_inl.h +132 -0
  660. package/pitch-deck-groove/node_modules/nan/nan_persistent_pre_12_inl.h +242 -0
  661. package/pitch-deck-groove/node_modules/nan/nan_private.h +73 -0
  662. package/pitch-deck-groove/node_modules/nan/nan_scriptorigin.h +97 -0
  663. package/pitch-deck-groove/node_modules/nan/nan_string_bytes.h +305 -0
  664. package/pitch-deck-groove/node_modules/nan/nan_typedarray_contents.h +96 -0
  665. package/pitch-deck-groove/node_modules/nan/nan_weak.h +453 -0
  666. package/pitch-deck-groove/node_modules/nan/package.json +38 -0
  667. package/pitch-deck-groove/node_modules/nan/tools/1to2.js +412 -0
  668. package/pitch-deck-groove/node_modules/nan/tools/README.md +14 -0
  669. package/pitch-deck-groove/node_modules/nan/tools/package.json +19 -0
  670. package/pitch-deck-groove/node_modules/node-fetch/LICENSE.md +22 -0
  671. package/pitch-deck-groove/node_modules/node-fetch/README.md +634 -0
  672. package/pitch-deck-groove/node_modules/node-fetch/browser.js +25 -0
  673. package/pitch-deck-groove/node_modules/node-fetch/lib/index.es.js +1777 -0
  674. package/pitch-deck-groove/node_modules/node-fetch/lib/index.js +1787 -0
  675. package/pitch-deck-groove/node_modules/node-fetch/lib/index.mjs +1775 -0
  676. package/pitch-deck-groove/node_modules/node-fetch/package.json +89 -0
  677. package/pitch-deck-groove/node_modules/nopt/CHANGELOG.md +58 -0
  678. package/pitch-deck-groove/node_modules/nopt/LICENSE +15 -0
  679. package/pitch-deck-groove/node_modules/nopt/README.md +213 -0
  680. package/pitch-deck-groove/node_modules/nopt/bin/nopt.js +54 -0
  681. package/pitch-deck-groove/node_modules/nopt/lib/nopt.js +441 -0
  682. package/pitch-deck-groove/node_modules/nopt/package.json +34 -0
  683. package/pitch-deck-groove/node_modules/npmlog/LICENSE +15 -0
  684. package/pitch-deck-groove/node_modules/npmlog/README.md +216 -0
  685. package/pitch-deck-groove/node_modules/npmlog/log.js +403 -0
  686. package/pitch-deck-groove/node_modules/npmlog/package.json +33 -0
  687. package/pitch-deck-groove/node_modules/object-assign/index.js +90 -0
  688. package/pitch-deck-groove/node_modules/object-assign/license +21 -0
  689. package/pitch-deck-groove/node_modules/object-assign/package.json +42 -0
  690. package/pitch-deck-groove/node_modules/object-assign/readme.md +61 -0
  691. package/pitch-deck-groove/node_modules/once/LICENSE +15 -0
  692. package/pitch-deck-groove/node_modules/once/README.md +79 -0
  693. package/pitch-deck-groove/node_modules/once/once.js +42 -0
  694. package/pitch-deck-groove/node_modules/once/package.json +33 -0
  695. package/pitch-deck-groove/node_modules/pako/CHANGELOG.md +164 -0
  696. package/pitch-deck-groove/node_modules/pako/LICENSE +21 -0
  697. package/pitch-deck-groove/node_modules/pako/README.md +191 -0
  698. package/pitch-deck-groove/node_modules/pako/dist/pako.js +6818 -0
  699. package/pitch-deck-groove/node_modules/pako/dist/pako.min.js +1 -0
  700. package/pitch-deck-groove/node_modules/pako/dist/pako_deflate.js +3997 -0
  701. package/pitch-deck-groove/node_modules/pako/dist/pako_deflate.min.js +1 -0
  702. package/pitch-deck-groove/node_modules/pako/dist/pako_inflate.js +3300 -0
  703. package/pitch-deck-groove/node_modules/pako/dist/pako_inflate.min.js +1 -0
  704. package/pitch-deck-groove/node_modules/pako/index.js +14 -0
  705. package/pitch-deck-groove/node_modules/pako/lib/deflate.js +400 -0
  706. package/pitch-deck-groove/node_modules/pako/lib/inflate.js +423 -0
  707. package/pitch-deck-groove/node_modules/pako/lib/utils/common.js +105 -0
  708. package/pitch-deck-groove/node_modules/pako/lib/utils/strings.js +187 -0
  709. package/pitch-deck-groove/node_modules/pako/lib/zlib/README +59 -0
  710. package/pitch-deck-groove/node_modules/pako/lib/zlib/adler32.js +51 -0
  711. package/pitch-deck-groove/node_modules/pako/lib/zlib/constants.js +68 -0
  712. package/pitch-deck-groove/node_modules/pako/lib/zlib/crc32.js +59 -0
  713. package/pitch-deck-groove/node_modules/pako/lib/zlib/deflate.js +1874 -0
  714. package/pitch-deck-groove/node_modules/pako/lib/zlib/gzheader.js +58 -0
  715. package/pitch-deck-groove/node_modules/pako/lib/zlib/inffast.js +345 -0
  716. package/pitch-deck-groove/node_modules/pako/lib/zlib/inflate.js +1556 -0
  717. package/pitch-deck-groove/node_modules/pako/lib/zlib/inftrees.js +343 -0
  718. package/pitch-deck-groove/node_modules/pako/lib/zlib/messages.js +32 -0
  719. package/pitch-deck-groove/node_modules/pako/lib/zlib/trees.js +1222 -0
  720. package/pitch-deck-groove/node_modules/pako/lib/zlib/zstream.js +47 -0
  721. package/pitch-deck-groove/node_modules/pako/package.json +44 -0
  722. package/pitch-deck-groove/node_modules/path-is-absolute/index.js +20 -0
  723. package/pitch-deck-groove/node_modules/path-is-absolute/license +21 -0
  724. package/pitch-deck-groove/node_modules/path-is-absolute/package.json +43 -0
  725. package/pitch-deck-groove/node_modules/path-is-absolute/readme.md +59 -0
  726. package/pitch-deck-groove/node_modules/pptxgenjs/LICENSE +21 -0
  727. package/pitch-deck-groove/node_modules/pptxgenjs/README.md +284 -0
  728. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.bundle.js +3 -0
  729. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.bundle.js.map +1 -0
  730. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.cjs.js +7445 -0
  731. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.es.js +7439 -0
  732. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.min.js +3 -0
  733. package/pitch-deck-groove/node_modules/pptxgenjs/dist/pptxgen.min.js.map +1 -0
  734. package/pitch-deck-groove/node_modules/pptxgenjs/package.json +89 -0
  735. package/pitch-deck-groove/node_modules/pptxgenjs/types/index.d.ts +2670 -0
  736. package/pitch-deck-groove/node_modules/process-nextick-args/index.js +45 -0
  737. package/pitch-deck-groove/node_modules/process-nextick-args/license.md +19 -0
  738. package/pitch-deck-groove/node_modules/process-nextick-args/package.json +25 -0
  739. package/pitch-deck-groove/node_modules/process-nextick-args/readme.md +18 -0
  740. package/pitch-deck-groove/node_modules/queue/LICENSE +8 -0
  741. package/pitch-deck-groove/node_modules/queue/index.d.ts +173 -0
  742. package/pitch-deck-groove/node_modules/queue/index.js +195 -0
  743. package/pitch-deck-groove/node_modules/queue/package.json +43 -0
  744. package/pitch-deck-groove/node_modules/queue/readme.md +221 -0
  745. package/pitch-deck-groove/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  746. package/pitch-deck-groove/node_modules/readable-stream/GOVERNANCE.md +136 -0
  747. package/pitch-deck-groove/node_modules/readable-stream/LICENSE +47 -0
  748. package/pitch-deck-groove/node_modules/readable-stream/README.md +106 -0
  749. package/pitch-deck-groove/node_modules/readable-stream/errors-browser.js +127 -0
  750. package/pitch-deck-groove/node_modules/readable-stream/errors.js +116 -0
  751. package/pitch-deck-groove/node_modules/readable-stream/experimentalWarning.js +17 -0
  752. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  753. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  754. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  755. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  756. package/pitch-deck-groove/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  757. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  758. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  759. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  760. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  761. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  762. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  763. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  764. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  765. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  766. package/pitch-deck-groove/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  767. package/pitch-deck-groove/node_modules/readable-stream/package.json +68 -0
  768. package/pitch-deck-groove/node_modules/readable-stream/readable-browser.js +9 -0
  769. package/pitch-deck-groove/node_modules/readable-stream/readable.js +16 -0
  770. package/pitch-deck-groove/node_modules/rimraf/CHANGELOG.md +65 -0
  771. package/pitch-deck-groove/node_modules/rimraf/LICENSE +15 -0
  772. package/pitch-deck-groove/node_modules/rimraf/README.md +101 -0
  773. package/pitch-deck-groove/node_modules/rimraf/bin.js +68 -0
  774. package/pitch-deck-groove/node_modules/rimraf/package.json +32 -0
  775. package/pitch-deck-groove/node_modules/rimraf/rimraf.js +360 -0
  776. package/pitch-deck-groove/node_modules/safe-buffer/LICENSE +21 -0
  777. package/pitch-deck-groove/node_modules/safe-buffer/README.md +584 -0
  778. package/pitch-deck-groove/node_modules/safe-buffer/index.d.ts +187 -0
  779. package/pitch-deck-groove/node_modules/safe-buffer/index.js +65 -0
  780. package/pitch-deck-groove/node_modules/safe-buffer/package.json +51 -0
  781. package/pitch-deck-groove/node_modules/semver/LICENSE +15 -0
  782. package/pitch-deck-groove/node_modules/semver/README.md +665 -0
  783. package/pitch-deck-groove/node_modules/semver/bin/semver.js +191 -0
  784. package/pitch-deck-groove/node_modules/semver/classes/comparator.js +143 -0
  785. package/pitch-deck-groove/node_modules/semver/classes/index.js +7 -0
  786. package/pitch-deck-groove/node_modules/semver/classes/range.js +557 -0
  787. package/pitch-deck-groove/node_modules/semver/classes/semver.js +333 -0
  788. package/pitch-deck-groove/node_modules/semver/functions/clean.js +8 -0
  789. package/pitch-deck-groove/node_modules/semver/functions/cmp.js +54 -0
  790. package/pitch-deck-groove/node_modules/semver/functions/coerce.js +62 -0
  791. package/pitch-deck-groove/node_modules/semver/functions/compare-build.js +9 -0
  792. package/pitch-deck-groove/node_modules/semver/functions/compare-loose.js +5 -0
  793. package/pitch-deck-groove/node_modules/semver/functions/compare.js +7 -0
  794. package/pitch-deck-groove/node_modules/semver/functions/diff.js +60 -0
  795. package/pitch-deck-groove/node_modules/semver/functions/eq.js +5 -0
  796. package/pitch-deck-groove/node_modules/semver/functions/gt.js +5 -0
  797. package/pitch-deck-groove/node_modules/semver/functions/gte.js +5 -0
  798. package/pitch-deck-groove/node_modules/semver/functions/inc.js +21 -0
  799. package/pitch-deck-groove/node_modules/semver/functions/lt.js +5 -0
  800. package/pitch-deck-groove/node_modules/semver/functions/lte.js +5 -0
  801. package/pitch-deck-groove/node_modules/semver/functions/major.js +5 -0
  802. package/pitch-deck-groove/node_modules/semver/functions/minor.js +5 -0
  803. package/pitch-deck-groove/node_modules/semver/functions/neq.js +5 -0
  804. package/pitch-deck-groove/node_modules/semver/functions/parse.js +18 -0
  805. package/pitch-deck-groove/node_modules/semver/functions/patch.js +5 -0
  806. package/pitch-deck-groove/node_modules/semver/functions/prerelease.js +8 -0
  807. package/pitch-deck-groove/node_modules/semver/functions/rcompare.js +5 -0
  808. package/pitch-deck-groove/node_modules/semver/functions/rsort.js +5 -0
  809. package/pitch-deck-groove/node_modules/semver/functions/satisfies.js +12 -0
  810. package/pitch-deck-groove/node_modules/semver/functions/sort.js +5 -0
  811. package/pitch-deck-groove/node_modules/semver/functions/valid.js +8 -0
  812. package/pitch-deck-groove/node_modules/semver/index.js +91 -0
  813. package/pitch-deck-groove/node_modules/semver/internal/constants.js +37 -0
  814. package/pitch-deck-groove/node_modules/semver/internal/debug.js +11 -0
  815. package/pitch-deck-groove/node_modules/semver/internal/identifiers.js +29 -0
  816. package/pitch-deck-groove/node_modules/semver/internal/lrucache.js +42 -0
  817. package/pitch-deck-groove/node_modules/semver/internal/parse-options.js +17 -0
  818. package/pitch-deck-groove/node_modules/semver/internal/re.js +223 -0
  819. package/pitch-deck-groove/node_modules/semver/package.json +78 -0
  820. package/pitch-deck-groove/node_modules/semver/preload.js +4 -0
  821. package/pitch-deck-groove/node_modules/semver/range.bnf +16 -0
  822. package/pitch-deck-groove/node_modules/semver/ranges/gtr.js +6 -0
  823. package/pitch-deck-groove/node_modules/semver/ranges/intersects.js +9 -0
  824. package/pitch-deck-groove/node_modules/semver/ranges/ltr.js +6 -0
  825. package/pitch-deck-groove/node_modules/semver/ranges/max-satisfying.js +27 -0
  826. package/pitch-deck-groove/node_modules/semver/ranges/min-satisfying.js +26 -0
  827. package/pitch-deck-groove/node_modules/semver/ranges/min-version.js +63 -0
  828. package/pitch-deck-groove/node_modules/semver/ranges/outside.js +82 -0
  829. package/pitch-deck-groove/node_modules/semver/ranges/simplify.js +49 -0
  830. package/pitch-deck-groove/node_modules/semver/ranges/subset.js +249 -0
  831. package/pitch-deck-groove/node_modules/semver/ranges/to-comparators.js +10 -0
  832. package/pitch-deck-groove/node_modules/semver/ranges/valid.js +13 -0
  833. package/pitch-deck-groove/node_modules/set-blocking/CHANGELOG.md +26 -0
  834. package/pitch-deck-groove/node_modules/set-blocking/LICENSE.txt +14 -0
  835. package/pitch-deck-groove/node_modules/set-blocking/README.md +31 -0
  836. package/pitch-deck-groove/node_modules/set-blocking/index.js +7 -0
  837. package/pitch-deck-groove/node_modules/set-blocking/package.json +42 -0
  838. package/pitch-deck-groove/node_modules/setimmediate/LICENSE.txt +20 -0
  839. package/pitch-deck-groove/node_modules/setimmediate/package.json +30 -0
  840. package/pitch-deck-groove/node_modules/setimmediate/setImmediate.js +186 -0
  841. package/pitch-deck-groove/node_modules/signal-exit/LICENSE.txt +16 -0
  842. package/pitch-deck-groove/node_modules/signal-exit/README.md +39 -0
  843. package/pitch-deck-groove/node_modules/signal-exit/index.js +202 -0
  844. package/pitch-deck-groove/node_modules/signal-exit/package.json +38 -0
  845. package/pitch-deck-groove/node_modules/signal-exit/signals.js +53 -0
  846. package/pitch-deck-groove/node_modules/simple-concat/.travis.yml +3 -0
  847. package/pitch-deck-groove/node_modules/simple-concat/LICENSE +20 -0
  848. package/pitch-deck-groove/node_modules/simple-concat/README.md +44 -0
  849. package/pitch-deck-groove/node_modules/simple-concat/index.js +15 -0
  850. package/pitch-deck-groove/node_modules/simple-concat/package.json +47 -0
  851. package/pitch-deck-groove/node_modules/simple-concat/test/basic.js +41 -0
  852. package/pitch-deck-groove/node_modules/simple-get/LICENSE +20 -0
  853. package/pitch-deck-groove/node_modules/simple-get/README.md +319 -0
  854. package/pitch-deck-groove/node_modules/simple-get/index.js +107 -0
  855. package/pitch-deck-groove/node_modules/simple-get/package.json +53 -0
  856. package/pitch-deck-groove/node_modules/string-width/index.d.ts +29 -0
  857. package/pitch-deck-groove/node_modules/string-width/index.js +47 -0
  858. package/pitch-deck-groove/node_modules/string-width/license +9 -0
  859. package/pitch-deck-groove/node_modules/string-width/package.json +56 -0
  860. package/pitch-deck-groove/node_modules/string-width/readme.md +50 -0
  861. package/pitch-deck-groove/node_modules/string_decoder/LICENSE +48 -0
  862. package/pitch-deck-groove/node_modules/string_decoder/README.md +47 -0
  863. package/pitch-deck-groove/node_modules/string_decoder/lib/string_decoder.js +296 -0
  864. package/pitch-deck-groove/node_modules/string_decoder/package.json +34 -0
  865. package/pitch-deck-groove/node_modules/strip-ansi/index.d.ts +17 -0
  866. package/pitch-deck-groove/node_modules/strip-ansi/index.js +4 -0
  867. package/pitch-deck-groove/node_modules/strip-ansi/license +9 -0
  868. package/pitch-deck-groove/node_modules/strip-ansi/package.json +54 -0
  869. package/pitch-deck-groove/node_modules/strip-ansi/readme.md +46 -0
  870. package/pitch-deck-groove/node_modules/tar/LICENSE +15 -0
  871. package/pitch-deck-groove/node_modules/tar/README.md +1080 -0
  872. package/pitch-deck-groove/node_modules/tar/index.js +18 -0
  873. package/pitch-deck-groove/node_modules/tar/lib/create.js +111 -0
  874. package/pitch-deck-groove/node_modules/tar/lib/extract.js +113 -0
  875. package/pitch-deck-groove/node_modules/tar/lib/get-write-flag.js +20 -0
  876. package/pitch-deck-groove/node_modules/tar/lib/header.js +304 -0
  877. package/pitch-deck-groove/node_modules/tar/lib/high-level-opt.js +29 -0
  878. package/pitch-deck-groove/node_modules/tar/lib/large-numbers.js +104 -0
  879. package/pitch-deck-groove/node_modules/tar/lib/list.js +139 -0
  880. package/pitch-deck-groove/node_modules/tar/lib/mkdir.js +229 -0
  881. package/pitch-deck-groove/node_modules/tar/lib/mode-fix.js +27 -0
  882. package/pitch-deck-groove/node_modules/tar/lib/normalize-unicode.js +12 -0
  883. package/pitch-deck-groove/node_modules/tar/lib/normalize-windows-path.js +8 -0
  884. package/pitch-deck-groove/node_modules/tar/lib/pack.js +432 -0
  885. package/pitch-deck-groove/node_modules/tar/lib/parse.js +552 -0
  886. package/pitch-deck-groove/node_modules/tar/lib/path-reservations.js +156 -0
  887. package/pitch-deck-groove/node_modules/tar/lib/pax.js +150 -0
  888. package/pitch-deck-groove/node_modules/tar/lib/read-entry.js +107 -0
  889. package/pitch-deck-groove/node_modules/tar/lib/replace.js +246 -0
  890. package/pitch-deck-groove/node_modules/tar/lib/strip-absolute-path.js +24 -0
  891. package/pitch-deck-groove/node_modules/tar/lib/strip-trailing-slashes.js +13 -0
  892. package/pitch-deck-groove/node_modules/tar/lib/types.js +44 -0
  893. package/pitch-deck-groove/node_modules/tar/lib/unpack.js +923 -0
  894. package/pitch-deck-groove/node_modules/tar/lib/update.js +40 -0
  895. package/pitch-deck-groove/node_modules/tar/lib/warn-mixin.js +24 -0
  896. package/pitch-deck-groove/node_modules/tar/lib/winchars.js +23 -0
  897. package/pitch-deck-groove/node_modules/tar/lib/write-entry.js +546 -0
  898. package/pitch-deck-groove/node_modules/tar/package.json +70 -0
  899. package/pitch-deck-groove/node_modules/tr46/index.js +193 -0
  900. package/pitch-deck-groove/node_modules/tr46/lib/.gitkeep +0 -0
  901. package/pitch-deck-groove/node_modules/tr46/lib/mappingTable.json +1 -0
  902. package/pitch-deck-groove/node_modules/tr46/package.json +31 -0
  903. package/pitch-deck-groove/node_modules/undici-types/README.md +6 -0
  904. package/pitch-deck-groove/node_modules/undici-types/agent.d.ts +31 -0
  905. package/pitch-deck-groove/node_modules/undici-types/api.d.ts +43 -0
  906. package/pitch-deck-groove/node_modules/undici-types/balanced-pool.d.ts +18 -0
  907. package/pitch-deck-groove/node_modules/undici-types/cache.d.ts +36 -0
  908. package/pitch-deck-groove/node_modules/undici-types/client.d.ts +97 -0
  909. package/pitch-deck-groove/node_modules/undici-types/connector.d.ts +34 -0
  910. package/pitch-deck-groove/node_modules/undici-types/content-type.d.ts +21 -0
  911. package/pitch-deck-groove/node_modules/undici-types/cookies.d.ts +28 -0
  912. package/pitch-deck-groove/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
  913. package/pitch-deck-groove/node_modules/undici-types/dispatcher.d.ts +241 -0
  914. package/pitch-deck-groove/node_modules/undici-types/errors.d.ts +128 -0
  915. package/pitch-deck-groove/node_modules/undici-types/fetch.d.ts +209 -0
  916. package/pitch-deck-groove/node_modules/undici-types/file.d.ts +39 -0
  917. package/pitch-deck-groove/node_modules/undici-types/filereader.d.ts +54 -0
  918. package/pitch-deck-groove/node_modules/undici-types/formdata.d.ts +108 -0
  919. package/pitch-deck-groove/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  920. package/pitch-deck-groove/node_modules/undici-types/global-origin.d.ts +7 -0
  921. package/pitch-deck-groove/node_modules/undici-types/handlers.d.ts +9 -0
  922. package/pitch-deck-groove/node_modules/undici-types/header.d.ts +4 -0
  923. package/pitch-deck-groove/node_modules/undici-types/index.d.ts +63 -0
  924. package/pitch-deck-groove/node_modules/undici-types/interceptors.d.ts +5 -0
  925. package/pitch-deck-groove/node_modules/undici-types/mock-agent.d.ts +50 -0
  926. package/pitch-deck-groove/node_modules/undici-types/mock-client.d.ts +25 -0
  927. package/pitch-deck-groove/node_modules/undici-types/mock-errors.d.ts +12 -0
  928. package/pitch-deck-groove/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  929. package/pitch-deck-groove/node_modules/undici-types/mock-pool.d.ts +25 -0
  930. package/pitch-deck-groove/node_modules/undici-types/package.json +55 -0
  931. package/pitch-deck-groove/node_modules/undici-types/patch.d.ts +71 -0
  932. package/pitch-deck-groove/node_modules/undici-types/pool-stats.d.ts +19 -0
  933. package/pitch-deck-groove/node_modules/undici-types/pool.d.ts +28 -0
  934. package/pitch-deck-groove/node_modules/undici-types/proxy-agent.d.ts +30 -0
  935. package/pitch-deck-groove/node_modules/undici-types/readable.d.ts +61 -0
  936. package/pitch-deck-groove/node_modules/undici-types/webidl.d.ts +220 -0
  937. package/pitch-deck-groove/node_modules/undici-types/websocket.d.ts +131 -0
  938. package/pitch-deck-groove/node_modules/util-deprecate/History.md +16 -0
  939. package/pitch-deck-groove/node_modules/util-deprecate/LICENSE +24 -0
  940. package/pitch-deck-groove/node_modules/util-deprecate/README.md +53 -0
  941. package/pitch-deck-groove/node_modules/util-deprecate/browser.js +67 -0
  942. package/pitch-deck-groove/node_modules/util-deprecate/node.js +6 -0
  943. package/pitch-deck-groove/node_modules/util-deprecate/package.json +27 -0
  944. package/pitch-deck-groove/node_modules/webidl-conversions/LICENSE.md +12 -0
  945. package/pitch-deck-groove/node_modules/webidl-conversions/README.md +53 -0
  946. package/pitch-deck-groove/node_modules/webidl-conversions/lib/index.js +189 -0
  947. package/pitch-deck-groove/node_modules/webidl-conversions/package.json +23 -0
  948. package/pitch-deck-groove/node_modules/whatwg-url/LICENSE.txt +21 -0
  949. package/pitch-deck-groove/node_modules/whatwg-url/README.md +67 -0
  950. package/pitch-deck-groove/node_modules/whatwg-url/lib/URL-impl.js +200 -0
  951. package/pitch-deck-groove/node_modules/whatwg-url/lib/URL.js +196 -0
  952. package/pitch-deck-groove/node_modules/whatwg-url/lib/public-api.js +11 -0
  953. package/pitch-deck-groove/node_modules/whatwg-url/lib/url-state-machine.js +1297 -0
  954. package/pitch-deck-groove/node_modules/whatwg-url/lib/utils.js +20 -0
  955. package/pitch-deck-groove/node_modules/whatwg-url/package.json +32 -0
  956. package/pitch-deck-groove/node_modules/wide-align/LICENSE +14 -0
  957. package/pitch-deck-groove/node_modules/wide-align/README.md +47 -0
  958. package/pitch-deck-groove/node_modules/wide-align/align.js +65 -0
  959. package/pitch-deck-groove/node_modules/wide-align/package.json +33 -0
  960. package/pitch-deck-groove/node_modules/wrappy/LICENSE +15 -0
  961. package/pitch-deck-groove/node_modules/wrappy/README.md +36 -0
  962. package/pitch-deck-groove/node_modules/wrappy/package.json +29 -0
  963. package/pitch-deck-groove/node_modules/wrappy/wrappy.js +33 -0
  964. package/pitch-deck-groove/node_modules/yallist/LICENSE +15 -0
  965. package/pitch-deck-groove/node_modules/yallist/README.md +204 -0
  966. package/pitch-deck-groove/node_modules/yallist/iterator.js +8 -0
  967. package/pitch-deck-groove/node_modules/yallist/package.json +29 -0
  968. package/pitch-deck-groove/node_modules/yallist/yallist.js +426 -0
  969. package/pitch-deck-groove/package-lock.json +763 -0
  970. package/pitch-deck-groove/package.json +13 -0
  971. package/pitch-deck-groove/slides.json +239 -0
  972. package/node_modules/@groove-dev/gui/dist/assets/index-D5zShz2P.js +0 -633
  973. package/node_modules/@groove-dev/gui/dist/assets/index-E07lphaH.css +0 -1
  974. package/packages/gui/dist/assets/index-D5zShz2P.js +0 -633
  975. package/packages/gui/dist/assets/index-E07lphaH.css +0 -1
@@ -0,0 +1,965 @@
1
+ // Copyright (c) 2010 LearnBoost <tj@learnboost.com>
2
+
3
+ #include "Canvas.h"
4
+
5
+ #include <algorithm> // std::min
6
+ #include <assert.h>
7
+ #include <cairo-pdf.h>
8
+ #include <cairo-svg.h>
9
+ #include "CanvasRenderingContext2d.h"
10
+ #include "closure.h"
11
+ #include <cstring>
12
+ #include <cctype>
13
+ #include <ctime>
14
+ #include <glib.h>
15
+ #include "PNG.h"
16
+ #include "register_font.h"
17
+ #include <sstream>
18
+ #include <stdlib.h>
19
+ #include <string>
20
+ #include <unordered_set>
21
+ #include "Util.h"
22
+ #include <vector>
23
+ #include "node_buffer.h"
24
+
25
+ #ifdef HAVE_JPEG
26
+ #include "JPEGStream.h"
27
+ #endif
28
+
29
+ #include "backend/ImageBackend.h"
30
+ #include "backend/PdfBackend.h"
31
+ #include "backend/SvgBackend.h"
32
+
33
+ #define GENERIC_FACE_ERROR \
34
+ "The second argument to registerFont is required, and should be an object " \
35
+ "with at least a family (string) and optionally weight (string/number) " \
36
+ "and style (string)."
37
+
38
+ #define CHECK_RECEIVER(prop) \
39
+ if (!Canvas::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { \
40
+ Nan::ThrowTypeError("Method " #prop " called on incompatible receiver"); \
41
+ return; \
42
+ }
43
+
44
+ using namespace v8;
45
+ using namespace std;
46
+
47
+ Nan::Persistent<FunctionTemplate> Canvas::constructor;
48
+
49
+ std::vector<FontFace> font_face_list;
50
+
51
+ /*
52
+ * Initialize Canvas.
53
+ */
54
+
55
+ void
56
+ Canvas::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
57
+ Nan::HandleScope scope;
58
+
59
+ // Constructor
60
+ Local<FunctionTemplate> ctor = Nan::New<FunctionTemplate>(Canvas::New);
61
+ constructor.Reset(ctor);
62
+ ctor->InstanceTemplate()->SetInternalFieldCount(1);
63
+ ctor->SetClassName(Nan::New("Canvas").ToLocalChecked());
64
+
65
+ // Prototype
66
+ Local<ObjectTemplate> proto = ctor->PrototypeTemplate();
67
+ Nan::SetPrototypeMethod(ctor, "toBuffer", ToBuffer);
68
+ Nan::SetPrototypeMethod(ctor, "streamPNGSync", StreamPNGSync);
69
+ Nan::SetPrototypeMethod(ctor, "streamPDFSync", StreamPDFSync);
70
+ #ifdef HAVE_JPEG
71
+ Nan::SetPrototypeMethod(ctor, "streamJPEGSync", StreamJPEGSync);
72
+ #endif
73
+ Nan::SetAccessor(proto, Nan::New("type").ToLocalChecked(), GetType);
74
+ Nan::SetAccessor(proto, Nan::New("stride").ToLocalChecked(), GetStride);
75
+ Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth, SetWidth);
76
+ Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight, SetHeight);
77
+
78
+ Nan::SetTemplate(proto, "PNG_NO_FILTERS", Nan::New<Uint32>(PNG_NO_FILTERS));
79
+ Nan::SetTemplate(proto, "PNG_FILTER_NONE", Nan::New<Uint32>(PNG_FILTER_NONE));
80
+ Nan::SetTemplate(proto, "PNG_FILTER_SUB", Nan::New<Uint32>(PNG_FILTER_SUB));
81
+ Nan::SetTemplate(proto, "PNG_FILTER_UP", Nan::New<Uint32>(PNG_FILTER_UP));
82
+ Nan::SetTemplate(proto, "PNG_FILTER_AVG", Nan::New<Uint32>(PNG_FILTER_AVG));
83
+ Nan::SetTemplate(proto, "PNG_FILTER_PAETH", Nan::New<Uint32>(PNG_FILTER_PAETH));
84
+ Nan::SetTemplate(proto, "PNG_ALL_FILTERS", Nan::New<Uint32>(PNG_ALL_FILTERS));
85
+
86
+ // Class methods
87
+ Nan::SetMethod(ctor, "_registerFont", RegisterFont);
88
+ Nan::SetMethod(ctor, "_deregisterAllFonts", DeregisterAllFonts);
89
+
90
+ Local<Context> ctx = Nan::GetCurrentContext();
91
+ Nan::Set(target,
92
+ Nan::New("Canvas").ToLocalChecked(),
93
+ ctor->GetFunction(ctx).ToLocalChecked());
94
+ }
95
+
96
+ /*
97
+ * Initialize a Canvas with the given width and height.
98
+ */
99
+
100
+ NAN_METHOD(Canvas::New) {
101
+ if (!info.IsConstructCall()) {
102
+ return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'");
103
+ }
104
+
105
+ Backend* backend = NULL;
106
+ if (info[0]->IsNumber()) {
107
+ int width = Nan::To<uint32_t>(info[0]).FromMaybe(0), height = 0;
108
+
109
+ if (info[1]->IsNumber()) height = Nan::To<uint32_t>(info[1]).FromMaybe(0);
110
+
111
+ if (info[2]->IsString()) {
112
+ if (0 == strcmp("pdf", *Nan::Utf8String(info[2])))
113
+ backend = new PdfBackend(width, height);
114
+ else if (0 == strcmp("svg", *Nan::Utf8String(info[2])))
115
+ backend = new SvgBackend(width, height);
116
+ else
117
+ backend = new ImageBackend(width, height);
118
+ }
119
+ else
120
+ backend = new ImageBackend(width, height);
121
+ }
122
+ else if (info[0]->IsObject()) {
123
+ if (Nan::New(ImageBackend::constructor)->HasInstance(info[0]) ||
124
+ Nan::New(PdfBackend::constructor)->HasInstance(info[0]) ||
125
+ Nan::New(SvgBackend::constructor)->HasInstance(info[0])) {
126
+ backend = Nan::ObjectWrap::Unwrap<Backend>(Nan::To<Object>(info[0]).ToLocalChecked());
127
+ }else{
128
+ return Nan::ThrowTypeError("Invalid arguments");
129
+ }
130
+ }
131
+ else {
132
+ backend = new ImageBackend(0, 0);
133
+ }
134
+
135
+ if (!backend->isSurfaceValid()) {
136
+ delete backend;
137
+ return Nan::ThrowError(backend->getError());
138
+ }
139
+
140
+ Canvas* canvas = new Canvas(backend);
141
+ canvas->Wrap(info.This());
142
+
143
+ backend->setCanvas(canvas);
144
+
145
+ info.GetReturnValue().Set(info.This());
146
+ }
147
+
148
+ /*
149
+ * Get type string.
150
+ */
151
+
152
+ NAN_GETTER(Canvas::GetType) {
153
+ CHECK_RECEIVER(Canvas.GetType);
154
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
155
+ info.GetReturnValue().Set(Nan::New<String>(canvas->backend()->getName()).ToLocalChecked());
156
+ }
157
+
158
+ /*
159
+ * Get stride.
160
+ */
161
+ NAN_GETTER(Canvas::GetStride) {
162
+ CHECK_RECEIVER(Canvas.GetStride);
163
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
164
+ info.GetReturnValue().Set(Nan::New<Number>(canvas->stride()));
165
+ }
166
+
167
+ /*
168
+ * Get width.
169
+ */
170
+
171
+ NAN_GETTER(Canvas::GetWidth) {
172
+ CHECK_RECEIVER(Canvas.GetWidth);
173
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
174
+ info.GetReturnValue().Set(Nan::New<Number>(canvas->getWidth()));
175
+ }
176
+
177
+ /*
178
+ * Set width.
179
+ */
180
+
181
+ NAN_SETTER(Canvas::SetWidth) {
182
+ CHECK_RECEIVER(Canvas.SetWidth);
183
+ if (value->IsNumber()) {
184
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
185
+ canvas->backend()->setWidth(Nan::To<uint32_t>(value).FromMaybe(0));
186
+ canvas->resurface(info.This());
187
+ }
188
+ }
189
+
190
+ /*
191
+ * Get height.
192
+ */
193
+
194
+ NAN_GETTER(Canvas::GetHeight) {
195
+ CHECK_RECEIVER(Canvas.GetHeight);
196
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
197
+ info.GetReturnValue().Set(Nan::New<Number>(canvas->getHeight()));
198
+ }
199
+
200
+ /*
201
+ * Set height.
202
+ */
203
+
204
+ NAN_SETTER(Canvas::SetHeight) {
205
+ CHECK_RECEIVER(Canvas.SetHeight);
206
+ if (value->IsNumber()) {
207
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
208
+ canvas->backend()->setHeight(Nan::To<uint32_t>(value).FromMaybe(0));
209
+ canvas->resurface(info.This());
210
+ }
211
+ }
212
+
213
+ /*
214
+ * EIO toBuffer callback.
215
+ */
216
+
217
+ void
218
+ Canvas::ToPngBufferAsync(uv_work_t *req) {
219
+ PngClosure* closure = static_cast<PngClosure*>(req->data);
220
+
221
+ closure->status = canvas_write_to_png_stream(
222
+ closure->canvas->surface(),
223
+ PngClosure::writeVec,
224
+ closure);
225
+ }
226
+
227
+ #ifdef HAVE_JPEG
228
+ void
229
+ Canvas::ToJpegBufferAsync(uv_work_t *req) {
230
+ JpegClosure* closure = static_cast<JpegClosure*>(req->data);
231
+ write_to_jpeg_buffer(closure->canvas->surface(), closure);
232
+ }
233
+ #endif
234
+
235
+ /*
236
+ * EIO after toBuffer callback.
237
+ */
238
+
239
+ void
240
+ Canvas::ToBufferAsyncAfter(uv_work_t *req) {
241
+ Nan::HandleScope scope;
242
+ Nan::AsyncResource async("canvas:ToBufferAsyncAfter");
243
+ Closure* closure = static_cast<Closure*>(req->data);
244
+ delete req;
245
+
246
+ if (closure->status) {
247
+ Local<Value> argv[1] = { Canvas::Error(closure->status) };
248
+ closure->cb.Call(1, argv, &async);
249
+ } else {
250
+ Local<Object> buf = Nan::CopyBuffer((char*)&closure->vec[0], closure->vec.size()).ToLocalChecked();
251
+ Local<Value> argv[2] = { Nan::Null(), buf };
252
+ closure->cb.Call(sizeof argv / sizeof *argv, argv, &async);
253
+ }
254
+
255
+ closure->canvas->Unref();
256
+ delete closure;
257
+ }
258
+
259
+ static void parsePNGArgs(Local<Value> arg, PngClosure& pngargs) {
260
+ if (arg->IsObject()) {
261
+ Local<Object> obj = Nan::To<Object>(arg).ToLocalChecked();
262
+
263
+ Local<Value> cLevel = Nan::Get(obj, Nan::New("compressionLevel").ToLocalChecked()).ToLocalChecked();
264
+ if (cLevel->IsUint32()) {
265
+ uint32_t val = Nan::To<uint32_t>(cLevel).FromMaybe(0);
266
+ // See quote below from spec section 4.12.5.5.
267
+ if (val <= 9) pngargs.compressionLevel = val;
268
+ }
269
+
270
+ Local<Value> rez = Nan::Get(obj, Nan::New("resolution").ToLocalChecked()).ToLocalChecked();
271
+ if (rez->IsUint32()) {
272
+ uint32_t val = Nan::To<uint32_t>(rez).FromMaybe(0);
273
+ if (val > 0) pngargs.resolution = val;
274
+ }
275
+
276
+ Local<Value> filters = Nan::Get(obj, Nan::New("filters").ToLocalChecked()).ToLocalChecked();
277
+ if (filters->IsUint32()) pngargs.filters = Nan::To<uint32_t>(filters).FromMaybe(0);
278
+
279
+ Local<Value> palette = Nan::Get(obj, Nan::New("palette").ToLocalChecked()).ToLocalChecked();
280
+ if (palette->IsUint8ClampedArray()) {
281
+ Local<Uint8ClampedArray> palette_ta = palette.As<Uint8ClampedArray>();
282
+ pngargs.nPaletteColors = palette_ta->Length();
283
+ if (pngargs.nPaletteColors % 4 != 0) {
284
+ throw "Palette length must be a multiple of 4.";
285
+ }
286
+ pngargs.nPaletteColors /= 4;
287
+ Nan::TypedArrayContents<uint8_t> _paletteColors(palette_ta);
288
+ pngargs.palette = *_paletteColors;
289
+ // Optional background color index:
290
+ Local<Value> backgroundIndexVal = Nan::Get(obj, Nan::New("backgroundIndex").ToLocalChecked()).ToLocalChecked();
291
+ if (backgroundIndexVal->IsUint32()) {
292
+ pngargs.backgroundIndex = static_cast<uint8_t>(Nan::To<uint32_t>(backgroundIndexVal).FromMaybe(0));
293
+ }
294
+ }
295
+ }
296
+ }
297
+
298
+ #ifdef HAVE_JPEG
299
+ static void parseJPEGArgs(Local<Value> arg, JpegClosure& jpegargs) {
300
+ // "If Type(quality) is not Number, or if quality is outside that range, the
301
+ // user agent must use its default quality value, as if the quality argument
302
+ // had not been given." - 4.12.5.5
303
+ if (arg->IsObject()) {
304
+ Local<Object> obj = Nan::To<Object>(arg).ToLocalChecked();
305
+
306
+ Local<Value> qual = Nan::Get(obj, Nan::New("quality").ToLocalChecked()).ToLocalChecked();
307
+ if (qual->IsNumber()) {
308
+ double quality = Nan::To<double>(qual).FromMaybe(0);
309
+ if (quality >= 0.0 && quality <= 1.0) {
310
+ jpegargs.quality = static_cast<uint32_t>(100.0 * quality);
311
+ }
312
+ }
313
+
314
+ Local<Value> chroma = Nan::Get(obj, Nan::New("chromaSubsampling").ToLocalChecked()).ToLocalChecked();
315
+ if (chroma->IsBoolean()) {
316
+ bool subsample = Nan::To<bool>(chroma).FromMaybe(0);
317
+ jpegargs.chromaSubsampling = subsample ? 2 : 1;
318
+ } else if (chroma->IsNumber()) {
319
+ jpegargs.chromaSubsampling = Nan::To<uint32_t>(chroma).FromMaybe(0);
320
+ }
321
+
322
+ Local<Value> progressive = Nan::Get(obj, Nan::New("progressive").ToLocalChecked()).ToLocalChecked();
323
+ if (!progressive->IsUndefined()) {
324
+ jpegargs.progressive = Nan::To<bool>(progressive).FromMaybe(0);
325
+ }
326
+ }
327
+ }
328
+ #endif
329
+
330
+ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0)
331
+
332
+ static inline void setPdfMetaStr(cairo_surface_t* surf, Local<Object> opts,
333
+ cairo_pdf_metadata_t t, const char* pName) {
334
+ auto propName = Nan::New(pName).ToLocalChecked();
335
+ auto propValue = Nan::Get(opts, propName).ToLocalChecked();
336
+ if (propValue->IsString()) {
337
+ // (copies char data)
338
+ cairo_pdf_surface_set_metadata(surf, t, *Nan::Utf8String(propValue));
339
+ }
340
+ }
341
+
342
+ static inline void setPdfMetaDate(cairo_surface_t* surf, Local<Object> opts,
343
+ cairo_pdf_metadata_t t, const char* pName) {
344
+ auto propName = Nan::New(pName).ToLocalChecked();
345
+ auto propValue = Nan::Get(opts, propName).ToLocalChecked();
346
+ if (propValue->IsDate()) {
347
+ auto date = static_cast<time_t>(propValue.As<v8::Date>()->ValueOf() / 1000); // ms -> s
348
+ char buf[sizeof "2011-10-08T07:07:09Z"];
349
+ strftime(buf, sizeof buf, "%FT%TZ", gmtime(&date));
350
+ cairo_pdf_surface_set_metadata(surf, t, buf);
351
+ }
352
+ }
353
+
354
+ static void setPdfMetadata(Canvas* canvas, Local<Object> opts) {
355
+ cairo_surface_t* surf = canvas->surface();
356
+
357
+ setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_TITLE, "title");
358
+ setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_AUTHOR, "author");
359
+ setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_SUBJECT, "subject");
360
+ setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_KEYWORDS, "keywords");
361
+ setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_CREATOR, "creator");
362
+ setPdfMetaDate(surf, opts, CAIRO_PDF_METADATA_CREATE_DATE, "creationDate");
363
+ setPdfMetaDate(surf, opts, CAIRO_PDF_METADATA_MOD_DATE, "modDate");
364
+ }
365
+
366
+ #endif // CAIRO 16+
367
+
368
+ /*
369
+ * Converts/encodes data to a Buffer. Async when a callback function is passed.
370
+
371
+ * PDF canvases:
372
+ (any) => Buffer
373
+ ("application/pdf", config) => Buffer
374
+
375
+ * SVG canvases:
376
+ (any) => Buffer
377
+
378
+ * ARGB data:
379
+ ("raw") => Buffer
380
+
381
+ * PNG-encoded
382
+ () => Buffer
383
+ (undefined|"image/png", {compressionLevel?: number, filter?: number}) => Buffer
384
+ ((err: null|Error, buffer) => any)
385
+ ((err: null|Error, buffer) => any, undefined|"image/png", {compressionLevel?: number, filter?: number})
386
+
387
+ * JPEG-encoded
388
+ ("image/jpeg") => Buffer
389
+ ("image/jpeg", {quality?: number, progressive?: Boolean, chromaSubsampling?: Boolean|number}) => Buffer
390
+ ((err: null|Error, buffer) => any, "image/jpeg")
391
+ ((err: null|Error, buffer) => any, "image/jpeg", {quality?: number, progressive?: Boolean, chromaSubsampling?: Boolean|number})
392
+ */
393
+
394
+ NAN_METHOD(Canvas::ToBuffer) {
395
+ cairo_status_t status;
396
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
397
+
398
+ // Vector canvases, sync only
399
+ const std::string name = canvas->backend()->getName();
400
+ if (name == "pdf" || name == "svg") {
401
+ // mime type may be present, but it's not checked
402
+ PdfSvgClosure* closure;
403
+ if (name == "pdf") {
404
+ closure = static_cast<PdfBackend*>(canvas->backend())->closure();
405
+ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0)
406
+ if (info[1]->IsObject()) { // toBuffer("application/pdf", config)
407
+ setPdfMetadata(canvas, Nan::To<Object>(info[1]).ToLocalChecked());
408
+ }
409
+ #endif // CAIRO 16+
410
+ } else {
411
+ closure = static_cast<SvgBackend*>(canvas->backend())->closure();
412
+ }
413
+
414
+ cairo_surface_finish(canvas->surface());
415
+ Local<Object> buf = Nan::CopyBuffer((char*)&closure->vec[0], closure->vec.size()).ToLocalChecked();
416
+ info.GetReturnValue().Set(buf);
417
+ return;
418
+ }
419
+
420
+ // Raw ARGB data -- just a memcpy()
421
+ if (info[0]->StrictEquals(Nan::New<String>("raw").ToLocalChecked())) {
422
+ cairo_surface_t *surface = canvas->surface();
423
+ cairo_surface_flush(surface);
424
+ if (canvas->nBytes() > node::Buffer::kMaxLength) {
425
+ Nan::ThrowError("Data exceeds maximum buffer length.");
426
+ return;
427
+ }
428
+ const unsigned char *data = cairo_image_surface_get_data(surface);
429
+ Isolate* iso = Nan::GetCurrentContext()->GetIsolate();
430
+ Local<Object> buf = node::Buffer::Copy(iso, reinterpret_cast<const char*>(data), canvas->nBytes()).ToLocalChecked();
431
+ info.GetReturnValue().Set(buf);
432
+ return;
433
+ }
434
+
435
+ // Sync PNG, default
436
+ if (info[0]->IsUndefined() || info[0]->StrictEquals(Nan::New<String>("image/png").ToLocalChecked())) {
437
+ try {
438
+ PngClosure closure(canvas);
439
+ parsePNGArgs(info[1], closure);
440
+ if (closure.nPaletteColors == 0xFFFFFFFF) {
441
+ Nan::ThrowError("Palette length must be a multiple of 4.");
442
+ return;
443
+ }
444
+
445
+ Nan::TryCatch try_catch;
446
+ status = canvas_write_to_png_stream(canvas->surface(), PngClosure::writeVec, &closure);
447
+
448
+ if (try_catch.HasCaught()) {
449
+ try_catch.ReThrow();
450
+ } else if (status) {
451
+ throw status;
452
+ } else {
453
+ // TODO it's possible to avoid this copy
454
+ Local<Object> buf = Nan::CopyBuffer((char *)&closure.vec[0], closure.vec.size()).ToLocalChecked();
455
+ info.GetReturnValue().Set(buf);
456
+ }
457
+ } catch (cairo_status_t ex) {
458
+ Nan::ThrowError(Canvas::Error(ex));
459
+ } catch (const char* ex) {
460
+ Nan::ThrowError(ex);
461
+ }
462
+ return;
463
+ }
464
+
465
+ // Async PNG
466
+ if (info[0]->IsFunction() &&
467
+ (info[1]->IsUndefined() || info[1]->StrictEquals(Nan::New<String>("image/png").ToLocalChecked()))) {
468
+
469
+ PngClosure* closure;
470
+ try {
471
+ closure = new PngClosure(canvas);
472
+ parsePNGArgs(info[2], *closure);
473
+ } catch (cairo_status_t ex) {
474
+ Nan::ThrowError(Canvas::Error(ex));
475
+ return;
476
+ } catch (const char* ex) {
477
+ Nan::ThrowError(ex);
478
+ return;
479
+ }
480
+
481
+ canvas->Ref();
482
+ closure->cb.Reset(info[0].As<Function>());
483
+
484
+ uv_work_t* req = new uv_work_t;
485
+ req->data = closure;
486
+ // Make sure the surface exists since we won't have an isolate context in the async block:
487
+ canvas->surface();
488
+ uv_queue_work(uv_default_loop(), req, ToPngBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter);
489
+
490
+ return;
491
+ }
492
+
493
+ #ifdef HAVE_JPEG
494
+ // Sync JPEG
495
+ Local<Value> jpegStr = Nan::New<String>("image/jpeg").ToLocalChecked();
496
+ if (info[0]->StrictEquals(jpegStr)) {
497
+ try {
498
+ JpegClosure closure(canvas);
499
+ parseJPEGArgs(info[1], closure);
500
+
501
+ Nan::TryCatch try_catch;
502
+ write_to_jpeg_buffer(canvas->surface(), &closure);
503
+
504
+ if (try_catch.HasCaught()) {
505
+ try_catch.ReThrow();
506
+ } else {
507
+ // TODO it's possible to avoid this copy.
508
+ Local<Object> buf = Nan::CopyBuffer((char *)&closure.vec[0], closure.vec.size()).ToLocalChecked();
509
+ info.GetReturnValue().Set(buf);
510
+ }
511
+ } catch (cairo_status_t ex) {
512
+ Nan::ThrowError(Canvas::Error(ex));
513
+ }
514
+ return;
515
+ }
516
+
517
+ // Async JPEG
518
+ if (info[0]->IsFunction() && info[1]->StrictEquals(jpegStr)) {
519
+ JpegClosure* closure = new JpegClosure(canvas);
520
+ parseJPEGArgs(info[2], *closure);
521
+
522
+ canvas->Ref();
523
+ closure->cb.Reset(info[0].As<Function>());
524
+
525
+ uv_work_t* req = new uv_work_t;
526
+ req->data = closure;
527
+ // Make sure the surface exists since we won't have an isolate context in the async block:
528
+ canvas->surface();
529
+ uv_queue_work(uv_default_loop(), req, ToJpegBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter);
530
+
531
+ return;
532
+ }
533
+ #endif
534
+ }
535
+
536
+ /*
537
+ * Canvas::StreamPNG callback.
538
+ */
539
+
540
+ static cairo_status_t
541
+ streamPNG(void *c, const uint8_t *data, unsigned len) {
542
+ Nan::HandleScope scope;
543
+ Nan::AsyncResource async("canvas:StreamPNG");
544
+ PngClosure* closure = (PngClosure*) c;
545
+ Local<Object> buf = Nan::CopyBuffer((char *)data, len).ToLocalChecked();
546
+ Local<Value> argv[3] = {
547
+ Nan::Null()
548
+ , buf
549
+ , Nan::New<Number>(len) };
550
+ closure->cb.Call(sizeof argv / sizeof *argv, argv, &async);
551
+ return CAIRO_STATUS_SUCCESS;
552
+ }
553
+
554
+ /*
555
+ * Stream PNG data synchronously. TODO async
556
+ * StreamPngSync(this, options: {palette?: Uint8ClampedArray, backgroundIndex?: uint32, compressionLevel: uint32, filters: uint32})
557
+ */
558
+
559
+ NAN_METHOD(Canvas::StreamPNGSync) {
560
+ if (!info[0]->IsFunction())
561
+ return Nan::ThrowTypeError("callback function required");
562
+
563
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
564
+
565
+ PngClosure closure(canvas);
566
+ parsePNGArgs(info[1], closure);
567
+
568
+ closure.cb.Reset(Local<Function>::Cast(info[0]));
569
+
570
+ Nan::TryCatch try_catch;
571
+
572
+ cairo_status_t status = canvas_write_to_png_stream(canvas->surface(), streamPNG, &closure);
573
+
574
+ if (try_catch.HasCaught()) {
575
+ try_catch.ReThrow();
576
+ return;
577
+ } else if (status) {
578
+ Local<Value> argv[1] = { Canvas::Error(status) };
579
+ Nan::Call(closure.cb, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv);
580
+ } else {
581
+ Local<Value> argv[3] = {
582
+ Nan::Null()
583
+ , Nan::Null()
584
+ , Nan::New<Uint32>(0) };
585
+ Nan::Call(closure.cb, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv);
586
+ }
587
+ return;
588
+ }
589
+
590
+
591
+ struct PdfStreamInfo {
592
+ Local<Function> fn;
593
+ uint32_t len;
594
+ uint8_t* data;
595
+ };
596
+
597
+
598
+ /*
599
+ * Canvas::StreamPDF FreeCallback
600
+ */
601
+
602
+ void stream_pdf_free(char *, void *) {}
603
+
604
+ /*
605
+ * Canvas::StreamPDF callback.
606
+ */
607
+
608
+ static cairo_status_t
609
+ streamPDF(void *c, const uint8_t *data, unsigned len) {
610
+ Nan::HandleScope scope;
611
+ Nan::AsyncResource async("canvas:StreamPDF");
612
+ PdfStreamInfo* streaminfo = static_cast<PdfStreamInfo*>(c);
613
+ // TODO this is technically wrong, we're returning a pointer to the data in a
614
+ // vector in a class with automatic storage duration. If the canvas goes out
615
+ // of scope while we're in the handler, a use-after-free could happen.
616
+ Local<Object> buf = Nan::NewBuffer(const_cast<char *>(reinterpret_cast<const char *>(data)), len, stream_pdf_free, 0).ToLocalChecked();
617
+ Local<Value> argv[3] = {
618
+ Nan::Null()
619
+ , buf
620
+ , Nan::New<Number>(len) };
621
+ async.runInAsyncScope(Nan::GetCurrentContext()->Global(), streaminfo->fn, sizeof argv / sizeof *argv, argv);
622
+ return CAIRO_STATUS_SUCCESS;
623
+ }
624
+
625
+
626
+ cairo_status_t canvas_write_to_pdf_stream(cairo_surface_t *surface, cairo_write_func_t write_func, PdfStreamInfo* streaminfo) {
627
+ size_t whole_chunks = streaminfo->len / PAGE_SIZE;
628
+ size_t remainder = streaminfo->len - whole_chunks * PAGE_SIZE;
629
+
630
+ for (size_t i = 0; i < whole_chunks; ++i) {
631
+ write_func(streaminfo, &streaminfo->data[i * PAGE_SIZE], PAGE_SIZE);
632
+ }
633
+
634
+ if (remainder) {
635
+ write_func(streaminfo, &streaminfo->data[whole_chunks * PAGE_SIZE], remainder);
636
+ }
637
+
638
+ return CAIRO_STATUS_SUCCESS;
639
+ }
640
+
641
+ /*
642
+ * Stream PDF data synchronously.
643
+ */
644
+
645
+ NAN_METHOD(Canvas::StreamPDFSync) {
646
+ if (!info[0]->IsFunction())
647
+ return Nan::ThrowTypeError("callback function required");
648
+
649
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.Holder());
650
+
651
+ if (canvas->backend()->getName() != "pdf")
652
+ return Nan::ThrowTypeError("wrong canvas type");
653
+
654
+ #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0)
655
+ if (info[1]->IsObject()) {
656
+ setPdfMetadata(canvas, Nan::To<Object>(info[1]).ToLocalChecked());
657
+ }
658
+ #endif
659
+
660
+ cairo_surface_finish(canvas->surface());
661
+
662
+ PdfSvgClosure* closure = static_cast<PdfBackend*>(canvas->backend())->closure();
663
+ Local<Function> fn = info[0].As<Function>();
664
+ PdfStreamInfo streaminfo;
665
+ streaminfo.fn = fn;
666
+ streaminfo.data = &closure->vec[0];
667
+ streaminfo.len = closure->vec.size();
668
+
669
+ Nan::TryCatch try_catch;
670
+
671
+ cairo_status_t status = canvas_write_to_pdf_stream(canvas->surface(), streamPDF, &streaminfo);
672
+
673
+ if (try_catch.HasCaught()) {
674
+ try_catch.ReThrow();
675
+ } else if (status) {
676
+ Local<Value> error = Canvas::Error(status);
677
+ Nan::Call(fn, Nan::GetCurrentContext()->Global(), 1, &error);
678
+ } else {
679
+ Local<Value> argv[3] = {
680
+ Nan::Null()
681
+ , Nan::Null()
682
+ , Nan::New<Uint32>(0) };
683
+ Nan::Call(fn, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv);
684
+ }
685
+ }
686
+
687
+ /*
688
+ * Stream JPEG data synchronously.
689
+ */
690
+
691
+ #ifdef HAVE_JPEG
692
+ static uint32_t getSafeBufSize(Canvas* canvas) {
693
+ // Don't allow the buffer size to exceed the size of the canvas (#674)
694
+ // TODO not sure if this is really correct, but it fixed #674
695
+ return (std::min)(canvas->getWidth() * canvas->getHeight() * 4, static_cast<int>(PAGE_SIZE));
696
+ }
697
+
698
+ NAN_METHOD(Canvas::StreamJPEGSync) {
699
+ if (!info[1]->IsFunction())
700
+ return Nan::ThrowTypeError("callback function required");
701
+
702
+ Canvas *canvas = Nan::ObjectWrap::Unwrap<Canvas>(info.This());
703
+ JpegClosure closure(canvas);
704
+ parseJPEGArgs(info[0], closure);
705
+ closure.cb.Reset(Local<Function>::Cast(info[1]));
706
+
707
+ Nan::TryCatch try_catch;
708
+ uint32_t bufsize = getSafeBufSize(canvas);
709
+ write_to_jpeg_stream(canvas->surface(), bufsize, &closure);
710
+
711
+ if (try_catch.HasCaught()) {
712
+ try_catch.ReThrow();
713
+ }
714
+ return;
715
+ }
716
+ #endif
717
+
718
+ char *
719
+ str_value(Local<Value> val, const char *fallback, bool can_be_number) {
720
+ if (val->IsString() || (can_be_number && val->IsNumber())) {
721
+ return strdup(*Nan::Utf8String(val));
722
+ } else if (fallback) {
723
+ return strdup(fallback);
724
+ } else {
725
+ return NULL;
726
+ }
727
+ }
728
+
729
+ NAN_METHOD(Canvas::RegisterFont) {
730
+ if (!info[0]->IsString()) {
731
+ return Nan::ThrowError("Wrong argument type");
732
+ } else if (!info[1]->IsObject()) {
733
+ return Nan::ThrowError(GENERIC_FACE_ERROR);
734
+ }
735
+
736
+ Nan::Utf8String filePath(info[0]);
737
+ PangoFontDescription *sys_desc = get_pango_font_description((unsigned char *) *filePath);
738
+
739
+ if (!sys_desc) return Nan::ThrowError("Could not parse font file");
740
+
741
+ PangoFontDescription *user_desc = pango_font_description_new();
742
+
743
+ // now check the attrs, there are many ways to be wrong
744
+ Local<Object> js_user_desc = Nan::To<Object>(info[1]).ToLocalChecked();
745
+ Local<String> family_prop = Nan::New<String>("family").ToLocalChecked();
746
+ Local<String> weight_prop = Nan::New<String>("weight").ToLocalChecked();
747
+ Local<String> style_prop = Nan::New<String>("style").ToLocalChecked();
748
+
749
+ char *family = str_value(Nan::Get(js_user_desc, family_prop).ToLocalChecked(), NULL, false);
750
+ char *weight = str_value(Nan::Get(js_user_desc, weight_prop).ToLocalChecked(), "normal", true);
751
+ char *style = str_value(Nan::Get(js_user_desc, style_prop).ToLocalChecked(), "normal", false);
752
+
753
+ if (family && weight && style) {
754
+ pango_font_description_set_weight(user_desc, Canvas::GetWeightFromCSSString(weight));
755
+ pango_font_description_set_style(user_desc, Canvas::GetStyleFromCSSString(style));
756
+ pango_font_description_set_family(user_desc, family);
757
+
758
+ auto found = std::find_if(font_face_list.begin(), font_face_list.end(), [&](FontFace& f) {
759
+ return pango_font_description_equal(f.sys_desc, sys_desc);
760
+ });
761
+
762
+ if (found != font_face_list.end()) {
763
+ pango_font_description_free(found->user_desc);
764
+ found->user_desc = user_desc;
765
+ } else if (register_font((unsigned char *) *filePath)) {
766
+ FontFace face;
767
+ face.user_desc = user_desc;
768
+ face.sys_desc = sys_desc;
769
+ strncpy((char *)face.file_path, (char *) *filePath, 1023);
770
+ font_face_list.push_back(face);
771
+ } else {
772
+ pango_font_description_free(user_desc);
773
+ Nan::ThrowError("Could not load font to the system's font host");
774
+ }
775
+ } else {
776
+ pango_font_description_free(user_desc);
777
+ Nan::ThrowError(GENERIC_FACE_ERROR);
778
+ }
779
+
780
+ free(family);
781
+ free(weight);
782
+ free(style);
783
+ }
784
+
785
+ NAN_METHOD(Canvas::DeregisterAllFonts) {
786
+ // Unload all fonts from pango to free up memory
787
+ bool success = true;
788
+
789
+ std::for_each(font_face_list.begin(), font_face_list.end(), [&](FontFace& f) {
790
+ if (!deregister_font( (unsigned char *)f.file_path )) success = false;
791
+ pango_font_description_free(f.user_desc);
792
+ pango_font_description_free(f.sys_desc);
793
+ });
794
+
795
+ font_face_list.clear();
796
+ if (!success) Nan::ThrowError("Could not deregister one or more fonts");
797
+ }
798
+
799
+ /*
800
+ * Initialize cairo surface.
801
+ */
802
+
803
+ Canvas::Canvas(Backend* backend) : ObjectWrap() {
804
+ _backend = backend;
805
+ }
806
+
807
+ /*
808
+ * Destroy cairo surface.
809
+ */
810
+
811
+ Canvas::~Canvas() {
812
+ if (_backend != NULL) {
813
+ delete _backend;
814
+ }
815
+ }
816
+
817
+ /*
818
+ * Get a PangoStyle from a CSS string (like "italic")
819
+ */
820
+
821
+ PangoStyle
822
+ Canvas::GetStyleFromCSSString(const char *style) {
823
+ PangoStyle s = PANGO_STYLE_NORMAL;
824
+
825
+ if (strlen(style) > 0) {
826
+ if (0 == strcmp("italic", style)) {
827
+ s = PANGO_STYLE_ITALIC;
828
+ } else if (0 == strcmp("oblique", style)) {
829
+ s = PANGO_STYLE_OBLIQUE;
830
+ }
831
+ }
832
+
833
+ return s;
834
+ }
835
+
836
+ /*
837
+ * Get a PangoWeight from a CSS string ("bold", "100", etc)
838
+ */
839
+
840
+ PangoWeight
841
+ Canvas::GetWeightFromCSSString(const char *weight) {
842
+ PangoWeight w = PANGO_WEIGHT_NORMAL;
843
+
844
+ if (strlen(weight) > 0) {
845
+ if (0 == strcmp("bold", weight)) {
846
+ w = PANGO_WEIGHT_BOLD;
847
+ } else if (0 == strcmp("100", weight)) {
848
+ w = PANGO_WEIGHT_THIN;
849
+ } else if (0 == strcmp("200", weight)) {
850
+ w = PANGO_WEIGHT_ULTRALIGHT;
851
+ } else if (0 == strcmp("300", weight)) {
852
+ w = PANGO_WEIGHT_LIGHT;
853
+ } else if (0 == strcmp("400", weight)) {
854
+ w = PANGO_WEIGHT_NORMAL;
855
+ } else if (0 == strcmp("500", weight)) {
856
+ w = PANGO_WEIGHT_MEDIUM;
857
+ } else if (0 == strcmp("600", weight)) {
858
+ w = PANGO_WEIGHT_SEMIBOLD;
859
+ } else if (0 == strcmp("700", weight)) {
860
+ w = PANGO_WEIGHT_BOLD;
861
+ } else if (0 == strcmp("800", weight)) {
862
+ w = PANGO_WEIGHT_ULTRABOLD;
863
+ } else if (0 == strcmp("900", weight)) {
864
+ w = PANGO_WEIGHT_HEAVY;
865
+ }
866
+ }
867
+
868
+ return w;
869
+ }
870
+
871
+ /*
872
+ * Given a user description, return a description that will select the
873
+ * font either from the system or @font-face
874
+ */
875
+
876
+ PangoFontDescription *
877
+ Canvas::ResolveFontDescription(const PangoFontDescription *desc) {
878
+ // One of the user-specified families could map to multiple SFNT family names
879
+ // if someone registered two different fonts under the same family name.
880
+ // https://drafts.csswg.org/css-fonts-3/#font-style-matching
881
+ FontFace best;
882
+ istringstream families(pango_font_description_get_family(desc));
883
+ unordered_set<string> seen_families;
884
+ string resolved_families;
885
+ bool first = true;
886
+
887
+ for (string family; getline(families, family, ','); ) {
888
+ string renamed_families;
889
+ for (auto& ff : font_face_list) {
890
+ string pangofamily = string(pango_font_description_get_family(ff.user_desc));
891
+ if (streq_casein(family, pangofamily)) {
892
+ const char* sys_desc_family_name = pango_font_description_get_family(ff.sys_desc);
893
+ bool unseen = seen_families.find(sys_desc_family_name) == seen_families.end();
894
+ bool better = best.user_desc == nullptr || pango_font_description_better_match(desc, best.user_desc, ff.user_desc);
895
+
896
+ // Avoid sending duplicate SFNT font names due to a bug in Pango for macOS:
897
+ // https://bugzilla.gnome.org/show_bug.cgi?id=762873
898
+ if (unseen) {
899
+ seen_families.insert(sys_desc_family_name);
900
+
901
+ if (better) {
902
+ renamed_families = string(sys_desc_family_name) + (renamed_families.size() ? "," : "") + renamed_families;
903
+ } else {
904
+ renamed_families = renamed_families + (renamed_families.size() ? "," : "") + sys_desc_family_name;
905
+ }
906
+ }
907
+
908
+ if (first && better) best = ff;
909
+ }
910
+ }
911
+
912
+ if (resolved_families.size()) resolved_families += ',';
913
+ resolved_families += renamed_families.size() ? renamed_families : family;
914
+ first = false;
915
+ }
916
+
917
+ PangoFontDescription* ret = pango_font_description_copy(best.sys_desc ? best.sys_desc : desc);
918
+ pango_font_description_set_family(ret, resolved_families.c_str());
919
+
920
+ return ret;
921
+ }
922
+
923
+ /*
924
+ * Re-alloc the surface, destroying the previous.
925
+ */
926
+
927
+ void
928
+ Canvas::resurface(Local<Object> canvas) {
929
+ Nan::HandleScope scope;
930
+ Local<Value> context;
931
+
932
+ backend()->recreateSurface();
933
+
934
+ // Reset context
935
+ context = Nan::Get(canvas, Nan::New<String>("context").ToLocalChecked()).ToLocalChecked();
936
+ if (!context->IsUndefined()) {
937
+ Context2d *context2d = ObjectWrap::Unwrap<Context2d>(Nan::To<Object>(context).ToLocalChecked());
938
+ cairo_t *prev = context2d->context();
939
+ context2d->setContext(createCairoContext());
940
+ context2d->resetState();
941
+ cairo_destroy(prev);
942
+ }
943
+ }
944
+
945
+ /**
946
+ * Wrapper around cairo_create()
947
+ * (do not call cairo_create directly, call this instead)
948
+ */
949
+ cairo_t*
950
+ Canvas::createCairoContext() {
951
+ cairo_t* ret = cairo_create(surface());
952
+ cairo_set_line_width(ret, 1); // Cairo defaults to 2
953
+ return ret;
954
+ }
955
+
956
+ /*
957
+ * Construct an Error from the given cairo status.
958
+ */
959
+
960
+ Local<Value>
961
+ Canvas::Error(cairo_status_t status) {
962
+ return Exception::Error(Nan::New<String>(cairo_status_to_string(status)).ToLocalChecked());
963
+ }
964
+
965
+ #undef CHECK_RECEIVER