From b7cf9174f45975d09cdd9b55240f0b8d0cbe150b Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 23 Oct 2025 17:06:54 -0400 Subject: [PATCH 1/3] new sources --- .../create-custom-entity.mjs | 2 +- .../actions/find-contact/find-contact.mjs | 2 +- .../microsoft_dynamics_365_sales.app.mjs | 31 +++++++- .../microsoft_dynamics_365_sales/package.json | 4 +- .../sources/common/common.mjs | 79 +++++++++++++++++++ .../new-opportunity-created.mjs | 39 +++++++++ .../opportunity-close-date-updated.mjs | 55 +++++++++++++ .../opportunity-close-probability-updated.mjs | 55 +++++++++++++ .../opportunity-estimated-value-updated.mjs | 55 +++++++++++++ .../opportunity-stage-updated.mjs | 55 +++++++++++++ 10 files changed, 372 insertions(+), 5 deletions(-) create mode 100644 components/microsoft_dynamics_365_sales/sources/common/common.mjs create mode 100644 components/microsoft_dynamics_365_sales/sources/new-opportunity-created/new-opportunity-created.mjs create mode 100644 components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs create mode 100644 components/microsoft_dynamics_365_sales/sources/opportunity-close-probability-updated/opportunity-close-probability-updated.mjs create mode 100644 components/microsoft_dynamics_365_sales/sources/opportunity-estimated-value-updated/opportunity-estimated-value-updated.mjs create mode 100644 components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs diff --git a/components/microsoft_dynamics_365_sales/actions/create-custom-entity/create-custom-entity.mjs b/components/microsoft_dynamics_365_sales/actions/create-custom-entity/create-custom-entity.mjs index 90d4b6d24cd5b..3c089f98b1c7e 100644 --- a/components/microsoft_dynamics_365_sales/actions/create-custom-entity/create-custom-entity.mjs +++ b/components/microsoft_dynamics_365_sales/actions/create-custom-entity/create-custom-entity.mjs @@ -6,7 +6,7 @@ export default { key: "microsoft_dynamics_365_sales-create-custom-entity", name: "Create Custom Entity", description: "Create a custom entity. [See the documentation](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/create-update-entity-definitions-using-web-api)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/microsoft_dynamics_365_sales/actions/find-contact/find-contact.mjs b/components/microsoft_dynamics_365_sales/actions/find-contact/find-contact.mjs index 5e1f4f8493977..8499d058a8476 100644 --- a/components/microsoft_dynamics_365_sales/actions/find-contact/find-contact.mjs +++ b/components/microsoft_dynamics_365_sales/actions/find-contact/find-contact.mjs @@ -4,7 +4,7 @@ export default { key: "microsoft_dynamics_365_sales-find-contact", name: "Find Contact", description: "Search for a contact by id, name, or using a custom filter. [See the documentation](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query/overview)", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/microsoft_dynamics_365_sales/microsoft_dynamics_365_sales.app.mjs b/components/microsoft_dynamics_365_sales/microsoft_dynamics_365_sales.app.mjs index 2b6c616c26a3d..8532560de5bd7 100644 --- a/components/microsoft_dynamics_365_sales/microsoft_dynamics_365_sales.app.mjs +++ b/components/microsoft_dynamics_365_sales/microsoft_dynamics_365_sales.app.mjs @@ -41,11 +41,12 @@ export default { _makeRequest({ $ = this, path, + url, headers, ...opts }) { return axios($, { - url: `${this._baseUrl()}${path}`, + url: url || `${this._baseUrl()}${path}`, headers: { ...headers, "Authorization": `Bearer ${this.$auth.oauth_access_token}`, @@ -85,6 +86,12 @@ export default { ...opts, }); }, + listOpportunities(opts = {}) { + return this._makeRequest({ + path: "/opportunities", + ...opts, + }); + }, getEntity({ entityId, ...opts }) { @@ -100,5 +107,27 @@ export default { ...opts, }); }, + async *paginate({ + fn, args = {}, max, + }) { + let count = 0; + let nextLink = null; + + do { + const response = await fn(args); + const items = response.value; + if (!items?.length) { + return; + } + for (const item of items) { + yield item; + if (max && ++count >= max) { + return; + } + } + nextLink = response["@odata.nextLink"]; + args.url = nextLink; + } while (nextLink); + }, }, }; diff --git a/components/microsoft_dynamics_365_sales/package.json b/components/microsoft_dynamics_365_sales/package.json index a93a19e280b9b..0425394d9ad5d 100644 --- a/components/microsoft_dynamics_365_sales/package.json +++ b/components/microsoft_dynamics_365_sales/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/microsoft_dynamics_365_sales", - "version": "0.1.1", + "version": "0.2.0", "description": "Pipedream Microsoft Dynamics 365 Sales Components", "main": "microsoft_dynamics_365_sales.app.mjs", "keywords": [ @@ -13,7 +13,7 @@ "access": "public" }, "dependencies": { - "@pipedream/platform": "^3.0.3", + "@pipedream/platform": "^3.1.0", "pluralize": "^8.0.0" } } diff --git a/components/microsoft_dynamics_365_sales/sources/common/common.mjs b/components/microsoft_dynamics_365_sales/sources/common/common.mjs new file mode 100644 index 0000000000000..03083631abf46 --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/common/common.mjs @@ -0,0 +1,79 @@ +import microsoftDynamics365Sales from "../../microsoft_dynamics_365_sales.app.mjs"; +import { + DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, ConfigurationError, +} from "@pipedream/platform"; + +export default { + props: { + microsoftDynamics365Sales, + db: "$.service.db", + timer: { + type: "$.interface.timer", + default: { + intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, + }, + }, + }, + methods: { + _getLastTs() { + return this.db.get("lastTs") || 0; + }, + _setLastTs(lastTs) { + this.db.set("lastTs", lastTs); + }, + getArgs() { + return {}; + }, + getRelevantResults(results) { + return results; + }, + getResourceFn() { + throw new ConfigurationError("getResourceFn is not implemented"); + }, + getTsField() { + throw new ConfigurationError("getTsField is not implemented"); + }, + generateMeta() { + throw new ConfigurationError("generateMeta is not implemented"); + }, + async processEvent(max) { + const lastTs = this._getLastTs(); + let maxTs = lastTs; + + const resourceFn = this.getResourceFn(); + const args = this.getArgs(); + const tsField = this.getTsField(); + + const items = this.microsoftDynamics365Sales.paginate({ + fn: resourceFn, + args, + max, + }); + + const results = []; + for await (const item of items) { + const ts = Date.parse(item[tsField]); + if (ts >= lastTs) { + results.push(item); + maxTs = Math.max(ts, maxTs); + } else { + break; + } + } + this._setLastTs(maxTs); + + const relevantResults = this.getRelevantResults(results); + if (!relevantResults.length) { + return; + } + + relevantResults.forEach((item) => { + const meta = this.generateMeta(item); + this.$emit(item, meta); + }); + }, + }, + async run() { + await this.processEvent(); + }, +}; diff --git a/components/microsoft_dynamics_365_sales/sources/new-opportunity-created/new-opportunity-created.mjs b/components/microsoft_dynamics_365_sales/sources/new-opportunity-created/new-opportunity-created.mjs new file mode 100644 index 0000000000000..07821c34abff8 --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/new-opportunity-created/new-opportunity-created.mjs @@ -0,0 +1,39 @@ +import common from "../common/common.mjs"; + +export default { + ...common, + key: "microsoft_dynamics_365_sales-new-opportunity-created", + name: "New Opportunity Created", + description: "Emit new event when a new opportunity is created.", + version: "0.0.1", + type: "source", + dedupe: "unique", + hooks: { + async deploy() { + await this.processEvent(10); + }, + }, + methods: { + ...common.methods, + getResourceFn() { + return this.microsoftDynamics365Sales.listOpportunities; + }, + getArgs() { + return { + params: { + "$orderby": "createdon desc", + }, + }; + }, + getTsField() { + return "createdon"; + }, + generateMeta(opportunity) { + return { + id: opportunity.opportunityid, + summary: `New Opportunity: ${opportunity.name}`, + ts: Date.parse(opportunity.createdon), + }; + }, + }, +}; diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs new file mode 100644 index 0000000000000..7ea5b7d1907e5 --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs @@ -0,0 +1,55 @@ +import common from "../common/common.mjs"; + +export default { + ...common, + key: "microsoft_dynamics_365_sales-opportunity-close-date-updated", + name: "Opportunity Close Date Updated", + description: "Emit new event when the close date of an opportunity is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + _getCloseDates() { + return this.db.get("closeDates") || {}; + }, + _setCloseDates(closeDates) { + this.db.set("closeDates", closeDates); + }, + getResourceFn() { + return this.microsoftDynamics365Sales.listOpportunities; + }, + getArgs() { + return { + params: { + "$orderby": "modifiedon desc", + }, + }; + }, + getTsField() { + return "modifiedon"; + }, + getRelevantResults(results) { + const closeDates = this._getCloseDates(); + const relevantResults = []; + for (const result of results) { + if (closeDates[result.opportunityid] !== result.estimatedclosedate) { + if (closeDates[result.opportunityid]) { + relevantResults.push(result); + } + closeDates[result.opportunityid] = result.estimatedclosedate; + } + } + this._setCloseDates(closeDates); + return relevantResults; + }, + generateMeta(opportunity) { + const ts = Date.parse(opportunity.modifiedon); + return { + id: `${opportunity.opportunityid}${ts}`, + summary: `Opportunity Close Date Updated: ${opportunity.name}`, + ts, + }; + }, + }, +}; diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-close-probability-updated/opportunity-close-probability-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-close-probability-updated/opportunity-close-probability-updated.mjs new file mode 100644 index 0000000000000..e3f09c7ed9ce1 --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-close-probability-updated/opportunity-close-probability-updated.mjs @@ -0,0 +1,55 @@ +import common from "../common/common.mjs"; + +export default { + ...common, + key: "microsoft_dynamics_365_sales-opportunity-close-probability-updated", + name: "Opportunity Close Probability Updated", + description: "Emit new event when the close probability of an opportunity is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + _getCloseProbabilities() { + return this.db.get("closeProbabilities") || {}; + }, + _setCloseProbabilities(closeProbabilities) { + this.db.set("closeProbabilities", closeProbabilities); + }, + getResourceFn() { + return this.microsoftDynamics365Sales.listOpportunities; + }, + getArgs() { + return { + params: { + "$orderby": "modifiedon desc", + }, + }; + }, + getTsField() { + return "modifiedon"; + }, + getRelevantResults(results) { + const closeProbabilities = this._getCloseProbabilities(); + const relevantResults = []; + for (const result of results) { + if (closeProbabilities[result.opportunityid] !== result.closeprobability) { + if (closeProbabilities[result.opportunityid]) { + relevantResults.push(result); + } + closeProbabilities[result.opportunityid] = result.closeprobability; + } + } + this._setCloseProbabilities(closeProbabilities); + return relevantResults; + }, + generateMeta(opportunity) { + const ts = Date.parse(opportunity.modifiedon); + return { + id: `${opportunity.opportunityid}${ts}`, + summary: `Opportunity Close Probability Updated: ${opportunity.name}`, + ts, + }; + }, + }, +}; diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-estimated-value-updated/opportunity-estimated-value-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-estimated-value-updated/opportunity-estimated-value-updated.mjs new file mode 100644 index 0000000000000..8fe4e1506e8b2 --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-estimated-value-updated/opportunity-estimated-value-updated.mjs @@ -0,0 +1,55 @@ +import common from "../common/common.mjs"; + +export default { + ...common, + key: "microsoft_dynamics_365_sales-opportunity-estimated-value-updated", + name: "Opportunity Estimated Value Updated", + description: "Emit new event when the estimated value of an opportunity is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + _getEstimatedValues() { + return this.db.get("estimatedValues") || {}; + }, + _setEstimatedValues(estimatedValues) { + this.db.set("estimatedValues", estimatedValues); + }, + getResourceFn() { + return this.microsoftDynamics365Sales.listOpportunities; + }, + getArgs() { + return { + params: { + "$orderby": "modifiedon desc", + }, + }; + }, + getTsField() { + return "modifiedon"; + }, + getRelevantResults(results) { + const estimatedValues = this._getEstimatedValues(); + const relevantResults = []; + for (const result of results) { + if (estimatedValues[result.opportunityid] !== result.estimatedvalue) { + if (estimatedValues[result.opportunityid]) { + relevantResults.push(result); + } + estimatedValues[result.opportunityid] = result.estimatedvalue; + } + } + this._setEstimatedValues(estimatedValues); + return relevantResults; + }, + generateMeta(opportunity) { + const ts = Date.parse(opportunity.modifiedon); + return { + id: `${opportunity.opportunityid}${ts}`, + summary: `Opportunity Estimated Value Updated: ${opportunity.name}`, + ts, + }; + }, + }, +}; diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs new file mode 100644 index 0000000000000..c6a47aaba6d5c --- /dev/null +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs @@ -0,0 +1,55 @@ +import common from "../common/common.mjs"; + +export default { + ...common, + key: "microsoft_dynamics_365_sales-opportunity-stage-updated", + name: "Opportunity Stage Updated", + description: "Emit new event when the stage of an opportunity is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + _getStages() { + return this.db.get("stages") || {}; + }, + _setStages(stages) { + this.db.set("stages", stages); + }, + getResourceFn() { + return this.microsoftDynamics365Sales.listOpportunities; + }, + getArgs() { + return { + params: { + "$orderby": "modifiedon desc", + }, + }; + }, + getTsField() { + return "modifiedon"; + }, + getRelevantResults(results) { + const stages = this._getStages(); + const relevantResults = []; + for (const result of results) { + if (stages[result.opportunityid] !== result.stageid) { + if (stages[result.opportunityid]) { + relevantResults.push(result); + } + stages[result.opportunityid] = result.stageid; + } + } + this._setStages(stages); + return relevantResults; + }, + generateMeta(opportunity) { + const ts = Date.parse(opportunity.modifiedon); + return { + id: `${opportunity.opportunityid}${ts}`, + summary: `Opportunity Stage Updated: ${opportunity.name}`, + ts, + }; + }, + }, +}; From 59320e620ed623f985fec66e29114f779727d6bb Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 23 Oct 2025 17:08:00 -0400 Subject: [PATCH 2/3] pnpm-lock.yaml --- pnpm-lock.yaml | 193 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 160 insertions(+), 33 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e244eb6ae684..2072fa48b12b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 4.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) tsc-esm-fix: specifier: ^2.18.0 version: 2.20.27 @@ -1112,8 +1112,7 @@ importers: components/ascora: {} - components/ashby: - specifiers: {} + components/ashby: {} components/ashby_job_postings_api: {} @@ -2873,8 +2872,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/cloud_66: - specifiers: {} + components/cloud_66: {} components/cloud_convert: dependencies: @@ -3183,8 +3181,7 @@ importers: specifier: ^1.4.0 version: 1.6.6 - components/configcat: - specifiers: {} + components/configcat: {} components/confluence: dependencies: @@ -3403,8 +3400,7 @@ importers: components/cronly: {} - components/crossmint: - specifiers: {} + components/crossmint: {} components/crove_app: dependencies: @@ -3827,8 +3823,7 @@ importers: specifier: ^4.0.4 version: 4.0.4 - components/devolens: - specifiers: {} + components/devolens: {} components/devrev: dependencies: @@ -8879,8 +8874,8 @@ importers: components/microsoft_dynamics_365_sales: dependencies: '@pipedream/platform': - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.1.0 + version: 3.1.0 pluralize: specifier: ^8.0.0 version: 8.0.0 @@ -17008,7 +17003,7 @@ importers: version: 3.1.7 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@20.17.30))(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.7.2)(yaml@2.8.0) @@ -31418,22 +31413,22 @@ packages: superagent@3.8.1: resolution: {integrity: sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==} engines: {node: '>= 4.0'} - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@4.1.0: resolution: {integrity: sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==} engines: {node: '>= 6.0'} - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@5.3.1: resolution: {integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==} engines: {node: '>= 7.0.0'} - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net superagent@7.1.6: resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==} engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net supports-color@10.0.0: resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} @@ -35844,7 +35839,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -36115,21 +36110,45 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36140,16 +36159,34 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36160,41 +36197,89 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -37257,7 +37342,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -39763,6 +39848,8 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -42323,7 +42410,7 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.15.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.1 optionalDependencies: typescript: 5.6.3 @@ -43217,6 +43304,20 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@29.7.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@8.0.0-alpha.13) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -43283,12 +43384,39 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + babel-preset-current-node-syntax@1.1.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@8.0.0-alpha.13) + optional: true + babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-jest@29.6.3(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@8.0.0-alpha.13) + optional: true + backoff@2.5.0: dependencies: precond: 0.2.3 @@ -45497,7 +45625,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -47358,7 +47486,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -49939,7 +50067,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) rfdc: 1.4.1 tarn: 3.0.2 tedious: 16.7.1 @@ -51688,7 +51816,7 @@ snapshots: ajv: 8.17.1 chalk: 5.3.0 ci-info: 4.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) deepmerge: 4.3.1 escalade: 3.2.0 fast-glob: 3.3.2 @@ -53824,7 +53952,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53842,9 +53970,8 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - esbuild: 0.24.2 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53858,10 +53985,10 @@ snapshots: typescript: 5.6.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.26.0 + '@babel/core': 8.0.0-alpha.13 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) + babel-jest: 29.7.0(@babel/core@8.0.0-alpha.13) ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2): dependencies: @@ -54033,7 +54160,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54061,7 +54188,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54685,7 +54812,7 @@ snapshots: '@volar/typescript': 2.4.10 '@vue/language-core': 2.1.6(typescript@5.9.2) compare-versions: 6.1.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 0.5.1 magic-string: 0.30.13 From bc2aad92d7c986a611300532475a8daa53fed417 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Fri, 24 Oct 2025 11:49:43 -0400 Subject: [PATCH 3/3] updates --- .../opportunity-close-date-updated.mjs | 2 +- .../opportunity-stage-updated/opportunity-stage-updated.mjs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs index 7ea5b7d1907e5..bb593cd6ee4fe 100644 --- a/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-close-date-updated/opportunity-close-date-updated.mjs @@ -4,7 +4,7 @@ export default { ...common, key: "microsoft_dynamics_365_sales-opportunity-close-date-updated", name: "Opportunity Close Date Updated", - description: "Emit new event when the close date of an opportunity is updated.", + description: "Emit new event when the estimated close date of an opportunity is updated.", version: "0.0.1", type: "source", dedupe: "unique", diff --git a/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs b/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs index c6a47aaba6d5c..b85de8bd882ab 100644 --- a/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs +++ b/components/microsoft_dynamics_365_sales/sources/opportunity-stage-updated/opportunity-stage-updated.mjs @@ -33,11 +33,11 @@ export default { const stages = this._getStages(); const relevantResults = []; for (const result of results) { - if (stages[result.opportunityid] !== result.stageid) { + if (stages[result.opportunityid] !== result.stepname) { if (stages[result.opportunityid]) { relevantResults.push(result); } - stages[result.opportunityid] = result.stageid; + stages[result.opportunityid] = result.stepname; } } this._setStages(stages);