@nodetool-ai/base-nodes 0.7.0-rc.23 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +21 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/builtin-packs.d.ts +17 -0
  4. package/dist/builtin-packs.d.ts.map +1 -0
  5. package/dist/builtin-packs.js +95 -0
  6. package/dist/builtin-packs.js.map +1 -0
  7. package/dist/index.d.ts +63 -67
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +186 -173
  10. package/dist/index.js.map +1 -1
  11. package/dist/platforms/browser.d.ts +19 -0
  12. package/dist/platforms/browser.d.ts.map +1 -0
  13. package/dist/platforms/browser.js +29 -0
  14. package/dist/platforms/browser.js.map +1 -0
  15. package/package.json +72 -65
  16. package/dist/lib/audio-wav.d.ts +0 -66
  17. package/dist/lib/audio-wav.d.ts.map +0 -1
  18. package/dist/lib/audio-wav.js +0 -215
  19. package/dist/lib/audio-wav.js.map +0 -1
  20. package/dist/nodes/agent-tool-hydration.d.ts +0 -10
  21. package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
  22. package/dist/nodes/agent-tool-hydration.js +0 -43
  23. package/dist/nodes/agent-tool-hydration.js.map +0 -1
  24. package/dist/nodes/agents.d.ts +0 -262
  25. package/dist/nodes/agents.d.ts.map +0 -1
  26. package/dist/nodes/agents.js +0 -2856
  27. package/dist/nodes/agents.js.map +0 -1
  28. package/dist/nodes/anthropic.d.ts +0 -26
  29. package/dist/nodes/anthropic.d.ts.map +0 -1
  30. package/dist/nodes/anthropic.js +0 -133
  31. package/dist/nodes/anthropic.js.map +0 -1
  32. package/dist/nodes/apify.d.ts +0 -120
  33. package/dist/nodes/apify.d.ts.map +0 -1
  34. package/dist/nodes/apify.js +0 -618
  35. package/dist/nodes/apify.js.map +0 -1
  36. package/dist/nodes/audio.d.ts +0 -301
  37. package/dist/nodes/audio.d.ts.map +0 -1
  38. package/dist/nodes/audio.js +0 -1274
  39. package/dist/nodes/audio.js.map +0 -1
  40. package/dist/nodes/code-node.d.ts +0 -34
  41. package/dist/nodes/code-node.d.ts.map +0 -1
  42. package/dist/nodes/code-node.js +0 -343
  43. package/dist/nodes/code-node.js.map +0 -1
  44. package/dist/nodes/code.d.ts +0 -301
  45. package/dist/nodes/code.d.ts.map +0 -1
  46. package/dist/nodes/code.js +0 -850
  47. package/dist/nodes/code.js.map +0 -1
  48. package/dist/nodes/compare.d.ts +0 -18
  49. package/dist/nodes/compare.d.ts.map +0 -1
  50. package/dist/nodes/compare.js +0 -122
  51. package/dist/nodes/compare.js.map +0 -1
  52. package/dist/nodes/constant.d.ts +0 -315
  53. package/dist/nodes/constant.d.ts.map +0 -1
  54. package/dist/nodes/constant.js +0 -715
  55. package/dist/nodes/constant.js.map +0 -1
  56. package/dist/nodes/control.d.ts +0 -83
  57. package/dist/nodes/control.d.ts.map +0 -1
  58. package/dist/nodes/control.js +0 -212
  59. package/dist/nodes/control.js.map +0 -1
  60. package/dist/nodes/data.d.ts +0 -369
  61. package/dist/nodes/data.d.ts.map +0 -1
  62. package/dist/nodes/data.js +0 -1590
  63. package/dist/nodes/data.js.map +0 -1
  64. package/dist/nodes/document.d.ts +0 -134
  65. package/dist/nodes/document.d.ts.map +0 -1
  66. package/dist/nodes/document.js +0 -984
  67. package/dist/nodes/document.js.map +0 -1
  68. package/dist/nodes/extended-placeholders.d.ts +0 -6
  69. package/dist/nodes/extended-placeholders.d.ts.map +0 -1
  70. package/dist/nodes/extended-placeholders.js +0 -19
  71. package/dist/nodes/extended-placeholders.js.map +0 -1
  72. package/dist/nodes/gemini.d.ts +0 -110
  73. package/dist/nodes/gemini.d.ts.map +0 -1
  74. package/dist/nodes/gemini.js +0 -871
  75. package/dist/nodes/gemini.js.map +0 -1
  76. package/dist/nodes/generators.d.ts +0 -84
  77. package/dist/nodes/generators.d.ts.map +0 -1
  78. package/dist/nodes/generators.js +0 -968
  79. package/dist/nodes/generators.js.map +0 -1
  80. package/dist/nodes/image.d.ts +0 -232
  81. package/dist/nodes/image.d.ts.map +0 -1
  82. package/dist/nodes/image.js +0 -1395
  83. package/dist/nodes/image.js.map +0 -1
  84. package/dist/nodes/input.d.ts +0 -445
  85. package/dist/nodes/input.d.ts.map +0 -1
  86. package/dist/nodes/input.js +0 -1459
  87. package/dist/nodes/input.js.map +0 -1
  88. package/dist/nodes/kie-dynamic.d.ts +0 -31
  89. package/dist/nodes/kie-dynamic.d.ts.map +0 -1
  90. package/dist/nodes/kie-dynamic.js +0 -270
  91. package/dist/nodes/kie-dynamic.js.map +0 -1
  92. package/dist/nodes/lib-audio-dsp.d.ts +0 -85
  93. package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
  94. package/dist/nodes/lib-audio-dsp.js +0 -450
  95. package/dist/nodes/lib-audio-dsp.js.map +0 -1
  96. package/dist/nodes/lib-audio-effects.d.ts +0 -116
  97. package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
  98. package/dist/nodes/lib-audio-effects.js +0 -905
  99. package/dist/nodes/lib-audio-effects.js.map +0 -1
  100. package/dist/nodes/lib-browser.d.ts +0 -99
  101. package/dist/nodes/lib-browser.d.ts.map +0 -1
  102. package/dist/nodes/lib-browser.js +0 -692
  103. package/dist/nodes/lib-browser.js.map +0 -1
  104. package/dist/nodes/lib-charts.d.ts +0 -20
  105. package/dist/nodes/lib-charts.d.ts.map +0 -1
  106. package/dist/nodes/lib-charts.js +0 -245
  107. package/dist/nodes/lib-charts.js.map +0 -1
  108. package/dist/nodes/lib-datetime.d.ts +0 -108
  109. package/dist/nodes/lib-datetime.d.ts.map +0 -1
  110. package/dist/nodes/lib-datetime.js +0 -421
  111. package/dist/nodes/lib-datetime.js.map +0 -1
  112. package/dist/nodes/lib-doc-convert.d.ts +0 -19
  113. package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
  114. package/dist/nodes/lib-doc-convert.js +0 -257
  115. package/dist/nodes/lib-doc-convert.js.map +0 -1
  116. package/dist/nodes/lib-doc-transform.d.ts +0 -39
  117. package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
  118. package/dist/nodes/lib-doc-transform.js +0 -335
  119. package/dist/nodes/lib-doc-transform.js.map +0 -1
  120. package/dist/nodes/lib-docx.d.ts +0 -106
  121. package/dist/nodes/lib-docx.d.ts.map +0 -1
  122. package/dist/nodes/lib-docx.js +0 -595
  123. package/dist/nodes/lib-docx.js.map +0 -1
  124. package/dist/nodes/lib-epub.d.ts +0 -55
  125. package/dist/nodes/lib-epub.d.ts.map +0 -1
  126. package/dist/nodes/lib-epub.js +0 -220
  127. package/dist/nodes/lib-epub.js.map +0 -1
  128. package/dist/nodes/lib-excel.d.ts +0 -74
  129. package/dist/nodes/lib-excel.d.ts.map +0 -1
  130. package/dist/nodes/lib-excel.js +0 -448
  131. package/dist/nodes/lib-excel.js.map +0 -1
  132. package/dist/nodes/lib-graphql.d.ts +0 -66
  133. package/dist/nodes/lib-graphql.d.ts.map +0 -1
  134. package/dist/nodes/lib-graphql.js +0 -333
  135. package/dist/nodes/lib-graphql.js.map +0 -1
  136. package/dist/nodes/lib-grid.d.ts +0 -27
  137. package/dist/nodes/lib-grid.d.ts.map +0 -1
  138. package/dist/nodes/lib-grid.js +0 -172
  139. package/dist/nodes/lib-grid.js.map +0 -1
  140. package/dist/nodes/lib-html-parse.d.ts +0 -108
  141. package/dist/nodes/lib-html-parse.d.ts.map +0 -1
  142. package/dist/nodes/lib-html-parse.js +0 -365
  143. package/dist/nodes/lib-html-parse.js.map +0 -1
  144. package/dist/nodes/lib-http.d.ts +0 -98
  145. package/dist/nodes/lib-http.d.ts.map +0 -1
  146. package/dist/nodes/lib-http.js +0 -267
  147. package/dist/nodes/lib-http.js.map +0 -1
  148. package/dist/nodes/lib-image-color-grading.d.ts +0 -3
  149. package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
  150. package/dist/nodes/lib-image-color-grading.js +0 -1386
  151. package/dist/nodes/lib-image-color-grading.js.map +0 -1
  152. package/dist/nodes/lib-image-draw.d.ts +0 -3
  153. package/dist/nodes/lib-image-draw.d.ts.map +0 -1
  154. package/dist/nodes/lib-image-draw.js +0 -470
  155. package/dist/nodes/lib-image-draw.js.map +0 -1
  156. package/dist/nodes/lib-image-enhance.d.ts +0 -3
  157. package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
  158. package/dist/nodes/lib-image-enhance.js +0 -731
  159. package/dist/nodes/lib-image-enhance.js.map +0 -1
  160. package/dist/nodes/lib-image-filter.d.ts +0 -3
  161. package/dist/nodes/lib-image-filter.d.ts.map +0 -1
  162. package/dist/nodes/lib-image-filter.js +0 -684
  163. package/dist/nodes/lib-image-filter.js.map +0 -1
  164. package/dist/nodes/lib-image-utils.d.ts +0 -24
  165. package/dist/nodes/lib-image-utils.d.ts.map +0 -1
  166. package/dist/nodes/lib-image-utils.js +0 -150
  167. package/dist/nodes/lib-image-utils.js.map +0 -1
  168. package/dist/nodes/lib-mail.d.ts +0 -74
  169. package/dist/nodes/lib-mail.d.ts.map +0 -1
  170. package/dist/nodes/lib-mail.js +0 -452
  171. package/dist/nodes/lib-mail.js.map +0 -1
  172. package/dist/nodes/lib-markdown.d.ts +0 -70
  173. package/dist/nodes/lib-markdown.d.ts.map +0 -1
  174. package/dist/nodes/lib-markdown.js +0 -236
  175. package/dist/nodes/lib-markdown.js.map +0 -1
  176. package/dist/nodes/lib-nlp.d.ts +0 -98
  177. package/dist/nodes/lib-nlp.d.ts.map +0 -1
  178. package/dist/nodes/lib-nlp.js +0 -374
  179. package/dist/nodes/lib-nlp.js.map +0 -1
  180. package/dist/nodes/lib-notion.d.ts +0 -99
  181. package/dist/nodes/lib-notion.d.ts.map +0 -1
  182. package/dist/nodes/lib-notion.js +0 -601
  183. package/dist/nodes/lib-notion.js.map +0 -1
  184. package/dist/nodes/lib-ocr.d.ts +0 -31
  185. package/dist/nodes/lib-ocr.d.ts.map +0 -1
  186. package/dist/nodes/lib-ocr.js +0 -143
  187. package/dist/nodes/lib-ocr.js.map +0 -1
  188. package/dist/nodes/lib-os.d.ts +0 -312
  189. package/dist/nodes/lib-os.d.ts.map +0 -1
  190. package/dist/nodes/lib-os.js +0 -909
  191. package/dist/nodes/lib-os.js.map +0 -1
  192. package/dist/nodes/lib-pdf.d.ts +0 -142
  193. package/dist/nodes/lib-pdf.d.ts.map +0 -1
  194. package/dist/nodes/lib-pdf.js +0 -871
  195. package/dist/nodes/lib-pdf.js.map +0 -1
  196. package/dist/nodes/lib-pptx.d.ts +0 -29
  197. package/dist/nodes/lib-pptx.d.ts.map +0 -1
  198. package/dist/nodes/lib-pptx.js +0 -122
  199. package/dist/nodes/lib-pptx.js.map +0 -1
  200. package/dist/nodes/lib-rss.d.ts +0 -31
  201. package/dist/nodes/lib-rss.d.ts.map +0 -1
  202. package/dist/nodes/lib-rss.js +0 -163
  203. package/dist/nodes/lib-rss.js.map +0 -1
  204. package/dist/nodes/lib-s3.d.ts +0 -112
  205. package/dist/nodes/lib-s3.d.ts.map +0 -1
  206. package/dist/nodes/lib-s3.js +0 -521
  207. package/dist/nodes/lib-s3.js.map +0 -1
  208. package/dist/nodes/lib-secret.d.ts +0 -15
  209. package/dist/nodes/lib-secret.d.ts.map +0 -1
  210. package/dist/nodes/lib-secret.js +0 -42
  211. package/dist/nodes/lib-secret.js.map +0 -1
  212. package/dist/nodes/lib-sqlite.d.ts +0 -102
  213. package/dist/nodes/lib-sqlite.d.ts.map +0 -1
  214. package/dist/nodes/lib-sqlite.js +0 -532
  215. package/dist/nodes/lib-sqlite.js.map +0 -1
  216. package/dist/nodes/lib-supabase.d.ts +0 -86
  217. package/dist/nodes/lib-supabase.d.ts.map +0 -1
  218. package/dist/nodes/lib-supabase.js +0 -425
  219. package/dist/nodes/lib-supabase.js.map +0 -1
  220. package/dist/nodes/lib-svg.d.ts +0 -199
  221. package/dist/nodes/lib-svg.d.ts.map +0 -1
  222. package/dist/nodes/lib-svg.js +0 -1027
  223. package/dist/nodes/lib-svg.js.map +0 -1
  224. package/dist/nodes/lib-tensorflow.d.ts +0 -71
  225. package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
  226. package/dist/nodes/lib-tensorflow.js +0 -351
  227. package/dist/nodes/lib-tensorflow.js.map +0 -1
  228. package/dist/nodes/lib-twilio.d.ts +0 -71
  229. package/dist/nodes/lib-twilio.d.ts.map +0 -1
  230. package/dist/nodes/lib-twilio.js +0 -469
  231. package/dist/nodes/lib-twilio.js.map +0 -1
  232. package/dist/nodes/lib-validate.d.ts +0 -84
  233. package/dist/nodes/lib-validate.d.ts.map +0 -1
  234. package/dist/nodes/lib-validate.js +0 -215
  235. package/dist/nodes/lib-validate.js.map +0 -1
  236. package/dist/nodes/lib-video-download.d.ts +0 -26
  237. package/dist/nodes/lib-video-download.d.ts.map +0 -1
  238. package/dist/nodes/lib-video-download.js +0 -299
  239. package/dist/nodes/lib-video-download.js.map +0 -1
  240. package/dist/nodes/messaging.d.ts +0 -88
  241. package/dist/nodes/messaging.d.ts.map +0 -1
  242. package/dist/nodes/messaging.js +0 -418
  243. package/dist/nodes/messaging.js.map +0 -1
  244. package/dist/nodes/mistral.d.ts +0 -83
  245. package/dist/nodes/mistral.d.ts.map +0 -1
  246. package/dist/nodes/mistral.js +0 -450
  247. package/dist/nodes/mistral.js.map +0 -1
  248. package/dist/nodes/model3d/analysis.d.ts +0 -13
  249. package/dist/nodes/model3d/analysis.d.ts.map +0 -1
  250. package/dist/nodes/model3d/analysis.js +0 -36
  251. package/dist/nodes/model3d/analysis.js.map +0 -1
  252. package/dist/nodes/model3d/base.d.ts +0 -11
  253. package/dist/nodes/model3d/base.d.ts.map +0 -1
  254. package/dist/nodes/model3d/base.js +0 -20
  255. package/dist/nodes/model3d/base.js.map +0 -1
  256. package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
  257. package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
  258. package/dist/nodes/model3d/boolean-ops.js +0 -172
  259. package/dist/nodes/model3d/boolean-ops.js.map +0 -1
  260. package/dist/nodes/model3d/cleanup.d.ts +0 -47
  261. package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
  262. package/dist/nodes/model3d/cleanup.js +0 -136
  263. package/dist/nodes/model3d/cleanup.js.map +0 -1
  264. package/dist/nodes/model3d/convert.d.ts +0 -14
  265. package/dist/nodes/model3d/convert.d.ts.map +0 -1
  266. package/dist/nodes/model3d/convert.js +0 -64
  267. package/dist/nodes/model3d/convert.js.map +0 -1
  268. package/dist/nodes/model3d/defaults.d.ts +0 -34
  269. package/dist/nodes/model3d/defaults.d.ts.map +0 -1
  270. package/dist/nodes/model3d/defaults.js +0 -28
  271. package/dist/nodes/model3d/defaults.js.map +0 -1
  272. package/dist/nodes/model3d/document-ops.d.ts +0 -4
  273. package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
  274. package/dist/nodes/model3d/document-ops.js +0 -40
  275. package/dist/nodes/model3d/document-ops.js.map +0 -1
  276. package/dist/nodes/model3d/generation.d.ts +0 -39
  277. package/dist/nodes/model3d/generation.d.ts.map +0 -1
  278. package/dist/nodes/model3d/generation.js +0 -179
  279. package/dist/nodes/model3d/generation.js.map +0 -1
  280. package/dist/nodes/model3d/glb.d.ts +0 -29
  281. package/dist/nodes/model3d/glb.d.ts.map +0 -1
  282. package/dist/nodes/model3d/glb.js +0 -255
  283. package/dist/nodes/model3d/glb.js.map +0 -1
  284. package/dist/nodes/model3d/index.d.ts +0 -20
  285. package/dist/nodes/model3d/index.d.ts.map +0 -1
  286. package/dist/nodes/model3d/index.js +0 -38
  287. package/dist/nodes/model3d/index.js.map +0 -1
  288. package/dist/nodes/model3d/io.d.ts +0 -38
  289. package/dist/nodes/model3d/io.d.ts.map +0 -1
  290. package/dist/nodes/model3d/io.js +0 -162
  291. package/dist/nodes/model3d/io.js.map +0 -1
  292. package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
  293. package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
  294. package/dist/nodes/model3d/mesh-ops.js +0 -775
  295. package/dist/nodes/model3d/mesh-ops.js.map +0 -1
  296. package/dist/nodes/model3d/nodes.d.ts +0 -2
  297. package/dist/nodes/model3d/nodes.d.ts.map +0 -1
  298. package/dist/nodes/model3d/nodes.js +0 -2
  299. package/dist/nodes/model3d/nodes.js.map +0 -1
  300. package/dist/nodes/model3d/ops.d.ts +0 -37
  301. package/dist/nodes/model3d/ops.d.ts.map +0 -1
  302. package/dist/nodes/model3d/ops.js +0 -137
  303. package/dist/nodes/model3d/ops.js.map +0 -1
  304. package/dist/nodes/model3d/transforms.d.ts +0 -49
  305. package/dist/nodes/model3d/transforms.d.ts.map +0 -1
  306. package/dist/nodes/model3d/transforms.js +0 -142
  307. package/dist/nodes/model3d/transforms.js.map +0 -1
  308. package/dist/nodes/model3d/types.d.ts +0 -81
  309. package/dist/nodes/model3d/types.d.ts.map +0 -1
  310. package/dist/nodes/model3d/types.js +0 -2
  311. package/dist/nodes/model3d/types.js.map +0 -1
  312. package/dist/nodes/model3d/utils.d.ts +0 -34
  313. package/dist/nodes/model3d/utils.d.ts.map +0 -1
  314. package/dist/nodes/model3d/utils.js +0 -185
  315. package/dist/nodes/model3d/utils.js.map +0 -1
  316. package/dist/nodes/model3d.d.ts +0 -2
  317. package/dist/nodes/model3d.d.ts.map +0 -1
  318. package/dist/nodes/model3d.js +0 -2
  319. package/dist/nodes/model3d.js.map +0 -1
  320. package/dist/nodes/openai.d.ts +0 -172
  321. package/dist/nodes/openai.d.ts.map +0 -1
  322. package/dist/nodes/openai.js +0 -1294
  323. package/dist/nodes/openai.js.map +0 -1
  324. package/dist/nodes/output.d.ts +0 -29
  325. package/dist/nodes/output.d.ts.map +0 -1
  326. package/dist/nodes/output.js +0 -87
  327. package/dist/nodes/output.js.map +0 -1
  328. package/dist/nodes/sandbox.d.ts +0 -63
  329. package/dist/nodes/sandbox.d.ts.map +0 -1
  330. package/dist/nodes/sandbox.js +0 -633
  331. package/dist/nodes/sandbox.js.map +0 -1
  332. package/dist/nodes/search.d.ts +0 -117
  333. package/dist/nodes/search.d.ts.map +0 -1
  334. package/dist/nodes/search.js +0 -607
  335. package/dist/nodes/search.js.map +0 -1
  336. package/dist/nodes/team.d.ts +0 -74
  337. package/dist/nodes/team.d.ts.map +0 -1
  338. package/dist/nodes/team.js +0 -309
  339. package/dist/nodes/team.js.map +0 -1
  340. package/dist/nodes/text-extra.d.ts +0 -633
  341. package/dist/nodes/text-extra.d.ts.map +0 -1
  342. package/dist/nodes/text-extra.js +0 -2226
  343. package/dist/nodes/text-extra.js.map +0 -1
  344. package/dist/nodes/tool-agents.d.ts +0 -334
  345. package/dist/nodes/tool-agents.d.ts.map +0 -1
  346. package/dist/nodes/tool-agents.js +0 -1861
  347. package/dist/nodes/tool-agents.js.map +0 -1
  348. package/dist/nodes/triggers.d.ts +0 -107
  349. package/dist/nodes/triggers.d.ts.map +0 -1
  350. package/dist/nodes/triggers.js +0 -706
  351. package/dist/nodes/triggers.js.map +0 -1
  352. package/dist/nodes/vector.d.ts +0 -168
  353. package/dist/nodes/vector.d.ts.map +0 -1
  354. package/dist/nodes/vector.js +0 -1121
  355. package/dist/nodes/vector.js.map +0 -1
  356. package/dist/nodes/video.d.ts +0 -387
  357. package/dist/nodes/video.d.ts.map +0 -1
  358. package/dist/nodes/video.js +0 -2383
  359. package/dist/nodes/video.js.map +0 -1
  360. package/dist/nodes/workflow.d.ts +0 -24
  361. package/dist/nodes/workflow.d.ts.map +0 -1
  362. package/dist/nodes/workflow.js +0 -146
  363. package/dist/nodes/workflow.js.map +0 -1
  364. package/dist/nodes/workspace.d.ts +0 -203
  365. package/dist/nodes/workspace.d.ts.map +0 -1
  366. package/dist/nodes/workspace.js +0 -795
  367. package/dist/nodes/workspace.js.map +0 -1
