-
Notifications
You must be signed in to change notification settings - Fork 5.6k
[ACTIONS] survicate - new components #19411
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 GitHub. 2 Skipped Deployments
|
WalkthroughThis PR introduces a new Survicate component integration with ten action modules and a complete API client layer in the app module, enabling data retrieval and management operations through the Survicate Data Export API. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Pre-merge checks and finishing touches❌ Failed checks (2 warnings, 1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. 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.
Actionable comments posted: 4
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (12)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs(1 hunks)components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs(1 hunks)components/survicate/actions/get-response/get-response.mjs(1 hunks)components/survicate/actions/get-survey/get-survey.mjs(1 hunks)components/survicate/actions/list-questions/list-questions.mjs(1 hunks)components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs(1 hunks)components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs(1 hunks)components/survicate/actions/list-responses/list-responses.mjs(1 hunks)components/survicate/actions/list-surveys/list-surveys.mjs(1 hunks)components/survicate/common/constants.mjs(1 hunks)components/survicate/package.json(2 hunks)components/survicate/survicate.app.mjs(1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Applied to files:
components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjscomponents/survicate/actions/list-responses/list-responses.mjscomponents/survicate/actions/list-respondent-responses/list-respondent-responses.mjscomponents/survicate/actions/get-response/get-response.mjs
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
Applied to files:
components/survicate/actions/list-responses/list-responses.mjscomponents/survicate/survicate.app.mjs
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
Applied to files:
components/survicate/package.json
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.
Applied to files:
components/survicate/survicate.app.mjs
🧬 Code graph analysis (8)
components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (6)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs (1)
response(28-33)components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/get-survey/get-survey.mjs (1)
response(29-32)components/survicate/actions/list-responses/list-responses.mjs (1)
response(52-60)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/actions/list-questions/list-questions.mjs (9)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs (1)
response(28-33)components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (1)
response(28-33)components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/get-survey/get-survey.mjs (1)
response(29-32)components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (1)
response(44-51)components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
response(44-51)components/survicate/actions/list-responses/list-responses.mjs (1)
response(52-60)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/actions/list-responses/list-responses.mjs (3)
components/survicate/actions/list-questions/list-questions.mjs (1)
response(44-51)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (2)
components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
response(44-51)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs (4)
components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (1)
response(28-33)components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/get-survey/get-survey.mjs (1)
response(29-32)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/actions/get-survey/get-survey.mjs (7)
components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/list-questions/list-questions.mjs (1)
response(44-51)components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (1)
response(44-51)components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
response(44-51)components/survicate/actions/list-responses/list-responses.mjs (1)
response(52-60)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/actions/list-surveys/list-surveys.mjs (9)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs (1)
response(28-33)components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (1)
response(28-33)components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/get-survey/get-survey.mjs (1)
response(29-32)components/survicate/actions/list-questions/list-questions.mjs (1)
response(44-51)components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (1)
response(44-51)components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
response(44-51)components/survicate/actions/list-responses/list-responses.mjs (1)
response(52-60)components/survicate/survicate.app.mjs (2)
response(17-22)response(52-58)
components/survicate/survicate.app.mjs (9)
components/survicate/actions/delete-personal-data/delete-personal-data.mjs (1)
response(28-33)components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (1)
response(28-33)components/survicate/actions/get-response/get-response.mjs (1)
response(39-43)components/survicate/actions/get-survey/get-survey.mjs (1)
response(29-32)components/survicate/actions/list-questions/list-questions.mjs (1)
response(44-51)components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (1)
response(44-51)components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
response(44-51)components/survicate/actions/list-responses/list-responses.mjs (1)
response(52-60)components/survicate/actions/list-surveys/list-surveys.mjs (1)
response(43-50)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Lint Code Base
- GitHub Check: pnpm publish
- GitHub Check: Verify TypeScript components
- GitHub Check: Publish TypeScript components
🔇 Additional comments (10)
components/survicate/package.json (1)
3-3: LGTM!The version bump to 0.1.0 appropriately reflects the addition of new features, and the @pipedream/platform dependency is correctly added.
Also applies to: 15-16
components/survicate/actions/list-surveys/list-surveys.mjs (1)
1-55: LGTM!The action follows the standard Pipedream pattern with appropriate annotations for a read-only list operation. The use of optional chaining in the summary export safely handles cases where response.data might be undefined.
components/survicate/common/constants.mjs (1)
1-9: LGTM!Clean constants definition for the Survicate API integration.
components/survicate/actions/list-respondent-responses/list-respondent-responses.mjs (1)
1-56: LGTM!The action correctly implements the list respondent responses functionality with appropriate props and a detailed summary message that includes the respondent UUID.
Note: The
startparameter description at line 29 has the same potential clarity issue flagged inlist-responses.mjsregarding "before this timestamp."components/survicate/actions/list-respondent-attributes/list-respondent-attributes.mjs (1)
1-56: LGTM!The action follows the established pattern with appropriate props and a detailed summary. The
startparameter usage for pagination by attribute ID is noted (see comment onlist-questions.mjsregardingstartparameter semantics).components/survicate/actions/list-questions/list-questions.mjs (1)
28-34: Verify thestartparameter semantics against the actual Survicate API.The
startprop description indicates it's "The unique identifier of the question" for pagination, but other actions use it differently:
list-responses.mjs: "Optional start timestamp for filtering responses"list-respondent-attributes.mjs: "The unique identifier of the attribute"Confirm whether these different usages align with the actual Survicate API endpoint specifications, as the public documentation does not explicitly document a "start" parameter.
components/survicate/actions/list-responses/list-responses.mjs (1)
28-41: [rewritten comment]
[classification tag]components/survicate/actions/get-response/get-response.mjs (1)
3-47: Correct dependent prop wiring and run implementationThis action is wired cleanly:
responseIdcorrectly depends onsurveyIdvia the thirdpropDefinitionargument, so response options are scoped to the selected survey.runforwardssurveyIdandresponseIdtoapp.getResponseand returns the API result.- Summary string uses
response.uuid, which matches howresponseIdoptions are built from theuuidfield.Assuming the underlying app method returns the expected JSON object (see app review), this action looks good.
components/survicate/actions/get-survey/get-survey.mjs (1)
3-36: Use the knownsurveyIdprop in the summary instead ofresponse.idFor the summary you currently rely on a field from the API response:
$.export("$summary", `Successfully retrieved survey with ID \`${response.id}\``);Since the user already provided
surveyIdand that’s what you passed to the API, you can decouple the summary from the exact response shape and avoid issues if the API uses a different key or nesting:- $.export("$summary", `Successfully retrieved survey with ID \`${response.id}\``); + $.export("$summary", `Successfully retrieved survey with ID \`${surveyId}\``);This keeps the UX the same while being more robust to API schema changes.
⛔ Skipped due to learnings
Learnt from: GTFalcao Repo: PipedreamHQ/pipedream PR: 12731 File: components/hackerone/actions/get-members/get-members.mjs:3-28 Timestamp: 2024-10-08T15:33:38.240Z Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.Learnt from: GTFalcao Repo: PipedreamHQ/pipedream PR: 12731 File: components/hackerone/actions/get-members/get-members.mjs:3-28 Timestamp: 2024-07-04T18:11:59.822Z Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.components/survicate/actions/get-personal-data-counters/get-personal-data-counters.mjs (1)
3-37: Action wiring and summary are correctThe action implementation accurately reflects the Survicate API:
GET /v2/personal-data/countersendpoint.- The operation is read-only (GET method), matching the
readOnlyHint: trueannotation.- Summary "Successfully retrieved personal data counters" is appropriate and does not expose the email value.
No changes needed.
components/survicate/actions/delete-personal-data/delete-personal-data.mjs
Show resolved
Hide resolved
components/survicate/actions/delete-personal-data/delete-personal-data.mjs
Show resolved
Hide resolved
michelle0927
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.
LGTM! Ready for QA!
|
Hi everyone, all test cases are passed! Ready for release! Test reports
|
WHY
Resolves #13419
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.