From 71539e28bd8ecb83dff85acda21c250756a89aaf Mon Sep 17 00:00:00 2001 From: choeqq Date: Sat, 27 Sep 2025 14:57:51 +0200 Subject: [PATCH 1/2] issue 18484 --- .../sources/common/common-updated-record.mjs | 27 ++++++++++--------- .../sources/common/common.mjs | 8 ++++++ .../record-updated-instant.mjs | 7 +++++ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/components/salesforce_rest_api/sources/common/common-updated-record.mjs b/components/salesforce_rest_api/sources/common/common-updated-record.mjs index 3a4faf12c647e..7460e6a71ef3f 100644 --- a/components/salesforce_rest_api/sources/common/common-updated-record.mjs +++ b/components/salesforce_rest_api/sources/common/common-updated-record.mjs @@ -12,19 +12,20 @@ export default { const nameField = await this.salesforce.getNameFieldForObjectType(objectType); this.setNameField(nameField); - // emit historical events - const { recentItems } = await this.salesforce.listSObjectTypeIds(objectType); - const ids = recentItems.map((item) => item.Id); - for (const id of ids.slice(-25)) { - const object = await this.salesforce.getSObject(objectType, id); - const event = { - body: { - "New": object, - "UserId": id, - }, - }; - const meta = this.generateWebhookMeta(event); - this.$emit(event.body, meta); + if (!this.skipFirstRun) { + const { recentItems } = await this.salesforce.listSObjectTypeIds(objectType); + const ids = recentItems.map((item) => item.Id); + for (const id of ids.slice(-25)) { + const object = await this.salesforce.getSObject(objectType, id); + const event = { + body: { + "New": object, + "UserId": id, + }, + }; + const meta = this.generateWebhookMeta(event); + this.$emit(event.body, meta); + } } }, async activate() { diff --git a/components/salesforce_rest_api/sources/common/common.mjs b/components/salesforce_rest_api/sources/common/common.mjs index 4e304965e4cc7..125d605bc0bb2 100644 --- a/components/salesforce_rest_api/sources/common/common.mjs +++ b/components/salesforce_rest_api/sources/common/common.mjs @@ -165,7 +165,15 @@ export default { console.log("Ignoring timer event (webhook active)"); return; } + const startTimestamp = this.getLatestDateCovered(); + + if (this.skipFirstRun && !startTimestamp) { + const now = new Date().toISOString(); + this.setLatestDateCovered(now); + return; + } + const endTimestamp = new Date(event.timestamp * 1000).toISOString(); const timeDiffSec = Math.floor( (Date.parse(endTimestamp) - Date.parse(startTimestamp)) / 1000, diff --git a/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs b/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs index 71457172523a4..4f0721c7aae4b 100644 --- a/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs +++ b/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs @@ -24,6 +24,13 @@ export default { optional: true, description: "If specified, events will only be emitted if at least one of the selected fields is updated. This filter is only available when a webhook is created successfully.", }, + skipFirstRun: { + type: "boolean", + label: "Skip existing records when first activated", + description: "When enabled, this trigger will ignore all existing records and only watch for updates that happen after activation. When disabled, it will process existing records on first run.", + optional: true, + default: false, + }, }, methods: { ...common.methods, From f64f8d3f9c2acf87b99661f1a7ce79b04e707750 Mon Sep 17 00:00:00 2001 From: choeqq Date: Sat, 27 Sep 2025 14:59:40 +0200 Subject: [PATCH 2/2] bump sources versions --- components/salesforce_rest_api/package.json | 2 +- .../sources/case-updated-instant/case-updated-instant.mjs | 2 +- .../email-template-updated-instant.mjs | 2 +- .../knowledge-article-updated-instant.mjs | 2 +- .../sources/new-case-instant/new-case-instant.mjs | 2 +- .../new-email-template-instant/new-email-template-instant.mjs | 2 +- .../new-knowledge-article-instant.mjs | 2 +- .../sources/new-outbound-message/new-outbound-message.mjs | 2 +- .../sources/new-record-instant/new-record-instant.mjs | 2 +- .../sources/record-deleted-instant/record-deleted-instant.mjs | 2 +- .../sources/record-updated-instant/record-updated-instant.mjs | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/components/salesforce_rest_api/package.json b/components/salesforce_rest_api/package.json index fef51ff3b9980..ea5ac3ada6071 100644 --- a/components/salesforce_rest_api/package.json +++ b/components/salesforce_rest_api/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/salesforce_rest_api", - "version": "1.9.0", + "version": "1.9.1", "description": "Pipedream Salesforce (REST API) Components", "main": "salesforce_rest_api.app.mjs", "keywords": [ diff --git a/components/salesforce_rest_api/sources/case-updated-instant/case-updated-instant.mjs b/components/salesforce_rest_api/sources/case-updated-instant/case-updated-instant.mjs index 9b6507a4b9a6b..f15bdeb02bc42 100644 --- a/components/salesforce_rest_api/sources/case-updated-instant/case-updated-instant.mjs +++ b/components/salesforce_rest_api/sources/case-updated-instant/case-updated-instant.mjs @@ -7,7 +7,7 @@ export default { name: "Case Updated (Instant, of Selectable Type)", key: "salesforce_rest_api-case-updated-instant", description: "Emit new event when a case is updated. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/email-template-updated-instant/email-template-updated-instant.mjs b/components/salesforce_rest_api/sources/email-template-updated-instant/email-template-updated-instant.mjs index 3bf4084686da6..85c314b209c83 100644 --- a/components/salesforce_rest_api/sources/email-template-updated-instant/email-template-updated-instant.mjs +++ b/components/salesforce_rest_api/sources/email-template-updated-instant/email-template-updated-instant.mjs @@ -7,7 +7,7 @@ export default { name: "Email Template Updated (Instant, of Selectable Type)", key: "salesforce_rest_api-email-template-updated-instant", description: "Emit new event when an email template is updated. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/knowledge-article-updated-instant/knowledge-article-updated-instant.mjs b/components/salesforce_rest_api/sources/knowledge-article-updated-instant/knowledge-article-updated-instant.mjs index 2914c3e034b18..f24380a73c7ae 100644 --- a/components/salesforce_rest_api/sources/knowledge-article-updated-instant/knowledge-article-updated-instant.mjs +++ b/components/salesforce_rest_api/sources/knowledge-article-updated-instant/knowledge-article-updated-instant.mjs @@ -7,7 +7,7 @@ export default { name: "Knowledge Article Updated (Instant, of Selectable Type)", key: "salesforce_rest_api-knowledge-article-updated-instant", description: "Emit new event when a knowledge article is updated. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/new-case-instant/new-case-instant.mjs b/components/salesforce_rest_api/sources/new-case-instant/new-case-instant.mjs index 96c9a21d796be..60a491b4c03e0 100644 --- a/components/salesforce_rest_api/sources/new-case-instant/new-case-instant.mjs +++ b/components/salesforce_rest_api/sources/new-case-instant/new-case-instant.mjs @@ -7,7 +7,7 @@ export default { name: "New Case (Instant, of Selectable Type)", key: "salesforce_rest_api-new-case-instant", description: "Emit new event when a case is created. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/new-email-template-instant/new-email-template-instant.mjs b/components/salesforce_rest_api/sources/new-email-template-instant/new-email-template-instant.mjs index c15b114edf6c9..9c79bbd0eb369 100644 --- a/components/salesforce_rest_api/sources/new-email-template-instant/new-email-template-instant.mjs +++ b/components/salesforce_rest_api/sources/new-email-template-instant/new-email-template-instant.mjs @@ -7,7 +7,7 @@ export default { name: "New Email Template (Instant, of Selectable Type)", key: "salesforce_rest_api-new-email-template-instant", description: "Emit new event when an email template is created. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/new-knowledge-article-instant/new-knowledge-article-instant.mjs b/components/salesforce_rest_api/sources/new-knowledge-article-instant/new-knowledge-article-instant.mjs index 0120a9537cc31..a0dfb0cee3c21 100644 --- a/components/salesforce_rest_api/sources/new-knowledge-article-instant/new-knowledge-article-instant.mjs +++ b/components/salesforce_rest_api/sources/new-knowledge-article-instant/new-knowledge-article-instant.mjs @@ -7,7 +7,7 @@ export default { name: "New Knowledge Article (Instant, of Selectable Type)", key: "salesforce_rest_api-new-knowledge-article-instant", description: "Emit new event when a knowledge article is created. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.0.3", + version: "0.0.4", props: { salesforce: common.props.salesforce, db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/new-outbound-message/new-outbound-message.mjs b/components/salesforce_rest_api/sources/new-outbound-message/new-outbound-message.mjs index 4bf6f98d9e2d9..994b7ac27bdc7 100644 --- a/components/salesforce_rest_api/sources/new-outbound-message/new-outbound-message.mjs +++ b/components/salesforce_rest_api/sources/new-outbound-message/new-outbound-message.mjs @@ -6,7 +6,7 @@ export default { name: "New Outbound Message (Instant)", key: "salesforce_rest_api-new-outbound-message", description: "Emit new event when a new outbound message is received in Salesforce.", - version: "0.1.9", + version: "0.1.10", dedupe: "unique", props: { db: "$.service.db", diff --git a/components/salesforce_rest_api/sources/new-record-instant/new-record-instant.mjs b/components/salesforce_rest_api/sources/new-record-instant/new-record-instant.mjs index 5f8a39d976cbc..aa7003c40fcee 100644 --- a/components/salesforce_rest_api/sources/new-record-instant/new-record-instant.mjs +++ b/components/salesforce_rest_api/sources/new-record-instant/new-record-instant.mjs @@ -6,7 +6,7 @@ export default { name: "New Record (Instant, of Selectable Type)", key: "salesforce_rest_api-new-record-instant", description: "Emit new event when a record of the selected object type is created. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.2.3", + version: "0.2.4", props: { ...common.props, fieldsToObtain: { diff --git a/components/salesforce_rest_api/sources/record-deleted-instant/record-deleted-instant.mjs b/components/salesforce_rest_api/sources/record-deleted-instant/record-deleted-instant.mjs index 69aac9b506cfc..20d045a85916d 100644 --- a/components/salesforce_rest_api/sources/record-deleted-instant/record-deleted-instant.mjs +++ b/components/salesforce_rest_api/sources/record-deleted-instant/record-deleted-instant.mjs @@ -7,7 +7,7 @@ export default { name: "New Deleted Record (Instant, of Selectable Type)", key: "salesforce_rest_api-record-deleted-instant", description: "Emit new event when a record of the selected object type is deleted. [See the documentation](https://sforce.co/3msDDEE)", - version: "0.1.3", + version: "0.1.4", methods: { ...common.methods, generateWebhookMeta(data) { diff --git a/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs b/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs index 4f0721c7aae4b..370e7edb046ad 100644 --- a/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs +++ b/components/salesforce_rest_api/sources/record-updated-instant/record-updated-instant.mjs @@ -7,7 +7,7 @@ export default { name: "New Updated Record (Instant, of Selectable Type)", key: "salesforce_rest_api-record-updated-instant", description: "Emit new event when a record of the selected type is updated. [See the documentation](https://sforce.co/3yPSJZy)", - version: "0.2.3", + version: "0.2.4", props: { ...common.props, fields: {