Skip to content

Conversation

@michelle0927
Copy link
Collaborator

@michelle0927 michelle0927 commented Nov 3, 2025

Resolves #18856

Summary by CodeRabbit

  • New Features

    • Campaign management: create, update, and list campaigns
    • Contact management: create, update, and list contacts
    • Create segments and a new delivery-event source
    • Dynamic dropdowns for selecting campaigns, contacts, segments, and status
    • Email format validation added for send/update campaign and send-email actions
  • Chores

    • Component package bumped to 0.2.0 and multiple action/source metadata versions updated
    • Platform dependency updated

@vercel
Copy link

vercel bot commented Nov 3, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Nov 4, 2025 4:35pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Nov 4, 2025 4:35pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 3, 2025

Walkthrough

Adds multiple new Elastic Email actions and a delivery-event source, extends the app with new propDefinitions and API methods, adds an email format validator, and bumps several action/source versions and the component package version.

Changes

Cohort / File(s) Summary
Package & version bumps
components/elastic_email/package.json, components/elastic_email/actions/add-contact/add-contact.mjs, components/elastic_email/actions/send-email/send-email.mjs, components/elastic_email/actions/unsubscribe-contact/unsubscribe-contact.mjs, components/elastic_email/sources/new-contact-added/new-contact-added.mjs, components/elastic_email/sources/new-email-click/new-email-click.mjs, components/elastic_email/sources/new-email-open/new-email-open.mjs
Bumped package version (0.1.0→0.2.0) and @pipedream/platform dependency; incremented action/source version fields and adjusted send-email to add input validation.
New contact actions & list
components/elastic_email/actions/create-contact/create-contact.mjs, components/elastic_email/actions/update-contact/update-contact.mjs, components/elastic_email/actions/list-contacts/list-contacts.mjs
Added Create Contact, Update Contact, and List Contacts actions with props, run implementations, payload parsing, and exported summaries.
Add-contact (metadata only)
components/elastic_email/actions/add-contact/add-contact.mjs
Only version bump recorded.
Campaign actions
components/elastic_email/actions/create-campaign/create-campaign.mjs, components/elastic_email/actions/update-campaign/update-campaign.mjs, components/elastic_email/actions/list-campaigns/list-campaigns.mjs
Added Create, Update, and List Campaign actions; include props for recipients, content, status, template, exclusions; update-campaign merges inputs with existing campaign; list-campaigns exposes search/limit/offset.
Segment action
components/elastic_email/actions/create-segment/create-segment.mjs
Added Create Segment action with name and rule props and app.createSegment call.
New delivery-event source
components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs
New source emitting delivery events; defines eventTypes prop and methods: getEventType, getDateField, getIdField, getSummary.
App module additions
components/elastic_email/elastic_email.app.mjs
Added propDefinitions (campaign, contact, segmentNames, campaignStatus, contactStatus) and new public methods: getCampaign, listCampaigns, listSegments, createCampaign, updateCampaign, createContact, updateContact, createSegment.
Common utilities
components/elastic_email/common/utils.mjs
Added isValidEmailFormat(str) and reworked exports to export both parseObject and isValidEmailFormat.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Action as Action Module
    participant App as elastic_email.app
    participant API as Elastic Email API

    User->>Action: Trigger action (create/update/list or source)
    Action->>Action: Validate inputs (e.g., email formats), build payload
    Action->>App: Call app method (createX/updateX/listX/getX)
    App->>API: HTTP request
    API-->>App: Response
    App-->>Action: Return data
    Action->>Action: $.export(summary)
    Action-->>User: Return response
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Multiple new action modules and a new source with heterogeneous logic.
  • App module adds many public propDefinitions and API wrapper methods that require verification.
  • Pay extra attention to:
    • update-campaign merge logic and conditional ExcludeRecipients handling
    • email format validation usage in send-email, create/update campaign actions
    • option resolvers and pagination in app propDefinitions (listCampaigns/listContacts/listSegments)
    • common/utils export change and its imports across modules

Poem

🐰 I hopped into code with a twitch and a twitch,
New contacts and campaigns in a dainty stitch.
Events and segments in tidy array,
I parsed and I validated, then hopped away.
Elastic Email, a quick rabbit's wish!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The description is minimal, containing only a reference to the resolved issue (#18856) without substantive detail about the changes, scope, or implementation approach. Expand the description to briefly explain what new components were added (actions/sources), why they were needed, and any implementation notes or considerations for reviewers.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Elastic Email - new components' accurately and concisely summarizes the main change: adding new Elastic Email components including actions and sources.
Linked Issues check ✅ Passed The PR successfully implements all primary objectives from issue #18856: campaign management [create/update/list], email sending with validation, contact management [create/update/list], segment management [create/list], and data retrieval capabilities.
Out of Scope Changes check ✅ Passed All changes are scoped to Elastic Email components. Minor updates include version bumps, package dependency updates, and utility enhancements—all supporting the core functionality objectives.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch issue-18856

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

