@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,731 +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 createEnhanceNode(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 props = this.serialize();
14
- const baseObj = pickImage(this.serialize(), props);
15
- const baseBytes = await decodeImage(baseObj, context);
16
- if (!baseBytes) {
17
- return { output: baseObj ?? {} };
18
- }
19
- let img = sharp(baseBytes, { failOn: "none" });
20
- if (t.endsWith(".Brightness")) {
21
- const factor = Number(this.factor ?? 1);
22
- img = img.modulate({ brightness: factor });
23
- }
24
- else if (t.endsWith(".Color")) {
25
- const factor = Number(this.factor ?? 1);
26
- img = img.modulate({ saturation: factor });
27
- }
28
- else if (t.endsWith(".Contrast")) {
29
- const factor = Number(this.factor ?? 1);
30
- img = img.linear(factor, -(128 * (factor - 1)));
31
- }
32
- else if (t.endsWith(".Sharpen")) {
33
- img = img.convolve({
34
- width: 3,
35
- height: 3,
36
- kernel: [-1, -1, -1, -1, 9, -1, -1, -1, -1]
37
- });
38
- }
39
- else if (t.endsWith(".Sharpness")) {
40
- const factor = Number(this.factor ?? 1);
41
- img = img.sharpen({ sigma: 1, m1: Math.max(0, factor), m2: 0.5 });
42
- }
43
- else if (t.endsWith(".UnsharpMask")) {
44
- const radius = Number(this.radius ?? 2);
45
- const percent = Number(this.percent ?? 150);
46
- const threshold = Number(this.threshold ?? 3);
47
- img = img.sharpen({
48
- sigma: Math.max(0.5, radius),
49
- m1: percent / 100,
50
- m2: threshold
51
- });
52
- }
53
- else if (t.endsWith(".AutoContrast")) {
54
- // Proper autocontrast with cutoff
55
- const cutoff = Number(this.cutoff ?? 0);
56
- const { data: raw, info } = await img
57
- .removeAlpha()
58
- .raw()
59
- .toBuffer({ resolveWithObject: true });
60
- const w = info.width;
61
- const h = info.height;
62
- const totalPixels = w * h;
63
- const channels = 3;
64
- const cutCount = Math.floor((totalPixels * cutoff) / 100);
65
- for (let c = 0; c < channels; c++) {
66
- // Build histogram for this channel
67
- const hist = new Uint32Array(256);
68
- for (let i = c; i < raw.length; i += channels) {
69
- hist[raw[i]]++;
70
- }
71
- // Find low cutoff
72
- let lo = 0;
73
- let cumLo = 0;
74
- while (lo < 255 && cumLo + hist[lo] <= cutCount) {
75
- cumLo += hist[lo];
76
- lo++;
77
- }
78
- // Find high cutoff
79
- let hi = 255;
80
- let cumHi = 0;
81
- while (hi > 0 && cumHi + hist[hi] <= cutCount) {
82
- cumHi += hist[hi];
83
- hi--;
84
- }
85
- if (lo >= hi)
86
- continue;
87
- // Linear map remaining range to 0-255
88
- const scale = 255.0 / (hi - lo);
89
- for (let i = c; i < raw.length; i += channels) {
90
- raw[i] = Math.max(0, Math.min(255, Math.round((raw[i] - lo) * scale)));
91
- }
92
- }
93
- const out = await sharp(raw, {
94
- raw: { width: w, height: h, channels: channels }
95
- })
96
- .png()
97
- .toBuffer();
98
- return { output: toRef(out, baseObj) };
99
- }
100
- else if (t.endsWith(".Equalize")) {
101
- // Proper histogram equalization
102
- const { data: raw, info } = await img
103
- .removeAlpha()
104
- .raw()
105
- .toBuffer({ resolveWithObject: true });
106
- const w = info.width;
107
- const h = info.height;
108
- const totalPixels = w * h;
109
- const channels = 3;
110
- for (let c = 0; c < channels; c++) {
111
- // Build histogram
112
- const hist = new Uint32Array(256);
113
- for (let i = c; i < raw.length; i += channels) {
114
- hist[raw[i]]++;
115
- }
116
- // Compute CDF
117
- const cdf = new Uint32Array(256);
118
- cdf[0] = hist[0];
119
- for (let j = 1; j < 256; j++) {
120
- cdf[j] = cdf[j - 1] + hist[j];
121
- }
122
- // Find min non-zero CDF value
123
- let cdfMin = 0;
124
- for (let j = 0; j < 256; j++) {
125
- if (cdf[j] > 0) {
126
- cdfMin = cdf[j];
127
- break;
128
- }
129
- }
130
- // Build lookup table
131
- const lut = new Uint8Array(256);
132
- const denom = totalPixels - cdfMin;
133
- if (denom > 0) {
134
- for (let j = 0; j < 256; j++) {
135
- lut[j] = Math.round(((cdf[j] - cdfMin) / denom) * 255);
136
- }
137
- }
138
- // Apply LUT
139
- for (let i = c; i < raw.length; i += channels) {
140
- raw[i] = lut[raw[i]];
141
- }
142
- }
143
- const out = await sharp(raw, {
144
- raw: { width: w, height: h, channels: channels }
145
- })
146
- .png()
147
- .toBuffer();
148
- return { output: toRef(out, baseObj) };
149
- }
150
- else if (t.endsWith(".AdaptiveContrast")) {
151
- // CLAHE (Contrast Limited Adaptive Histogram Equalization)
152
- const clipLimit = Number(this.clip_limit ?? 2);
153
- const gridSize = Math.max(1, Math.round(Number(this.grid_size ?? 8)));
154
- const { data: raw, info } = await img
155
- .removeAlpha()
156
- .raw()
157
- .toBuffer({ resolveWithObject: true });
158
- const w = info.width;
159
- const h = info.height;
160
- const channels = 3;
161
- const tileW = Math.ceil(w / gridSize);
162
- const tileH = Math.ceil(h / gridSize);
163
- // Build CDFs for each tile and channel
164
- const tileCDFs = [];
165
- for (let ty = 0; ty < gridSize; ty++) {
166
- tileCDFs[ty] = [];
167
- for (let tx = 0; tx < gridSize; tx++) {
168
- tileCDFs[ty][tx] = [];
169
- const x0 = tx * tileW;
170
- const y0 = ty * tileH;
171
- const x1 = Math.min(x0 + tileW, w);
172
- const y1 = Math.min(y0 + tileH, h);
173
- const tilePixels = (x1 - x0) * (y1 - y0);
174
- for (let c = 0; c < channels; c++) {
175
- const hist = new Uint32Array(256);
176
- for (let y = y0; y < y1; y++) {
177
- for (let x = x0; x < x1; x++) {
178
- hist[raw[(y * w + x) * channels + c]]++;
179
- }
180
- }
181
- // Clip histogram and redistribute
182
- const limit = Math.max(1, Math.round((clipLimit * tilePixels) / 256));
183
- let excess = 0;
184
- for (let j = 0; j < 256; j++) {
185
- if (hist[j] > limit) {
186
- excess += hist[j] - limit;
187
- hist[j] = limit;
188
- }
189
- }
190
- const increment = Math.floor(excess / 256);
191
- for (let j = 0; j < 256; j++) {
192
- hist[j] += increment;
193
- }
194
- // Compute CDF
195
- const cdf = new Float32Array(256);
196
- cdf[0] = hist[0];
197
- for (let j = 1; j < 256; j++) {
198
- cdf[j] = cdf[j - 1] + hist[j];
199
- }
200
- // Normalize CDF to 0-255
201
- const cdfMax = cdf[255];
202
- if (cdfMax > 0) {
203
- for (let j = 0; j < 256; j++) {
204
- cdf[j] = (cdf[j] / cdfMax) * 255;
205
- }
206
- }
207
- tileCDFs[ty][tx][c] = cdf;
208
- }
209
- }
210
- }
211
- // Apply with bilinear interpolation between tile CDFs
212
- const result = Buffer.alloc(raw.length);
213
- for (let y = 0; y < h; y++) {
214
- for (let x = 0; x < w; x++) {
215
- // Find tile coordinates
216
- const ftx = (x + 0.5) / tileW - 0.5;
217
- const fty = (y + 0.5) / tileH - 0.5;
218
- const tx0 = Math.max(0, Math.floor(ftx));
219
- const ty0 = Math.max(0, Math.floor(fty));
220
- const tx1 = Math.min(gridSize - 1, tx0 + 1);
221
- const ty1 = Math.min(gridSize - 1, ty0 + 1);
222
- const fx = Math.max(0, Math.min(1, ftx - tx0));
223
- const fy = Math.max(0, Math.min(1, fty - ty0));
224
- for (let c = 0; c < channels; c++) {
225
- const val = raw[(y * w + x) * channels + c];
226
- const tl = tileCDFs[ty0][tx0][c][val];
227
- const tr = tileCDFs[ty0][tx1][c][val];
228
- const bl = tileCDFs[ty1][tx0][c][val];
229
- const br = tileCDFs[ty1][tx1][c][val];
230
- const top = tl * (1 - fx) + tr * fx;
231
- const bot = bl * (1 - fx) + br * fx;
232
- result[(y * w + x) * channels + c] = Math.round(top * (1 - fy) + bot * fy);
233
- }
234
- }
235
- }
236
- const out = await sharp(result, {
237
- raw: { width: w, height: h, channels: channels }
238
- })
239
- .png()
240
- .toBuffer();
241
- return { output: toRef(out, baseObj) };
242
- }
243
- else if (t.endsWith(".Detail") || t.endsWith(".EdgeEnhance")) {
244
- img = img.sharpen({ sigma: 0.5, m1: 0.5, m2: 0.3 });
245
- }
246
- else if (t.endsWith(".RankFilter")) {
247
- // Proper rank filter with configurable rank
248
- const size = Math.max(1, Number(this.size ?? 3));
249
- const rank = Number(this.rank ?? 3);
250
- const { data: raw, info } = await img
251
- .removeAlpha()
252
- .raw()
253
- .toBuffer({ resolveWithObject: true });
254
- const w = info.width;
255
- const h = info.height;
256
- const channels = 3;
257
- const half = Math.floor(size / 2);
258
- const result = Buffer.alloc(raw.length);
259
- for (let y = 0; y < h; y++) {
260
- for (let x = 0; x < w; x++) {
261
- for (let c = 0; c < channels; c++) {
262
- const neighbors = [];
263
- for (let ky = -half; ky <= half; ky++) {
264
- for (let kx = -half; kx <= half; kx++) {
265
- const ny = Math.min(h - 1, Math.max(0, y + ky));
266
- const nx = Math.min(w - 1, Math.max(0, x + kx));
267
- neighbors.push(raw[(ny * w + nx) * channels + c]);
268
- }
269
- }
270
- neighbors.sort((a, b) => a - b);
271
- const idx = Math.min(rank, neighbors.length - 1);
272
- result[(y * w + x) * channels + c] = neighbors[idx];
273
- }
274
- }
275
- }
276
- const out = await sharp(result, {
277
- raw: { width: w, height: h, channels: channels }
278
- })
279
- .png()
280
- .toBuffer();
281
- return { output: toRef(out, baseObj) };
282
- }
283
- const out = await img.png().toBuffer();
284
- return { output: toRef(out, baseObj) };
285
- }
286
- };
287
- for (const property of desc.properties) {
288
- registerDeclaredProperty(C, property.name, property.options);
289
- }
290
- return C;
291
- }
292
- const DESCRIPTORS = [
293
- {
294
- nodeType: "lib.image.enhance.AdaptiveContrast",
295
- title: "Adaptive Contrast",
296
- description: "Applies localized contrast enhancement using adaptive techniques.\n image, contrast, enhance\n\n Use cases:\n - Improve visibility in images with varying lighting conditions\n - Prepare images for improved feature detection in computer vision",
297
- basicFields: ["image", "clip_limit", "grid_size"],
298
- outputs: {
299
- output: "image"
300
- },
301
- properties: [
302
- {
303
- name: "image",
304
- options: {
305
- type: "image",
306
- default: {
307
- type: "image",
308
- uri: "",
309
- asset_id: null,
310
- data: null,
311
- metadata: null
312
- },
313
- title: "Image",
314
- description: "The image to adjust the contrast for."
315
- }
316
- },
317
- {
318
- name: "clip_limit",
319
- options: {
320
- type: "float",
321
- default: 2,
322
- title: "Clip Limit",
323
- description: "Clip limit for adaptive contrast.",
324
- min: 0,
325
- max: 100
326
- }
327
- },
328
- {
329
- name: "grid_size",
330
- options: {
331
- type: "int",
332
- default: 8,
333
- title: "Grid Size",
334
- description: "Grid size for adaptive contrast.",
335
- min: 1,
336
- max: 64
337
- }
338
- }
339
- ]
340
- },
341
- {
342
- nodeType: "lib.image.enhance.AutoContrast",
343
- title: "Auto Contrast",
344
- description: "Automatically adjusts image contrast for enhanced visual quality.\n image, contrast, balance\n\n Use cases:\n - Enhance image clarity for better visual perception\n - Pre-process images for computer vision tasks\n - Improve photo aesthetics in editing workflows",
345
- basicFields: ["image", "cutoff"],
346
- outputs: {
347
- output: "image"
348
- },
349
- properties: [
350
- {
351
- name: "image",
352
- options: {
353
- type: "image",
354
- default: {
355
- type: "image",
356
- uri: "",
357
- asset_id: null,
358
- data: null,
359
- metadata: null
360
- },
361
- title: "Image",
362
- description: "The image to adjust the contrast for."
363
- }
364
- },
365
- {
366
- name: "cutoff",
367
- options: {
368
- type: "int",
369
- default: 0,
370
- title: "Cutoff",
371
- description: "Represents the percentage of pixels to ignore at both the darkest and lightest ends of the histogram. A cutoff value of 5 means ignoring the darkest 5% and the lightest 5% of pixels, enhancing overall contrast by stretching the remaining pixel values across the full brightness range.",
372
- min: 0,
373
- max: 255
374
- }
375
- }
376
- ]
377
- },
378
- {
379
- nodeType: "lib.image.enhance.Brightness",
380
- title: "Brightness",
381
- description: "Adjusts overall image brightness to lighten or darken.\n image, brightness, enhance\n\n Use cases:\n - Correct underexposed or overexposed photographs\n - Enhance visibility of dark image regions\n - Prepare images for consistent display across devices",
382
- basicFields: ["image", "factor"],
383
- outputs: {
384
- output: "image"
385
- },
386
- properties: [
387
- {
388
- name: "image",
389
- options: {
390
- type: "image",
391
- default: {
392
- type: "image",
393
- uri: "",
394
- asset_id: null,
395
- data: null,
396
- metadata: null
397
- },
398
- title: "Image",
399
- description: "The image to adjust the brightness for."
400
- }
401
- },
402
- {
403
- name: "factor",
404
- options: {
405
- type: "union[float, int]",
406
- default: 1,
407
- title: "Factor",
408
- description: "Factor to adjust the brightness. 1.0 means no change."
409
- }
410
- }
411
- ]
412
- },
413
- {
414
- nodeType: "lib.image.enhance.Color",
415
- title: "Color",
416
- description: "Adjusts color intensity of an image.\n image, color, enhance\n\n Use cases:\n - Enhance color vibrancy in photographs\n - Correct color imbalances in digital images\n - Prepare images for consistent brand color representation",
417
- basicFields: ["image", "factor"],
418
- outputs: {
419
- output: "image"
420
- },
421
- properties: [
422
- {
423
- name: "image",
424
- options: {
425
- type: "image",
426
- default: {
427
- type: "image",
428
- uri: "",
429
- asset_id: null,
430
- data: null,
431
- metadata: null
432
- },
433
- title: "Image",
434
- description: "The image to adjust the brightness for."
435
- }
436
- },
437
- {
438
- name: "factor",
439
- options: {
440
- type: "float",
441
- default: 1,
442
- title: "Factor",
443
- description: "Factor to adjust the contrast. 1.0 means no change."
444
- }
445
- }
446
- ]
447
- },
448
- {
449
- nodeType: "lib.image.enhance.Contrast",
450
- title: "Contrast",
451
- description: "Adjusts image contrast to modify light-dark differences.\n image, contrast, enhance\n\n Use cases:\n - Enhance visibility of details in low-contrast images\n - Prepare images for visual analysis or recognition tasks\n - Create dramatic effects in artistic photography",
452
- basicFields: ["image", "factor"],
453
- outputs: {
454
- output: "image"
455
- },
456
- properties: [
457
- {
458
- name: "image",
459
- options: {
460
- type: "image",
461
- default: {
462
- type: "image",
463
- uri: "",
464
- asset_id: null,
465
- data: null,
466
- metadata: null
467
- },
468
- title: "Image",
469
- description: "The image to adjust the brightness for."
470
- }
471
- },
472
- {
473
- name: "factor",
474
- options: {
475
- type: "float",
476
- default: 1,
477
- title: "Factor",
478
- description: "Factor to adjust the contrast. 1.0 means no change."
479
- }
480
- }
481
- ]
482
- },
483
- {
484
- nodeType: "lib.image.enhance.Detail",
485
- title: "Detail",
486
- description: "Enhances fine details in images.\n image, detail, enhance\n\n Use cases:\n - Improve clarity of textural elements in photographs\n - Enhance visibility of small features for analysis\n - Prepare images for high-resolution display or printing",
487
- basicFields: ["image"],
488
- outputs: {
489
- output: "image"
490
- },
491
- properties: [
492
- {
493
- name: "image",
494
- options: {
495
- type: "image",
496
- default: {
497
- type: "image",
498
- uri: "",
499
- asset_id: null,
500
- data: null,
501
- metadata: null
502
- },
503
- title: "Image",
504
- description: "The image to detail."
505
- }
506
- }
507
- ]
508
- },
509
- {
510
- nodeType: "lib.image.enhance.EdgeEnhance",
511
- title: "Edge Enhance",
512
- description: "Enhances edge visibility by increasing contrast along boundaries.\n image, edge, enhance\n\n Use cases:\n - Improve object boundary detection for computer vision\n - Highlight structural elements in technical drawings\n - Prepare images for feature extraction in image analysis",
513
- basicFields: ["image"],
514
- outputs: {
515
- output: "image"
516
- },
517
- properties: [
518
- {
519
- name: "image",
520
- options: {
521
- type: "image",
522
- default: {
523
- type: "image",
524
- uri: "",
525
- asset_id: null,
526
- data: null,
527
- metadata: null
528
- },
529
- title: "Image",
530
- description: "The image to edge enhance."
531
- }
532
- }
533
- ]
534
- },
535
- {
536
- nodeType: "lib.image.enhance.Equalize",
537
- title: "Equalize",
538
- description: "Enhances image contrast by equalizing intensity distribution.\n image, contrast, histogram\n\n Use cases:\n - Improve visibility in poorly lit images\n - Enhance details for image analysis tasks\n - Normalize image data for machine learning",
539
- basicFields: ["image"],
540
- outputs: {
541
- output: "image"
542
- },
543
- properties: [
544
- {
545
- name: "image",
546
- options: {
547
- type: "image",
548
- default: {
549
- type: "image",
550
- uri: "",
551
- asset_id: null,
552
- data: null,
553
- metadata: null
554
- },
555
- title: "Image",
556
- description: "The image to equalize."
557
- }
558
- }
559
- ]
560
- },
561
- {
562
- nodeType: "lib.image.enhance.RankFilter",
563
- title: "Rank Filter",
564
- description: "Applies rank-based filtering to enhance or smooth image features.\n image, filter, enhance\n\n Use cases:\n - Reduce noise while preserving edges in images\n - Enhance specific image features based on local intensity\n - Pre-process images for improved segmentation results",
565
- basicFields: ["image", "size", "rank"],
566
- outputs: {
567
- output: "image"
568
- },
569
- properties: [
570
- {
571
- name: "image",
572
- options: {
573
- type: "image",
574
- default: {
575
- type: "image",
576
- uri: "",
577
- asset_id: null,
578
- data: null,
579
- metadata: null
580
- },
581
- title: "Image",
582
- description: "The image to rank filter."
583
- }
584
- },
585
- {
586
- name: "size",
587
- options: {
588
- type: "int",
589
- default: 3,
590
- title: "Size",
591
- description: "Rank filter size.",
592
- min: 1,
593
- max: 512
594
- }
595
- },
596
- {
597
- name: "rank",
598
- options: {
599
- type: "int",
600
- default: 3,
601
- title: "Rank",
602
- description: "Rank filter rank.",
603
- min: 1,
604
- max: 512
605
- }
606
- }
607
- ]
608
- },
609
- {
610
- nodeType: "lib.image.enhance.Sharpen",
611
- title: "Sharpen",
612
- description: "Enhances image detail by intensifying local pixel contrast.\n image, sharpen, clarity\n\n Use cases:\n - Improve clarity of photographs for print or display\n - Refine texture details in product photography\n - Enhance readability of text in document images",
613
- basicFields: ["image"],
614
- outputs: {
615
- output: "image"
616
- },
617
- properties: [
618
- {
619
- name: "image",
620
- options: {
621
- type: "image",
622
- default: {
623
- type: "image",
624
- uri: "",
625
- asset_id: null,
626
- data: null,
627
- metadata: null
628
- },
629
- title: "Image",
630
- description: "The image to sharpen."
631
- }
632
- }
633
- ]
634
- },
635
- {
636
- nodeType: "lib.image.enhance.Sharpness",
637
- title: "Sharpness",
638
- description: "Adjusts image sharpness to enhance or reduce detail clarity.\n image, clarity, sharpness\n\n Use cases:\n - Enhance photo details for improved visual appeal\n - Refine images for object detection tasks\n - Correct slightly blurred images",
639
- basicFields: ["image", "factor"],
640
- outputs: {
641
- output: "image"
642
- },
643
- properties: [
644
- {
645
- name: "image",
646
- options: {
647
- type: "image",
648
- default: {
649
- type: "image",
650
- uri: "",
651
- asset_id: null,
652
- data: null,
653
- metadata: null
654
- },
655
- title: "Image",
656
- description: "The image to adjust the brightness for."
657
- }
658
- },
659
- {
660
- name: "factor",
661
- options: {
662
- type: "float",
663
- default: 1,
664
- title: "Factor",
665
- description: "Factor to adjust the contrast. 1.0 means no change."
666
- }
667
- }
668
- ]
669
- },
670
- {
671
- nodeType: "lib.image.enhance.UnsharpMask",
672
- title: "Unsharp Mask",
673
- description: "Sharpens images using the unsharp mask technique.\n image, sharpen, enhance\n\n Use cases:\n - Enhance edge definition in photographs\n - Improve perceived sharpness of digital artwork\n - Prepare images for high-quality printing or display",
674
- basicFields: ["image", "radius", "percent", "threshold"],
675
- outputs: {
676
- output: "image"
677
- },
678
- properties: [
679
- {
680
- name: "image",
681
- options: {
682
- type: "image",
683
- default: {
684
- type: "image",
685
- uri: "",
686
- asset_id: null,
687
- data: null,
688
- metadata: null
689
- },
690
- title: "Image",
691
- description: "The image to unsharp mask."
692
- }
693
- },
694
- {
695
- name: "radius",
696
- options: {
697
- type: "int",
698
- default: 2,
699
- title: "Radius",
700
- description: "Unsharp mask radius.",
701
- min: 0,
702
- max: 512
703
- }
704
- },
705
- {
706
- name: "percent",
707
- options: {
708
- type: "int",
709
- default: 150,
710
- title: "Percent",
711
- description: "Unsharp mask percent.",
712
- min: 0,
713
- max: 1000
714
- }
715
- },
716
- {
717
- name: "threshold",
718
- options: {
719
- type: "int",
720
- default: 3,
721
- title: "Threshold",
722
- description: "Unsharp mask threshold.",
723
- min: 0,
724
- max: 512
725
- }
726
- }
727
- ]
728
- }
729
- ];
730
- export const LIB_IMAGE_ENHANCE_NODES = DESCRIPTORS.map(createEnhanceNode);
731
- //# sourceMappingURL=lib-image-enhance.js.map