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

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 (363) hide show
  1. package/README.md +21 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/index.d.ts +61 -67
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +179 -173
  6. package/dist/index.js.map +1 -1
  7. package/dist/platforms/browser.d.ts +19 -0
  8. package/dist/platforms/browser.d.ts.map +1 -0
  9. package/dist/platforms/browser.js +29 -0
  10. package/dist/platforms/browser.js.map +1 -0
  11. package/package.json +53 -65
  12. package/dist/lib/audio-wav.d.ts +0 -66
  13. package/dist/lib/audio-wav.d.ts.map +0 -1
  14. package/dist/lib/audio-wav.js +0 -215
  15. package/dist/lib/audio-wav.js.map +0 -1
  16. package/dist/nodes/agent-tool-hydration.d.ts +0 -10
  17. package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
  18. package/dist/nodes/agent-tool-hydration.js +0 -43
  19. package/dist/nodes/agent-tool-hydration.js.map +0 -1
  20. package/dist/nodes/agents.d.ts +0 -262
  21. package/dist/nodes/agents.d.ts.map +0 -1
  22. package/dist/nodes/agents.js +0 -2856
  23. package/dist/nodes/agents.js.map +0 -1
  24. package/dist/nodes/anthropic.d.ts +0 -26
  25. package/dist/nodes/anthropic.d.ts.map +0 -1
  26. package/dist/nodes/anthropic.js +0 -133
  27. package/dist/nodes/anthropic.js.map +0 -1
  28. package/dist/nodes/apify.d.ts +0 -120
  29. package/dist/nodes/apify.d.ts.map +0 -1
  30. package/dist/nodes/apify.js +0 -618
  31. package/dist/nodes/apify.js.map +0 -1
  32. package/dist/nodes/audio.d.ts +0 -301
  33. package/dist/nodes/audio.d.ts.map +0 -1
  34. package/dist/nodes/audio.js +0 -1274
  35. package/dist/nodes/audio.js.map +0 -1
  36. package/dist/nodes/code-node.d.ts +0 -34
  37. package/dist/nodes/code-node.d.ts.map +0 -1
  38. package/dist/nodes/code-node.js +0 -343
  39. package/dist/nodes/code-node.js.map +0 -1
  40. package/dist/nodes/code.d.ts +0 -301
  41. package/dist/nodes/code.d.ts.map +0 -1
  42. package/dist/nodes/code.js +0 -850
  43. package/dist/nodes/code.js.map +0 -1
  44. package/dist/nodes/compare.d.ts +0 -18
  45. package/dist/nodes/compare.d.ts.map +0 -1
  46. package/dist/nodes/compare.js +0 -122
  47. package/dist/nodes/compare.js.map +0 -1
  48. package/dist/nodes/constant.d.ts +0 -315
  49. package/dist/nodes/constant.d.ts.map +0 -1
  50. package/dist/nodes/constant.js +0 -715
  51. package/dist/nodes/constant.js.map +0 -1
  52. package/dist/nodes/control.d.ts +0 -83
  53. package/dist/nodes/control.d.ts.map +0 -1
  54. package/dist/nodes/control.js +0 -212
  55. package/dist/nodes/control.js.map +0 -1
  56. package/dist/nodes/data.d.ts +0 -369
  57. package/dist/nodes/data.d.ts.map +0 -1
  58. package/dist/nodes/data.js +0 -1590
  59. package/dist/nodes/data.js.map +0 -1
  60. package/dist/nodes/document.d.ts +0 -134
  61. package/dist/nodes/document.d.ts.map +0 -1
  62. package/dist/nodes/document.js +0 -984
  63. package/dist/nodes/document.js.map +0 -1
  64. package/dist/nodes/extended-placeholders.d.ts +0 -6
  65. package/dist/nodes/extended-placeholders.d.ts.map +0 -1
  66. package/dist/nodes/extended-placeholders.js +0 -19
  67. package/dist/nodes/extended-placeholders.js.map +0 -1
  68. package/dist/nodes/gemini.d.ts +0 -110
  69. package/dist/nodes/gemini.d.ts.map +0 -1
  70. package/dist/nodes/gemini.js +0 -871
  71. package/dist/nodes/gemini.js.map +0 -1
  72. package/dist/nodes/generators.d.ts +0 -84
  73. package/dist/nodes/generators.d.ts.map +0 -1
  74. package/dist/nodes/generators.js +0 -968
  75. package/dist/nodes/generators.js.map +0 -1
  76. package/dist/nodes/image.d.ts +0 -232
  77. package/dist/nodes/image.d.ts.map +0 -1
  78. package/dist/nodes/image.js +0 -1395
  79. package/dist/nodes/image.js.map +0 -1
  80. package/dist/nodes/input.d.ts +0 -445
  81. package/dist/nodes/input.d.ts.map +0 -1
  82. package/dist/nodes/input.js +0 -1459
  83. package/dist/nodes/input.js.map +0 -1
  84. package/dist/nodes/kie-dynamic.d.ts +0 -31
  85. package/dist/nodes/kie-dynamic.d.ts.map +0 -1
  86. package/dist/nodes/kie-dynamic.js +0 -270
  87. package/dist/nodes/kie-dynamic.js.map +0 -1
  88. package/dist/nodes/lib-audio-dsp.d.ts +0 -85
  89. package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
  90. package/dist/nodes/lib-audio-dsp.js +0 -450
  91. package/dist/nodes/lib-audio-dsp.js.map +0 -1
  92. package/dist/nodes/lib-audio-effects.d.ts +0 -116
  93. package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
  94. package/dist/nodes/lib-audio-effects.js +0 -905
  95. package/dist/nodes/lib-audio-effects.js.map +0 -1
  96. package/dist/nodes/lib-browser.d.ts +0 -99
  97. package/dist/nodes/lib-browser.d.ts.map +0 -1
  98. package/dist/nodes/lib-browser.js +0 -692
  99. package/dist/nodes/lib-browser.js.map +0 -1
  100. package/dist/nodes/lib-charts.d.ts +0 -20
  101. package/dist/nodes/lib-charts.d.ts.map +0 -1
  102. package/dist/nodes/lib-charts.js +0 -245
  103. package/dist/nodes/lib-charts.js.map +0 -1
  104. package/dist/nodes/lib-datetime.d.ts +0 -108
  105. package/dist/nodes/lib-datetime.d.ts.map +0 -1
  106. package/dist/nodes/lib-datetime.js +0 -421
  107. package/dist/nodes/lib-datetime.js.map +0 -1
  108. package/dist/nodes/lib-doc-convert.d.ts +0 -19
  109. package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
  110. package/dist/nodes/lib-doc-convert.js +0 -257
  111. package/dist/nodes/lib-doc-convert.js.map +0 -1
  112. package/dist/nodes/lib-doc-transform.d.ts +0 -39
  113. package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
  114. package/dist/nodes/lib-doc-transform.js +0 -335
  115. package/dist/nodes/lib-doc-transform.js.map +0 -1
  116. package/dist/nodes/lib-docx.d.ts +0 -106
  117. package/dist/nodes/lib-docx.d.ts.map +0 -1
  118. package/dist/nodes/lib-docx.js +0 -595
  119. package/dist/nodes/lib-docx.js.map +0 -1
  120. package/dist/nodes/lib-epub.d.ts +0 -55
  121. package/dist/nodes/lib-epub.d.ts.map +0 -1
  122. package/dist/nodes/lib-epub.js +0 -220
  123. package/dist/nodes/lib-epub.js.map +0 -1
  124. package/dist/nodes/lib-excel.d.ts +0 -74
  125. package/dist/nodes/lib-excel.d.ts.map +0 -1
  126. package/dist/nodes/lib-excel.js +0 -448
  127. package/dist/nodes/lib-excel.js.map +0 -1
  128. package/dist/nodes/lib-graphql.d.ts +0 -66
  129. package/dist/nodes/lib-graphql.d.ts.map +0 -1
  130. package/dist/nodes/lib-graphql.js +0 -333
  131. package/dist/nodes/lib-graphql.js.map +0 -1
  132. package/dist/nodes/lib-grid.d.ts +0 -27
  133. package/dist/nodes/lib-grid.d.ts.map +0 -1
  134. package/dist/nodes/lib-grid.js +0 -172
  135. package/dist/nodes/lib-grid.js.map +0 -1
  136. package/dist/nodes/lib-html-parse.d.ts +0 -108
  137. package/dist/nodes/lib-html-parse.d.ts.map +0 -1
  138. package/dist/nodes/lib-html-parse.js +0 -365
  139. package/dist/nodes/lib-html-parse.js.map +0 -1
  140. package/dist/nodes/lib-http.d.ts +0 -98
  141. package/dist/nodes/lib-http.d.ts.map +0 -1
  142. package/dist/nodes/lib-http.js +0 -267
  143. package/dist/nodes/lib-http.js.map +0 -1
  144. package/dist/nodes/lib-image-color-grading.d.ts +0 -3
  145. package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
  146. package/dist/nodes/lib-image-color-grading.js +0 -1386
  147. package/dist/nodes/lib-image-color-grading.js.map +0 -1
  148. package/dist/nodes/lib-image-draw.d.ts +0 -3
  149. package/dist/nodes/lib-image-draw.d.ts.map +0 -1
  150. package/dist/nodes/lib-image-draw.js +0 -470
  151. package/dist/nodes/lib-image-draw.js.map +0 -1
  152. package/dist/nodes/lib-image-enhance.d.ts +0 -3
  153. package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
  154. package/dist/nodes/lib-image-enhance.js +0 -731
  155. package/dist/nodes/lib-image-enhance.js.map +0 -1
  156. package/dist/nodes/lib-image-filter.d.ts +0 -3
  157. package/dist/nodes/lib-image-filter.d.ts.map +0 -1
  158. package/dist/nodes/lib-image-filter.js +0 -684
  159. package/dist/nodes/lib-image-filter.js.map +0 -1
  160. package/dist/nodes/lib-image-utils.d.ts +0 -24
  161. package/dist/nodes/lib-image-utils.d.ts.map +0 -1
  162. package/dist/nodes/lib-image-utils.js +0 -150
  163. package/dist/nodes/lib-image-utils.js.map +0 -1
  164. package/dist/nodes/lib-mail.d.ts +0 -74
  165. package/dist/nodes/lib-mail.d.ts.map +0 -1
  166. package/dist/nodes/lib-mail.js +0 -452
  167. package/dist/nodes/lib-mail.js.map +0 -1
  168. package/dist/nodes/lib-markdown.d.ts +0 -70
  169. package/dist/nodes/lib-markdown.d.ts.map +0 -1
  170. package/dist/nodes/lib-markdown.js +0 -236
  171. package/dist/nodes/lib-markdown.js.map +0 -1
  172. package/dist/nodes/lib-nlp.d.ts +0 -98
  173. package/dist/nodes/lib-nlp.d.ts.map +0 -1
  174. package/dist/nodes/lib-nlp.js +0 -374
  175. package/dist/nodes/lib-nlp.js.map +0 -1
  176. package/dist/nodes/lib-notion.d.ts +0 -99
  177. package/dist/nodes/lib-notion.d.ts.map +0 -1
  178. package/dist/nodes/lib-notion.js +0 -601
  179. package/dist/nodes/lib-notion.js.map +0 -1
  180. package/dist/nodes/lib-ocr.d.ts +0 -31
  181. package/dist/nodes/lib-ocr.d.ts.map +0 -1
  182. package/dist/nodes/lib-ocr.js +0 -143
  183. package/dist/nodes/lib-ocr.js.map +0 -1
  184. package/dist/nodes/lib-os.d.ts +0 -312
  185. package/dist/nodes/lib-os.d.ts.map +0 -1
  186. package/dist/nodes/lib-os.js +0 -909
  187. package/dist/nodes/lib-os.js.map +0 -1
  188. package/dist/nodes/lib-pdf.d.ts +0 -142
  189. package/dist/nodes/lib-pdf.d.ts.map +0 -1
  190. package/dist/nodes/lib-pdf.js +0 -871
  191. package/dist/nodes/lib-pdf.js.map +0 -1
  192. package/dist/nodes/lib-pptx.d.ts +0 -29
  193. package/dist/nodes/lib-pptx.d.ts.map +0 -1
  194. package/dist/nodes/lib-pptx.js +0 -122
  195. package/dist/nodes/lib-pptx.js.map +0 -1
  196. package/dist/nodes/lib-rss.d.ts +0 -31
  197. package/dist/nodes/lib-rss.d.ts.map +0 -1
  198. package/dist/nodes/lib-rss.js +0 -163
  199. package/dist/nodes/lib-rss.js.map +0 -1
  200. package/dist/nodes/lib-s3.d.ts +0 -112
  201. package/dist/nodes/lib-s3.d.ts.map +0 -1
  202. package/dist/nodes/lib-s3.js +0 -521
  203. package/dist/nodes/lib-s3.js.map +0 -1
  204. package/dist/nodes/lib-secret.d.ts +0 -15
  205. package/dist/nodes/lib-secret.d.ts.map +0 -1
  206. package/dist/nodes/lib-secret.js +0 -42
  207. package/dist/nodes/lib-secret.js.map +0 -1
  208. package/dist/nodes/lib-sqlite.d.ts +0 -102
  209. package/dist/nodes/lib-sqlite.d.ts.map +0 -1
  210. package/dist/nodes/lib-sqlite.js +0 -532
  211. package/dist/nodes/lib-sqlite.js.map +0 -1
  212. package/dist/nodes/lib-supabase.d.ts +0 -86
  213. package/dist/nodes/lib-supabase.d.ts.map +0 -1
  214. package/dist/nodes/lib-supabase.js +0 -425
  215. package/dist/nodes/lib-supabase.js.map +0 -1
  216. package/dist/nodes/lib-svg.d.ts +0 -199
  217. package/dist/nodes/lib-svg.d.ts.map +0 -1
  218. package/dist/nodes/lib-svg.js +0 -1027
  219. package/dist/nodes/lib-svg.js.map +0 -1
  220. package/dist/nodes/lib-tensorflow.d.ts +0 -71
  221. package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
  222. package/dist/nodes/lib-tensorflow.js +0 -351
  223. package/dist/nodes/lib-tensorflow.js.map +0 -1
  224. package/dist/nodes/lib-twilio.d.ts +0 -71
  225. package/dist/nodes/lib-twilio.d.ts.map +0 -1
  226. package/dist/nodes/lib-twilio.js +0 -469
  227. package/dist/nodes/lib-twilio.js.map +0 -1
  228. package/dist/nodes/lib-validate.d.ts +0 -84
  229. package/dist/nodes/lib-validate.d.ts.map +0 -1
  230. package/dist/nodes/lib-validate.js +0 -215
  231. package/dist/nodes/lib-validate.js.map +0 -1
  232. package/dist/nodes/lib-video-download.d.ts +0 -26
  233. package/dist/nodes/lib-video-download.d.ts.map +0 -1
  234. package/dist/nodes/lib-video-download.js +0 -299
  235. package/dist/nodes/lib-video-download.js.map +0 -1
  236. package/dist/nodes/messaging.d.ts +0 -88
  237. package/dist/nodes/messaging.d.ts.map +0 -1
  238. package/dist/nodes/messaging.js +0 -418
  239. package/dist/nodes/messaging.js.map +0 -1
  240. package/dist/nodes/mistral.d.ts +0 -83
  241. package/dist/nodes/mistral.d.ts.map +0 -1
  242. package/dist/nodes/mistral.js +0 -450
  243. package/dist/nodes/mistral.js.map +0 -1
  244. package/dist/nodes/model3d/analysis.d.ts +0 -13
  245. package/dist/nodes/model3d/analysis.d.ts.map +0 -1
  246. package/dist/nodes/model3d/analysis.js +0 -36
  247. package/dist/nodes/model3d/analysis.js.map +0 -1
  248. package/dist/nodes/model3d/base.d.ts +0 -11
  249. package/dist/nodes/model3d/base.d.ts.map +0 -1
  250. package/dist/nodes/model3d/base.js +0 -20
  251. package/dist/nodes/model3d/base.js.map +0 -1
  252. package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
  253. package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
  254. package/dist/nodes/model3d/boolean-ops.js +0 -172
  255. package/dist/nodes/model3d/boolean-ops.js.map +0 -1
  256. package/dist/nodes/model3d/cleanup.d.ts +0 -47
  257. package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
  258. package/dist/nodes/model3d/cleanup.js +0 -136
  259. package/dist/nodes/model3d/cleanup.js.map +0 -1
  260. package/dist/nodes/model3d/convert.d.ts +0 -14
  261. package/dist/nodes/model3d/convert.d.ts.map +0 -1
  262. package/dist/nodes/model3d/convert.js +0 -64
  263. package/dist/nodes/model3d/convert.js.map +0 -1
  264. package/dist/nodes/model3d/defaults.d.ts +0 -34
  265. package/dist/nodes/model3d/defaults.d.ts.map +0 -1
  266. package/dist/nodes/model3d/defaults.js +0 -28
  267. package/dist/nodes/model3d/defaults.js.map +0 -1
  268. package/dist/nodes/model3d/document-ops.d.ts +0 -4
  269. package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
  270. package/dist/nodes/model3d/document-ops.js +0 -40
  271. package/dist/nodes/model3d/document-ops.js.map +0 -1
  272. package/dist/nodes/model3d/generation.d.ts +0 -39
  273. package/dist/nodes/model3d/generation.d.ts.map +0 -1
  274. package/dist/nodes/model3d/generation.js +0 -179
  275. package/dist/nodes/model3d/generation.js.map +0 -1
  276. package/dist/nodes/model3d/glb.d.ts +0 -29
  277. package/dist/nodes/model3d/glb.d.ts.map +0 -1
  278. package/dist/nodes/model3d/glb.js +0 -255
  279. package/dist/nodes/model3d/glb.js.map +0 -1
  280. package/dist/nodes/model3d/index.d.ts +0 -20
  281. package/dist/nodes/model3d/index.d.ts.map +0 -1
  282. package/dist/nodes/model3d/index.js +0 -38
  283. package/dist/nodes/model3d/index.js.map +0 -1
  284. package/dist/nodes/model3d/io.d.ts +0 -38
  285. package/dist/nodes/model3d/io.d.ts.map +0 -1
  286. package/dist/nodes/model3d/io.js +0 -162
  287. package/dist/nodes/model3d/io.js.map +0 -1
  288. package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
  289. package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
  290. package/dist/nodes/model3d/mesh-ops.js +0 -775
  291. package/dist/nodes/model3d/mesh-ops.js.map +0 -1
  292. package/dist/nodes/model3d/nodes.d.ts +0 -2
  293. package/dist/nodes/model3d/nodes.d.ts.map +0 -1
  294. package/dist/nodes/model3d/nodes.js +0 -2
  295. package/dist/nodes/model3d/nodes.js.map +0 -1
  296. package/dist/nodes/model3d/ops.d.ts +0 -37
  297. package/dist/nodes/model3d/ops.d.ts.map +0 -1
  298. package/dist/nodes/model3d/ops.js +0 -137
  299. package/dist/nodes/model3d/ops.js.map +0 -1
  300. package/dist/nodes/model3d/transforms.d.ts +0 -49
  301. package/dist/nodes/model3d/transforms.d.ts.map +0 -1
  302. package/dist/nodes/model3d/transforms.js +0 -142
  303. package/dist/nodes/model3d/transforms.js.map +0 -1
  304. package/dist/nodes/model3d/types.d.ts +0 -81
  305. package/dist/nodes/model3d/types.d.ts.map +0 -1
  306. package/dist/nodes/model3d/types.js +0 -2
  307. package/dist/nodes/model3d/types.js.map +0 -1
  308. package/dist/nodes/model3d/utils.d.ts +0 -34
  309. package/dist/nodes/model3d/utils.d.ts.map +0 -1
  310. package/dist/nodes/model3d/utils.js +0 -185
  311. package/dist/nodes/model3d/utils.js.map +0 -1
  312. package/dist/nodes/model3d.d.ts +0 -2
  313. package/dist/nodes/model3d.d.ts.map +0 -1
  314. package/dist/nodes/model3d.js +0 -2
  315. package/dist/nodes/model3d.js.map +0 -1
  316. package/dist/nodes/openai.d.ts +0 -172
  317. package/dist/nodes/openai.d.ts.map +0 -1
  318. package/dist/nodes/openai.js +0 -1294
  319. package/dist/nodes/openai.js.map +0 -1
  320. package/dist/nodes/output.d.ts +0 -29
  321. package/dist/nodes/output.d.ts.map +0 -1
  322. package/dist/nodes/output.js +0 -87
  323. package/dist/nodes/output.js.map +0 -1
  324. package/dist/nodes/sandbox.d.ts +0 -63
  325. package/dist/nodes/sandbox.d.ts.map +0 -1
  326. package/dist/nodes/sandbox.js +0 -633
  327. package/dist/nodes/sandbox.js.map +0 -1
  328. package/dist/nodes/search.d.ts +0 -117
  329. package/dist/nodes/search.d.ts.map +0 -1
  330. package/dist/nodes/search.js +0 -607
  331. package/dist/nodes/search.js.map +0 -1
  332. package/dist/nodes/team.d.ts +0 -74
  333. package/dist/nodes/team.d.ts.map +0 -1
  334. package/dist/nodes/team.js +0 -309
  335. package/dist/nodes/team.js.map +0 -1
  336. package/dist/nodes/text-extra.d.ts +0 -633
  337. package/dist/nodes/text-extra.d.ts.map +0 -1
  338. package/dist/nodes/text-extra.js +0 -2226
  339. package/dist/nodes/text-extra.js.map +0 -1
  340. package/dist/nodes/tool-agents.d.ts +0 -334
  341. package/dist/nodes/tool-agents.d.ts.map +0 -1
  342. package/dist/nodes/tool-agents.js +0 -1861
  343. package/dist/nodes/tool-agents.js.map +0 -1
  344. package/dist/nodes/triggers.d.ts +0 -107
  345. package/dist/nodes/triggers.d.ts.map +0 -1
  346. package/dist/nodes/triggers.js +0 -706
  347. package/dist/nodes/triggers.js.map +0 -1
  348. package/dist/nodes/vector.d.ts +0 -168
  349. package/dist/nodes/vector.d.ts.map +0 -1
  350. package/dist/nodes/vector.js +0 -1121
  351. package/dist/nodes/vector.js.map +0 -1
  352. package/dist/nodes/video.d.ts +0 -387
  353. package/dist/nodes/video.d.ts.map +0 -1
  354. package/dist/nodes/video.js +0 -2383
  355. package/dist/nodes/video.js.map +0 -1
  356. package/dist/nodes/workflow.d.ts +0 -24
  357. package/dist/nodes/workflow.d.ts.map +0 -1
  358. package/dist/nodes/workflow.js +0 -146
  359. package/dist/nodes/workflow.js.map +0 -1
  360. package/dist/nodes/workspace.d.ts +0 -203
  361. package/dist/nodes/workspace.d.ts.map +0 -1
  362. package/dist/nodes/workspace.js +0 -795
  363. 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