Comment @coderabbitai help to get the list of available commands and usage tips.

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 (2)
components/elastic_email/actions/create-contact/create-contact.mjs (1)

17-21: Consider adding email validation.

Adding a basic email validation pattern could improve UX by catching format errors before the API call.

Apply this diff to add email validation:

 email: {
   type: "string",
   label: "Email",
   description: "The email of the contact",
+  pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
 },
components/elastic_email/elastic_email.app.mjs (1)

143-246: Consider URL encoding for path parameters.

Methods like updateContact and updateCampaign interpolate contact emails and campaign names directly into URL paths. If these contain special characters (e.g., + in emails), the request may fail.

Apply this pattern to encode path parameters:

 updateContact({
   contact, ...opts
 }) {
   return this._makeRequest({
     method: "PUT",
-    path: `/contacts/${contact}`,
+    path: `/contacts/${encodeURIComponent(contact)}`,
     ...opts,
   });
 },

Similar encoding should be applied to getCampaign and updateCampaign.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 02fd119 and 0784860.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (13)
  • components/elastic_email/actions/add-contact/add-contact.mjs (1 hunks)
  • components/elastic_email/actions/create-campaign/create-campaign.mjs (1 hunks)
  • components/elastic_email/actions/create-contact/create-contact.mjs (1 hunks)
  • components/elastic_email/actions/create-segment/create-segment.mjs (1 hunks)
  • components/elastic_email/actions/list-campaigns/list-campaigns.mjs (1 hunks)
  • components/elastic_email/actions/list-contacts/list-contacts.mjs (1 hunks)
  • components/elastic_email/actions/send-email/send-email.mjs (1 hunks)
  • components/elastic_email/actions/unsubscribe-contact/unsubscribe-contact.mjs (1 hunks)
  • components/elastic_email/actions/update-campaign/update-campaign.mjs (1 hunks)
  • components/elastic_email/actions/update-contact/update-contact.mjs (1 hunks)
  • components/elastic_email/elastic_email.app.mjs (5 hunks)
  • components/elastic_email/package.json (2 hunks)
  • components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (6)
📚 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/elastic_email/package.json
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.

Applied to files:

  • components/elastic_email/actions/send-email/send-email.mjs
  • components/elastic_email/actions/unsubscribe-contact/unsubscribe-contact.mjs
  • components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 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".

Applied to files:

  • components/elastic_email/actions/update-campaign/update-campaign.mjs
  • components/elastic_email/actions/list-campaigns/list-campaigns.mjs
  • components/elastic_email/actions/create-contact/create-contact.mjs
  • components/elastic_email/actions/create-segment/create-segment.mjs
  • components/elastic_email/actions/create-campaign/create-campaign.mjs
