Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Jul 14, 2025

Resolves #17351

Note to QA (@vunguyenhung): I was only able to test two actions before running out of credits, so these are almost all untested.

Summary by CodeRabbit

  • New Features

    • Added actions to enrich business and prospect data, fetch businesses and prospects with advanced filters, and match business or prospect IDs using the Explorium API.
    • Introduced real-time event sources for business and prospect updates, enabling instant notifications when updates occur.
    • Provided static test events for both business and prospect event sources for easier testing and integration.
    • Expanded integration with new constants for company and prospect attributes, and a comprehensive Explorium API client.
  • Chores

    • Updated package version and dependencies to support new features.

@vercel
Copy link

vercel bot commented Jul 14, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

3 Skipped Deployments
Name Status Preview Comments Updated (UTC)
docs-v2 ⬜️ Ignored (Inspect) Jul 14, 2025 7:06pm
pipedream-docs ⬜️ Ignored (Inspect) Jul 14, 2025 7:06pm
pipedream-docs-redirect-do-not-edit ⬜️ Ignored (Inspect) Jul 14, 2025 7:06pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 14, 2025

Walkthrough

This update introduces a comprehensive Explorium integration, adding new actions for enriching and matching business and prospect data, fetching records with filter support, and instant event sources for business and prospect updates. Supporting modules provide constants, API client logic, and shared source code for webhook lifecycle management and event emission.

Changes

File(s) Change Summary
components/explorium/actions/enrich-business/enrich-business.mjs New action: Enrich Business data via Explorium API
components/explorium/actions/enrich-prospect/enrich-prospect.mjs New action: Enrich Prospect data via Explorium API
components/explorium/actions/fetch-businesses/fetch-businesses.mjs New action: Fetch Businesses with filters
components/explorium/actions/fetch-prospects/fetch-prospects.mjs New action: Fetch Prospects with filters
components/explorium/actions/match-business-id/match-business-id.mjs New action: Match Business to unique ID
components/explorium/actions/match-prospect-id/match-prospect-id.mjs New action: Match Prospect to unique ID
components/explorium/common/constants.mjs New module: Export constants for company/prospect attributes and enrichment/event types
components/explorium/explorium.app.mjs Major rewrite: Full Explorium API client, prop definitions, and API methods
components/explorium/package.json Version bump to 0.1.0, add @pipedream/platform dependency
components/explorium/sources/common/base.mjs New module: Base source with webhook lifecycle and event emission logic
components/explorium/sources/new-business-event/new-business-event.mjs New source: Emits events on business updates (webhook-based)
components/explorium/sources/new-business-event/test-event.mjs New: Test event fixture for business event source
components/explorium/sources/new-prospect-event/new-prospect-event.mjs New source: Emits events on prospect updates (webhook-based)
components/explorium/sources/new-prospect-event/test-event.mjs New: Test event fixture for prospect event source

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant PipedreamComponent
    participant ExploriumAPI

    User->>PipedreamComponent: Trigger action (e.g., enrich-business)
    PipedreamComponent->>ExploriumAPI: Send API request (e.g., enrichBusiness)
    ExploriumAPI-->>PipedreamComponent: Return enriched data
    PipedreamComponent-->>User: Return result/summary
Loading
sequenceDiagram
    participant ExploriumAPI
    participant BaseSource
    participant PipedreamPlatform

    ExploriumAPI-->>BaseSource: Webhook event (business/prospect update)
    BaseSource->>BaseSource: generateMeta(event)
    BaseSource->>PipedreamPlatform: $emit({ body, meta })
Loading

Assessment against linked issues

