-
Notifications
You must be signed in to change notification settings - Fork 5.5k
File URL and Path Improvements #17117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 3 Skipped Deployments
|
WalkthroughThis update standardizes file input handling across numerous components by replacing manual file system and URL stream logic with new platform utilities such as Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Action
participant PlatformUtils as Platform Utilities
User->>Action: Provide file input (URL or /tmp path)
Action->>PlatformUtils: getFileStream or getFileStreamAndMetadata(file)
PlatformUtils-->>Action: Returns stream (+ metadata)
Action->>Action: (Optional) Convert stream to Buffer/Base64
Action->>API: Upload file using stream/buffer/metadata
API-->>Action: Response
Action-->>User: Result
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 15
🔭 Outside diff range comments (7)
components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs (1)
61-67:⚠️ Potential issueMissing
await– this spreads aPromiseinstead of the prepared message body
prepareMessageBodywas converted to an async function in the app module.
Withoutawait, the spread operator will inject the unresolvedPromiseobject into the payload, producing an invalid Graph request.- ...this.microsoftOutlook.prepareMessageBody(this), + ...await this.microsoftOutlook.prepareMessageBody(this),components/syncmate_by_assitro/actions/send-message/send-message.mjs (1)
29-34:⚠️ Potential issue
fileNameshould be mandatory when media is supplied
file_nameis sent to the SyncMate API unconditionally, but the prop itself is optional.
Enforce it to avoid silentundefinedvalues or HTTP-400s from the upstream API.- fileName: { + fileName: { type: "string", label: "File Name", description: "The name of the file.", - optional: true, + optional: false, + when: (c) => Boolean(c.media), },Alternatively, throw a
ConfigurationErrorwhenthis.media && !this.fileName.Also applies to: 44-55
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)
50-53: 🛠️ Refactor suggestionLeverage
form.getHeaders()instead of private_boundary
_boundaryis an internal field; prefer the public API.- const headers = { - "Content-Type": `multipart/form-data; boundary=${data._boundary}`, - "X-Atlassian-Token": "no-check", - }; + const headers = { + ...data.getHeaders(), + "X-Atlassian-Token": "no-check", + };components/testmonitor/actions/create-test-result/create-test-result.mjs (1)
128-130:⚠️ Potential issuePossible crash when
e.responseis undefinedIf the request fails before a response is produced (e.g. network error),
e.responseisundefined, leading toTypeError: Cannot read properties of undefined. Guard against it before accessing nested fields.- throw new ConfigurationError((e.response.status === 400) - ? "It seems that there is already a test with this configuration!" - : e.response.data.message); + const message = e?.response?.status === 400 + ? "It seems that there is already a test with this configuration!" + : e?.response?.data?.message || e.message; + throw new ConfigurationError(message);components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (1)
61-61:⚠️ Potential issueUpdate
$summaryto use the new prop name
this.filePathno longer exists – it was renamed tofile. Referencing the old prop will throw at runtime and break the export summary.-$.export("$summary", `Transcription and scoring completed for audio file: ${this.filePath}`); +$.export("$summary", `Transcription and scoring completed for audio file: ${this.file}`);components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs (1)
69-69:⚠️ Potential issueFix stale variable in
$summary
this.filePathwas removed. Usethis.fileinstead:-$.export("$summary", `Scored scripted recording for audio file: ${this.filePath}`); +$.export("$summary", `Scored scripted recording for audio file: ${this.file}`);components/api4ai/api4ai.app.mjs (1)
41-45:⚠️ Potential issue
Content-Typeheader missing multipart boundaryManually setting
"multipart/form-data"omits the boundary parameter required by most servers. LetFormDatagenerate the correct header:- const headers = { - "Content-Type": "multipart/form-data", - "X-RapidAPI-Key": this.$auth.api_key, - "A4A-CLIENT-USER-ID": "pipedream.com", - }; + const headers = { + ...form.getHeaders(), // includes boundary + "X-RapidAPI-Key": this.$auth.api_key, + "A4A-CLIENT-USER-ID": "pipedream.com", + };
🧹 Nitpick comments (51)
components/syncmate_by_assitro/package.json (1)
3-3: Ensure version bump is documented.
You've updated the component version from0.1.0to0.1.1. Please verify that this change is reflected in your CHANGELOG or release notes and that any CI/CD tagging or publishing workflows are updated accordingly.components/jira/package.json (1)
3-3: Patch version bump
Bumped the package version to0.2.1. Ensure the CHANGELOG.md or release notes are updated to reflect this patch release.components/whatsapp_business/package.json (1)
3-3: Verify version bump and update changelog
The package version has been updated to0.0.11. Please ensure that your CHANGELOG.md (or release notes) reflects this bump and that any CI/CD or publishing workflows are aligned with the new version.components/spotlightr/package.json (1)
3-3: Bump patch version: confirm release notes and documentation updates.The version has been updated to 0.1.1—please ensure the CHANGELOG or release notes (and any README references) reflect this new patch release.
components/transifex/package.json (1)
3-3: Patch version bump to 0.1.1 approved.
Consider adding a corresponding entry in CHANGELOG.md or release notes for this patch release.components/trust/package.json (1)
3-3: Review version bump for semantic appropriateness
This change delivers new file‐stream and metadata handling features—consider whether a minor version bump (e.g.0.2.0) is more appropriate than a patch, and updateCHANGELOG.mdaccordingly.- "version": "0.1.1", + "version": "0.2.0",components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (2)
44-45: Typo & misleading example in prop description
"myFlie.pdf"contains a typo and references a PDF whereas this action expects a CSV.- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.csv).",
71-81: Potential memory issue when ingesting large CSVs
streamToUtf8buffers the entire file in RAM. For sizeable datasets this can OOM the worker. A streaming CSV parser (e.g.csv-parsein non-sync mode orfast-csv) would avoid that.Not blocking for parity with previous sync implementation, but worth tracking.
components/syncmate_by_assitro/common/utils.mjs (1)
8-16: Consider memory-safe stream consumption
streamToBufferconcatenates all chunks in memory, which is fine for small/medium files but risks OOM crashes when large uploads are processed.
If the consumer can work with streams, prefer piping/streaming rather than buffering the entire payload, or at minimum guard with a size limit.- stream.on("end", () => resolve(Buffer.concat(chunks))); + stream.on("end", () => { + /* Abort if >50 MB to avoid memory pressure */ + const buf = Buffer.concat(chunks); + if (buf.length > 50 * 1024 * 1024) { + return reject(new Error("File too large to buffer safely")); + } + resolve(buf); + });Also, consider removing the event listeners after they fire (
stream.off(...)) to avoid potential leaks.components/trust/actions/upload-video/upload-video.mjs (1)
22-23: Minor typo in prop description
/tmp/myFlie.pdf→/tmp/myFile.pdf.components/spotlightr/actions/create-video/create-video.mjs (1)
16-17: Typo in prop description
/tmp/myFlie.pdf→/tmp/myFile.pdf.components/what_are_those/common/utils.mjs (1)
8-16: Optional: protect against unbounded memory usage instreamToBufferFor very large files this helper will buffer the entire stream in memory.
Consider supporting a max-size guard or switching callers that only need Base64 to a streaming encoder.export const streamToBuffer = (stream, maxBytes = Infinity) => { return new Promise((resolve, reject) => { const chunks = []; let total = 0; - stream.on("data", (chunk) => chunks.push(chunk)); + stream.on("data", (chunk) => { + total += chunk.length; + if (total > maxBytes) { + stream.destroy(); + return reject(new Error("Stream exceeds maximum allowed size")); + } + chunks.push(chunk); + });components/transifex/transifex.app.mjs (1)
8-11: Typo in example path
/tmp/myFlie.pdf→/tmp/myFile.pdf- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).",components/youtube_data_api/actions/upload-thumbnail/common.mjs (1)
1-6: Stream acquisition looks fine, but surface errors fromgetFileStream
getFileStreamcan throw (e.g., unreachable URL, missing/tmppath). Consider wrapping it so the thrown error is surfaced with a clearer action-level message or adding an inline comment that the platform already surfaces it.components/youtube_data_api/actions/upload-channel-banner/common.mjs (1)
1-6: Same note on error surfacing as for thumbnail upload – optional, no blockers.components/vapi/actions/upload-file/upload-file.mjs (1)
16-17: Broaden prop description to reflect new URL support
getFileStreamAndMetadatatransparently handles both URLs and/tmppaths, but the description only mentions the latter. This can mislead users.- description: "The path to the file saved to the `/tmp` directory (e.g. `/tmp/example.txt`). [See the documentation](https://pipedream.com/docs/workflows/steps/code/nodejs/working-with-files/#the-tmp-directory).", + description: "Provide either a file URL or a path to a file in the `/tmp` directory (for example, `/tmp/example.txt`).",components/elevenlabs/actions/add-voice/add-voice.mjs (1)
21-21: Minor typos in description
"a n array"→"an array","myFlie"→"myFile".components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (1)
18-22: Fix typos and unify wording with platform convention
"myFlie"→"myFile".- Drop leading article for consistency (
"Provide either a file URL or a path …").components/zoho_workdrive/actions/upload-file/upload-file.mjs (1)
50-53: Correct typo in prop description
"myFlie.pdf"→"myFile.pdf".components/syncmate_by_assitro/actions/send-message/send-message.mjs (2)
26-27: Typo in prop description
myFlie.pdf→myFile.pdf.- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).",
45-47: Avoid reading the entire media file into memory
streamToBufferloads the whole file, which can be several MBs+. Streaming to base64 on-the-fly (e.g. withpipeline()andbase64-stream) keeps memory usage flat.components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs (2)
38-39: Typo in prop descriptionSame
myFlie.pdftypo as in the single-message action.
63-67: Per-message media is fully bufferedAs with the single-message action, each attachment is read entirely into RAM.
For bulk sends this can multiply memory consumption. Streaming (or at least piping through tmp files) would scale better.components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)
44-48: Extraneous space before.append
data .appendis valid JS but unconventional and may fail linting rules.- data .append("file", stream, { + data.append("file", stream, {components/wordpress_org/actions/upload-media/upload-media.mjs (1)
14-17: Minor typo
myFlie.pdf→myFile.pdf.components/dropbox/actions/upload-file/upload-file.mjs (2)
28-32: Typo in prop descriptionFix
myFlie.pdf.
73-88: Large file upload uses in-memory buffering inside SDKThe Dropbox SDK buffers the entire file before sending when given a stream.
For files over 150 MB usefilesUploadSessioninstead, or detect size and warn users.components/what_are_those/actions/identify-sneakers-from-photo/identify-sneakers-from-photo.mjs (2)
16-16: Fix typo and use a more realistic example in the prop description
/tmp/myFlie.pdfcontains a typo (myFlie) and references a PDF, which is unlikely for a sneaker-image workflow. A JPEG/PNG example is clearer to users.- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/image.jpg).",
22-28: Guard against missing metadata fields
metadata.sizeormetadata.contentTypemay beundefinedfor certain remote URLs, and passingundefinedtoform-datacan trigger header errors. Add a fallback to omit the field when unavailable.- data.append("image1", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, - }); + const opts = { filename: metadata?.name }; + if (metadata?.contentType) opts.contentType = metadata.contentType; + if (metadata?.size) opts.knownLength = metadata.size; + data.append("image1", stream, opts);components/testmonitor/actions/create-test-result/create-test-result.mjs (1)
96-104: Handle absent metadata gracefullyAs with other components,
contentTypeandsizecan be absent. Consider the same defensive pattern to avoid runtime errors when uploading attachments.components/youtube_data_api/actions/upload-video/upload-video.mjs (1)
25-29: Update example to match expected media typeA PDF example is misleading for a video upload action.
- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/video.mp4).",components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs (2)
25-29: Clarify example file name and fix typoUse an audio extension and fix the
myFlietypo.- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/voice.ogg).",
47-54: Defensive option construction forform-dataSame concern as other components—avoid passing
undefinedvalues:- formData.append("file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, - }); + const opts = { filename: metadata?.name }; + if (metadata?.contentType) opts.contentType = metadata.contentType; + if (metadata?.size) opts.knownLength = metadata.size; + formData.append("file", stream, opts);components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs (1)
24-28: Replace PDF example with an image exampleThumbnails are images; replace the PDF example and fix the typo.
- description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/thumbnail.png).",components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs (1)
40-48: Null-safe guard for optional metadata
metadata.contentType(and the other keys) can beundefinedfor some URLs. Consider defaulting or omitting these fields to avoid invalid headers:-data.append("user_audio_file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, -}); +data.append("user_audio_file", stream, { + ...(metadata.contentType && { contentType: metadata.contentType }), + ...(metadata.size && { knownLength: metadata.size }), + filename: metadata.name ?? "audio", +});components/microsoft_outlook/microsoft_outlook.app.mjs (3)
58-60: Typo in prop description
/tmp/myFlie.pdf➜/tmp/myFile.pdf.
256-267:streamToBase64loads the entire file into memoryFor large attachments this can exceed the 6 MB memory limit imposed by Outlook and quickly blow up Lambda memory. Stream-encode in chunks or enforce a size guard before reading the whole stream.
298-306: Parallelise attachment processing for better throughput
for … awaitprocesses attachments sequentially. For many small files you can reduce latency withPromise.all:-const attachments = []; -for (let i = 0; self.files && i < self.files.length; i++) { - const stream = await getFileStream(self.files[i]); - const base64 = await this.streamToBase64(stream); - attachments.push({ +const attachments = await Promise.all((self.files ?? []).map(async (file) => { + const stream = await getFileStream(file); + const base64 = await this.streamToBase64(stream); + return { "@odata.type": "#microsoft.graph.fileAttachment", - "name": path.basename(self.files[i]), - "contentType": mime.lookup(self.files[i]), - "contentBytes": base64, - }); -} + name: path.basename(file), + contentType: mime.lookup(file) || "application/octet-stream", + contentBytes: base64, + }; +}));components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs (2)
28-29: Minor typo
myFlie.pdf→myFile.pdf.
82-89: Index handling can be simplifiedUsing the loop index makes the intent clearer and avoids manually incrementing
i.-for (const file of files) { - const contents = await getFileStream(file); - fileInfo.push({ - contents, - path: `${normalizedPath}${filenames[i]}`, - }); - i++; -} +for (let idx = 0; idx < files.length; idx++) { + const contents = await getFileStream(files[idx]); + fileInfo.push({ + contents, + path: `${normalizedPath}${filenames[idx]}`, + }); +}components/api4ai/api4ai.app.mjs (3)
13-13: Typo and misleading example in prop description
myFlie.pdfis misspelled and a PDF example is confusing for an image prop.- description: "Input image. Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Input image. Provide either a file URL or a path to a file in the `/tmp` directory (for example, `/tmp/myFile.jpg`).",
17-25: Duplicate helper – consider consolidatingstreamToBuffer
streamToBuffernow appears in multiple components. Extracting it into a shared utility (e.g.@pipedream/platformor a local helper module) will reduce repetition and maintenance overhead.
47-47: Spelling
Perfrom→Perform.components/the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs (2)
70-70: Prop description typo
myFlie.pdf→myFile.pdf.
74-82: Helper duplication
streamToBufferis identical to the one added in other files. Moving this helper to a shared module will DRY up the codebase.components/what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs (1)
16-42: Multiple typos in prop descriptionsExamples:
- “front image image”
- “URLto” (missing space)
- “right image image”
- “sizeTag image image”
Please review and clean up the repeated words/spaces to maintain a professional UI.
components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (2)
31-32: Typo in example path
myFlie.pdf→myFile.pdf.
42-42: Style nit – stray spaceThere’s an extra space before
.append, which breaks the usual formatting:- data .append("file", stream, { + data.append("file", stream, {components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)
92-92: Spelling: “attachment”
attachement→attachmentin the summary string.components/trello/actions/create-card/create-card.mjs (1)
3-3: Missing import ordering consistencyProject files typically place external imports first, then internal (
../../common/constants.mjs). Keep ordering consistent.components/timetonic/actions/common/create-update-row.mjs (1)
74-74: Minor typo in user-facing description
myFlie.pdf→myFile.pdf.-Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf). +Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.pdf).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
components/testmonitor/yarn.lockis excluded by!**/yarn.lock,!**/*.lockpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (91)
components/api4ai/actions/alcohol-label-recognition/alcohol-label-recognition.mjs(1 hunks)components/api4ai/actions/background-removal/background-removal.mjs(1 hunks)components/api4ai/actions/brand-recognition/brand-recognition.mjs(1 hunks)components/api4ai/actions/car-image-background-removal/car-image-background-removal.mjs(1 hunks)components/api4ai/actions/furniture-and-household-item-recognition/furniture-and-household-item-recognition.mjs(1 hunks)components/api4ai/actions/image-anonymization/image-anonymization.mjs(1 hunks)components/api4ai/actions/nsfw-image-recognition/nsfw-image-recognition.mjs(1 hunks)components/api4ai/api4ai.app.mjs(2 hunks)components/api4ai/package.json(2 hunks)components/dropbox/actions/upload-file/upload-file.mjs(4 hunks)components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs(4 hunks)components/dropbox/package.json(2 hunks)components/elevenlabs/actions/add-voice/add-voice.mjs(3 hunks)components/elevenlabs/package.json(2 hunks)components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs(2 hunks)components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs(2 hunks)components/jira/package.json(2 hunks)components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs(1 hunks)components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs(1 hunks)components/microsoft_outlook/actions/create-contact/create-contact.mjs(1 hunks)components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs(1 hunks)components/microsoft_outlook/actions/download-attachment/download-attachment.mjs(1 hunks)components/microsoft_outlook/actions/find-contacts/find-contacts.mjs(1 hunks)components/microsoft_outlook/actions/find-email/find-email.mjs(1 hunks)components/microsoft_outlook/actions/list-contacts/list-contacts.mjs(1 hunks)components/microsoft_outlook/actions/list-folders/list-folders.mjs(1 hunks)components/microsoft_outlook/actions/list-labels/list-labels.mjs(1 hunks)components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs(1 hunks)components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs(1 hunks)components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs(2 hunks)components/microsoft_outlook/actions/send-email/send-email.mjs(2 hunks)components/microsoft_outlook/actions/update-contact/update-contact.mjs(1 hunks)components/microsoft_outlook/microsoft_outlook.app.mjs(4 hunks)components/microsoft_outlook/package.json(2 hunks)components/microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs(1 hunks)components/microsoft_outlook/sources/new-contact/new-contact.mjs(1 hunks)components/microsoft_outlook/sources/new-email/new-email.mjs(1 hunks)components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs(2 hunks)components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs(2 hunks)components/speechace/package.json(2 hunks)components/speechace/speechace.app.mjs(1 hunks)components/spotlightr/actions/create-video/create-video.mjs(2 hunks)components/spotlightr/package.json(2 hunks)components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs(3 hunks)components/supabase/package.json(2 hunks)components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs(3 hunks)components/syncmate_by_assitro/actions/send-message/send-message.mjs(3 hunks)components/syncmate_by_assitro/common/utils.mjs(1 hunks)components/syncmate_by_assitro/package.json(2 hunks)components/testmonitor/actions/create-test-result/create-test-result.mjs(3 hunks)components/testmonitor/package.json(2 hunks)components/the_bookie/actions/create-sales-invoice/create-sales-invoice.mjs(2 hunks)components/the_bookie/package.json(2 hunks)components/timetonic/actions/common/create-update-row.mjs(3 hunks)components/timetonic/actions/create-row/create-row.mjs(1 hunks)components/timetonic/actions/update-row/update-row.mjs(1 hunks)components/timetonic/package.json(2 hunks)components/transifex/actions/download-file/download-file.mjs(1 hunks)components/transifex/actions/upload-file/upload-file.mjs(3 hunks)components/transifex/package.json(2 hunks)components/transifex/sources/new-localization-activity-completed-instant/new-localization-activity-completed-instant.mjs(1 hunks)components/transifex/sources/new-task-for-set-of-strings-instant/new-task-for-set-of-strings-instant.mjs(1 hunks)components/transifex/transifex.app.mjs(1 hunks)components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs(3 hunks)components/trello/actions/create-card/create-card.mjs(3 hunks)components/trello/package.json(2 hunks)components/trust/actions/upload-video/upload-video.mjs(3 hunks)components/trust/package.json(2 hunks)components/twitter/actions/upload-media/upload-media.ts(3 hunks)components/twitter/package.json(2 hunks)components/twitter/twitter.app.mjs(0 hunks)components/vapi/actions/upload-file/upload-file.mjs(2 hunks)components/vapi/package.json(2 hunks)components/what_are_those/actions/find-sneakers-by-sku/find-sneakers-by-sku.mjs(1 hunks)components/what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs(3 hunks)components/what_are_those/actions/identify-sneakers-from-photo/identify-sneakers-from-photo.mjs(1 hunks)components/what_are_those/common/utils.mjs(1 hunks)components/what_are_those/package.json(2 hunks)components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs(3 hunks)components/whatsapp_business/package.json(2 hunks)components/wordpress_org/actions/upload-media/upload-media.mjs(2 hunks)components/wordpress_org/package.json(2 hunks)components/youtube_data_api/actions/upload-channel-banner/common.mjs(1 hunks)components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs(2 hunks)components/youtube_data_api/actions/upload-thumbnail/common.mjs(1 hunks)components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs(2 hunks)components/youtube_data_api/actions/upload-video/common.mjs(1 hunks)components/youtube_data_api/actions/upload-video/upload-video.mjs(2 hunks)components/youtube_data_api/package.json(2 hunks)components/zoho_workdrive/actions/upload-file/upload-file.mjs(2 hunks)components/zoho_workdrive/package.json(2 hunks)
💤 Files with no reviewable changes (1)
- components/twitter/twitter.app.mjs
🔇 Additional comments (73)
components/speechace/package.json (2)
3-3: Bump package version to 0.1.1
Version increment follows the PR’s release process to denote the updated file‐stream improvements.
16-16: Update @pipedream/platform dependency to ^3.1.0
Aligns this component with the new platform utilities (getFileStream,getFileStreamAndMetadata, etc.) introduced across the PR.components/trello/package.json (2)
3-3: Bump package version for new releaseThe version has been correctly incremented to
0.4.2to reflect the updated file‐stream handling improvements. Ensure this aligns with your changelog and release notes.
13-13: Upgrade platform dependency to include new file‐stream utilitiesUpdating
@pipedream/platformto^3.1.0brings in thegetFileStreamandgetFileStreamAndMetadatamethods required by this PR. Confirm compatibility with your other components and run the full test suite to catch any downstream issues.components/transifex/sources/new-task-for-set-of-strings-instant/new-task-for-set-of-strings-instant.mjs (1)
9-9: Confirm version bump consistency.
This non-functional update increments the component version to "0.0.2". Verify that it aligns with the overall release plan and matches version updates in related components.components/syncmate_by_assitro/package.json (1)
16-16: Verify compatibility with @pipedream/platform v3.1.0.
The dependency on@pipedream/platformwas bumped from^3.0.3to^3.1.0. Double-check the platform’s changelog for any breaking changes or new required prop validations and run your component’s integration tests against this new version.components/transifex/sources/new-localization-activity-completed-instant/new-localization-activity-completed-instant.mjs (1)
9-9: Approve version bump.
The component version has been correctly updated to0.0.2to align with the coordinated release across components.components/jira/package.json (1)
13-13: Upgrade @pipedream/platform to ^3.1.0
Confirm that v3.1.0 of@pipedream/platformprovides the newgetFileStreamandgetFileStreamAndMetadatautilities and introduces no breaking changes for this component.components/elevenlabs/package.json (2)
3-3: Patch version bump to 0.4.1 approved. Aligns with semantic versioning for a patch release.
16-16: Upgrade @pipedream/platform to ^3.1.0 approved. Matches the broader platform dependency standardization for the new file-stream utilities.components/the_bookie/package.json (2)
3-3: Patch version bump is appropriate
Version increment from0.1.0to0.1.1correctly reflects a non-breaking update in line with semantic versioning.
16-16: Dependency on @pipedream/platform updated
Bumping the dependency to^3.1.0aligns with the newly adopted streaming utilities (getFileStream,getFileStreamAndMetadata) across components.components/whatsapp_business/package.json (1)
16-16: Check compatibility for major platform dependency upgrade
The dependency@pipedream/platformhas been raised from^1.xto^3.1.0, which may introduce breaking changes. Verify that all existing imports and utilities (e.g.,getFileStream,getFileStreamAndMetadata) work correctly under the new version and run integration tests to confirm no regressions.components/spotlightr/package.json (1)
16-16:❓ Verification inconclusive
Upgrade
@pipedream/platform: validate compatibility.You've bumped the dependency to
^3.1.0, which includes new file‐stream utilities. Verify that this component has been updated to call the newgetFileStream/getFileStreamAndMetadataAPIs and that no existing behavior is broken.
🏁 Script executed:
#!/bin/bash # Verify usage of new platform APIs and run tests rg -n "getFileStream" -g "components/spotlightr/**/*" npm install npm testLength of output: 3830
Validate new file-stream API usage and restore test suite
We’ve bumped
@pipedream/platformto^3.1.0, which adds new file‐stream utilities. Our quick grep shows:
- components/spotlightr/actions/create-video/create-video.mjs imports and uses
getFileStreamAndMetadata- No occurrences of
getFileStreamfoundHowever, tests are currently failing with a missing
ts-jestpreset and dependency conflicts. Please:
- Confirm whether you need to call
getFileStreamanywhere else, or ifgetFileStreamAndMetadataalone suffices- Fix the Jest configuration/dependencies (e.g., add the correct
ts-jestpreset or resolve peers with--legacy-peer-deps)- Re-run the full test suite to ensure no regressions
components/transifex/package.json (1)
16-16:❓ Verification inconclusive
Verify compatibility of @pipedream/platform ^3.1.0.
A major version bump can introduce breaking API changes. Ensure all platform utilities used by this component work with v3.x.Run the following to confirm the version exists and flag if missing:
🏁 Script executed:
#!/bin/bash # Skip cloning: checks external npm registry only npm view @pipedream/platform versions --json | jq 'index("3.1.0")'Length of output: 71
Confirm @pipedream/platform v3.1.0 availability and compatibility.
npm registry shows that @pipedream/[email protected] is published. Please verify that all platform utilities used by this component (e.g., HTTP helpers, auth/event sources, etc.) are compatible with v3.x. Consult the v3.x migration guide and run the component’s tests to ensure nothing is broken.components/trust/package.json (1)
16-16:❓ Verification inconclusive
Confirm dependency upgrade covers required utilities
Verify that@pipedream/platform@^3.1.0indeed exportsgetFileStream,getFileStreamAndMetadata, and any other helpers this component now relies on.
🏁 Script executed:
# Check available exports in @pipedream/[email protected] npm view @pipedream/[email protected] dist --json | jq '.exports | keys'Length of output: 912
To inspect the package’s entry points and exports directly, let’s pull its full package.json metadata:
🏁 Script executed:
# Retrieve exports, main entry, and types definitions for @pipedream/[email protected] npm view @pipedream/[email protected] package.json --json | jq '{exports, main, types}'Length of output: 876
Confirm exports in @pipedream/platform@^3.1.0
I attempted to pull the package metadata vianpm view, but no export definitions were returned. Please manually verify that version 3.1.0 of@pipedream/platformexports all required utilities, including:
getFileStreamgetFileStreamAndMetadata- any other helpers your component relies on
You can inspect the distributed files yourself, for example:
npm pack @pipedream/[email protected] tar -tzf pipedream-platform-3.1.0.tgz | grep -E 'index\.js|dist/'components/supabase/package.json (2)
3-3: Version bump looks correctPatch‐level increment from
0.3.0→0.3.1matches an internal, non-breaking refactor. No further action needed.
16-16: Verify platform-library compatibilityUpgrading
@pipedream/platformfrom^3.0.3to^3.1.0is necessary forgetFileStream*helpers, but make sure:
- All other sub-packages under
components/that import@pipedream/platformhave also been bumped, otherwise you can hit mixed lockfile resolution.- If a lock-file exists, run a fresh install to capture the new semver range.
No code change required, just double-check before publishing.
components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs (2)
3-4: Good call switching togetFileStreamImporting the new helper removes the need for
fs/readFileSync, making the action work with both URLs and local/tmpfiles.
9-9: Component version bump acknowledgedThe internal refactor warrants
0.0.2; consistent with semver.components/trust/actions/upload-video/upload-video.mjs (1)
42-50: Fallbacks for missing metadata fields
getFileStreamAndMetadata()may not always be able to determinecontentType,size, or evenname(e.g. some presigned URLs).
form-datawill happily acceptundefined, but downstream APIs frequently reject such multipart parts.- data.append("file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, - }); + data.append("file", stream, { + contentType: metadata.contentType || "application/octet-stream", + knownLength: metadata.size ?? undefined, + filename: metadata.name ?? "upload", + });Please verify the Trust endpoint behaves correctly when one or more of those values are missing.
components/microsoft_outlook/actions/list-labels/list-labels.mjs (1)
7-7: Version bump looks goodNo functional changes detected; patch version increment is appropriate.
components/microsoft_outlook/actions/list-folders/list-folders.mjs (1)
7-7: Version bump looks goodNo functional changes detected; patch version increment is appropriate.
components/what_are_those/package.json (2)
3-3: Approve: version bump to 0.1.1.
The patch version increment aligns with the platform utility updates and signals a non-breaking release.
16-16: Approve: dependency upgrade to ^3.1.0.
Updating@pipedream/platformensures availability ofgetFileStreamand related utilities used in this component.components/youtube_data_api/package.json (2)
3-3: Approve: version bump to 0.6.3.
Patch version updated to reflect the unified file-handling refactor across actions.
14-14: Approve: dependency upgrade to ^3.1.0.
Aligns with other components to leverage the latest platform file-stream utilities.components/microsoft_outlook/package.json (2)
3-3: Approve: version bump to 1.5.1.
Incremented to reflect the new async streaming and attachment handling enhancements.
15-15: Approve: dependency upgrade to ^3.1.0.
Ensures the component uses the updated platform SDK that providesgetFileStreamand other helpers.components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1)
7-7: Approve: action version bump to 0.0.5.
Matches the coordinated release update across Microsoft Outlook actions; no functional changes introduced.components/microsoft_outlook/actions/create-contact/create-contact.mjs (1)
6-6: Approve: action version bump to 0.0.14.
Aligned with the broader versioning scheme for Microsoft Outlook actions; no logic changes.components/microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs (1)
8-8: Approve version bump
Version updated to 0.0.2 to align with the coordinated Microsoft Outlook component release.components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1)
7-7: Approve version bump
Version incremented to 0.0.5 as part of the global component update.components/testmonitor/package.json (2)
3-3: Approve package version bump
Bumped testmonitor package to 0.1.1 in line with PR objectives.
13-13: Approve dependency update
Updated@pipedream/platformto ^3.1.0 to support new file streaming utilities.components/microsoft_outlook/sources/new-contact/new-contact.mjs (1)
8-8: Approve version bump
Updated version to 0.0.15 as part of the coordinated Outlook component release.components/wordpress_org/package.json (2)
3-3: Approve package version bump
Bumped Wordpress.org component to 0.4.1.
13-13: Approve dependency update
Added@pipedream/platform^3.1.0 to enable unified file streaming and metadata handling.components/microsoft_outlook/actions/find-email/find-email.mjs (1)
7-7: Bump action version to 0.0.5
Updating only the version metadata to align with the PR’s standard versioning.components/transifex/actions/download-file/download-file.mjs (1)
8-8: Bump action version to 0.0.2
This is a metadata-only change with no impact on logic.components/vapi/package.json (2)
3-3: Bump package version to 0.1.1
Version increment to match the updated components and dependencies in this PR.
16-16: Update @pipedream/platform dependency to ^3.1.0
Aligns with the platform-wide upgrade enablinggetFileStreamutilities.components/twitter/package.json (2)
3-3: Bump package version to 2.3.1
Minor version bump reflecting coordinated updates across Twitter components.
19-19: Update @pipedream/platform dependency to ^3.1.0
Upgrades platform SDK to leverage unified file stream utilities.components/api4ai/package.json (2)
3-3: Bump package version to 0.1.1
Incrementing the package version to reflect the recent refactors.
30-30: Update @pipedream/platform dependency to ^3.1.0
Standardizing platform dependency across components for file-stream utilities.components/microsoft_outlook/actions/find-contacts/find-contacts.mjs (1)
6-6: Bump action version
The version increment from “0.0.13” to “0.0.14” is correct and aligns with the coordinated patch-level release for Microsoft Outlook actions.components/zoho_workdrive/package.json (1)
3-3: Update package version and platform dependency
Version bumped to 0.2.3 and@pipedream/platformlocked to^3.1.0to support the new file-stream utilities.Also applies to: 16-16
components/api4ai/actions/brand-recognition/brand-recognition.mjs (1)
8-8: Bump action version
Updating the version from “0.0.1” to “0.0.2” is consistent with the synchronized API4AI action release.components/dropbox/package.json (1)
3-3: Update package version and platform dependency
Version upgraded to 0.4.2 and@pipedream/platformset to^3.1.0to enable the new file-streaming helpers.Also applies to: 13-13
components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1)
7-7: Bump action version
Version updated from “0.0.6” to “0.0.7” in line with the Microsoft Outlook component’s coordinated release.components/api4ai/actions/background-removal/background-removal.mjs (1)
11-11: Bump version to 0.0.2
Consistent with coordinated version updates across API4AI actions; no functional changes introduced.components/microsoft_outlook/actions/update-contact/update-contact.mjs (1)
6-6: Bump version to 0.0.14
Aligned with other Microsoft Outlook actions in this release; behavior remains unchanged.components/microsoft_outlook/actions/list-contacts/list-contacts.mjs (1)
6-6: Bump version to 0.0.14
Consistent version management across Outlook actions; no logic modifications.components/microsoft_outlook/sources/new-email/new-email.mjs (1)
10-10: Bump version to 0.0.18
Version increment matches coordinated Outlook component updates; no functional changes.components/api4ai/actions/furniture-and-household-item-recognition/furniture-and-household-item-recognition.mjs (1)
8-8: Bump version to 0.0.2
This version update aligns with other API4AI actions; functionality remains unchanged.components/api4ai/actions/image-anonymization/image-anonymization.mjs (1)
10-10: Approve version bump for Image Anonymization
Updating the version to"0.0.2"is consistent with the coordinated release across API4AI actions.components/api4ai/actions/alcohol-label-recognition/alcohol-label-recognition.mjs (1)
8-8: Approve version bump for Alcohol Label Recognition
Version changed to"0.0.2"in line with the bulk update across API4AI components.components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (1)
8-8: Approve version bump for Add Label to Email
Incrementing the action version to"0.0.7"matches the coordinated version alignment within Microsoft Outlook integration.components/api4ai/actions/nsfw-image-recognition/nsfw-image-recognition.mjs (1)
9-9: Approve version bump for NSFW Image Recognition
Version updated to"0.0.2"in sync with other API4AI action components.components/api4ai/actions/car-image-background-removal/car-image-background-removal.mjs (1)
11-12: Version bump only – no concernsPatch-level version increment looks fine and keeps semver semantics intact.
components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (1)
68-72: Good catch – now correctly awaits async body preparationAwaiting
prepareMessageBodyprevents the earlier race condition. Looks correct.components/microsoft_outlook/actions/send-email/send-email.mjs (1)
66-67: Awaiting the asyncprepareMessageBodyis the right fixChanging the spread to
...awaitguarantees the message body is fully built before it is handed off tosendEmail. Looks good and removes a latent race.components/youtube_data_api/actions/upload-video/common.mjs (1)
15-26:❌ Incorrect review comment
insertVideoparameter may be wrong (contentvsmedia.body)Every other YouTube helper here (thumbnail/banner) passes the stream under
media: { body }. Switching tocontent: bodyrisks a 400 from the API unless the wrapper explicitly aliases it.- content: body, + media: { + body, + },Please verify the expected shape; grep other calls to
insertVideoto confirm.
🏁 Script executed:
#!/bin/bash # Inspect how insertVideo is called elsewhere to confirm the parameter shape rg -A3 -B2 'insertVideo\('Length of output: 936
🏁 Script executed:
#!/bin/bash # Show insertVideo implementation to verify expected options shape rg -A20 -B5 'async insertVideo' components/youtube_data_api/common-app.mjsLength of output: 769
🏁 Script executed:
#!/bin/bash # Show how youtube.videos.insert is invoked including media or content usage rg -A20 -B5 'youtube.videos.insert' components/youtube_data_api/common-app.mjsLength of output: 661
No change needed for
insertVideoparameterThe
insertVideohelper expects a top-levelcontentoption and internally maps it tomedia.body. Your current callawait this.youtubeDataApi.insertVideo({ …, content: body, });correctly passes the stream – no rewrite to
media: { body }is required.Likely an incorrect or invalid review comment.
components/syncmate_by_assitro/actions/send-bulk-messages/send-bulk-messages.mjs (1)
54-57: Upper-boundmessagesNumberto prevent accidental abuseA value like
10 000will loop synchronously and may hit rate limits or exhaust memory.
Consider validatingmessagesNumber(e.g.>=1 && <=100).components/wordpress_org/actions/upload-media/upload-media.mjs (1)
42-43: Consider streaming base64 only when requiredWordPress will happily accept raw binary streams; converting to base64 is unnecessary here and would inflate payload size. Confirm that
createMediaexpects the raw stream; if so, pass it directly.components/what_are_those/actions/find-sneakers-by-sku/find-sneakers-by-sku.mjs (1)
1-23: Looks goodUses shared
streamToBuffer, correctly handles stream ➜ base64 conversion, and adopts the newgetFileStreamAPI. No issues spotted.components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)
73-90: Handle absent/invalid metadata gracefully
getFileStreamAndMetadata()may returnundefinedfields (e.g. content-type). Pass fallback values or strip the keys to prevent Trello rejecting the upload.-form.append("file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, -}); +form.append("file", stream, { + contentType: metadata.contentType || "application/octet-stream", + knownLength: metadata.size, + filename: metadata.name || "file", +});components/timetonic/actions/create-row/create-row.mjs (1)
8-8: Version bump looks correctOnly the
versionfield was updated; no further action required.components/timetonic/actions/update-row/update-row.mjs (1)
8-8: Version bump looks correctConsistent with the companion action.
components/timetonic/package.json (2)
3-3: Package version bump is fine
0.1.1accurately reflects the internal action version increases.
16-16:❓ Verification inconclusive
Ensure full compatibility with
@pipedream/platform@^3.1.0Jumping from
^1.6.5to^3.1.0is a major-version leap. Double-check that no other Timetonic files import APIs that were removed or renamed in@pipedream/platformv3.Run this quick scan to spot any deprecated imports/usages:
🏁 Script executed:
#!/bin/bash # List all @pipedream/platform imports and show 5 lines of context rg -A3 -B1 '@pipedream/platform' components/timetonicLength of output: 1404
Verify @pipedream/platform v3.1.0 API usage
I ran a scan of all
@pipedream/platformimports incomponents/timetonic—nothing obvious was removed, but this major jump may rename or relocate some APIs. Please confirm that each of these remains exported in v3.1.0 (and update them if not):• components/timetonic/timetonic.app.mjs
import { axios } from "@pipedream/platform"
• components/timetonic/actions/common/create-update-row.mjs
import { getFileStreamAndMetadata } from "@pipedream/platform"
• components/timetonic/sources/common/base.mjs
import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"If any API has moved or been renamed in v3, please adjust these imports accordingly before merging.
components/timetonic/actions/common/create-update-row.mjs (1)
4-4: Import requires the new platform version
getFileStreamAndMetadataonly exists ≥ 3.x, so the preceding dependency bump is mandatory. Make sure CI installs the updated package; otherwise this file will fail at runtime.
components/microsoft_outlook/actions/download-attachment/download-attachment.mjs
Show resolved
Hide resolved
components/what_are_those/actions/grade-sneakers-condition/grade-sneakers-condition.mjs
Show resolved
Hide resolved
components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs
Show resolved
Hide resolved
GTFalcao
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@michelle0927 I commented on a few instances where:
- components where a prop is removed, and/or a required prop is added, need a major version bump (e.g.
1.0.0) since they can break existing user workflows - I think it's better to keep existing prop names (e.g.
filePathinstead of changing them tofile), updating only the label and description. This way existing user input gets preserved. (I did not comment this on the entire PR, only a few cases; feel free to do it for all changed props if you agree)
components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs
Outdated
Show resolved
Hide resolved
components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
Show resolved
Hide resolved
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
components/youtube_data_api/actions/upload-video/upload-video.mjs (1)
25-29: Same naming/typo issue as banner uploadTo stay consistent with the banner action (and the wider refactor), either rename
filePath→fileor explicitly state thatfilePathnow accepts URLs too.
Also fix “myFlie” → “myFile”.- filePath: { + file: { @@ - description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (e.g., /tmp/myFile.pdf).",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (18)
components/dropbox/actions/upload-file/upload-file.mjs(3 hunks)components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs(4 hunks)components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs(2 hunks)components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs(2 hunks)components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs(2 hunks)components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs(2 hunks)components/spotlightr/actions/create-video/create-video.mjs(2 hunks)components/syncmate_by_assitro/actions/send-message/send-message.mjs(3 hunks)components/twitter/actions/upload-media/upload-media.ts(3 hunks)components/vapi/actions/upload-file/upload-file.mjs(1 hunks)components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs(3 hunks)components/wordpress_org/actions/upload-media/upload-media.mjs(2 hunks)components/youtube_data_api/actions/upload-channel-banner/common.mjs(1 hunks)components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs(2 hunks)components/youtube_data_api/actions/upload-thumbnail/common.mjs(1 hunks)components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs(2 hunks)components/youtube_data_api/actions/upload-video/common.mjs(2 hunks)components/youtube_data_api/actions/upload-video/upload-video.mjs(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (16)
- components/youtube_data_api/actions/upload-channel-banner/common.mjs
- components/youtube_data_api/actions/upload-video/common.mjs
- components/vapi/actions/upload-file/upload-file.mjs
- components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs
- components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs
- components/youtube_data_api/actions/upload-thumbnail/common.mjs
- components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs
- components/dropbox/actions/upload-file/upload-file.mjs
- components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs
- components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs
- components/syncmate_by_assitro/actions/send-message/send-message.mjs
- components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
- components/wordpress_org/actions/upload-media/upload-media.mjs
- components/twitter/actions/upload-media/upload-media.ts
- components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
- components/spotlightr/actions/create-video/create-video.mjs
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: Lint Code Base
- GitHub Check: pnpm publish
🔇 Additional comments (2)
components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs (1)
18-22: Property key still reads “filePath” → consider renaming + typo fixThe UI label/description now advertise a generic “File” input that may be a URL or a path, yet the prop key remains
filePath.
Keeping the old name is slightly misleading and diverges from the rest of the PR narrative (“singlefileproperty”), and the example path contains a typo (myFlie).- filePath: { + file: { @@ - description: "Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide either a file URL or a path to a file in the /tmp directory (e.g., /tmp/myFile.pdf).",If you keep the old key for backward-compat, please add a deprecation note in the description.
Likely an incorrect or invalid review comment.
components/youtube_data_api/actions/upload-video/upload-video.mjs (1)
25-29: Verify internal references after renameIf you apply the rename above, make sure every
this.filePathorprops.filePathusage inside the action (orcommonhelper) is updated tofile, otherwise the stream retrieval will break.#!/bin/bash # Find lingering references to `filePath` in the two YouTube upload actions rg -n --context 2 $'filePath' components/youtube_data_api/actions/upload-channel-banner components/youtube_data_api/actions/upload-video
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
components/youtube_data_api/package.json (1)
3-3: Confirm major version bump to 1.0.0
This upgrade denotes a breaking release—please document all breaking changes in your CHANGELOG or release notes and notify downstream consumers.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (26)
components/dropbox/actions/upload-file/upload-file.mjs(3 hunks)components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs(4 hunks)components/dropbox/package.json(2 hunks)components/elevenlabs/actions/add-voice/add-voice.mjs(3 hunks)components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs(2 hunks)components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs(2 hunks)components/microsoft_outlook/microsoft_outlook.app.mjs(4 hunks)components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs(2 hunks)components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs(2 hunks)components/speechace/speechace.app.mjs(1 hunks)components/spotlightr/actions/create-video/create-video.mjs(2 hunks)components/spotlightr/package.json(2 hunks)components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs(3 hunks)components/transifex/transifex.app.mjs(1 hunks)components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs(3 hunks)components/trello/actions/create-card/create-card.mjs(4 hunks)components/trust/actions/upload-video/upload-video.mjs(3 hunks)components/twitter/actions/upload-media/upload-media.ts(3 hunks)components/vapi/actions/upload-file/upload-file.mjs(1 hunks)components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs(3 hunks)components/wordpress_org/actions/upload-media/upload-media.mjs(2 hunks)components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs(2 hunks)components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs(2 hunks)components/youtube_data_api/actions/upload-video/upload-video.mjs(2 hunks)components/youtube_data_api/package.json(2 hunks)components/zoho_workdrive/actions/upload-file/upload-file.mjs(2 hunks)
✅ Files skipped from review due to trivial changes (1)
- components/transifex/transifex.app.mjs
🚧 Files skipped from review as they are similar to previous changes (24)
- components/speechace/speechace.app.mjs
- components/spotlightr/package.json
- components/dropbox/package.json
- components/elevenlabs/actions/add-voice/add-voice.mjs
- components/youtube_data_api/actions/upload-video/upload-video.mjs
- components/whatsapp_business/actions/send-voice-message/send-voice-message.mjs
- components/dropbox/actions/upload-file/upload-file.mjs
- components/twitter/actions/upload-media/upload-media.ts
- components/spotlightr/actions/create-video/create-video.mjs
- components/zoho_workdrive/actions/upload-file/upload-file.mjs
- components/trello/actions/create-card/create-card.mjs
- components/microsoft_outlook/microsoft_outlook.app.mjs
- components/speechace/actions/transcribe-and-score-recording/transcribe-and-score-recording.mjs
- components/speechace/actions/score-scripted-recording/score-scripted-recording.mjs
- components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
- components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
- components/youtube_data_api/actions/upload-channel-banner/upload-channel-banner.mjs
- components/youtube_data_api/actions/upload-thumbnail/upload-thumbnail.mjs
- components/dropbox/actions/upload-multiple-files/upload-multiple-files.mjs
- components/supabase/actions/batch-insert-rows/batch-insert-rows.mjs
- components/wordpress_org/actions/upload-media/upload-media.mjs
- components/trust/actions/upload-video/upload-video.mjs
- components/vapi/actions/upload-file/upload-file.mjs
- components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: pnpm publish
- GitHub Check: Lint Code Base
- GitHub Check: Verify TypeScript components
- GitHub Check: Publish TypeScript components
🔇 Additional comments (1)
components/youtube_data_api/package.json (1)
14-14: Validate@pipedream/platformdependency upgrade to ^3.1.0
Ensure your component code leverages any new APIs and handles deprecations introduced in v3.1.0. Run full integration and smoke tests to catch regressions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (3)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)
28-33:filesprop still typed as a single string – breaks multi-file input
You’re iterating overthis.fileslater (treating it as an array), but the prop is declared astype: "string". The UI will expose a single text box and the runtime will iterate over the string’s characters, sending one byte per request.- files: { - type: "string", + files: { + type: "string[]", label: "File Paths or URLs", - description: "Provide either an array of file URLs or paths to files in the /tmp directory (for example, /tmp/myFlie.pdf).", + description: "Provide an array of file URLs or paths to files in the /tmp directory (e.g., /tmp/myFile.pdf).", },components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (1)
38-42: Re-introduce path validation to prevent arbitrary-file reads
Thefileprop accepts any string andgetFileStreamAndMetadatais invoked without guarding. A malicious user could supply../../etc/shadow(or any absolute path) and the worker will happily stream it.+// Guard against arbitrary file reads +if (!/^https?:\/\//.test(file) && !file.startsWith("/tmp/")) { + throw new Error("Local file paths must be under /tmp"); +}(The guard should be placed right before calling
getFileStreamAndMetadata.)Also applies to: 73-82
components/trello/actions/create-card/create-card.mjs (1)
114-115: Prop description still references removed fields
The sentence about File Attachment Path / URL / Type is obsolete after the refactor.Update or remove it to avoid confusing users.
🧹 Nitpick comments (5)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (2)
37-39: Sequential upload – consider Promise.all for better throughput
Large attachment batches are streamed one-by-one; Jira accepts parallel uploads. Wrapping the per-file logic inPromise.all(this.files.map(...))can cut runtime noticeably for N>1 without complicating error handling.
44-44: Accidental space before.append
data .appendparses, but it’s unusual and easy to miss in searches/linters.- data .append("file", stream, { + data.append("file", stream, {components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs (2)
78-82: Fallback when metadata is incomplete
metadata.contentType,metadata.size, ormetadata.namecan be undefined depending on the source. Provide sensible defaults to avoid request failures.-form.append("file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, -}); +form.append("file", stream, { + contentType: metadata.contentType || "application/octet-stream", + knownLength: metadata.size, + filename: metadata.name || "file", +});
92-93: Minor typo in success message
attachement→attachment.-$.export("$summary", `Successfully added attachement to card ${cardId}`); +$.export("$summary", `Successfully added attachment to card ${cardId}`);components/trello/actions/create-card/create-card.mjs (1)
247-253: Add metadata fallbacks for robustness
Same remark as in the attachment action: default values avoid runtime errors when metadata fields are missing.- form.append("file", stream, { - contentType: metadata.contentType, - knownLength: metadata.size, - filename: metadata.name, - }); + form.append("file", stream, { + contentType: metadata.contentType || "application/octet-stream", + knownLength: metadata.size, + filename: metadata.name || "file", + });
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs(2 hunks)components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs(2 hunks)components/jira/package.json(2 hunks)components/trello/actions/add-attachment-to-card/add-attachment-to-card.mjs(3 hunks)components/trello/actions/create-card/create-card.mjs(4 hunks)components/trello/package.json(2 hunks)
✅ Files skipped from review due to trivial changes (1)
- components/trello/package.json
🚧 Files skipped from review as they are similar to previous changes (2)
- components/jira/package.json
- components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Lint Code Base
- GitHub Check: Verify TypeScript components
- GitHub Check: Publish TypeScript components
🔇 Additional comments (2)
components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)
50-52: Leaking FormData internals – usegetBoundary()instead of_boundary
_boundaryis an implementation detail ofform-dataand may break on upgrades. Prefer the public API:- "Content-Type": `multipart/form-data; boundary=${data._boundary}`, + "Content-Type": `multipart/form-data; boundary=${data.getBoundary()}`,components/trello/actions/create-card/create-card.mjs (1)
244-253: 👍 Conditional streaming fix looks good
The newif (file)guard prevents failures in “copy-only” flows.
@vunguyenhung For Twitter, make sure you're publishing the |
|
Hello everyone, I have tested this PR and there're some test cases failed or needed improvement. Please check the test report below for more information |
|
Hi everyone, all test cases are passed! Ready for release! Test report |
|
/approve |
|
Should check the lint fail before merging - might be a package that doesn't have its platform version updated to 3.1 |
@jcortes Can you help explain the Lint Code Base error? It's coming from a change made in this commit. It seems like it's looking for an |
|
Hi @michelle0927 I was also running into this exact same issue so I decided to put these lines in the gh action here in order for the workflow to have those compiled files from Typescript because we are ignoring them when it comes to Typscript apps |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.github/workflows/pull-request-checks.yaml (1)
99-99: Suggest renaming step for clarity.Consider renaming the step from "Build TypeScript Components" to "Compile TypeScript Components" (or similar) to better reflect that it invokes the
buildscript and to maintain consistency with other CI step names.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/pull-request-checks.yaml(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: pnpm publish
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: Lint Code Base
🔇 Additional comments (1)
.github/workflows/pull-request-checks.yaml (1)
100-100: ```shell
#!/bin/bashCheck 'outDir' and 'module' in tsconfig files
rg '"outDir"' -n --glob "tsconfig*.json"
rg '"module"' -n --glob "tsconfig*.json"Locate and inspect the post-build script
tsfile=$(fd tsPostBuild.mjs | head -n 1)
if [ -n "$tsfile" ]; then
echo "---- $tsfile ----"
sed -n '1,200p' "$tsfile"
else
echo "tsPostBuild.mjs not found"
fi</details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
|
/approve |
|
Thank you for your message. I’m currently out of the office from June 24–29, 2025, and will return on Monday, June 30. During this time, I will have limited access to email.
If you need immediate assistance:
• Project or Technical Support: Contact Randy Wandell at ***@***.***
• Billing or Operations: Contact Todd Holcombe at ***@***.***
For non-urgent matters, I’ll respond within 24 hours of my return. To schedule time with me directly, feel free to use my calendar link<https://connect.vantagepoint.io/meetings/dcockrum>.
Thank you for your understanding. I look forward to reconnecting soon.
Best regards,
David Cockrum
Founder & CEO | Vantage Point
The Trusted Salesforce & HubSpot Partner for Financial Services
📧 ***@***.*** | 🌐 vantagepoint.io<https://vantagepoint.io>
On Mon, 23 Jun 2025 16:31:49 -0500, michelle0927 ***@***.***) wrote:
[https://avatars.githubusercontent.com/u/10889229?s=20&v=4]michelle0927 left a comment (PipedreamHQ/pipedream#17117)<#17117 (comment)>
/approve
—
Reply to this email directly, view it on GitHub<#17117 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BFJHKLD2UGWUQJEEHCH3G4D3FBW4LAVCNFSM6AAAAAB7I4RVOGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSOJYGAYDMMJRGI>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Updates components to utilize
getFileStreamorgetFileStreamAndMetadataSummary by CodeRabbit
New Features
Bug Fixes
Refactor
Chores