📚 Learning: 2024-07-04T18:11:59.822Z
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`.

Applied to files:

  • components/elastic_email/actions/list-campaigns/list-campaigns.mjs
📚 Learning: 2024-10-10T19:18:27.998Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 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.

Applied to files:

  • components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 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.

Applied to files:

  • components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs
🧬 Code graph analysis (8)
components/elastic_email/actions/update-campaign/update-campaign.mjs (1)
components/elastic_email/actions/create-campaign/create-campaign.mjs (1)
  • response (91-115)
components/elastic_email/actions/update-contact/update-contact.mjs (2)
components/elastic_email/actions/create-contact/create-contact.mjs (1)
  • response (48-59)
components/elastic_email/actions/add-contact/add-contact.mjs (1)
  • response (81-100)
components/elastic_email/actions/list-campaigns/list-campaigns.mjs (1)
components/elastic_email/actions/list-contacts/list-contacts.mjs (1)
  • response (32-38)
components/elastic_email/actions/create-contact/create-contact.mjs (2)
components/elastic_email/actions/update-contact/update-contact.mjs (1)
  • response (43-51)
components/elastic_email/actions/add-contact/add-contact.mjs (1)
  • response (81-100)
components/elastic_email/actions/list-contacts/list-contacts.mjs (1)
components/elastic_email/actions/list-campaigns/list-campaigns.mjs (1)
  • response (38-45)
components/elastic_email/actions/create-segment/create-segment.mjs (2)
components/elastic_email/actions/create-campaign/create-campaign.mjs (1)
  • response (91-115)
components/elastic_email/actions/create-contact/create-contact.mjs (1)
  • response (48-59)
components/elastic_email/actions/create-campaign/create-campaign.mjs (1)
components/elastic_email/actions/update-campaign/update-campaign.mjs (1)
  • response (101-130)
components/elastic_email/elastic_email.app.mjs (1)
components/elastic_email/actions/update-campaign/update-campaign.mjs (1)
  • campaign (96-99)
⏰ 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: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: pnpm publish
  • GitHub Check: Lint Code Base
🔇 Additional comments (22)
components/elastic_email/actions/unsubscribe-contact/unsubscribe-contact.mjs (1)

8-8: LGTM! Version bump aligns with the coordinated updates.

The version increment is consistent with other actions being updated in this PR.

components/elastic_email/actions/add-contact/add-contact.mjs (1)

13-13: LGTM! Version bump aligns with the coordinated updates.

The version increment is consistent with other actions being updated in this PR.

components/elastic_email/actions/send-email/send-email.mjs (1)

12-12: LGTM! Version bump aligns with the coordinated updates.

The version increment is consistent with other actions being updated in this PR.

components/elastic_email/actions/create-campaign/create-campaign.mjs (2)

87-89: Good validation!

The check ensures at least one recipient source is provided before proceeding, preventing invalid API calls.


91-117: LGTM! Campaign creation logic is well-structured.

The payload construction properly handles both required and optional fields, with conditional ExcludeRecipients only when exclusions are specified.

components/elastic_email/actions/create-segment/create-segment.mjs (1)

27-37: LGTM! Clean and straightforward implementation.

The segment creation logic is simple and effective, with helpful documentation for building segment rules.

components/elastic_email/actions/update-campaign/update-campaign.mjs (1)

96-99: Good pattern: fetching existing campaign first.

Retrieving the current campaign state allows proper merging of updates with existing values.

components/elastic_email/package.json (1)

3-3: LGTM! Version bumps align with the feature expansion.

The package version bump to 0.2.0 and the platform dependency update to ^3.1.0 are appropriate for this feature addition. The npm registry confirms that @pipedream/platform@3.1.0 exists and the minor version bump is a safe, non-breaking change.

components/elastic_email/sources/new-delivery-event/new-delivery-event.mjs (1)

1-44: Fix missing parameter in getSummary() method

The base class calls this.getSummary(item) with the event item as a parameter, but the implementation has no parameters. Update the signature:

getSummary(item) {
  return "New delivery event";
}

Alternatively, if the summary should reflect event-specific details, use the item parameter to provide more context (e.g., item.EventType).

⛔ Skipped due to learnings
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 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
Repo: PipedreamHQ/pipedream PR: 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: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.
components/elastic_email/actions/update-contact/update-contact.mjs (3)

1-14: LGTM!

The metadata and imports are correctly structured. The destructiveHint: true annotation is appropriate since this action modifies existing data.


15-41: LGTM!

The props are well-structured with appropriate optional fields for a partial update operation.


42-54: The PUT /contacts/{email} endpoint expects a JSON object (ContactUpdatePayload), which is exactly what the code provides. The different data structures between create-contact, add-contact, and update-contact reflect the appropriate formats for their respective API endpoints—not an inconsistency.

components/elastic_email/actions/list-contacts/list-contacts.mjs (3)

1-13: LGTM!

The metadata and annotations are correctly configured for a read-only list operation.


14-30: LGTM!

Standard pagination props with sensible defaults.


31-41: LGTM!

The summary message format is correct and uses optional chaining to safely handle the response.

components/elastic_email/actions/create-contact/create-contact.mjs (2)

1-14: LGTM!

The metadata is correctly configured and the action name properly matches its purpose.


47-62: LGTM!

The data structure correctly wraps the contact object in an array, consistent with the add-contact action pattern.

components/elastic_email/actions/list-campaigns/list-campaigns.mjs (2)

1-36: LGTM!

The action metadata and props are correctly structured with appropriate read-only annotations and pagination support.


37-48: LGTM!

The run method is correctly implemented with proper summary formatting and safe response handling.

components/elastic_email/elastic_email.app.mjs (3)

32-32: LGTM!

Good cleanup removing the trailing period for consistency.


50-123: LGTM!

The new prop definitions follow consistent patterns with proper pagination, optional chaining, and appropriate fallback values.


134-142: LGTM!

Good refactor to use template literals for URL construction.

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: 0

🧹 Nitpick comments (1)
components/elastic_email/sources/new-email-click/new-email-click.mjs (1)

25-27: Consider consistent summary text format.

The summary text "New event click" differs in capitalization and phrasing from the similar source new-email-open which uses "New Email opened". Consider standardizing the format across all event sources for consistency, e.g., "New Email Click" or "New email click".

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0784860 and 016d67b.

📒 Files selected for processing (3)
  • components/elastic_email/sources/new-contact-added/new-contact-added.mjs (1 hunks)
  • components/elastic_email/sources/new-email-click/new-email-click.mjs (1 hunks)
  • components/elastic_email/sources/new-email-open/new-email-open.mjs (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • components/elastic_email/sources/new-contact-added/new-contact-added.mjs
⏰ 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). (3)
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (2)
components/elastic_email/sources/new-email-click/new-email-click.mjs (1)

9-9: Version bump looks good.

The version increment from "0.0.1" to "0.0.2" is appropriate and consistent with the other source/action updates in this PR.

components/elastic_email/sources/new-email-open/new-email-open.mjs (1)

9-9: Version bump looks good.

The version increment from "0.0.1" to "0.0.2" aligns with the PR's objective to extend Elastic Email component functionality.

jcortes
jcortes previously approved these changes Nov 3, 2025
Copy link
Collaborator

@jcortes jcortes left a 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!

@vunguyenhung
Copy link
Collaborator

For Integration QA:

@vunguyenhung
Copy link
Collaborator

@vunguyenhung
Copy link
Collaborator

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:

1 similar comment
@vunguyenhung
Copy link
Collaborator

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:

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: 3

♻️ Duplicate comments (1)
components/elastic_email/actions/update-campaign/update-campaign.mjs (1)

128-135: Add null safety when reading existing exclusions

Accessing campaign.ExcludeRecipients.ListNames and .SegmentNames throws whenever the existing campaign has no exclusions (the common case). Please use optional chaining or guard the object before dereferencing. This was flagged previously and is still unresolved.

         ExcludeRecipients: this.excludeRecipientListNames || this.excludeRecipientSegmentNames
           ? {
             ListNames: this.excludeRecipientListNames
-              || campaign.ExcludeRecipients.ListNames
+              || campaign.ExcludeRecipients?.ListNames
               || undefined,
             SegmentNames: this.excludeRecipientSegmentNames
-              || campaign.ExcludeRecipients.SegmentNames
+              || campaign.ExcludeRecipients?.SegmentNames
               || undefined,
           }
           : undefined,
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 016d67b and 86dc611.

📒 Files selected for processing (4)
  • components/elastic_email/actions/create-campaign/create-campaign.mjs (1 hunks)
  • components/elastic_email/actions/send-email/send-email.mjs (4 hunks)
  • components/elastic_email/actions/update-campaign/update-campaign.mjs (1 hunks)
  • components/elastic_email/common/utils.mjs (2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 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".

Applied to files:

  • components/elastic_email/actions/create-campaign/create-campaign.mjs
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.

Applied to files:

  • components/elastic_email/actions/send-email/send-email.mjs
🧬 Code graph analysis (3)
components/elastic_email/actions/create-campaign/create-campaign.mjs (3)
components/elastic_email/common/utils.mjs (1)
  • isValidEmailFormat (26-29)
components/elastic_email/actions/send-email/send-email.mjs (1)
  • response (118-146)
components/elastic_email/actions/update-campaign/update-campaign.mjs (1)
  • response (110-139)
components/elastic_email/actions/send-email/send-email.mjs (1)
components/elastic_email/common/utils.mjs (1)
  • isValidEmailFormat (26-29)
components/elastic_email/actions/update-campaign/update-campaign.mjs (2)
components/elastic_email/common/utils.mjs (1)
  • isValidEmailFormat (26-29)
components/elastic_email/actions/create-campaign/create-campaign.mjs (1)
  • response (99-123)
⏰ 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: pnpm publish
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (1)
components/elastic_email/actions/send-email/send-email.mjs (1)

111-116: Nice proactive input validation

Validating the From and Reply To fields up front with ConfigurationErrors keeps bad payloads from ever reaching Elastic Email. Good defensive addition.

@vunguyenhung
Copy link
Collaborator

Hi everyone, all test cases are passed! Ready for release!

Test reports

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.

Elastic Email

4 participants