Objective Addressed Explanation
Add enrich-business action (#17351)
Add match-business-id action (#17351)
Add enrich-prospect action (#17351)
Add fetch-prospects, fetch-businesses, match-prospect-id actions (#17351)
Add webhook-based sources for new business/prospect events (instant) (#17351)

Suggested labels

ai-assisted

Poem

In the warren of code, new features abound,
Explorium’s magic now easily found.
With actions and sources, events hop in fast,
Prospects and businesses—matched, fetched, and cast!
A rabbit’s delight, these changes so bright,
All burrows of data now lit up with light.
🐇✨

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

components/explorium/actions/enrich-business/enrich-business.mjs

Oops! Something went wrong! :(

ESLint: 8.57.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:255:9)
at packageResolve (node:internal/modules/esm/resolve:767:81)
at moduleResolve (node:internal/modules/esm/resolve:853:18)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

components/explorium/actions/enrich-prospect/enrich-prospect.mjs

Oops! Something went wrong! :(

ESLint: 8.57.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:255:9)
at packageResolve (node:internal/modules/esm/resolve:767:81)
at moduleResolve (node:internal/modules/esm/resolve:853:18)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

components/explorium/actions/fetch-businesses/fetch-businesses.mjs

Oops! Something went wrong! :(

ESLint: 8.57.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs
at Object.getPackageJSONURL (node:internal/modules/package_json_reader:255:9)
at packageResolve (node:internal/modules/esm/resolve:767:81)
at moduleResolve (node:internal/modules/esm/resolve:853:18)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

  • 10 others
✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (3)
components/explorium/actions/match-business-id/match-business-id.mjs (1)

6-6: Fix typo in description.

There's a typo in the description: "businesse" should be "business".

-  description: "Match a businesse to its unique identifier using business name and domain. [See the documentation](https://developers.explorium.ai/reference/match_businesses)",
+  description: "Match a business to its unique identifier using business name and domain. [See the documentation](https://developers.explorium.ai/reference/match_businesses)",
components/explorium/actions/fetch-businesses/fetch-businesses.mjs (1)

47-47: Consider renaming the size API parameter to avoid confusion.

The size parameter in the API call (line 47) could be confused with the size prop (company size filter). Consider using a more descriptive name like limit or pageSize for clarity.

components/explorium/explorium.app.mjs (1)

50-126: Note: Limited testing coverage due to credit constraints.

According to the PR objectives, only two actions were tested due to running out of credits. Consider adding comprehensive unit tests or mocking the API responses to ensure all methods work as expected before production use.

Would you like me to help create unit tests with mocked API responses to improve test coverage without consuming API credits?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a42b21b and 8b5e451.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (14)
  • components/explorium/actions/enrich-business/enrich-business.mjs (1 hunks)
  • components/explorium/actions/enrich-prospect/enrich-prospect.mjs (1 hunks)
  • components/explorium/actions/fetch-businesses/fetch-businesses.mjs (1 hunks)
  • components/explorium/actions/fetch-prospects/fetch-prospects.mjs (1 hunks)
  • components/explorium/actions/match-business-id/match-business-id.mjs (1 hunks)
  • components/explorium/actions/match-prospect-id/match-prospect-id.mjs (1 hunks)
  • components/explorium/common/constants.mjs (1 hunks)
  • components/explorium/explorium.app.mjs (1 hunks)
  • components/explorium/package.json (2 hunks)
  • components/explorium/sources/common/base.mjs (1 hunks)
  • components/explorium/sources/new-business-event/new-business-event.mjs (1 hunks)
  • components/explorium/sources/new-business-event/test-event.mjs (1 hunks)
  • components/explorium/sources/new-prospect-event/new-prospect-event.mjs (1 hunks)
  • components/explorium/sources/new-prospect-event/test-event.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (14)
components/explorium/package.json (2)
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.
Learnt from: js07
PR: PipedreamHQ/pipedream#17375
File: components/zerobounce/actions/get-validation-results-file/get-validation-results-file.mjs:23-27
Timestamp: 2025-07-01T17:07:48.193Z
Learning: "dir" props in Pipedream components are hidden in the component form and not user-facing, so they don't require labels or descriptions for user clarity.
components/explorium/sources/new-prospect-event/test-event.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In `components/the_magic_drip/sources/common.mjs`, when processing items in `getAndProcessData`, `savedIds` is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.
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.
components/explorium/actions/enrich-business/enrich-business.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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
PR: PipedreamHQ/pipedream#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/explorium/actions/fetch-prospects/fetch-prospects.mjs (3)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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
PR: PipedreamHQ/pipedream#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/explorium/actions/enrich-prospect/enrich-prospect.mjs (3)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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
PR: PipedreamHQ/pipedream#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/explorium/common/constants.mjs (1)
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.
components/explorium/sources/new-prospect-event/new-prospect-event.mjs (5)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In `components/the_magic_drip/sources/common.mjs`, when processing items in `getAndProcessData`, `savedIds` is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common.mjs:97-98
Timestamp: 2024-07-24T02:05:59.531Z
Learning: The `processTimerEvent` method in the `components/salesforce_rest_api/sources/common.mjs` file is intentionally left unimplemented to enforce that subclasses must implement this method, similar to an abstract class in object-oriented programming.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
components/explorium/sources/common/base.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
components/explorium/actions/match-prospect-id/match-prospect-id.mjs (3)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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
PR: PipedreamHQ/pipedream#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/explorium/actions/fetch-businesses/fetch-businesses.mjs (1)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
components/explorium/sources/new-business-event/new-business-event.mjs (5)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In `components/the_magic_drip/sources/common.mjs`, when processing items in `getAndProcessData`, `savedIds` is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common.mjs:97-98
Timestamp: 2024-07-24T02:05:59.531Z
Learning: The `processTimerEvent` method in the `components/salesforce_rest_api/sources/common.mjs` file is intentionally left unimplemented to enforce that subclasses must implement this method, similar to an abstract class in object-oriented programming.
components/explorium/explorium.app.mjs (5)
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.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-07-24T02:06:47.016Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12697
File: components/salesforce_rest_api/sources/common-webhook-methods.mjs:1-71
Timestamp: 2024-10-08T15:33:38.240Z
Learning: The `common-webhook-methods.mjs` object is designed to be extended, similar to an abstract class, and intentionally does not implement certain methods like `generateWebhookMeta` and `getEventType` to enforce implementation in subclasses.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: The Salesloft API list endpoints (listPeople, listCadences, listUsers, listAccounts) return arrays directly in the response body, not wrapped in a metadata object with a nested data property. The _makeRequest method correctly returns response.data which contains the arrays that can be mapped over directly in propDefinitions.
Learnt from: js07
PR: PipedreamHQ/pipedream#17375
File: components/zerobounce/actions/get-validation-results-file/get-validation-results-file.mjs:23-27
Timestamp: 2025-07-01T17:07:48.193Z
Learning: "dir" props in Pipedream components are hidden in the component form and not user-facing, so they don't require labels or descriptions for user clarity.
components/explorium/actions/match-business-id/match-business-id.mjs (3)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#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
PR: PipedreamHQ/pipedream#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/explorium/sources/new-business-event/test-event.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In `components/the_magic_drip/sources/common.mjs`, when processing items in `getAndProcessData`, `savedIds` is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.
⏰ 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: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: pnpm publish
🔇 Additional comments (22)
components/explorium/package.json (2)

3-3: Version bump looks good
No functional concerns with incrementing to 0.1.0. Please remember to update any CHANGELOG / release notes accordingly.


15-17: Double-check @pipedream/platform range before publishing

^3.1.0 will pull in any future 3.x minor/patch releases. If you need to lock to an API level you validated against, consider ~3.1.0 instead, or at least run QA with the latest 3.x prior to publish.

components/explorium/sources/new-prospect-event/test-event.mjs (1)

1-10: Test event structure looks appropriate.

The test event provides a realistic structure for prospect events with proper entity_type and placeholder data. The empty event_type and data fields are acceptable for a generic test fixture.

components/explorium/sources/new-business-event/test-event.mjs (1)

1-14: Well-structured test event with meaningful sample data.

The test event provides a comprehensive example of a business event with realistic product information. The structure is appropriate for testing the new-business-event source component.

components/explorium/actions/enrich-business/enrich-business.mjs (3)

1-3: Proper imports for dependencies.

The imports correctly reference the explorium app and constants module.


4-23: Action configuration is well-structured.

The action metadata, props, and property definitions are correctly configured. The enrichment type properly uses constants for options, and the business ID is appropriately defined.


24-35: Run method implementation is correct.

The API call structure and summary message format follow best practices. The enriched data is properly returned from the action.

components/explorium/common/constants.mjs (4)

1-27: Company size and revenue ranges are comprehensive.

The ranges provide good coverage from small startups to large enterprises, with logical progression in both size and revenue categories.


29-62: Prospect job levels and departments are well-defined.

The job levels cover the full hierarchy from entry-level to ownership, and the departments provide comprehensive coverage of business functions.


64-131: Enrichment and event types are extensive.

The enrichment types and event types provide comprehensive coverage of business and prospect data enrichment capabilities and event monitoring.


133-142: Proper export structure.

The default export correctly includes all defined constants for use across the application.

components/explorium/actions/fetch-prospects/fetch-prospects.mjs (4)

1-3: Proper imports for dependencies.

The imports correctly reference the explorium app and constants module.


4-50: Action configuration and props are well-structured.

The action metadata and property definitions are correctly configured. The use of propDefinitions for shared properties and constants for job-related filters is appropriate.


96-99: Summary message follows correct format.

The summary message properly uses the response data length, following the established pattern from the learnings.


51-95: Both size and page_size are required per Explorium API specs
According to the official docs, page_size controls how many records are returned in each response page (for payload performance) while size sets the total cap on records fetched. These parameters serve distinct purposes and are not redundant—no change needed here.

components/explorium/actions/enrich-prospect/enrich-prospect.mjs (1)

1-35: LGTM! Well-structured action implementation.

The action follows Pipedream best practices with proper metadata, type definitions, and method calls. The summary message format is correct and the implementation is clean.

components/explorium/sources/new-prospect-event/new-prospect-event.mjs (1)

1-39: LGTM! Proper source implementation.

The source correctly extends the base module and implements the required generateMeta method. The naming convention follows the pattern for instant sources and the implementation is sound.

components/explorium/actions/match-prospect-id/match-prospect-id.mjs (1)

1-31: LGTM! Clean action implementation.

The action properly handles the email input and API call structure. The summary message format is correct and the implementation follows best practices.

components/explorium/sources/common/base.mjs (1)

1-65: LGTM! Well-designed base module.

The base module properly implements the abstract class pattern with enforced method implementation and correct webhook lifecycle management. The logic flow is sound and follows established patterns.

components/explorium/actions/match-business-id/match-business-id.mjs (1)

1-37: LGTM! Solid action implementation.

The action correctly handles the business matching logic with proper parameter structure and summary message formatting. Just needs the typo fix mentioned above.

components/explorium/sources/new-business-event/new-business-event.mjs (1)

1-39: Well-structured event source implementation.

The component properly extends the common base module and implements the required generateMeta method. The use of constants for event types ensures consistency across the integration.

components/explorium/explorium.app.mjs (1)

44-46: Authentication header verified
The Explorium API requires a custom api_key header for authentication. The existing code in components/explorium/explorium.app.mjs (lines 44–46) is correct—no changes needed.

Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@vunguyenhung vunguyenhung merged commit 5450b43 into master Jul 15, 2025
11 checks passed
@vunguyenhung vunguyenhung deleted the issue-17351 branch July 15, 2025 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Components] explorium

4 participants