-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New Components - serphouse #18910
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
New Components - serphouse #18910
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
WalkthroughAdds two new Serphouse action modules (Google Jobs Search and Perform Search), implements a full API client and propDefinitions in Changes
Sequence Diagram(s)sequenceDiagram
participant Action as Action Module
participant App as serphouse.app
participant API as Serphouse API
Note over Action: Start action run
Action->>App: call this.serphouse.getDomainType(domain) [perform-search only]
alt domain requires locationId
Action->>Action: validate locationId -> throw ConfigurationError if missing
end
Action->>App: call this.serphouse.performSearch(mapped_params) or googleJobsSearch(mapped_params)
App->>App: _baseUrl() and _makeRequest(path, opts)
App->>API: HTTP request with Authorization header
API-->>App: response { status, data }
App-->>Action: return response
alt response.status == "success"
Action->>Action: set $summary
end
Action-->>User: return full response
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (2 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: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (4)
components/serphouse/actions/google-jobs-search/google-jobs-search.mjs(1 hunks)components/serphouse/actions/perform-search/perform-search.mjs(1 hunks)components/serphouse/package.json(2 hunks)components/serphouse/serphouse.app.mjs(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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/serphouse/serphouse.app.mjs
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
PR: PipedreamHQ/pipedream#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/serphouse/package.json
🧬 Code graph analysis (3)
components/serphouse/actions/google-jobs-search/google-jobs-search.mjs (1)
components/serphouse/actions/perform-search/perform-search.mjs (1)
response(105-124)
components/serphouse/serphouse.app.mjs (1)
components/serphouse/actions/perform-search/perform-search.mjs (1)
type(101-101)
components/serphouse/actions/perform-search/perform-search.mjs (2)
components/serphouse/serphouse.app.mjs (3)
type(29-29)type(53-53)type(119-125)components/serphouse/actions/google-jobs-search/google-jobs-search.mjs (1)
response(57-68)
⏰ 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: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: pnpm publish
jcortes
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.
Hi @michelle0927 lgtm! Ready for QA!
For Integration QA: |
|
Hello everyone, I have tested this PR and there're some test cases failed or needed improvement. Please check test reports below for more information:
|
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 (1)
components/serphouse/serphouse.app.mjs (1)
47-73: Prevent Yahoo location lookups from crashing.
getDomainType()returns"yahoo"for Yahoo domains, but the/location/searchendpoint only acceptstype=googleortype=bing. Passing"yahoo"will result in a 400 error from Serphouse, breaking the location picker for Yahoo domains.Apply this diff to guard the call:
const type = this.getDomainType(domain); + if (!["google", "bing"].includes(type)) { + return []; + } const { results } = await this.listLocations({ params: { q: query, type, }, });Based on past review comments.
🧹 Nitpick comments (1)
components/serphouse/actions/perform-search/perform-search.mjs (1)
64-72: Consider clarifying the conditional requirement.The
locationIdprop is marked asoptional: true, but the description states it's "Required for Google and Bing searches," and runtime validation (lines 107-110) enforces this. While the implementation is functionally correct, users might find it confusing that an "optional" field throws an error when omitted for certain domains.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
components/serphouse/actions/google-jobs-search/google-jobs-search.mjs(1 hunks)components/serphouse/actions/perform-search/perform-search.mjs(1 hunks)components/serphouse/serphouse.app.mjs(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
components/serphouse/actions/google-jobs-search/google-jobs-search.mjs (1)
components/serphouse/actions/perform-search/perform-search.mjs (1)
response(111-130)
components/serphouse/actions/perform-search/perform-search.mjs (2)
components/serphouse/serphouse.app.mjs (3)
type(29-29)type(58-58)type(124-130)components/serphouse/actions/google-jobs-search/google-jobs-search.mjs (1)
response(63-74)
components/serphouse/serphouse.app.mjs (1)
components/serphouse/actions/perform-search/perform-search.mjs (1)
type(107-107)
⏰ 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: Publish TypeScript components
- GitHub Check: Verify TypeScript components
🔇 Additional comments (10)
components/serphouse/serphouse.app.mjs (5)
1-3: LGTM!The imports are appropriate for the HTTP-based API integration and error handling.
9-41: LGTM!The domain and language propDefinitions are well-implemented with proper dynamic options, dependency handling, and empty-state checks.
42-46: LGTM!The locationAlert, query, and dateRange propDefinitions are well-structured with clear descriptions and appropriate options.
Also applies to: 74-106
109-122: LGTM!The internal helper methods follow Pipedream patterns with proper authentication and request handling.
123-168: LGTM!The getDomainType validation and API methods are correctly implemented with proper error handling and endpoint paths.
components/serphouse/actions/google-jobs-search/google-jobs-search.mjs (2)
1-13: LGTM!The action metadata and annotations are properly configured for a read-only Google Jobs search operation.
14-61: LGTM!The props are well-configured with appropriate propDefinition references and correct dependency chains. Filtering domain to "google" only is appropriate for the Google Jobs API.
components/serphouse/actions/perform-search/perform-search.mjs (3)
1-14: LGTM!The imports and action metadata are properly configured, including the ConfigurationError import for validation.
106-110: LGTM!The domain type validation and location requirement check are correctly implemented, properly enforcing that Google and Bing searches require a location ID.
111-136: LGTM!The API call properly maps all parameters to the expected format with correct boolean-to-string conversions, and the success handling is appropriate.
|
Hi everyone, all test cases are passed! Ready for release! Test reports
|
|
/approve |
Resolves #10936
Summary by CodeRabbit
New Features
Improvements
Chores