@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,692 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { BaseNode, prop } from "@nodetool-ai/node-sdk";
8
- const USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36";
9
- export class WebFetchLibNode extends BaseNode {
10
- static nodeType = "lib.browser.WebFetch";
11
- static title = "Web Fetch";
12
- static description = "Fetches HTML content from a URL and converts it to text.\n web, fetch, html, markdown, http\n\n Use cases:\n - Extract text content from web pages\n - Process web content for analysis\n - Save web content to files";
13
- static metadataOutputTypes = {
14
- output: "str"
15
- };
16
- static exposeAsTool = true;
17
- async process() {
18
- const url = String(this.url ?? "");
19
- const selector = String(this.selector ?? "body");
20
- if (!url)
21
- throw new Error("URL is required");
22
- const cheerio = await import("cheerio");
23
- const TurndownService = (await import("turndown")).default;
24
- const controller = new AbortController();
25
- const timeoutId = setTimeout(() => controller.abort(), 30000);
26
- let response;
27
- try {
28
- response = await fetch(url, {
29
- headers: { "User-Agent": USER_AGENT, Accept: "*/*" },
30
- signal: controller.signal
31
- });
32
- }
33
- finally {
34
- clearTimeout(timeoutId);
35
- }
36
- const responseText = await response.text();
37
- const contentType = String(response.headers.get("content-type") ?? "").toLowerCase();
38
- if (!contentType.includes("text/html") &&
39
- !contentType.includes("application/xhtml+xml")) {
40
- return { output: responseText };
41
- }
42
- const $ = cheerio.load(responseText);
43
- const elements = $(selector);
44
- if (elements.length === 0) {
45
- throw new Error(`No elements found matching selector: ${selector}`);
46
- }
47
- let html = "";
48
- elements.each((_i, el) => {
49
- html += $.html(el) ?? "";
50
- });
51
- const turndown = new TurndownService();
52
- const markdown = turndown.turndown(html);
53
- return { output: markdown };
54
- }
55
- }
56
- __decorate([
57
- prop({
58
- type: "str",
59
- default: "",
60
- title: "Url",
61
- description: "URL to fetch content from"
62
- })
63
- ], WebFetchLibNode.prototype, "url", void 0);
64
- __decorate([
65
- prop({
66
- type: "str",
67
- default: "body",
68
- title: "Selector",
69
- description: "CSS selector to extract specific elements"
70
- })
71
- ], WebFetchLibNode.prototype, "selector", void 0);
72
- export class DownloadFileLibNode extends BaseNode {
73
- static nodeType = "lib.browser.DownloadFile";
74
- static title = "Download File";
75
- static description = "Downloads a file from a URL and saves it to disk.\n download, file, web, save\n\n Use cases:\n - Download documents, images, or other files from the web\n - Save data for further processing\n - Retrieve file assets for analysis";
76
- static metadataOutputTypes = {
77
- output: "bytes"
78
- };
79
- static exposeAsTool = true;
80
- async process() {
81
- const url = String(this.url ?? "");
82
- if (!url)
83
- throw new Error("URL is required");
84
- const controller = new AbortController();
85
- const timeoutId = setTimeout(() => controller.abort(), 60000);
86
- let response;
87
- try {
88
- response = await fetch(url, {
89
- headers: { "User-Agent": USER_AGENT, Accept: "*/*" },
90
- signal: controller.signal
91
- });
92
- }
93
- finally {
94
- clearTimeout(timeoutId);
95
- }
96
- const data = Buffer.from(await response.arrayBuffer()).toString("base64");
97
- return { output: { __bytes__: data } };
98
- }
99
- }
100
- __decorate([
101
- prop({
102
- type: "str",
103
- default: "",
104
- title: "Url",
105
- description: "URL of the file to download"
106
- })
107
- ], DownloadFileLibNode.prototype, "url", void 0);
108
- export class BrowserLibNode extends BaseNode {
109
- static nodeType = "lib.browser.Browser";
110
- static title = "Browser";
111
- static description = "Fetches content from a web page using a headless browser.\n browser, web, scraping, content, fetch\n\n Use cases:\n - Extract content from JavaScript-heavy websites\n - Retrieve text content from web pages\n - Get metadata from web pages\n - Save extracted content to files";
112
- static metadataOutputTypes = {
113
- success: "bool",
114
- content: "str",
115
- metadata: "dict[str, any]"
116
- };
117
- static exposeAsTool = true;
118
- async process() {
119
- const url = String(this.url ?? "");
120
- const timeout = Number(this.timeout ?? 20000);
121
- if (!url)
122
- throw new Error("URL is required");
123
- const { chromium } = await import("playwright");
124
- const TurndownService = (await import("turndown")).default;
125
- const browser = await chromium.launch({ headless: true });
126
- try {
127
- const ctx = await browser.newContext({ bypassCSP: true });
128
- const page = await ctx.newPage();
129
- await page.goto(url, { waitUntil: "networkidle", timeout });
130
- const html = await page.content();
131
- const turndown = new TurndownService();
132
- const content = turndown.turndown(html);
133
- const title = await page.title();
134
- return {
135
- success: true,
136
- content,
137
- metadata: { title }
138
- };
139
- }
140
- finally {
141
- await browser.close();
142
- }
143
- }
144
- }
145
- __decorate([
146
- prop({
147
- type: "str",
148
- default: "",
149
- title: "Url",
150
- description: "URL to navigate to"
151
- })
152
- ], BrowserLibNode.prototype, "url", void 0);
153
- __decorate([
154
- prop({
155
- type: "int",
156
- default: 20000,
157
- title: "Timeout",
158
- description: "Timeout in milliseconds for page navigation"
159
- })
160
- ], BrowserLibNode.prototype, "timeout", void 0);
161
- export class ScreenshotLibNode extends BaseNode {
162
- static nodeType = "lib.browser.Screenshot";
163
- static title = "Screenshot";
164
- static description = "Takes a screenshot of a web page or specific element.\n browser, screenshot, capture, image\n\n Use cases:\n - Capture visual representation of web pages\n - Document specific UI elements\n - Create visual records of web content";
165
- static metadataOutputTypes = {
166
- output: "dict[str, any]"
167
- };
168
- static exposeAsTool = true;
169
- async process() {
170
- const url = String(this.url ?? "");
171
- const selector = String(this.selector ?? "");
172
- const timeout = Number(this.timeout ?? 30000);
173
- if (!url)
174
- throw new Error("URL is required");
175
- const { chromium } = await import("playwright");
176
- const browser = await chromium.launch({ headless: true });
177
- try {
178
- const ctx = await browser.newContext({ bypassCSP: true });
179
- const page = await ctx.newPage();
180
- await page.goto(url, { waitUntil: "domcontentloaded", timeout });
181
- let buffer;
182
- if (selector) {
183
- const el = await page.waitForSelector(selector, { timeout });
184
- if (!el)
185
- throw new Error(`No element found matching selector: ${selector}`);
186
- buffer = await el.screenshot();
187
- }
188
- else {
189
- buffer = await page.screenshot();
190
- }
191
- const data = buffer.toString("base64");
192
- return {
193
- success: true,
194
- output: { type: "image", data },
195
- url
196
- };
197
- }
198
- finally {
199
- await browser.close();
200
- }
201
- }
202
- }
203
- __decorate([
204
- prop({
205
- type: "str",
206
- default: "",
207
- title: "Url",
208
- description: "URL to navigate to before taking screenshot"
209
- })
210
- ], ScreenshotLibNode.prototype, "url", void 0);
211
- __decorate([
212
- prop({
213
- type: "str",
214
- default: "",
215
- title: "Selector",
216
- description: "Optional CSS selector for capturing a specific element"
217
- })
218
- ], ScreenshotLibNode.prototype, "selector", void 0);
219
- __decorate([
220
- prop({
221
- type: "str",
222
- default: "screenshot.png",
223
- title: "Output File",
224
- description: "Path to save the screenshot (relative to workspace)"
225
- })
226
- ], ScreenshotLibNode.prototype, "output_file", void 0);
227
- __decorate([
228
- prop({
229
- type: "int",
230
- default: 30000,
231
- title: "Timeout",
232
- description: "Timeout in milliseconds for page navigation"
233
- })
234
- ], ScreenshotLibNode.prototype, "timeout", void 0);
235
- export class BrowserNavigationLibNode extends BaseNode {
236
- static nodeType = "lib.browser.BrowserNavigation";
237
- static title = "Browser Navigation";
238
- static description = "Navigates and interacts with web pages in a browser session.\n browser, navigation, interaction, click, extract\n\n Use cases:\n - Perform complex web interactions\n - Navigate through multi-step web processes\n - Extract content after interaction";
239
- static metadataOutputTypes = {
240
- output: "dict[str, any]"
241
- };
242
- async process() {
243
- const url = String(this.url ?? "");
244
- const action = String(this.action ?? "goto");
245
- const selector = String(this.selector ?? "");
246
- const timeout = Number(this.timeout ?? 30000);
247
- const waitFor = String(this.wait_for ?? "");
248
- const extractType = String(this.extract_type ?? "text");
249
- const attribute = String(this.attribute ?? "");
250
- if (action === "goto" && !url)
251
- throw new Error("URL is required for goto action");
252
- const { chromium } = await import("playwright");
253
- const browser = await chromium.launch({ headless: true });
254
- try {
255
- const ctx = await browser.newContext({ bypassCSP: true });
256
- const page = await ctx.newPage();
257
- if (action === "goto") {
258
- await page.goto(url, { waitUntil: "domcontentloaded", timeout });
259
- }
260
- else if (action === "reload") {
261
- await page.goto(url, { waitUntil: "domcontentloaded", timeout });
262
- await page.reload({ waitUntil: "domcontentloaded", timeout });
263
- }
264
- else if (action === "click") {
265
- await page.goto(url, { waitUntil: "domcontentloaded", timeout });
266
- const el = await page.waitForSelector(selector, { timeout });
267
- if (!el)
268
- throw new Error(`Element not found: ${selector}`);
269
- await el.click();
270
- }
271
- else if (action === "extract") {
272
- await page.goto(url, { waitUntil: "domcontentloaded", timeout });
273
- }
274
- else if (action === "back") {
275
- await page.goBack({ timeout, waitUntil: "domcontentloaded" });
276
- }
277
- else if (action === "forward") {
278
- await page.goForward({ timeout, waitUntil: "domcontentloaded" });
279
- }
280
- if (waitFor) {
281
- await page.waitForSelector(waitFor, { timeout });
282
- }
283
- let extracted = null;
284
- if (action === "extract") {
285
- if (selector) {
286
- const el = await page.waitForSelector(selector, { timeout });
287
- if (!el)
288
- throw new Error(`Element not found: ${selector}`);
289
- if (extractType === "html") {
290
- extracted = await el.evaluate((e) => e.outerHTML);
291
- }
292
- else if (extractType === "value") {
293
- extracted = await el.evaluate((e) => e.value ?? "");
294
- }
295
- else if (extractType === "attribute") {
296
- extracted = await el.evaluate((e, a) => e.getAttribute(a), attribute);
297
- }
298
- else {
299
- extracted = await el.evaluate((e) => e.innerText ?? e.textContent ?? "");
300
- }
301
- }
302
- else {
303
- if (extractType === "html") {
304
- extracted = await page.content();
305
- }
306
- else {
307
- extracted = await page.evaluate(() => document.body ? document.body.innerText : "");
308
- }
309
- }
310
- }
311
- return { success: true, action, extracted };
312
- }
313
- finally {
314
- await browser.close();
315
- }
316
- }
317
- }
318
- __decorate([
319
- prop({
320
- type: "str",
321
- default: "",
322
- title: "Url",
323
- description: "URL to navigate to (required for 'goto' action)"
324
- })
325
- ], BrowserNavigationLibNode.prototype, "url", void 0);
326
- __decorate([
327
- prop({
328
- type: "enum",
329
- default: "goto",
330
- title: "Action",
331
- description: "Navigation or extraction action to perform",
332
- values: ["click", "goto", "back", "forward", "reload", "extract"]
333
- })
334
- ], BrowserNavigationLibNode.prototype, "action", void 0);
335
- __decorate([
336
- prop({
337
- type: "str",
338
- default: "",
339
- title: "Selector",
340
- description: "CSS selector for the element to interact with or extract from"
341
- })
342
- ], BrowserNavigationLibNode.prototype, "selector", void 0);
343
- __decorate([
344
- prop({
345
- type: "int",
346
- default: 30000,
347
- title: "Timeout",
348
- description: "Timeout in milliseconds for the action"
349
- })
350
- ], BrowserNavigationLibNode.prototype, "timeout", void 0);
351
- __decorate([
352
- prop({
353
- type: "str",
354
- default: "",
355
- title: "Wait For",
356
- description: "Optional selector to wait for after performing the action"
357
- })
358
- ], BrowserNavigationLibNode.prototype, "wait_for", void 0);
359
- __decorate([
360
- prop({
361
- type: "enum",
362
- default: "text",
363
- title: "Extract Type",
364
- description: "Type of content to extract (for 'extract' action)",
365
- values: ["text", "html", "value", "attribute"]
366
- })
367
- ], BrowserNavigationLibNode.prototype, "extract_type", void 0);
368
- __decorate([
369
- prop({
370
- type: "str",
371
- default: "",
372
- title: "Attribute",
373
- description: "Attribute name to extract (when extract_type is 'attribute')"
374
- })
375
- ], BrowserNavigationLibNode.prototype, "attribute", void 0);
376
- export class SpiderCrawlLibNode extends BaseNode {
377
- static nodeType = "lib.browser.SpiderCrawl";
378
- static title = "Spider Crawl";
379
- static description = "Crawls websites following links and emitting URLs with optional HTML content.\n spider, crawler, web scraping, links, sitemap\n\n Use cases:\n - Build sitemaps and discover website structure\n - Collect URLs for bulk processing\n - Find all pages on a website\n - Extract content from multiple pages\n - Feed agentic workflows with discovered pages\n - Analyze website content and structure";
380
- static metadataOutputTypes = {
381
- url: "str",
382
- depth: "int",
383
- html: "str",
384
- title: "str",
385
- status_code: "int",
386
- pages: "list"
387
- };
388
- static exposeAsTool = true;
389
- static isStreamingOutput = true;
390
- async process() {
391
- const allPages = [];
392
- for await (const page of this._crawlPages()) {
393
- allPages.push(page);
394
- }
395
- const first = allPages[0] ?? {
396
- url: "",
397
- depth: 0,
398
- html: null,
399
- title: null,
400
- status_code: 0
401
- };
402
- return {
403
- url: first.url,
404
- depth: first.depth,
405
- html: first.html,
406
- title: first.title,
407
- status_code: first.status_code,
408
- pages: allPages
409
- };
410
- }
411
- async *_crawlPages() {
412
- const startUrl = String(this.start_url ?? "");
413
- const maxDepth = Number(this.max_depth ?? 2);
414
- const maxPages = Number(this.max_pages ?? 50);
415
- const sameDomainOnly = Boolean(this.same_domain_only ?? true);
416
- const includeHtml = Boolean(this.include_html ?? false);
417
- const respectRobotsTxt = Boolean(this.respect_robots_txt ?? true);
418
- const delayMs = Number(this.delay_ms ?? 1000);
419
- const timeout = Number(this.timeout ?? 30000);
420
- const urlPattern = String(this.url_pattern ?? "");
421
- const excludePattern = String(this.exclude_pattern ?? "");
422
- if (!startUrl)
423
- throw new Error("start_url is required");
424
- const cheerio = await import("cheerio");
425
- const startParsed = new URL(startUrl);
426
- const startDomain = `${startParsed.protocol}//${startParsed.host}`;
427
- const urlPatternRe = urlPattern ? new RegExp(urlPattern) : null;
428
- const excludePatternRe = excludePattern ? new RegExp(excludePattern) : null;
429
- // robots.txt cache and parser
430
- const robotsCache = new Map(); // origin -> disallowed paths
431
- const fetchRobotsTxt = async (origin) => {
432
- if (robotsCache.has(origin))
433
- return robotsCache.get(origin);
434
- const disallowed = [];
435
- try {
436
- const robotsController = new AbortController();
437
- const robotsTimeoutId = setTimeout(() => robotsController.abort(), 10000);
438
- let res;
439
- try {
440
- res = await fetch(`${origin}/robots.txt`, {
441
- headers: { "User-Agent": USER_AGENT },
442
- signal: robotsController.signal
443
- });
444
- }
445
- finally {
446
- clearTimeout(robotsTimeoutId);
447
- }
448
- const resText = await res.text();
449
- if (res.ok && typeof resText === "string") {
450
- // Parse robots.txt — look for User-agent: * sections
451
- const lines = resText.split("\n");
452
- let inWildcard = false;
453
- for (const rawLine of lines) {
454
- const line = rawLine.trim();
455
- if (/^user-agent\s*:/i.test(line)) {
456
- const agent = line.replace(/^user-agent\s*:\s*/i, "").trim();
457
- inWildcard = agent === "*";
458
- }
459
- else if (inWildcard && /^disallow\s*:/i.test(line)) {
460
- const path = line.replace(/^disallow\s*:\s*/i, "").trim();
461
- if (path)
462
- disallowed.push(path);
463
- }
464
- }
465
- }
466
- }
467
- catch {
468
- // robots.txt not available — allow all
469
- }
470
- robotsCache.set(origin, disallowed);
471
- return disallowed;
472
- };
473
- const isAllowedByRobots = async (urlStr) => {
474
- if (!respectRobotsTxt)
475
- return true;
476
- try {
477
- const parsed = new URL(urlStr);
478
- const origin = `${parsed.protocol}//${parsed.host}`;
479
- const disallowed = await fetchRobotsTxt(origin);
480
- const path = parsed.pathname;
481
- for (const rule of disallowed) {
482
- // Handle wildcard rules with trailing *
483
- if (rule.endsWith("*")) {
484
- if (path.startsWith(rule.slice(0, -1)))
485
- return false;
486
- }
487
- else if (path.startsWith(rule)) {
488
- return false;
489
- }
490
- }
491
- return true;
492
- }
493
- catch {
494
- return true;
495
- }
496
- };
497
- const visited = new Set();
498
- const toVisit = [
499
- { url: startUrl, depth: 0 }
500
- ];
501
- let pagesCrawled = 0;
502
- while (toVisit.length > 0 && pagesCrawled < maxPages) {
503
- const item = toVisit.shift();
504
- const { url: currentUrl, depth } = item;
505
- if (visited.has(currentUrl))
506
- continue;
507
- if (depth > maxDepth)
508
- continue;
509
- if (urlPatternRe && !urlPatternRe.test(currentUrl))
510
- continue;
511
- if (excludePatternRe && excludePatternRe.test(currentUrl))
512
- continue;
513
- // Check robots.txt before crawling
514
- if (!(await isAllowedByRobots(currentUrl))) {
515
- visited.add(currentUrl);
516
- continue;
517
- }
518
- visited.add(currentUrl);
519
- try {
520
- const crawlController = new AbortController();
521
- const crawlTimeoutId = setTimeout(() => crawlController.abort(), timeout);
522
- let response;
523
- try {
524
- response = await fetch(currentUrl, {
525
- headers: { "User-Agent": USER_AGENT },
526
- signal: crawlController.signal
527
- });
528
- }
529
- finally {
530
- clearTimeout(crawlTimeoutId);
531
- }
532
- const statusCode = response.status;
533
- const htmlContent = await response.text();
534
- const $ = cheerio.load(htmlContent);
535
- const title = $("title").text() || null;
536
- yield {
537
- url: currentUrl,
538
- depth,
539
- html: includeHtml ? htmlContent : null,
540
- title,
541
- status_code: statusCode
542
- };
543
- pagesCrawled++;
544
- if (depth < maxDepth) {
545
- $("a[href]").each((_i, el) => {
546
- try {
547
- const href = $(el).attr("href") ?? "";
548
- if (!href ||
549
- href.startsWith("javascript:") ||
550
- href.startsWith("mailto:") ||
551
- href.startsWith("tel:"))
552
- return;
553
- const resolved = new URL(href, currentUrl).href.split("#")[0];
554
- if (visited.has(resolved))
555
- return;
556
- if (sameDomainOnly) {
557
- const linkParsed = new URL(resolved);
558
- const linkDomain = `${linkParsed.protocol}//${linkParsed.host}`;
559
- if (linkDomain !== startDomain)
560
- return;
561
- }
562
- if (!toVisit.some((v) => v.url === resolved)) {
563
- toVisit.push({ url: resolved, depth: depth + 1 });
564
- }
565
- }
566
- catch {
567
- // invalid URL, skip
568
- }
569
- });
570
- }
571
- if (delayMs > 0 && toVisit.length > 0) {
572
- await new Promise((r) => setTimeout(r, delayMs));
573
- }
574
- }
575
- catch {
576
- yield {
577
- url: currentUrl,
578
- depth,
579
- html: null,
580
- title: null,
581
- status_code: 0
582
- };
583
- }
584
- }
585
- }
586
- async *genProcess() {
587
- const allPages = [];
588
- for await (const page of this._crawlPages()) {
589
- allPages.push(page);
590
- yield page;
591
- }
592
- // Emit collected list as final output
593
- yield { pages: allPages };
594
- }
595
- }
596
- __decorate([
597
- prop({
598
- type: "str",
599
- default: "",
600
- title: "Start Url",
601
- description: "The starting URL to begin crawling from"
602
- })
603
- ], SpiderCrawlLibNode.prototype, "start_url", void 0);
604
- __decorate([
605
- prop({
606
- type: "int",
607
- default: 2,
608
- title: "Max Depth",
609
- description: "Maximum depth to crawl (0 = start page only, 1 = start + linked pages, etc.)",
610
- min: 0,
611
- max: 10
612
- })
613
- ], SpiderCrawlLibNode.prototype, "max_depth", void 0);
614
- __decorate([
615
- prop({
616
- type: "int",
617
- default: 50,
618
- title: "Max Pages",
619
- description: "Maximum number of pages to crawl (safety limit)",
620
- min: 1,
621
- max: 1000
622
- })
623
- ], SpiderCrawlLibNode.prototype, "max_pages", void 0);
624
- __decorate([
625
- prop({
626
- type: "bool",
627
- default: true,
628
- title: "Same Domain Only",
629
- description: "Only follow links within the same domain as the start URL"
630
- })
631
- ], SpiderCrawlLibNode.prototype, "same_domain_only", void 0);
632
- __decorate([
633
- prop({
634
- type: "bool",
635
- default: false,
636
- title: "Include Html",
637
- description: "Include the HTML content of each page in the output (increases bandwidth)"
638
- })
639
- ], SpiderCrawlLibNode.prototype, "include_html", void 0);
640
- __decorate([
641
- prop({
642
- type: "bool",
643
- default: true,
644
- title: "Respect Robots Txt",
645
- description: "Respect robots.txt rules (follows web crawler best practices)"
646
- })
647
- ], SpiderCrawlLibNode.prototype, "respect_robots_txt", void 0);
648
- __decorate([
649
- prop({
650
- type: "int",
651
- default: 1000,
652
- title: "Delay Ms",
653
- description: "Delay in milliseconds between requests (politeness policy)",
654
- min: 0,
655
- max: 10000
656
- })
657
- ], SpiderCrawlLibNode.prototype, "delay_ms", void 0);
658
- __decorate([
659
- prop({
660
- type: "int",
661
- default: 30000,
662
- title: "Timeout",
663
- description: "Timeout in milliseconds for each page load",
664
- min: 1000,
665
- max: 120000
666
- })
667
- ], SpiderCrawlLibNode.prototype, "timeout", void 0);
668
- __decorate([
669
- prop({
670
- type: "str",
671
- default: "",
672
- title: "Url Pattern",
673
- description: "Optional regex pattern to filter URLs (only crawl matching URLs)"
674
- })
675
- ], SpiderCrawlLibNode.prototype, "url_pattern", void 0);
676
- __decorate([
677
- prop({
678
- type: "str",
679
- default: "",
680
- title: "Exclude Pattern",
681
- description: "Optional regex pattern to exclude URLs (skip matching URLs)"
682
- })
683
- ], SpiderCrawlLibNode.prototype, "exclude_pattern", void 0);
684
- export const LIB_BROWSER_NODES = [
685
- WebFetchLibNode,
686
- DownloadFileLibNode,
687
- BrowserLibNode,
688
- ScreenshotLibNode,
689
- BrowserNavigationLibNode,
690
- SpiderCrawlLibNode
691
- ];
692
- //# sourceMappingURL=lib-browser.js.map