@nodetool-ai/base-nodes 0.7.0-rc.22 → 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.
- package/README.md +21 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/index.d.ts +61 -67
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +179 -173
- package/dist/index.js.map +1 -1
- package/dist/platforms/browser.d.ts +19 -0
- package/dist/platforms/browser.d.ts.map +1 -0
- package/dist/platforms/browser.js +29 -0
- package/dist/platforms/browser.js.map +1 -0
- package/package.json +53 -65
- package/dist/lib/audio-wav.d.ts +0 -66
- package/dist/lib/audio-wav.d.ts.map +0 -1
- package/dist/lib/audio-wav.js +0 -215
- package/dist/lib/audio-wav.js.map +0 -1
- package/dist/nodes/agent-tool-hydration.d.ts +0 -10
- package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
- package/dist/nodes/agent-tool-hydration.js +0 -43
- package/dist/nodes/agent-tool-hydration.js.map +0 -1
- package/dist/nodes/agents.d.ts +0 -262
- package/dist/nodes/agents.d.ts.map +0 -1
- package/dist/nodes/agents.js +0 -2856
- package/dist/nodes/agents.js.map +0 -1
- package/dist/nodes/anthropic.d.ts +0 -26
- package/dist/nodes/anthropic.d.ts.map +0 -1
- package/dist/nodes/anthropic.js +0 -133
- package/dist/nodes/anthropic.js.map +0 -1
- package/dist/nodes/apify.d.ts +0 -120
- package/dist/nodes/apify.d.ts.map +0 -1
- package/dist/nodes/apify.js +0 -618
- package/dist/nodes/apify.js.map +0 -1
- package/dist/nodes/audio.d.ts +0 -301
- package/dist/nodes/audio.d.ts.map +0 -1
- package/dist/nodes/audio.js +0 -1274
- package/dist/nodes/audio.js.map +0 -1
- package/dist/nodes/code-node.d.ts +0 -34
- package/dist/nodes/code-node.d.ts.map +0 -1
- package/dist/nodes/code-node.js +0 -343
- package/dist/nodes/code-node.js.map +0 -1
- package/dist/nodes/code.d.ts +0 -301
- package/dist/nodes/code.d.ts.map +0 -1
- package/dist/nodes/code.js +0 -850
- package/dist/nodes/code.js.map +0 -1
- package/dist/nodes/compare.d.ts +0 -18
- package/dist/nodes/compare.d.ts.map +0 -1
- package/dist/nodes/compare.js +0 -122
- package/dist/nodes/compare.js.map +0 -1
- package/dist/nodes/constant.d.ts +0 -315
- package/dist/nodes/constant.d.ts.map +0 -1
- package/dist/nodes/constant.js +0 -715
- package/dist/nodes/constant.js.map +0 -1
- package/dist/nodes/control.d.ts +0 -83
- package/dist/nodes/control.d.ts.map +0 -1
- package/dist/nodes/control.js +0 -212
- package/dist/nodes/control.js.map +0 -1
- package/dist/nodes/data.d.ts +0 -369
- package/dist/nodes/data.d.ts.map +0 -1
- package/dist/nodes/data.js +0 -1590
- package/dist/nodes/data.js.map +0 -1
- package/dist/nodes/document.d.ts +0 -134
- package/dist/nodes/document.d.ts.map +0 -1
- package/dist/nodes/document.js +0 -984
- package/dist/nodes/document.js.map +0 -1
- package/dist/nodes/extended-placeholders.d.ts +0 -6
- package/dist/nodes/extended-placeholders.d.ts.map +0 -1
- package/dist/nodes/extended-placeholders.js +0 -19
- package/dist/nodes/extended-placeholders.js.map +0 -1
- package/dist/nodes/gemini.d.ts +0 -110
- package/dist/nodes/gemini.d.ts.map +0 -1
- package/dist/nodes/gemini.js +0 -871
- package/dist/nodes/gemini.js.map +0 -1
- package/dist/nodes/generators.d.ts +0 -84
- package/dist/nodes/generators.d.ts.map +0 -1
- package/dist/nodes/generators.js +0 -968
- package/dist/nodes/generators.js.map +0 -1
- package/dist/nodes/image.d.ts +0 -232
- package/dist/nodes/image.d.ts.map +0 -1
- package/dist/nodes/image.js +0 -1395
- package/dist/nodes/image.js.map +0 -1
- package/dist/nodes/input.d.ts +0 -445
- package/dist/nodes/input.d.ts.map +0 -1
- package/dist/nodes/input.js +0 -1459
- package/dist/nodes/input.js.map +0 -1
- package/dist/nodes/kie-dynamic.d.ts +0 -31
- package/dist/nodes/kie-dynamic.d.ts.map +0 -1
- package/dist/nodes/kie-dynamic.js +0 -270
- package/dist/nodes/kie-dynamic.js.map +0 -1
- package/dist/nodes/lib-audio-dsp.d.ts +0 -85
- package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
- package/dist/nodes/lib-audio-dsp.js +0 -450
- package/dist/nodes/lib-audio-dsp.js.map +0 -1
- package/dist/nodes/lib-audio-effects.d.ts +0 -116
- package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
- package/dist/nodes/lib-audio-effects.js +0 -905
- package/dist/nodes/lib-audio-effects.js.map +0 -1
- package/dist/nodes/lib-browser.d.ts +0 -99
- package/dist/nodes/lib-browser.d.ts.map +0 -1
- package/dist/nodes/lib-browser.js +0 -692
- package/dist/nodes/lib-browser.js.map +0 -1
- package/dist/nodes/lib-charts.d.ts +0 -20
- package/dist/nodes/lib-charts.d.ts.map +0 -1
- package/dist/nodes/lib-charts.js +0 -245
- package/dist/nodes/lib-charts.js.map +0 -1
- package/dist/nodes/lib-datetime.d.ts +0 -108
- package/dist/nodes/lib-datetime.d.ts.map +0 -1
- package/dist/nodes/lib-datetime.js +0 -421
- package/dist/nodes/lib-datetime.js.map +0 -1
- package/dist/nodes/lib-doc-convert.d.ts +0 -19
- package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
- package/dist/nodes/lib-doc-convert.js +0 -257
- package/dist/nodes/lib-doc-convert.js.map +0 -1
- package/dist/nodes/lib-doc-transform.d.ts +0 -39
- package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
- package/dist/nodes/lib-doc-transform.js +0 -335
- package/dist/nodes/lib-doc-transform.js.map +0 -1
- package/dist/nodes/lib-docx.d.ts +0 -106
- package/dist/nodes/lib-docx.d.ts.map +0 -1
- package/dist/nodes/lib-docx.js +0 -595
- package/dist/nodes/lib-docx.js.map +0 -1
- package/dist/nodes/lib-epub.d.ts +0 -55
- package/dist/nodes/lib-epub.d.ts.map +0 -1
- package/dist/nodes/lib-epub.js +0 -220
- package/dist/nodes/lib-epub.js.map +0 -1
- package/dist/nodes/lib-excel.d.ts +0 -74
- package/dist/nodes/lib-excel.d.ts.map +0 -1
- package/dist/nodes/lib-excel.js +0 -448
- package/dist/nodes/lib-excel.js.map +0 -1
- package/dist/nodes/lib-graphql.d.ts +0 -66
- package/dist/nodes/lib-graphql.d.ts.map +0 -1
- package/dist/nodes/lib-graphql.js +0 -333
- package/dist/nodes/lib-graphql.js.map +0 -1
- package/dist/nodes/lib-grid.d.ts +0 -27
- package/dist/nodes/lib-grid.d.ts.map +0 -1
- package/dist/nodes/lib-grid.js +0 -172
- package/dist/nodes/lib-grid.js.map +0 -1
- package/dist/nodes/lib-html-parse.d.ts +0 -108
- package/dist/nodes/lib-html-parse.d.ts.map +0 -1
- package/dist/nodes/lib-html-parse.js +0 -365
- package/dist/nodes/lib-html-parse.js.map +0 -1
- package/dist/nodes/lib-http.d.ts +0 -98
- package/dist/nodes/lib-http.d.ts.map +0 -1
- package/dist/nodes/lib-http.js +0 -267
- package/dist/nodes/lib-http.js.map +0 -1
- package/dist/nodes/lib-image-color-grading.d.ts +0 -3
- package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
- package/dist/nodes/lib-image-color-grading.js +0 -1386
- package/dist/nodes/lib-image-color-grading.js.map +0 -1
- package/dist/nodes/lib-image-draw.d.ts +0 -3
- package/dist/nodes/lib-image-draw.d.ts.map +0 -1
- package/dist/nodes/lib-image-draw.js +0 -470
- package/dist/nodes/lib-image-draw.js.map +0 -1
- package/dist/nodes/lib-image-enhance.d.ts +0 -3
- package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
- package/dist/nodes/lib-image-enhance.js +0 -731
- package/dist/nodes/lib-image-enhance.js.map +0 -1
- package/dist/nodes/lib-image-filter.d.ts +0 -3
- package/dist/nodes/lib-image-filter.d.ts.map +0 -1
- package/dist/nodes/lib-image-filter.js +0 -684
- package/dist/nodes/lib-image-filter.js.map +0 -1
- package/dist/nodes/lib-image-utils.d.ts +0 -24
- package/dist/nodes/lib-image-utils.d.ts.map +0 -1
- package/dist/nodes/lib-image-utils.js +0 -150
- package/dist/nodes/lib-image-utils.js.map +0 -1
- package/dist/nodes/lib-mail.d.ts +0 -74
- package/dist/nodes/lib-mail.d.ts.map +0 -1
- package/dist/nodes/lib-mail.js +0 -452
- package/dist/nodes/lib-mail.js.map +0 -1
- package/dist/nodes/lib-markdown.d.ts +0 -70
- package/dist/nodes/lib-markdown.d.ts.map +0 -1
- package/dist/nodes/lib-markdown.js +0 -236
- package/dist/nodes/lib-markdown.js.map +0 -1
- package/dist/nodes/lib-nlp.d.ts +0 -98
- package/dist/nodes/lib-nlp.d.ts.map +0 -1
- package/dist/nodes/lib-nlp.js +0 -374
- package/dist/nodes/lib-nlp.js.map +0 -1
- package/dist/nodes/lib-notion.d.ts +0 -99
- package/dist/nodes/lib-notion.d.ts.map +0 -1
- package/dist/nodes/lib-notion.js +0 -601
- package/dist/nodes/lib-notion.js.map +0 -1
- package/dist/nodes/lib-ocr.d.ts +0 -31
- package/dist/nodes/lib-ocr.d.ts.map +0 -1
- package/dist/nodes/lib-ocr.js +0 -143
- package/dist/nodes/lib-ocr.js.map +0 -1
- package/dist/nodes/lib-os.d.ts +0 -312
- package/dist/nodes/lib-os.d.ts.map +0 -1
- package/dist/nodes/lib-os.js +0 -909
- package/dist/nodes/lib-os.js.map +0 -1
- package/dist/nodes/lib-pdf.d.ts +0 -142
- package/dist/nodes/lib-pdf.d.ts.map +0 -1
- package/dist/nodes/lib-pdf.js +0 -871
- package/dist/nodes/lib-pdf.js.map +0 -1
- package/dist/nodes/lib-pptx.d.ts +0 -29
- package/dist/nodes/lib-pptx.d.ts.map +0 -1
- package/dist/nodes/lib-pptx.js +0 -122
- package/dist/nodes/lib-pptx.js.map +0 -1
- package/dist/nodes/lib-rss.d.ts +0 -31
- package/dist/nodes/lib-rss.d.ts.map +0 -1
- package/dist/nodes/lib-rss.js +0 -163
- package/dist/nodes/lib-rss.js.map +0 -1
- package/dist/nodes/lib-s3.d.ts +0 -112
- package/dist/nodes/lib-s3.d.ts.map +0 -1
- package/dist/nodes/lib-s3.js +0 -521
- package/dist/nodes/lib-s3.js.map +0 -1
- package/dist/nodes/lib-secret.d.ts +0 -15
- package/dist/nodes/lib-secret.d.ts.map +0 -1
- package/dist/nodes/lib-secret.js +0 -42
- package/dist/nodes/lib-secret.js.map +0 -1
- package/dist/nodes/lib-sqlite.d.ts +0 -102
- package/dist/nodes/lib-sqlite.d.ts.map +0 -1
- package/dist/nodes/lib-sqlite.js +0 -532
- package/dist/nodes/lib-sqlite.js.map +0 -1
- package/dist/nodes/lib-supabase.d.ts +0 -86
- package/dist/nodes/lib-supabase.d.ts.map +0 -1
- package/dist/nodes/lib-supabase.js +0 -425
- package/dist/nodes/lib-supabase.js.map +0 -1
- package/dist/nodes/lib-svg.d.ts +0 -199
- package/dist/nodes/lib-svg.d.ts.map +0 -1
- package/dist/nodes/lib-svg.js +0 -1027
- package/dist/nodes/lib-svg.js.map +0 -1
- package/dist/nodes/lib-tensorflow.d.ts +0 -71
- package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
- package/dist/nodes/lib-tensorflow.js +0 -351
- package/dist/nodes/lib-tensorflow.js.map +0 -1
- package/dist/nodes/lib-twilio.d.ts +0 -71
- package/dist/nodes/lib-twilio.d.ts.map +0 -1
- package/dist/nodes/lib-twilio.js +0 -469
- package/dist/nodes/lib-twilio.js.map +0 -1
- package/dist/nodes/lib-validate.d.ts +0 -84
- package/dist/nodes/lib-validate.d.ts.map +0 -1
- package/dist/nodes/lib-validate.js +0 -215
- package/dist/nodes/lib-validate.js.map +0 -1
- package/dist/nodes/lib-video-download.d.ts +0 -26
- package/dist/nodes/lib-video-download.d.ts.map +0 -1
- package/dist/nodes/lib-video-download.js +0 -299
- package/dist/nodes/lib-video-download.js.map +0 -1
- package/dist/nodes/messaging.d.ts +0 -88
- package/dist/nodes/messaging.d.ts.map +0 -1
- package/dist/nodes/messaging.js +0 -418
- package/dist/nodes/messaging.js.map +0 -1
- package/dist/nodes/mistral.d.ts +0 -83
- package/dist/nodes/mistral.d.ts.map +0 -1
- package/dist/nodes/mistral.js +0 -450
- package/dist/nodes/mistral.js.map +0 -1
- package/dist/nodes/model3d/analysis.d.ts +0 -13
- package/dist/nodes/model3d/analysis.d.ts.map +0 -1
- package/dist/nodes/model3d/analysis.js +0 -36
- package/dist/nodes/model3d/analysis.js.map +0 -1
- package/dist/nodes/model3d/base.d.ts +0 -11
- package/dist/nodes/model3d/base.d.ts.map +0 -1
- package/dist/nodes/model3d/base.js +0 -20
- package/dist/nodes/model3d/base.js.map +0 -1
- package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
- package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/boolean-ops.js +0 -172
- package/dist/nodes/model3d/boolean-ops.js.map +0 -1
- package/dist/nodes/model3d/cleanup.d.ts +0 -47
- package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
- package/dist/nodes/model3d/cleanup.js +0 -136
- package/dist/nodes/model3d/cleanup.js.map +0 -1
- package/dist/nodes/model3d/convert.d.ts +0 -14
- package/dist/nodes/model3d/convert.d.ts.map +0 -1
- package/dist/nodes/model3d/convert.js +0 -64
- package/dist/nodes/model3d/convert.js.map +0 -1
- package/dist/nodes/model3d/defaults.d.ts +0 -34
- package/dist/nodes/model3d/defaults.d.ts.map +0 -1
- package/dist/nodes/model3d/defaults.js +0 -28
- package/dist/nodes/model3d/defaults.js.map +0 -1
- package/dist/nodes/model3d/document-ops.d.ts +0 -4
- package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/document-ops.js +0 -40
- package/dist/nodes/model3d/document-ops.js.map +0 -1
- package/dist/nodes/model3d/generation.d.ts +0 -39
- package/dist/nodes/model3d/generation.d.ts.map +0 -1
- package/dist/nodes/model3d/generation.js +0 -179
- package/dist/nodes/model3d/generation.js.map +0 -1
- package/dist/nodes/model3d/glb.d.ts +0 -29
- package/dist/nodes/model3d/glb.d.ts.map +0 -1
- package/dist/nodes/model3d/glb.js +0 -255
- package/dist/nodes/model3d/glb.js.map +0 -1
- package/dist/nodes/model3d/index.d.ts +0 -20
- package/dist/nodes/model3d/index.d.ts.map +0 -1
- package/dist/nodes/model3d/index.js +0 -38
- package/dist/nodes/model3d/index.js.map +0 -1
- package/dist/nodes/model3d/io.d.ts +0 -38
- package/dist/nodes/model3d/io.d.ts.map +0 -1
- package/dist/nodes/model3d/io.js +0 -162
- package/dist/nodes/model3d/io.js.map +0 -1
- package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
- package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
- package/dist/nodes/model3d/mesh-ops.js +0 -775
- package/dist/nodes/model3d/mesh-ops.js.map +0 -1
- package/dist/nodes/model3d/nodes.d.ts +0 -2
- package/dist/nodes/model3d/nodes.d.ts.map +0 -1
- package/dist/nodes/model3d/nodes.js +0 -2
- package/dist/nodes/model3d/nodes.js.map +0 -1
- package/dist/nodes/model3d/ops.d.ts +0 -37
- package/dist/nodes/model3d/ops.d.ts.map +0 -1
- package/dist/nodes/model3d/ops.js +0 -137
- package/dist/nodes/model3d/ops.js.map +0 -1
- package/dist/nodes/model3d/transforms.d.ts +0 -49
- package/dist/nodes/model3d/transforms.d.ts.map +0 -1
- package/dist/nodes/model3d/transforms.js +0 -142
- package/dist/nodes/model3d/transforms.js.map +0 -1
- package/dist/nodes/model3d/types.d.ts +0 -81
- package/dist/nodes/model3d/types.d.ts.map +0 -1
- package/dist/nodes/model3d/types.js +0 -2
- package/dist/nodes/model3d/types.js.map +0 -1
- package/dist/nodes/model3d/utils.d.ts +0 -34
- package/dist/nodes/model3d/utils.d.ts.map +0 -1
- package/dist/nodes/model3d/utils.js +0 -185
- package/dist/nodes/model3d/utils.js.map +0 -1
- package/dist/nodes/model3d.d.ts +0 -2
- package/dist/nodes/model3d.d.ts.map +0 -1
- package/dist/nodes/model3d.js +0 -2
- package/dist/nodes/model3d.js.map +0 -1
- package/dist/nodes/openai.d.ts +0 -172
- package/dist/nodes/openai.d.ts.map +0 -1
- package/dist/nodes/openai.js +0 -1294
- package/dist/nodes/openai.js.map +0 -1
- package/dist/nodes/output.d.ts +0 -29
- package/dist/nodes/output.d.ts.map +0 -1
- package/dist/nodes/output.js +0 -87
- package/dist/nodes/output.js.map +0 -1
- package/dist/nodes/sandbox.d.ts +0 -63
- package/dist/nodes/sandbox.d.ts.map +0 -1
- package/dist/nodes/sandbox.js +0 -633
- package/dist/nodes/sandbox.js.map +0 -1
- package/dist/nodes/search.d.ts +0 -117
- package/dist/nodes/search.d.ts.map +0 -1
- package/dist/nodes/search.js +0 -607
- package/dist/nodes/search.js.map +0 -1
- package/dist/nodes/team.d.ts +0 -74
- package/dist/nodes/team.d.ts.map +0 -1
- package/dist/nodes/team.js +0 -309
- package/dist/nodes/team.js.map +0 -1
- package/dist/nodes/text-extra.d.ts +0 -633
- package/dist/nodes/text-extra.d.ts.map +0 -1
- package/dist/nodes/text-extra.js +0 -2226
- package/dist/nodes/text-extra.js.map +0 -1
- package/dist/nodes/tool-agents.d.ts +0 -334
- package/dist/nodes/tool-agents.d.ts.map +0 -1
- package/dist/nodes/tool-agents.js +0 -1861
- package/dist/nodes/tool-agents.js.map +0 -1
- package/dist/nodes/triggers.d.ts +0 -107
- package/dist/nodes/triggers.d.ts.map +0 -1
- package/dist/nodes/triggers.js +0 -706
- package/dist/nodes/triggers.js.map +0 -1
- package/dist/nodes/vector.d.ts +0 -168
- package/dist/nodes/vector.d.ts.map +0 -1
- package/dist/nodes/vector.js +0 -1121
- package/dist/nodes/vector.js.map +0 -1
- package/dist/nodes/video.d.ts +0 -387
- package/dist/nodes/video.d.ts.map +0 -1
- package/dist/nodes/video.js +0 -2383
- package/dist/nodes/video.js.map +0 -1
- package/dist/nodes/workflow.d.ts +0 -24
- package/dist/nodes/workflow.d.ts.map +0 -1
- package/dist/nodes/workflow.js +0 -146
- package/dist/nodes/workflow.js.map +0 -1
- package/dist/nodes/workspace.d.ts +0 -203
- package/dist/nodes/workspace.d.ts.map +0 -1
- package/dist/nodes/workspace.js +0 -795
- package/dist/nodes/workspace.js.map +0 -1
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Text validation and sanitization nodes — pure-JS implementations.
|
|
3
|
-
*
|
|
4
|
-
* These replace the old `validator.js`-powered code snippets so the JS
|
|
5
|
-
* sandbox can stay lib-free. The checks aim for "good-enough for workflow
|
|
6
|
-
* use" rather than RFC-complete.
|
|
7
|
-
*/
|
|
8
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
9
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
-
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;
|
|
12
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
-
};
|
|
14
|
-
import { BaseNode, prop } from "@nodetool-ai/node-sdk";
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Shared validators
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
// Practical email regex — rejects obvious garbage, accepts the common forms.
|
|
19
|
-
// Local part: letters/digits/._%+- . Domain: letters/digits/.- with an
|
|
20
|
-
// alphanumeric TLD of ≥2 characters.
|
|
21
|
-
const EMAIL_RE = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z][A-Za-z0-9-]*$/;
|
|
22
|
-
// Basic UUID v1-v5 shape.
|
|
23
|
-
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
24
|
-
const IPV4_SEGMENT_RE = /^(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})$/;
|
|
25
|
-
const ALPHA_RE = /^[A-Za-z]+$/;
|
|
26
|
-
const ALPHANUMERIC_RE = /^[A-Za-z0-9]+$/;
|
|
27
|
-
export function isEmail(value) {
|
|
28
|
-
return typeof value === "string" && EMAIL_RE.test(value.trim());
|
|
29
|
-
}
|
|
30
|
-
export function isURL(value) {
|
|
31
|
-
if (typeof value !== "string" || !value.trim())
|
|
32
|
-
return false;
|
|
33
|
-
try {
|
|
34
|
-
const u = new URL(value);
|
|
35
|
-
// WHATWG URL accepts weird protocols — require http(s) or a scheme with authority
|
|
36
|
-
return /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value) && u.host.length > 0;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export function isIPv4(value) {
|
|
43
|
-
if (typeof value !== "string")
|
|
44
|
-
return false;
|
|
45
|
-
const parts = value.split(".");
|
|
46
|
-
if (parts.length !== 4)
|
|
47
|
-
return false;
|
|
48
|
-
return parts.every((p) => IPV4_SEGMENT_RE.test(p));
|
|
49
|
-
}
|
|
50
|
-
export function isIPv6(value) {
|
|
51
|
-
if (typeof value !== "string")
|
|
52
|
-
return false;
|
|
53
|
-
// Accept fully-written, "::"-compressed, and IPv4-suffixed forms.
|
|
54
|
-
if (value.length < 2 || value.indexOf(":") === -1)
|
|
55
|
-
return false;
|
|
56
|
-
const groups = value.split("::");
|
|
57
|
-
if (groups.length > 2)
|
|
58
|
-
return false;
|
|
59
|
-
const parts = value.replace("::", ":x:").split(":");
|
|
60
|
-
// each chunk must be 1-4 hex chars (or our placeholder)
|
|
61
|
-
return parts.every((p) => p === "" || p === "x" || /^[0-9a-fA-F]{1,4}$/.test(p));
|
|
62
|
-
}
|
|
63
|
-
export function isIP(value) {
|
|
64
|
-
return isIPv4(value) || isIPv6(value);
|
|
65
|
-
}
|
|
66
|
-
export function isUUID(value) {
|
|
67
|
-
return typeof value === "string" && UUID_RE.test(value);
|
|
68
|
-
}
|
|
69
|
-
export function isJSONString(value) {
|
|
70
|
-
if (typeof value !== "string")
|
|
71
|
-
return false;
|
|
72
|
-
try {
|
|
73
|
-
JSON.parse(value);
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
export function isNumeric(value) {
|
|
81
|
-
if (typeof value !== "string" || value.trim() === "")
|
|
82
|
-
return false;
|
|
83
|
-
return !Number.isNaN(Number(value));
|
|
84
|
-
}
|
|
85
|
-
export function isAlpha(value) {
|
|
86
|
-
return typeof value === "string" && ALPHA_RE.test(value);
|
|
87
|
-
}
|
|
88
|
-
export function isAlphanumeric(value) {
|
|
89
|
-
return typeof value === "string" && ALPHANUMERIC_RE.test(value);
|
|
90
|
-
}
|
|
91
|
-
/** HTML-entity-escape `&`, `<`, `>`, `"`, `'` and `/`. Matches validator.escape. */
|
|
92
|
-
export function escapeHtml(value) {
|
|
93
|
-
if (typeof value !== "string")
|
|
94
|
-
return "";
|
|
95
|
-
return value
|
|
96
|
-
.replace(/&/g, "&")
|
|
97
|
-
.replace(/</g, "<")
|
|
98
|
-
.replace(/>/g, ">")
|
|
99
|
-
.replace(/"/g, """)
|
|
100
|
-
.replace(/'/g, "'")
|
|
101
|
-
.replace(/\//g, "/");
|
|
102
|
-
}
|
|
103
|
-
/** Lowercase + strip leading/trailing whitespace. Good enough for common normalisation. */
|
|
104
|
-
export function normalizeEmail(value) {
|
|
105
|
-
if (typeof value !== "string")
|
|
106
|
-
return "";
|
|
107
|
-
const v = value.trim().toLowerCase();
|
|
108
|
-
return isEmail(v) ? v : "";
|
|
109
|
-
}
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
// Nodes
|
|
112
|
-
// ---------------------------------------------------------------------------
|
|
113
|
-
export class ValidateEmailNode extends BaseNode {
|
|
114
|
-
static nodeType = "lib.validate.Email";
|
|
115
|
-
static title = "Validate Email";
|
|
116
|
-
static description = "Check whether a value is a syntactically valid email address.\n validate, email, check";
|
|
117
|
-
static metadataOutputTypes = { output: "bool" };
|
|
118
|
-
async process() {
|
|
119
|
-
return { output: isEmail(String(this.value ?? "")) };
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
__decorate([
|
|
123
|
-
prop({ type: "str", default: "", title: "Value" })
|
|
124
|
-
], ValidateEmailNode.prototype, "value", void 0);
|
|
125
|
-
export class ValidateURLNode extends BaseNode {
|
|
126
|
-
static nodeType = "lib.validate.URL";
|
|
127
|
-
static title = "Validate URL";
|
|
128
|
-
static description = "Check whether a value is a syntactically valid absolute URL.\n validate, url, link, check";
|
|
129
|
-
static metadataOutputTypes = { output: "bool" };
|
|
130
|
-
async process() {
|
|
131
|
-
return { output: isURL(String(this.value ?? "")) };
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
__decorate([
|
|
135
|
-
prop({ type: "str", default: "", title: "Value" })
|
|
136
|
-
], ValidateURLNode.prototype, "value", void 0);
|
|
137
|
-
export class ValidateIPNode extends BaseNode {
|
|
138
|
-
static nodeType = "lib.validate.IP";
|
|
139
|
-
static title = "Validate IP Address";
|
|
140
|
-
static description = "Check whether a value is a valid IPv4 or IPv6 address.\n validate, ip, ipv4, ipv6, address, network";
|
|
141
|
-
static metadataOutputTypes = {
|
|
142
|
-
is_ip: "bool",
|
|
143
|
-
is_ipv4: "bool",
|
|
144
|
-
is_ipv6: "bool"
|
|
145
|
-
};
|
|
146
|
-
async process() {
|
|
147
|
-
const v = String(this.value ?? "");
|
|
148
|
-
return {
|
|
149
|
-
is_ip: isIP(v),
|
|
150
|
-
is_ipv4: isIPv4(v),
|
|
151
|
-
is_ipv6: isIPv6(v)
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
__decorate([
|
|
156
|
-
prop({ type: "str", default: "", title: "Value" })
|
|
157
|
-
], ValidateIPNode.prototype, "value", void 0);
|
|
158
|
-
export class ValidateStringNode extends BaseNode {
|
|
159
|
-
static nodeType = "lib.validate.String";
|
|
160
|
-
static title = "Validate String";
|
|
161
|
-
static description = "Run several common string checks at once and return one bool per check.\n validate, check, email, url, uuid, json, number";
|
|
162
|
-
static metadataOutputTypes = {
|
|
163
|
-
is_email: "bool",
|
|
164
|
-
is_url: "bool",
|
|
165
|
-
is_uuid: "bool",
|
|
166
|
-
is_json: "bool",
|
|
167
|
-
is_numeric: "bool",
|
|
168
|
-
is_alpha: "bool",
|
|
169
|
-
is_alphanumeric: "bool"
|
|
170
|
-
};
|
|
171
|
-
async process() {
|
|
172
|
-
const v = String(this.value ?? "");
|
|
173
|
-
return {
|
|
174
|
-
is_email: isEmail(v),
|
|
175
|
-
is_url: isURL(v),
|
|
176
|
-
is_uuid: isUUID(v),
|
|
177
|
-
is_json: isJSONString(v),
|
|
178
|
-
is_numeric: isNumeric(v),
|
|
179
|
-
is_alpha: isAlpha(v),
|
|
180
|
-
is_alphanumeric: isAlphanumeric(v)
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
__decorate([
|
|
185
|
-
prop({ type: "str", default: "", title: "Value" })
|
|
186
|
-
], ValidateStringNode.prototype, "value", void 0);
|
|
187
|
-
export class SanitizeStringNode extends BaseNode {
|
|
188
|
-
static nodeType = "lib.validate.Sanitize";
|
|
189
|
-
static title = "Sanitize String";
|
|
190
|
-
static description = "HTML-escape, trim, and lowercase/normalise a string. Also emits the normalised email when applicable.\n sanitize, escape, html, xss, clean, trim";
|
|
191
|
-
static metadataOutputTypes = {
|
|
192
|
-
escaped: "str",
|
|
193
|
-
trimmed: "str",
|
|
194
|
-
normalized_email: "str"
|
|
195
|
-
};
|
|
196
|
-
async process() {
|
|
197
|
-
const v = String(this.value ?? "");
|
|
198
|
-
return {
|
|
199
|
-
escaped: escapeHtml(v),
|
|
200
|
-
trimmed: v.trim(),
|
|
201
|
-
normalized_email: normalizeEmail(v)
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
__decorate([
|
|
206
|
-
prop({ type: "str", default: "", title: "Value" })
|
|
207
|
-
], SanitizeStringNode.prototype, "value", void 0);
|
|
208
|
-
export const LIB_VALIDATE_NODES = [
|
|
209
|
-
ValidateEmailNode,
|
|
210
|
-
ValidateURLNode,
|
|
211
|
-
ValidateIPNode,
|
|
212
|
-
ValidateStringNode,
|
|
213
|
-
SanitizeStringNode
|
|
214
|
-
];
|
|
215
|
-
//# sourceMappingURL=lib-validate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib-validate.js","sourceRoot":"","sources":["../../src/nodes/lib-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
-
export declare class YtDlpDownloadLibNode extends BaseNode {
|
|
3
|
-
static readonly nodeType = "lib.video.download.YtDlpDownload";
|
|
4
|
-
static readonly title = "YouTube Downloader";
|
|
5
|
-
static readonly description = "Download media from URLs using yt-dlp.\n download, video, audio, youtube, media, yt-dlp, metadata, subtitles\n\n Use cases:\n - Download videos from YouTube and other platforms\n - Extract audio from video URLs\n - Retrieve video/audio metadata without downloading\n - Download subtitles and thumbnails";
|
|
6
|
-
static readonly metadataOutputTypes: {
|
|
7
|
-
video: string;
|
|
8
|
-
audio: string;
|
|
9
|
-
metadata: string;
|
|
10
|
-
subtitles: string;
|
|
11
|
-
thumbnail: string;
|
|
12
|
-
};
|
|
13
|
-
static readonly requiredRuntimes: string[];
|
|
14
|
-
url: any;
|
|
15
|
-
mode: any;
|
|
16
|
-
format_selector: any;
|
|
17
|
-
container: any;
|
|
18
|
-
subtitles: any;
|
|
19
|
-
thumbnail: any;
|
|
20
|
-
overwrite: any;
|
|
21
|
-
rate_limit_kbps: any;
|
|
22
|
-
timeout: any;
|
|
23
|
-
process(): Promise<Record<string, unknown>>;
|
|
24
|
-
}
|
|
25
|
-
export declare const LIB_YTDLP_NODES: readonly [typeof YtDlpDownloadLibNode];
|
|
26
|
-
//# sourceMappingURL=lib-video-download.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib-video-download.d.ts","sourceRoot":"","sources":["../../src/nodes/lib-video-download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AAsHvD,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,sUAC0S;IACrU,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;;;;;MAMjC;IACF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAAc;IAQtC,GAAG,EAAE,GAAG,CAAC;IAST,IAAI,EAAE,GAAG,CAAC;IAQV,eAAe,EAAE,GAAG,CAAC;IAQrB,SAAS,EAAE,GAAG,CAAC;IAQf,SAAS,EAAE,GAAG,CAAC;IAQf,SAAS,EAAE,GAAG,CAAC;IAQf,SAAS,EAAE,GAAG,CAAC;IASf,eAAe,EAAE,GAAG,CAAC;IAUrB,OAAO,EAAE,GAAG,CAAC;IAEf,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAkJlD;AAED,eAAO,MAAM,eAAe,wCAAkC,CAAC"}
|
|
@@ -1,299 +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
|
-
import { promises as fs } from "node:fs";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
import os from "node:os";
|
|
11
|
-
import { spawn } from "node:child_process";
|
|
12
|
-
async function runCommand(cmd, args, timeoutMs) {
|
|
13
|
-
return new Promise((resolve, reject) => {
|
|
14
|
-
const child = spawn(cmd, args, { stdio: "pipe" });
|
|
15
|
-
let stdout = "";
|
|
16
|
-
let stderr = "";
|
|
17
|
-
let timedOut = false;
|
|
18
|
-
const timer = setTimeout(() => {
|
|
19
|
-
timedOut = true;
|
|
20
|
-
child.kill("SIGTERM");
|
|
21
|
-
}, timeoutMs);
|
|
22
|
-
child.stdout.on("data", (d) => {
|
|
23
|
-
stdout += String(d);
|
|
24
|
-
});
|
|
25
|
-
child.stderr.on("data", (d) => {
|
|
26
|
-
stderr += String(d);
|
|
27
|
-
});
|
|
28
|
-
child.on("error", (err) => {
|
|
29
|
-
clearTimeout(timer);
|
|
30
|
-
reject(err);
|
|
31
|
-
});
|
|
32
|
-
child.on("close", (code) => {
|
|
33
|
-
clearTimeout(timer);
|
|
34
|
-
if (timedOut) {
|
|
35
|
-
resolve({
|
|
36
|
-
stdout,
|
|
37
|
-
stderr: `${stderr}\nProcess timed out`,
|
|
38
|
-
exitCode: 124
|
|
39
|
-
});
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
resolve({ stdout, stderr, exitCode: code ?? 0 });
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
function isValidUrl(url) {
|
|
47
|
-
return /^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(url);
|
|
48
|
-
}
|
|
49
|
-
function safeMetadata(info) {
|
|
50
|
-
const keys = [
|
|
51
|
-
"id",
|
|
52
|
-
"title",
|
|
53
|
-
"description",
|
|
54
|
-
"uploader",
|
|
55
|
-
"upload_date",
|
|
56
|
-
"duration",
|
|
57
|
-
"view_count",
|
|
58
|
-
"like_count",
|
|
59
|
-
"channel",
|
|
60
|
-
"channel_id",
|
|
61
|
-
"webpage_url",
|
|
62
|
-
"ext",
|
|
63
|
-
"width",
|
|
64
|
-
"height",
|
|
65
|
-
"fps",
|
|
66
|
-
"filesize",
|
|
67
|
-
"tags",
|
|
68
|
-
"categories"
|
|
69
|
-
];
|
|
70
|
-
const out = {};
|
|
71
|
-
for (const key of keys) {
|
|
72
|
-
if (key in info)
|
|
73
|
-
out[key] = info[key];
|
|
74
|
-
}
|
|
75
|
-
return out;
|
|
76
|
-
}
|
|
77
|
-
function base64Ref(bytes, kind) {
|
|
78
|
-
return {
|
|
79
|
-
type: kind,
|
|
80
|
-
data: bytes.toString("base64")
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
async function findFileByExt(dir, exts, preferredId = "") {
|
|
84
|
-
const names = await fs.readdir(dir);
|
|
85
|
-
const extSet = new Set(exts.map((e) => e.toLowerCase()));
|
|
86
|
-
if (preferredId) {
|
|
87
|
-
const exact = names.find((name) => {
|
|
88
|
-
const ext = path.extname(name).slice(1).toLowerCase();
|
|
89
|
-
const stem = path.basename(name, path.extname(name));
|
|
90
|
-
return stem === preferredId && extSet.has(ext);
|
|
91
|
-
});
|
|
92
|
-
if (exact)
|
|
93
|
-
return path.join(dir, exact);
|
|
94
|
-
}
|
|
95
|
-
const any = names.find((name) => extSet.has(path.extname(name).slice(1).toLowerCase()));
|
|
96
|
-
return any ? path.join(dir, any) : null;
|
|
97
|
-
}
|
|
98
|
-
export class YtDlpDownloadLibNode extends BaseNode {
|
|
99
|
-
static nodeType = "lib.video.download.YtDlpDownload";
|
|
100
|
-
static title = "YouTube Downloader";
|
|
101
|
-
static description = "Download media from URLs using yt-dlp.\n download, video, audio, youtube, media, yt-dlp, metadata, subtitles\n\n Use cases:\n - Download videos from YouTube and other platforms\n - Extract audio from video URLs\n - Retrieve video/audio metadata without downloading\n - Download subtitles and thumbnails";
|
|
102
|
-
static metadataOutputTypes = {
|
|
103
|
-
video: "video",
|
|
104
|
-
audio: "audio",
|
|
105
|
-
metadata: "dict",
|
|
106
|
-
subtitles: "str",
|
|
107
|
-
thumbnail: "image"
|
|
108
|
-
};
|
|
109
|
-
static requiredRuntimes = ["yt-dlp"];
|
|
110
|
-
async process() {
|
|
111
|
-
const url = String(this.url ?? "").trim();
|
|
112
|
-
if (!url) {
|
|
113
|
-
throw new Error("URL cannot be empty");
|
|
114
|
-
}
|
|
115
|
-
if (!isValidUrl(url)) {
|
|
116
|
-
throw new Error(`Invalid URL format: ${url}`);
|
|
117
|
-
}
|
|
118
|
-
const mode = String(this.mode ?? "video").toLowerCase();
|
|
119
|
-
const timeoutMs = Math.max(1000, Number(this.timeout ?? 600) * 1000);
|
|
120
|
-
const formatSelector = String(this.format_selector ?? "best");
|
|
121
|
-
const container = String(this.container ?? "auto");
|
|
122
|
-
const subtitles = Boolean(this.subtitles ?? false);
|
|
123
|
-
const thumbnail = Boolean(this.thumbnail ?? false);
|
|
124
|
-
const overwrite = Boolean(this.overwrite ?? false);
|
|
125
|
-
const rateLimitKbps = Number(this.rate_limit_kbps ?? 0);
|
|
126
|
-
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "ytdlp-"));
|
|
127
|
-
try {
|
|
128
|
-
const metadataArgs = [
|
|
129
|
-
"--no-playlist",
|
|
130
|
-
"--no-warnings",
|
|
131
|
-
"--no-color",
|
|
132
|
-
"--print-json",
|
|
133
|
-
"--skip-download",
|
|
134
|
-
url
|
|
135
|
-
];
|
|
136
|
-
const metadataRes = await runCommand("yt-dlp", metadataArgs, timeoutMs);
|
|
137
|
-
if (metadataRes.exitCode !== 0) {
|
|
138
|
-
throw new Error(`yt-dlp metadata failed: ${metadataRes.stderr || metadataRes.stdout}`);
|
|
139
|
-
}
|
|
140
|
-
const lines = metadataRes.stdout
|
|
141
|
-
.split(/\r?\n/)
|
|
142
|
-
.map((line) => line.trim())
|
|
143
|
-
.filter(Boolean);
|
|
144
|
-
let jsonLine = "";
|
|
145
|
-
for (let i = lines.length - 1; i >= 0; i -= 1) {
|
|
146
|
-
if (lines[i].startsWith("{")) {
|
|
147
|
-
jsonLine = lines[i];
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
const parsedInfo = jsonLine
|
|
152
|
-
? JSON.parse(jsonLine)
|
|
153
|
-
: {};
|
|
154
|
-
const output = {
|
|
155
|
-
video: {},
|
|
156
|
-
audio: {},
|
|
157
|
-
metadata: safeMetadata(parsedInfo),
|
|
158
|
-
subtitles: "",
|
|
159
|
-
thumbnail: null
|
|
160
|
-
};
|
|
161
|
-
if (mode !== "metadata") {
|
|
162
|
-
const dlArgs = [
|
|
163
|
-
"--no-playlist",
|
|
164
|
-
"--no-warnings",
|
|
165
|
-
"--no-color",
|
|
166
|
-
"--restrict-filenames",
|
|
167
|
-
"-o",
|
|
168
|
-
path.join(tempDir, "%(id)s.%(ext)s")
|
|
169
|
-
];
|
|
170
|
-
if (!overwrite)
|
|
171
|
-
dlArgs.push("--no-overwrites");
|
|
172
|
-
if (rateLimitKbps > 0)
|
|
173
|
-
dlArgs.push("--limit-rate", `${Math.trunc(rateLimitKbps)}K`);
|
|
174
|
-
if (subtitles)
|
|
175
|
-
dlArgs.push("--write-subs", "--write-auto-subs", "--sub-langs", "en,en-US,en-GB", "--sub-format", "srt/vtt/ass/best");
|
|
176
|
-
if (thumbnail)
|
|
177
|
-
dlArgs.push("--write-thumbnail");
|
|
178
|
-
if (mode === "audio") {
|
|
179
|
-
dlArgs.push("-f", "bestaudio/best", "-x", "--audio-format", "mp3");
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
dlArgs.push("-f", formatSelector === "best"
|
|
183
|
-
? "bestvideo+bestaudio/best"
|
|
184
|
-
: formatSelector);
|
|
185
|
-
if (container !== "auto")
|
|
186
|
-
dlArgs.push("--merge-output-format", container);
|
|
187
|
-
}
|
|
188
|
-
dlArgs.push(url);
|
|
189
|
-
const dlRes = await runCommand("yt-dlp", dlArgs, timeoutMs);
|
|
190
|
-
if (dlRes.exitCode !== 0) {
|
|
191
|
-
throw new Error(`yt-dlp download failed: ${dlRes.stderr || dlRes.stdout}`);
|
|
192
|
-
}
|
|
193
|
-
const mediaId = typeof parsedInfo.id === "string" ? parsedInfo.id : "";
|
|
194
|
-
if (mode === "audio") {
|
|
195
|
-
const audioFile = await findFileByExt(tempDir, ["mp3", "m4a", "opus", "ogg", "wav", "webm"], mediaId);
|
|
196
|
-
if (audioFile)
|
|
197
|
-
output.audio = base64Ref(await fs.readFile(audioFile), "audio");
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
const videoFile = await findFileByExt(tempDir, ["mp4", "webm", "mkv", "avi", "mov", "flv"], mediaId);
|
|
201
|
-
if (videoFile)
|
|
202
|
-
output.video = base64Ref(await fs.readFile(videoFile), "video");
|
|
203
|
-
}
|
|
204
|
-
if (subtitles) {
|
|
205
|
-
const subFile = await findFileByExt(tempDir, ["srt", "vtt", "ass", "ssa"], mediaId);
|
|
206
|
-
if (subFile)
|
|
207
|
-
output.subtitles = await fs.readFile(subFile, "utf8");
|
|
208
|
-
}
|
|
209
|
-
if (thumbnail) {
|
|
210
|
-
const thumbFile = await findFileByExt(tempDir, ["jpg", "jpeg", "png", "webp"], mediaId);
|
|
211
|
-
if (thumbFile)
|
|
212
|
-
output.thumbnail = base64Ref(await fs.readFile(thumbFile), "image");
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return output;
|
|
216
|
-
}
|
|
217
|
-
finally {
|
|
218
|
-
await fs.rm(tempDir, { recursive: true, force: true });
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
__decorate([
|
|
223
|
-
prop({
|
|
224
|
-
type: "str",
|
|
225
|
-
default: "",
|
|
226
|
-
title: "Url",
|
|
227
|
-
description: "URL of the media to download"
|
|
228
|
-
})
|
|
229
|
-
], YtDlpDownloadLibNode.prototype, "url", void 0);
|
|
230
|
-
__decorate([
|
|
231
|
-
prop({
|
|
232
|
-
type: "enum",
|
|
233
|
-
default: "video",
|
|
234
|
-
title: "Mode",
|
|
235
|
-
description: "Download mode: video, audio, or metadata only",
|
|
236
|
-
values: ["video", "audio", "metadata"]
|
|
237
|
-
})
|
|
238
|
-
], YtDlpDownloadLibNode.prototype, "mode", void 0);
|
|
239
|
-
__decorate([
|
|
240
|
-
prop({
|
|
241
|
-
type: "str",
|
|
242
|
-
default: "best",
|
|
243
|
-
title: "Format Selector",
|
|
244
|
-
description: "yt-dlp format selector (e.g., 'best', 'bestvideo+bestaudio')"
|
|
245
|
-
})
|
|
246
|
-
], YtDlpDownloadLibNode.prototype, "format_selector", void 0);
|
|
247
|
-
__decorate([
|
|
248
|
-
prop({
|
|
249
|
-
type: "str",
|
|
250
|
-
default: "auto",
|
|
251
|
-
title: "Container",
|
|
252
|
-
description: "Output container format (e.g., 'mp4', 'webm', 'auto')"
|
|
253
|
-
})
|
|
254
|
-
], YtDlpDownloadLibNode.prototype, "container", void 0);
|
|
255
|
-
__decorate([
|
|
256
|
-
prop({
|
|
257
|
-
type: "bool",
|
|
258
|
-
default: false,
|
|
259
|
-
title: "Subtitles",
|
|
260
|
-
description: "Download subtitles if available"
|
|
261
|
-
})
|
|
262
|
-
], YtDlpDownloadLibNode.prototype, "subtitles", void 0);
|
|
263
|
-
__decorate([
|
|
264
|
-
prop({
|
|
265
|
-
type: "bool",
|
|
266
|
-
default: false,
|
|
267
|
-
title: "Thumbnail",
|
|
268
|
-
description: "Download thumbnail if available"
|
|
269
|
-
})
|
|
270
|
-
], YtDlpDownloadLibNode.prototype, "thumbnail", void 0);
|
|
271
|
-
__decorate([
|
|
272
|
-
prop({
|
|
273
|
-
type: "bool",
|
|
274
|
-
default: false,
|
|
275
|
-
title: "Overwrite",
|
|
276
|
-
description: "Overwrite existing files"
|
|
277
|
-
})
|
|
278
|
-
], YtDlpDownloadLibNode.prototype, "overwrite", void 0);
|
|
279
|
-
__decorate([
|
|
280
|
-
prop({
|
|
281
|
-
type: "int",
|
|
282
|
-
default: 0,
|
|
283
|
-
title: "Rate Limit Kbps",
|
|
284
|
-
description: "Rate limit in KB/s (0 = unlimited)",
|
|
285
|
-
min: 0
|
|
286
|
-
})
|
|
287
|
-
], YtDlpDownloadLibNode.prototype, "rate_limit_kbps", void 0);
|
|
288
|
-
__decorate([
|
|
289
|
-
prop({
|
|
290
|
-
type: "int",
|
|
291
|
-
default: 600,
|
|
292
|
-
title: "Timeout",
|
|
293
|
-
description: "Timeout in seconds",
|
|
294
|
-
min: 1,
|
|
295
|
-
max: 3600
|
|
296
|
-
})
|
|
297
|
-
], YtDlpDownloadLibNode.prototype, "timeout", void 0);
|
|
298
|
-
export const LIB_YTDLP_NODES = [YtDlpDownloadLibNode];
|
|
299
|
-
//# sourceMappingURL=lib-video-download.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib-video-download.js","sourceRoot":"","sources":["../../src/nodes/lib-video-download.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAQ3C,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,IAAc,EACd,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC;oBACN,MAAM;oBACN,MAAM,EAAE,GAAG,MAAM,qBAAqB;oBACtC,QAAQ,EAAE,GAAG;iBACd,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,IAA6B;IACjD,MAAM,IAAI,GAAG;QACX,IAAI;QACJ,OAAO;QACP,aAAa;QACb,UAAU;QACV,aAAa;QACb,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,aAAa;QACb,KAAK;QACL,OAAO;QACP,QAAQ;QACR,KAAK;QACL,UAAU;QACV,MAAM;QACN,YAAY;KACb,CAAC;IACF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,IAAI;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAChB,KAAa,EACb,IAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,IAAc,EACd,WAAW,GAAG,EAAE;IAEhB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,OAAO,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,IAAI,KAAK;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;IACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,MAAM,CAAU,QAAQ,GAAG,kCAAkC,CAAC;IAC9D,MAAM,CAAU,KAAK,GAAG,oBAAoB,CAAC;IAC7C,MAAM,CAAU,WAAW,GACzB,kUAAkU,CAAC;IACrU,MAAM,CAAU,mBAAmB,GAAG;QACpC,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,OAAO;KACnB,CAAC;IACF,MAAM,CAAU,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC;IA8E9C,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG;gBACnB,eAAe;gBACf,eAAe;gBACf,YAAY;gBACZ,cAAc;gBACd,iBAAiB;gBACjB,GAAG;aACJ,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YACxE,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CACtE,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM;iBAC7B,KAAK,CAAC,OAAO,CAAC;iBACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACpB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ;gBACzB,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA6B;gBACnD,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,MAAM,GAA4B;gBACtC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC;gBAClC,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,IAAI;aAChB,CAAC;YAEF,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG;oBACb,eAAe;oBACf,eAAe;oBACf,YAAY;oBACZ,sBAAsB;oBACtB,IAAI;oBACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;iBACrC,CAAC;gBAEF,IAAI,CAAC,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,aAAa,GAAG,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/D,IAAI,SAAS;oBACX,MAAM,CAAC,IAAI,CACT,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,CACnB,CAAC;gBACJ,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAEhD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CACT,IAAI,EACJ,cAAc,KAAK,MAAM;wBACvB,CAAC,CAAC,0BAA0B;wBAC5B,CAAC,CAAC,cAAc,CACnB,CAAC;oBACF,IAAI,SAAS,KAAK,MAAM;wBACtB,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;gBACpD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEjB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAC1D,CAAC;gBACJ,CAAC;gBAED,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,OAAO,EACP,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAC5C,OAAO,CACR,CAAC;oBACF,IAAI,SAAS;wBACX,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,OAAO,EACP,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAC3C,OAAO,CACR,CAAC;oBACF,IAAI,SAAS;wBACX,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;gBACpE,CAAC;gBAED,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,OAAO,EACP,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAC5B,OAAO,CACR,CAAC;oBACF,IAAI,OAAO;wBAAE,MAAM,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACrE,CAAC;gBACD,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,OAAO,EACP,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAC9B,OAAO,CACR,CAAC;oBACF,IAAI,SAAS;wBACX,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;;AAvNO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,8BAA8B;KAC5C,CAAC;iDACe;AAST;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;KACvC,CAAC;kDACgB;AAQV;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,8DAA8D;KAC5E,CAAC;6DAC2B;AAQrB;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,uDAAuD;KACrE,CAAC;uDACqB;AAQf;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,iCAAiC;KAC/C,CAAC;uDACqB;AAQf;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,iCAAiC;KAC/C,CAAC;uDACqB;AAQf;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,0BAA0B;KACxC,CAAC;uDACqB;AASf;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,oCAAoC;QACjD,GAAG,EAAE,CAAC;KACP,CAAC;6DAC2B;AAUrB;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,oBAAoB;QACjC,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAI;KACV,CAAC;qDACmB;AAsJvB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,oBAAoB,CAAU,CAAC"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
-
import type { NodeClass } from "@nodetool-ai/node-sdk";
|
|
3
|
-
export declare class DiscordBotTrigger extends BaseNode {
|
|
4
|
-
static readonly nodeType = "messaging.discord.DiscordBotTrigger";
|
|
5
|
-
static readonly title = "Discord Bot Trigger";
|
|
6
|
-
static readonly description = "Trigger node that listens for Discord messages from a bot account.\n\n This trigger connects to Discord using a bot token and emits events\n for incoming messages.";
|
|
7
|
-
static readonly metadataOutputTypes: {
|
|
8
|
-
message_id: string;
|
|
9
|
-
content: string;
|
|
10
|
-
author: string;
|
|
11
|
-
channel: string;
|
|
12
|
-
guild: string;
|
|
13
|
-
attachments: string;
|
|
14
|
-
timestamp: string;
|
|
15
|
-
source: string;
|
|
16
|
-
event_type: string;
|
|
17
|
-
};
|
|
18
|
-
static readonly requiredSettings: string[];
|
|
19
|
-
static readonly isStreamingOutput = true;
|
|
20
|
-
max_events: any;
|
|
21
|
-
token: any;
|
|
22
|
-
channel_id: any;
|
|
23
|
-
allow_bot_messages: any;
|
|
24
|
-
process(): Promise<Record<string, unknown>>;
|
|
25
|
-
}
|
|
26
|
-
export declare class DiscordSendMessage extends BaseNode {
|
|
27
|
-
static readonly nodeType = "messaging.discord.DiscordSendMessage";
|
|
28
|
-
static readonly title = "Discord Send Message";
|
|
29
|
-
static readonly description = "Node that sends a message to a Discord channel using a bot token.";
|
|
30
|
-
static readonly metadataOutputTypes: {
|
|
31
|
-
output: string;
|
|
32
|
-
};
|
|
33
|
-
static readonly requiredSettings: string[];
|
|
34
|
-
token: any;
|
|
35
|
-
channel_id: any;
|
|
36
|
-
content: any;
|
|
37
|
-
tts: any;
|
|
38
|
-
embeds: any;
|
|
39
|
-
process(): Promise<Record<string, unknown>>;
|
|
40
|
-
}
|
|
41
|
-
export declare class TelegramBotTrigger extends BaseNode {
|
|
42
|
-
static readonly nodeType = "messaging.telegram.TelegramBotTrigger";
|
|
43
|
-
static readonly title = "Telegram Bot Trigger";
|
|
44
|
-
static readonly description = "Trigger node that listens for Telegram messages using long polling.\n\n This trigger connects to Telegram using a bot token and emits events\n for incoming messages.";
|
|
45
|
-
static readonly metadataOutputTypes: {
|
|
46
|
-
update_id: string;
|
|
47
|
-
update_type: string;
|
|
48
|
-
message_id: string;
|
|
49
|
-
text: string;
|
|
50
|
-
caption: string;
|
|
51
|
-
entities: string;
|
|
52
|
-
chat: string;
|
|
53
|
-
from_user: string;
|
|
54
|
-
attachments: string;
|
|
55
|
-
timestamp: string;
|
|
56
|
-
source: string;
|
|
57
|
-
event_type: string;
|
|
58
|
-
};
|
|
59
|
-
static readonly requiredSettings: string[];
|
|
60
|
-
static readonly isStreamingOutput = true;
|
|
61
|
-
max_events: any;
|
|
62
|
-
token: any;
|
|
63
|
-
chat_id: any;
|
|
64
|
-
allow_bot_messages: any;
|
|
65
|
-
include_edited_messages: any;
|
|
66
|
-
poll_timeout_seconds: any;
|
|
67
|
-
poll_interval_seconds: any;
|
|
68
|
-
process(): Promise<Record<string, unknown>>;
|
|
69
|
-
}
|
|
70
|
-
export declare class TelegramSendMessage extends BaseNode {
|
|
71
|
-
static readonly nodeType = "messaging.telegram.TelegramSendMessage";
|
|
72
|
-
static readonly title = "Telegram Send Message";
|
|
73
|
-
static readonly description = "Node that sends a message to a Telegram chat using a bot token.";
|
|
74
|
-
static readonly metadataOutputTypes: {
|
|
75
|
-
output: string;
|
|
76
|
-
};
|
|
77
|
-
static readonly requiredSettings: string[];
|
|
78
|
-
token: any;
|
|
79
|
-
chat_id: any;
|
|
80
|
-
text: any;
|
|
81
|
-
parse_mode: any;
|
|
82
|
-
disable_web_page_preview: any;
|
|
83
|
-
disable_notification: any;
|
|
84
|
-
reply_to_message_id: any;
|
|
85
|
-
process(): Promise<Record<string, unknown>>;
|
|
86
|
-
}
|
|
87
|
-
export declare const MESSAGING_NODES: readonly NodeClass[];
|
|
88
|
-
//# sourceMappingURL=messaging.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/nodes/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,yCAAyC;IACjE,MAAM,CAAC,QAAQ,CAAC,KAAK,yBAAyB;IAC9C,MAAM,CAAC,QAAQ,CAAC,WAAW,+KACmJ;IAC9K,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;;;;;;;;;MAUjC;IACF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAAyB;IAEzD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,QAAQ;IAQjC,UAAU,EAAE,GAAG,CAAC;IAQhB,KAAK,EAAE,GAAG,CAAC;IAQX,UAAU,EAAE,GAAG,CAAC;IAQhB,kBAAkB,EAAE,GAAG,CAAC;IAE1B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA2ClD;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,0CAA0C;IAClE,MAAM,CAAC,QAAQ,CAAC,KAAK,0BAA0B;IAC/C,MAAM,CAAC,QAAQ,CAAC,WAAW,uEAC2C;IACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IACF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAAyB;IAQjD,KAAK,EAAE,GAAG,CAAC;IAQX,UAAU,EAAE,GAAG,CAAC;IAQhB,OAAO,EAAE,GAAG,CAAC;IAQb,GAAG,EAAE,GAAG,CAAC;IAST,MAAM,EAAE,GAAG,CAAC;IAEd,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA6ClD;AAID,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,2CAA2C;IACnE,MAAM,CAAC,QAAQ,CAAC,KAAK,0BAA0B;IAC/C,MAAM,CAAC,QAAQ,CAAC,WAAW,iLACqJ;IAChL,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;;;;;;;;;;;;MAajC;IACF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAA0B;IAE1D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,QAAQ;IAQjC,UAAU,EAAE,GAAG,CAAC;IAQhB,KAAK,EAAE,GAAG,CAAC;IAQX,OAAO,EAAE,GAAG,CAAC;IAQb,kBAAkB,EAAE,GAAG,CAAC;IAQxB,uBAAuB,EAAE,GAAG,CAAC;IAU7B,oBAAoB,EAAE,GAAG,CAAC;IAS1B,qBAAqB,EAAE,GAAG,CAAC;IAE7B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA+ClD;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,4CAA4C;IACpE,MAAM,CAAC,QAAQ,CAAC,KAAK,2BAA2B;IAChD,MAAM,CAAC,QAAQ,CAAC,WAAW,qEACyC;IACpE,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IACF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,WAA0B;IAQlD,KAAK,EAAE,GAAG,CAAC;IASX,OAAO,EAAE,GAAG,CAAC;IAQb,IAAI,EAAE,GAAG,CAAC;IAQV,UAAU,EAAE,GAAG,CAAC;IAQhB,wBAAwB,EAAE,GAAG,CAAC;IAQ9B,oBAAoB,EAAE,GAAG,CAAC;IAS1B,mBAAmB,EAAE,GAAG,CAAC;IAE3B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAyDlD;AAID,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EAK/C,CAAC"}
|