@@ -1,684 +0,0 @@
1
- import { BaseNode, registerDeclaredProperty } from "@nodetool-ai/node-sdk";
2
- import sharp from "sharp";
3
- import { decodeImage, toRef, pickImage } from "./lib-image-utils.js";
4
- function createFilterNode(desc) {
5
- const C = class extends BaseNode {
6
- static nodeType = desc.nodeType;
7
- static title = desc.title;
8
- static description = desc.description;
9
- static basicFields = desc.basicFields;
10
- static metadataOutputTypes = desc.outputs;
11
- async process(context) {
12
- const t = desc.nodeType;
13
- const baseObj = pickImage(this.serialize(), this.serialize());
14
- const baseBytes = await decodeImage(baseObj, context);
15
- if (!baseBytes) {
16
- return { output: baseObj ?? {} };
17
- }
18
- let img = sharp(baseBytes, { failOn: "none" });
19
- // Solarize — raw pixel manipulation (NOT sharp.threshold!)
20
- if (t.endsWith(".Solarize")) {
21
- const threshold = Number(this.threshold ?? 128);
22
- const { data: raw, info } = await img
23
- .raw()
24
- .toBuffer({ resolveWithObject: true });
25
- for (let i = 0; i < raw.length; i++) {
26
- if (raw[i] > threshold)
27
- raw[i] = 255 - raw[i];
28
- }
29
- const out = await sharp(raw, {
30
- raw: {
31
- width: info.width,
32
- height: info.height,
33
- channels: info.channels
34
- }
35
- })
36
- .png()
37
- .toBuffer();
38
- return { output: toRef(out, baseObj) };
39
- }
40
- // Posterize — raw pixel manipulation (NOT palette quantization!)
41
- if (t.endsWith(".Posterize")) {
42
- const bits = Math.max(1, Math.min(8, Math.round(Number(this.bits ?? 4))));
43
- const mask = 0xff << (8 - bits);
44
- const { data: raw, info } = await img
45
- .raw()
46
- .toBuffer({ resolveWithObject: true });
47
- for (let i = 0; i < raw.length; i++) {
48
- raw[i] = raw[i] & mask;
49
- }
50
- const out = await sharp(raw, {
51
- raw: {
52
- width: info.width,
53
- height: info.height,
54
- channels: info.channels
55
- }
56
- })
57
- .png()
58
- .toBuffer();
59
- return { output: toRef(out, baseObj) };
60
- }
61
- // Pipeline-based nodes
62
- if (t.endsWith(".Blur")) {
63
- const radius = Number(this.radius ?? 2);
64
- img = img.blur(Math.max(0.3, radius));
65
- }
66
- else if (t.endsWith(".Invert")) {
67
- img = img.negate();
68
- }
69
- else if (t.endsWith(".ConvertToGrayscale")) {
70
- img = img.grayscale();
71
- }
72
- else if (t.endsWith(".Emboss")) {
73
- img = img.convolve({
74
- width: 3,
75
- height: 3,
76
- kernel: [-2, -1, 0, -1, 1, 1, 0, 1, 2]
77
- });
78
- }
79
- else if (t.endsWith(".FindEdges")) {
80
- img = img.convolve({
81
- width: 3,
82
- height: 3,
83
- kernel: [-1, -1, -1, -1, 8, -1, -1, -1, -1]
84
- });
85
- }
86
- else if (t.endsWith(".Canny")) {
87
- // Proper Canny edge detection
88
- const lowThreshold = Number(this.low_threshold ?? 100);
89
- const highThreshold = Number(this.high_threshold ?? 200);
90
- // Convert to grayscale
91
- const grayImg = sharp(baseBytes, { failOn: "none" }).grayscale();
92
- const { data: grayData, info: grayInfo } = await grayImg
93
- .raw()
94
- .toBuffer({ resolveWithObject: true });
95
- const w = grayInfo.width;
96
- const h = grayInfo.height;
97
- // Apply Gaussian blur (sigma=1.4, kernel size=5)
98
- const blurred = new Float32Array(w * h);
99
- const gaussKernel = [
100
- 0.0029, 0.0131, 0.0215, 0.0131, 0.0029, 0.0131, 0.0586, 0.0965,
101
- 0.0586, 0.0131, 0.0215, 0.0965, 0.1592, 0.0965, 0.0215, 0.0131,
102
- 0.0586, 0.0965, 0.0586, 0.0131, 0.0029, 0.0131, 0.0215, 0.0131,
103
- 0.0029
104
- ];
105
- for (let y = 2; y < h - 2; y++) {
106
- for (let x = 2; x < w - 2; x++) {
107
- let sum = 0;
108
- for (let ky = -2; ky <= 2; ky++) {
109
- for (let kx = -2; kx <= 2; kx++) {
110
- sum +=
111
- grayData[(y + ky) * w + (x + kx)] *
112
- gaussKernel[(ky + 2) * 5 + (kx + 2)];
113
- }
114
- }
115
- blurred[y * w + x] = sum;
116
- }
117
- }
118
- // Sobel gradients
119
- const gradMag = new Float32Array(w * h);
120
- const gradDir = new Float32Array(w * h);
121
- for (let y = 1; y < h - 1; y++) {
122
- for (let x = 1; x < w - 1; x++) {
123
- const gx = -blurred[(y - 1) * w + (x - 1)] +
124
- blurred[(y - 1) * w + (x + 1)] -
125
- 2 * blurred[y * w + (x - 1)] +
126
- 2 * blurred[y * w + (x + 1)] -
127
- blurred[(y + 1) * w + (x - 1)] +
128
- blurred[(y + 1) * w + (x + 1)];
129
- const gy = -blurred[(y - 1) * w + (x - 1)] -
130
- 2 * blurred[(y - 1) * w + x] -
131
- blurred[(y - 1) * w + (x + 1)] +
132
- blurred[(y + 1) * w + (x - 1)] +
133
- 2 * blurred[(y + 1) * w + x] +
134
- blurred[(y + 1) * w + (x + 1)];
135
- gradMag[y * w + x] = Math.sqrt(gx * gx + gy * gy);
136
- gradDir[y * w + x] = Math.atan2(gy, gx);
137
- }
138
- }
139
- // Non-maximum suppression
140
- const nms = new Float32Array(w * h);
141
- for (let y = 1; y < h - 1; y++) {
142
- for (let x = 1; x < w - 1; x++) {
143
- const angle = ((gradDir[y * w + x] * 180) / Math.PI + 180) % 180;
144
- const mag = gradMag[y * w + x];
145
- let n1, n2;
146
- if (angle < 22.5 || angle >= 157.5) {
147
- n1 = gradMag[y * w + (x - 1)];
148
- n2 = gradMag[y * w + (x + 1)];
149
- }
150
- else if (angle < 67.5) {
151
- n1 = gradMag[(y - 1) * w + (x + 1)];
152
- n2 = gradMag[(y + 1) * w + (x - 1)];
153
- }
154
- else if (angle < 112.5) {
155
- n1 = gradMag[(y - 1) * w + x];
156
- n2 = gradMag[(y + 1) * w + x];
157
- }
158
- else {
159
- n1 = gradMag[(y - 1) * w + (x - 1)];
160
- n2 = gradMag[(y + 1) * w + (x + 1)];
161
- }
162
- nms[y * w + x] = mag >= n1 && mag >= n2 ? mag : 0;
163
- }
164
- }
165
- // Hysteresis thresholding
166
- const result = Buffer.alloc(w * h);
167
- const STRONG = 255;
168
- const WEAK = 128;
169
- for (let y = 1; y < h - 1; y++) {
170
- for (let x = 1; x < w - 1; x++) {
171
- const v = nms[y * w + x];
172
- if (v >= highThreshold)
173
- result[y * w + x] = STRONG;
174
- else if (v >= lowThreshold)
175
- result[y * w + x] = WEAK;
176
- }
177
- }
178
- // Connect weak edges to strong edges
179
- let changed = true;
180
- while (changed) {
181
- changed = false;
182
- for (let y = 1; y < h - 1; y++) {
183
- for (let x = 1; x < w - 1; x++) {
184
- if (result[y * w + x] === WEAK) {
185
- let hasStrong = false;
186
- for (let dy = -1; dy <= 1 && !hasStrong; dy++) {
187
- for (let dx = -1; dx <= 1 && !hasStrong; dx++) {
188
- if (result[(y + dy) * w + (x + dx)] === STRONG)
189
- hasStrong = true;
190
- }
191
- }
192
- if (hasStrong) {
193
- result[y * w + x] = STRONG;
194
- changed = true;
195
- }
196
- }
197
- }
198
- }
199
- }
200
- // Remove remaining weak edges
201
- for (let i = 0; i < result.length; i++) {
202
- if (result[i] !== STRONG)
203
- result[i] = 0;
204
- }
205
- const out = await sharp(result, {
206
- raw: { width: w, height: h, channels: 1 }
207
- })
208
- .png()
209
- .toBuffer();
210
- return { output: toRef(out, baseObj) };
211
- }
212
- else if (t.endsWith(".Contour")) {
213
- // Contour filter using Prewitt-like kernel distinct from FindEdges
214
- // Combine horizontal and vertical Prewitt for contour detection
215
- const { data: rawData, info: rawInfo } = await img
216
- .grayscale()
217
- .raw()
218
- .toBuffer({ resolveWithObject: true });
219
- const cw = rawInfo.width;
220
- const ch = rawInfo.height;
221
- const contourBuf = Buffer.alloc(cw * ch);
222
- for (let y = 1; y < ch - 1; y++) {
223
- for (let x = 1; x < cw - 1; x++) {
224
- // Horizontal Prewitt
225
- const gx = -rawData[(y - 1) * cw + (x - 1)] -
226
- rawData[y * cw + (x - 1)] -
227
- rawData[(y + 1) * cw + (x - 1)] +
228
- rawData[(y - 1) * cw + (x + 1)] +
229
- rawData[y * cw + (x + 1)] +
230
- rawData[(y + 1) * cw + (x + 1)];
231
- // Vertical Prewitt
232
- const gy = -rawData[(y - 1) * cw + (x - 1)] -
233
- rawData[(y - 1) * cw + x] -
234
- rawData[(y - 1) * cw + (x + 1)] +
235
- rawData[(y + 1) * cw + (x - 1)] +
236
- rawData[(y + 1) * cw + x] +
237
- rawData[(y + 1) * cw + (x + 1)];
238
- contourBuf[y * cw + x] = Math.min(255, Math.round(Math.sqrt(gx * gx + gy * gy)));
239
- }
240
- }
241
- const out = await sharp(contourBuf, {
242
- raw: { width: cw, height: ch, channels: 1 }
243
- })
244
- .png()
245
- .toBuffer();
246
- return { output: toRef(out, baseObj) };
247
- }
248
- else if (t.endsWith(".Smooth")) {
249
- // PIL SMOOTH kernel: [1,1,1, 1,5,1, 1,1,1] with scale=13
250
- img = img.convolve({
251
- width: 3,
252
- height: 3,
253
- kernel: [1, 1, 1, 1, 5, 1, 1, 1, 1],
254
- scale: 13
255
- });
256
- }
257
- else if (t.endsWith(".GetChannel")) {
258
- const channel = String(this.channel ?? "red").toLowerCase();
259
- const idx = channel === "green" ? 1 : channel === "blue" ? 2 : 0;
260
- img = img.extractChannel(idx);
261
- }
262
- else if (t.endsWith(".Expand")) {
263
- const border = Number(this.border ?? 10);
264
- const fillVal = Number(this.fill ?? 0);
265
- const color = `rgb(${fillVal},${fillVal},${fillVal})`;
266
- img = img.extend({
267
- top: border,
268
- left: border,
269
- right: border,
270
- bottom: border,
271
- background: color
272
- });
273
- }
274
- const out = await img.png().toBuffer();
275
- return { output: toRef(out, baseObj) };
276
- }
277
- };
278
- for (const property of desc.properties) {
279
- registerDeclaredProperty(C, property.name, property.options);
280
- }
281
- return C;
282
- }
283
- const DESCRIPTORS = [
284
- {
285
- nodeType: "lib.image.filter.Blur",
286
- title: "Blur",
287
- description: "Apply a Gaussian blur effect to an image.\n image, filter, blur\n\n - Soften images or reduce noise and detail\n - Make focal areas stand out by blurring surroundings\n - Protect privacy by blurring sensitive information",
288
- basicFields: ["image", "radius"],
289
- outputs: {
290
- output: "image"
291
- },
292
- properties: [
293
- {
294
- name: "image",
295
- options: {
296
- type: "image",
297
- default: {
298
- type: "image",
299
- uri: "",
300
- asset_id: null,
301
- data: null,
302
- metadata: null
303
- },
304
- title: "Image",
305
- description: "The image to blur."
306
- }
307
- },
308
- {
309
- name: "radius",
310
- options: {
311
- type: "int",
312
- default: 2,
313
- title: "Radius",
314
- description: "Blur radius.",
315
- min: 0,
316
- max: 128
317
- }
318
- }
319
- ]
320
- },
321
- {
322
- nodeType: "lib.image.filter.Canny",
323
- title: "Canny",
324
- description: "Apply Canny edge detection to an image.\n image, filter, edges\n\n - Highlight areas of rapid intensity change\n - Outline object boundaries and structure\n - Enhance inputs for object detection and image segmentation",
325
- basicFields: ["image", "low_threshold", "high_threshold"],
326
- outputs: {
327
- output: "image"
328
- },
329
- properties: [
330
- {
331
- name: "image",
332
- options: {
333
- type: "image",
334
- default: {
335
- type: "image",
336
- uri: "",
337
- asset_id: null,
338
- data: null,
339
- metadata: null
340
- },
341
- title: "Image",
342
- description: "The image to canny."
343
- }
344
- },
345
- {
346
- name: "low_threshold",
347
- options: {
348
- type: "int",
349
- default: 100,
350
- title: "Low Threshold",
351
- description: "Low threshold.",
352
- min: 0,
353
- max: 255
354
- }
355
- },
356
- {
357
- name: "high_threshold",
358
- options: {
359
- type: "int",
360
- default: 200,
361
- title: "High Threshold",
362
- description: "High threshold.",
363
- min: 0,
364
- max: 255
365
- }
366
- }
367
- ]
368
- },
369
- {
370
- nodeType: "lib.image.filter.Contour",
371
- title: "Contour",
372
- description: "Apply a contour filter to highlight image edges.\n image, filter, contour\n\n - Extract key features from complex images\n - Aid pattern recognition and object detection\n - Create stylized contour sketch art effects",
373
- basicFields: ["image"],
374
- outputs: {
375
- output: "image"
376
- },
377
- properties: [
378
- {
379
- name: "image",
380
- options: {
381
- type: "image",
382
- default: {
383
- type: "image",
384
- uri: "",
385
- asset_id: null,
386
- data: null,
387
- metadata: null
388
- },
389
- title: "Image",
390
- description: "The image to contour."
391
- }
392
- }
393
- ]
394
- },
395
- {
396
- nodeType: "lib.image.filter.ConvertToGrayscale",
397
- title: "Convert To Grayscale",
398
- description: "Convert an image to grayscale.\n image, grayscale\n\n - Simplify images for feature and edge detection\n - Prepare images for shape-based machine learning\n - Create vintage or monochrome aesthetic effects",
399
- basicFields: ["image"],
400
- outputs: {
401
- output: "image"
402
- },
403
- properties: [
404
- {
405
- name: "image",
406
- options: {
407
- type: "image",
408
- default: {
409
- type: "image",
410
- uri: "",
411
- asset_id: null,
412
- data: null,
413
- metadata: null
414
- },
415
- title: "Image",
416
- description: "The image to convert."
417
- }
418
- }
419
- ]
420
- },
421
- {
422
- nodeType: "lib.image.filter.Emboss",
423
- title: "Emboss",
424
- description: "Apply an emboss filter for a 3D raised effect.\n image, filter, emboss\n\n - Add texture and depth to photos\n - Create visually interesting graphics\n - Incorporate unique effects in digital artwork",
425
- basicFields: ["image"],
426
- outputs: {
427
- output: "image"
428
- },
429
- properties: [
430
- {
431
- name: "image",
432
- options: {
433
- type: "image",
434
- default: {
435
- type: "image",
436
- uri: "",
437
- asset_id: null,
438
- data: null,
439
- metadata: null
440
- },
441
- title: "Image",
442
- description: "The image to emboss."
443
- }
444
- }
445
- ]
446
- },
447
- {
448
- nodeType: "lib.image.filter.Expand",
449
- title: "Expand",
450
- description: "Add a border around an image to increase its size.\n image, border, expand\n\n - Make images stand out by adding a colored border\n - Create framed photo effects\n - Separate image content from surroundings",
451
- basicFields: ["image", "border", "fill"],
452
- outputs: {
453
- output: "image"
454
- },
455
- properties: [
456
- {
457
- name: "image",
458
- options: {
459
- type: "image",
460
- default: {
461
- type: "image",
462
- uri: "",
463
- asset_id: null,
464
- data: null,
465
- metadata: null
466
- },
467
- title: "Image",
468
- description: "The image to expand."
469
- }
470
- },
471
- {
472
- name: "border",
473
- options: {
474
- type: "int",
475
- default: 0,
476
- title: "Border",
477
- description: "Border size.",
478
- min: 0,
479
- max: 512
480
- }
481
- },
482
- {
483
- name: "fill",
484
- options: {
485
- type: "int",
486
- default: 0,
487
- title: "Fill",
488
- description: "Fill color.",
489
- min: 0,
490
- max: 255
491
- }
492
- }
493
- ]
494
- },
495
- {
496
- nodeType: "lib.image.filter.FindEdges",
497
- title: "Find Edges",
498
- description: "Detect and highlight edges in an image.\n image, filter, edges\n\n - Analyze structural patterns in images\n - Aid object detection in computer vision\n - Detect important features like corners and ridges",
499
- basicFields: ["image"],
500
- outputs: {
501
- output: "image"
502
- },
503
- properties: [
504
- {
505
- name: "image",
506
- options: {
507
- type: "image",
508
- default: {
509
- type: "image",
510
- uri: "",
511
- asset_id: null,
512
- data: null,
513
- metadata: null
514
- },
515
- title: "Image",
516
- description: "The image to find edges."
517
- }
518
- }
519
- ]
520
- },
521
- {
522
- nodeType: "lib.image.filter.GetChannel",
523
- title: "Get Channel",
524
- description: "Extract a specific color channel from an image.\n image, color, channel, isolate, extract\n\n - Isolate color information for image analysis\n - Manipulate specific color components in graphic design\n - Enhance or reduce visibility of certain colors",
525
- basicFields: ["image", "channel"],
526
- outputs: {
527
- output: "image"
528
- },
529
- properties: [
530
- {
531
- name: "image",
532
- options: {
533
- type: "image",
534
- default: {
535
- type: "image",
536
- uri: "",
537
- asset_id: null,
538
- data: null,
539
- metadata: null
540
- },
541
- title: "Image",
542
- description: "The image to get the channel from."
543
- }
544
- },
545
- {
546
- name: "channel",
547
- options: {
548
- type: "enum",
549
- default: "R",
550
- title: "Channel",
551
- values: ["R", "G", "B"]
552
- }
553
- }
554
- ]
555
- },
556
- {
557
- nodeType: "lib.image.filter.Invert",
558
- title: "Invert",
559
- description: "Invert the colors of an image.\n image, filter, invert\n\n - Create negative versions of images for visual effects\n - Analyze image data by bringing out hidden details\n - Preprocess images for operations that work better on inverted colors",
560
- basicFields: ["image"],
561
- outputs: {
562
- output: "image"
563
- },
564
- properties: [
565
- {
566
- name: "image",
567
- options: {
568
- type: "image",
569
- default: {
570
- type: "image",
571
- uri: "",
572
- asset_id: null,
573
- data: null,
574
- metadata: null
575
- },
576
- title: "Image",
577
- description: "The image to adjust the brightness for."
578
- }
579
- }
580
- ]
581
- },
582
- {
583
- nodeType: "lib.image.filter.Posterize",
584
- title: "Posterize",
585
- description: "Reduce the number of colors in an image for a poster-like effect.\n image, filter, posterize\n\n - Create graphic art by simplifying image colors\n - Apply artistic effects to photographs\n - Generate visually compelling content for advertising",
586
- basicFields: ["image", "bits"],
587
- outputs: {
588
- output: "image"
589
- },
590
- properties: [
591
- {
592
- name: "image",
593
- options: {
594
- type: "image",
595
- default: {
596
- type: "image",
597
- uri: "",
598
- asset_id: null,
599
- data: null,
600
- metadata: null
601
- },
602
- title: "Image",
603
- description: "The image to posterize."
604
- }
605
- },
606
- {
607
- name: "bits",
608
- options: {
609
- type: "int",
610
- default: 4,
611
- title: "Bits",
612
- description: "Number of bits to posterize to.",
613
- min: 1,
614
- max: 8
615
- }
616
- }
617
- ]
618
- },
619
- {
620
- nodeType: "lib.image.filter.Smooth",
621
- title: "Smooth",
622
- description: "Apply smoothing to reduce image noise and detail.\n image, filter, smooth\n\n - Enhance visual aesthetics of images\n - Improve object detection by reducing irrelevant details\n - Aid facial recognition by simplifying images",
623
- basicFields: ["image"],
624
- outputs: {
625
- output: "image"
626
- },
627
- properties: [
628
- {
629
- name: "image",
630
- options: {
631
- type: "image",
632
- default: {
633
- type: "image",
634
- uri: "",
635
- asset_id: null,
636
- data: null,
637
- metadata: null
638
- },
639
- title: "Image",
640
- description: "The image to smooth."
641
- }
642
- }
643
- ]
644
- },
645
- {
646
- nodeType: "lib.image.filter.Solarize",
647
- title: "Solarize",
648
- description: "Apply a solarize effect to partially invert image tones.\n image, filter, solarize\n\n - Create surreal artistic photo effects\n - Enhance visual data by making certain elements more prominent\n - Add a unique style to images for graphic design",
649
- basicFields: ["image", "threshold"],
650
- outputs: {
651
- output: "image"
652
- },
653
- properties: [
654
- {
655
- name: "image",
656
- options: {
657
- type: "image",
658
- default: {
659
- type: "image",
660
- uri: "",
661
- asset_id: null,
662
- data: null,
663
- metadata: null
664
- },
665
- title: "Image",
666
- description: "The image to solarize."
667
- }
668
- },
669
- {
670
- name: "threshold",
671
- options: {
672
- type: "int",
673
- default: 128,
674
- title: "Threshold",
675
- description: "Threshold for solarization.",
676
- min: 0,
677
- max: 255
678
- }
679
- }
680
- ]
681
- }
682
- ];
683
- export const LIB_IMAGE_FILTER_NODES = DESCRIPTORS.map(createFilterNode);
684
- //# sourceMappingURL=lib-image-filter.js.map