From 28126de525c352520e95fc11d269432a7976c3e3 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Wed, 17 Dec 2025 16:15:42 -0500 Subject: [PATCH 1/3] new components --- components/cloudbeds/cloudbeds.app.mjs | 34 +++++++++- components/cloudbeds/package.json | 7 +- .../cloudbeds/sources/common/base-webhook.mjs | 67 +++++++++++++++++++ .../new-guest-created/new-guest-created.mjs | 29 ++++++++ .../sources/new-guest-created/test-event.mjs | 9 +++ .../new-reservation-created.mjs | 29 ++++++++ .../new-reservation-created/test-event.mjs | 10 +++ .../new-transaction-created.mjs | 29 ++++++++ .../new-transaction-created/test-event.mjs | 10 +++ .../reservation-status-changed.mjs | 50 ++++++++++++++ .../reservation-status-changed/test-event.mjs | 13 ++++ 11 files changed, 282 insertions(+), 5 deletions(-) create mode 100644 components/cloudbeds/sources/common/base-webhook.mjs create mode 100644 components/cloudbeds/sources/new-guest-created/new-guest-created.mjs create mode 100644 components/cloudbeds/sources/new-guest-created/test-event.mjs create mode 100644 components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs create mode 100644 components/cloudbeds/sources/new-reservation-created/test-event.mjs create mode 100644 components/cloudbeds/sources/new-transaction-created/new-transaction-created.mjs create mode 100644 components/cloudbeds/sources/new-transaction-created/test-event.mjs create mode 100644 components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs create mode 100644 components/cloudbeds/sources/reservation-status-changed/test-event.mjs diff --git a/components/cloudbeds/cloudbeds.app.mjs b/components/cloudbeds/cloudbeds.app.mjs index dc2ebc8ec683d..0f7d34230081e 100644 --- a/components/cloudbeds/cloudbeds.app.mjs +++ b/components/cloudbeds/cloudbeds.app.mjs @@ -1,11 +1,39 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "cloudbeds", propDefinitions: {}, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return "https://api.cloudbeds.com/api/v1.3"; + }, + _makeRequest({ + $ = this, path, headers, ...opts + }) { + return axios($, { + url: `${this._baseUrl()}/${path}`, + headers: { + ...headers, + "x-api-key": `${this.$auth.api_key}`, + "accept": "application/json", + }, + ...opts, + }); + }, + createWebhook(opts = {}) { + return this._makeRequest({ + path: "/postWebhook", + method: "POST", + ...opts, + }); + }, + deleteWebhook(opts = {}) { + return this._makeRequest({ + path: "/deleteWebhook", + method: "DELETE", + ...opts, + }); }, }, }; diff --git a/components/cloudbeds/package.json b/components/cloudbeds/package.json index 890cbb5e8a6df..dd7bdc6716f96 100644 --- a/components/cloudbeds/package.json +++ b/components/cloudbeds/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/cloudbeds", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Cloudbeds Components", "main": "cloudbeds.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.1.1" } -} \ No newline at end of file +} diff --git a/components/cloudbeds/sources/common/base-webhook.mjs b/components/cloudbeds/sources/common/base-webhook.mjs new file mode 100644 index 0000000000000..9b146423807a9 --- /dev/null +++ b/components/cloudbeds/sources/common/base-webhook.mjs @@ -0,0 +1,67 @@ +import cloudbeds from "../../cloudbeds.app.mjs"; +import { ConfigurationError } from "@pipedream/platform"; + +export default { + props: { + cloudbeds, + db: "$.service.db", + http: { + type: "$.interface.http", + customResponse: true, + }, + }, + hooks: { + async activate() { + const { data: { subscriptionID: id } } = await this.cloudbeds.createWebhook({ + data: { + endpointUrl: this.http.endpoint, + object: this.getObject(), + action: this.getAction(), + }, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + }); + this.setWebhookId(id); + }, + async deactivate() { + const webhookId = this.getWebhookId(); + if (webhookId) { + await this.cloudbeds.deleteWebhook({ + params: { + subscriptionID: webhookId, + }, + }); + } + }, + }, + methods: { + setWebhookId(value) { + this.db.set("webhookId", value); + }, + getWebhookId() { + return this.db.get("webhookId"); + }, + isRelevant() { + return true; + }, + getObject() { + throw new ConfigurationError("getObject is not implemented"); + }, + getAction() { + throw new ConfigurationError("getAction is not implemented"); + }, + generateMeta() { + throw new ConfigurationError("generateMeta is not implemented"); + }, + }, + async run({ body }) { + this.http.respond({ + status: 200, + }); + if (!this.isRelevant(body)) { + return; + } + this.$emit(body, this.generateMeta(body)); + }, +}; diff --git a/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs b/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs new file mode 100644 index 0000000000000..3637b5381b9c4 --- /dev/null +++ b/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs @@ -0,0 +1,29 @@ +import common from "../common/base-webhook.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "cloudbeds-new-guest-created", + name: "New Guest Created (Instant)", + description: "Emit new event when a new guest is created in Cloudbeds. [See the documentation](https://developers.cloudbeds.com/reference/post_postwebhook-2)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getObject() { + return "guest"; + }, + getAction() { + return "created"; + }, + generateMeta(body) { + return { + id: body.guestId, + summary: `New guest created with ID: ${body.guestId}`, + ts: Math.floor(body.timestamp), + }; + }, + }, + sampleEmit, +}; diff --git a/components/cloudbeds/sources/new-guest-created/test-event.mjs b/components/cloudbeds/sources/new-guest-created/test-event.mjs new file mode 100644 index 0000000000000..7785ffdf2d360 --- /dev/null +++ b/components/cloudbeds/sources/new-guest-created/test-event.mjs @@ -0,0 +1,9 @@ +export default { + "propertyId": 318267, + "propertyId_str": "318267", + "guestId": 159926682, + "guestId_str": "159926682", + "version": "1.0", + "event": "guest/created", + "timestamp": 1766005021.042568 +} \ No newline at end of file diff --git a/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs b/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs new file mode 100644 index 0000000000000..6a8f76b052f72 --- /dev/null +++ b/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs @@ -0,0 +1,29 @@ +import common from "../common/base-webhook.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "cloudbeds-new-reservation-created", + name: "New Reservation Created (Instant)", + description: "Emit new event when a new reservation is created in Cloudbeds. [See the documentation](https://developers.cloudbeds.com/reference/post_postwebhook-2)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getObject() { + return "reservation"; + }, + getAction() { + return "created"; + }, + generateMeta(body) { + return { + id: body.reservationID, + summary: `New reservation created with ID: ${body.reservationID}`, + ts: Math.floor(body.timestamp), + }; + }, + }, + sampleEmit, +}; diff --git a/components/cloudbeds/sources/new-reservation-created/test-event.mjs b/components/cloudbeds/sources/new-reservation-created/test-event.mjs new file mode 100644 index 0000000000000..4cf28fd16d953 --- /dev/null +++ b/components/cloudbeds/sources/new-reservation-created/test-event.mjs @@ -0,0 +1,10 @@ +export default { + "reservationID": "7061304407766", + "propertyID": 318267, + "propertyID_str": "318267", + "startDate": "2025-12-17", + "endDate": "2025-12-18", + "version": "1.0", + "event": "reservation/created", + "timestamp": 1766005022.073195 +} \ No newline at end of file diff --git a/components/cloudbeds/sources/new-transaction-created/new-transaction-created.mjs b/components/cloudbeds/sources/new-transaction-created/new-transaction-created.mjs new file mode 100644 index 0000000000000..dd9238c2958e7 --- /dev/null +++ b/components/cloudbeds/sources/new-transaction-created/new-transaction-created.mjs @@ -0,0 +1,29 @@ +import common from "../common/base-webhook.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "cloudbeds-new-transaction-created", + name: "New Transaction Created (Instant)", + description: "Emit new event when a new transaction is created in Cloudbeds. [See the documentation](https://developers.cloudbeds.com/reference/post_postwebhook-2)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getObject() { + return "accounting"; + }, + getAction() { + return "transaction"; + }, + generateMeta(body) { + return { + id: body.transactionId, + summary: `New transaction created with ID: ${body.transactionId}`, + ts: Date.parse(body.transactionDateTime), + }; + }, + }, + sampleEmit, +}; diff --git a/components/cloudbeds/sources/new-transaction-created/test-event.mjs b/components/cloudbeds/sources/new-transaction-created/test-event.mjs new file mode 100644 index 0000000000000..017fd79f0edbf --- /dev/null +++ b/components/cloudbeds/sources/new-transaction-created/test-event.mjs @@ -0,0 +1,10 @@ +export default { + "version": "1.0", + "propertyId": "12345", + "event": "accounting/transaction", + "internalTransactionCode": "8100", + "serviceDate": "2025-09-24", + "transactionDateTime": "2025-09-24T14:01:17", + "transactionId": "148785457922303", + "parentTransactionId": null, +} \ No newline at end of file diff --git a/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs b/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs new file mode 100644 index 0000000000000..a30717bf21065 --- /dev/null +++ b/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs @@ -0,0 +1,50 @@ +import common from "../common/base-webhook.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "cloudbeds-reservation-status-changed", + name: "Reservation Status Changed (Instant)", + description: "Emit new event when a reservation status is changed in Cloudbeds. [See the documentation](https://developers.cloudbeds.com/reference/post_postwebhook-2)", + version: "0.0.1", + type: "source", + dedupe: "unique", + props: { + ...common.props, + statuses: { + type: "string[]", + label: "Statuses", + description: "Watch for reservations that have been updated to the selected statuses", + options: [ + "in_progress", + "confirmed", + "not_confirmed", + "canceled", + "checked_in", + "checked_out", + "no_show", + ], + optional: true, + }, + }, + methods: { + ...common.methods, + getObject() { + return "reservation"; + }, + getAction() { + return "status_changed"; + }, + isRelevant(body) { + return this.statuses.includes(body.status); + }, + generateMeta(body) { + return { + id: body.timestamp, + summary: `Reservation status changed to ${body.status}`, + ts: Math.floor(body.timestamp), + }; + }, + }, + sampleEmit, +}; diff --git a/components/cloudbeds/sources/reservation-status-changed/test-event.mjs b/components/cloudbeds/sources/reservation-status-changed/test-event.mjs new file mode 100644 index 0000000000000..6f104bacb8b31 --- /dev/null +++ b/components/cloudbeds/sources/reservation-status-changed/test-event.mjs @@ -0,0 +1,13 @@ +export default { + "reservationID": "7061304407766", + "propertyID": 318267, + "propertyID_str": "318267", + "status": "canceled", + "actor": { + "type": "user", + "id": "568158" + }, + "version": "1.0", + "event": "reservation/status_changed", + "timestamp": 1766005381.816514 +} \ No newline at end of file From 1995b9f923c94cad2552756a8ae98d68892c222a Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Wed, 17 Dec 2025 16:16:17 -0500 Subject: [PATCH 2/3] pnpm-lock.yaml --- pnpm-lock.yaml | 136 ++++++++++++++++--------------------------------- 1 file changed, 43 insertions(+), 93 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e649cea64329..57547291960c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3008,7 +3008,11 @@ importers: specifier: ^1.6.8 version: 1.6.8 - components/cloudbeds: {} + components/cloudbeds: + dependencies: + '@pipedream/platform': + specifier: ^3.1.1 + version: 3.1.1 components/cloudbees: dependencies: @@ -4571,8 +4575,7 @@ importers: specifier: ^3.1.1 version: 3.1.1 - components/eaccounting: - specifiers: {} + components/eaccounting: {} components/eagle_doc: {} @@ -11068,8 +11071,7 @@ importers: specifier: ^1.6.8 version: 1.6.8 - components/peoplehr: - specifiers: {} + components/peoplehr: {} components/perigon: dependencies: @@ -17645,7 +17647,7 @@ importers: version: 3.1.11 ts-jest: specifier: ^29.2.5 - version: 29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.4.5(@babel/core@8.0.0-beta.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-beta.3))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)))(typescript@5.6.3) tsup: specifier: ^8.3.6 version: 8.5.1(@microsoft/api-extractor@7.55.0(@types/node@20.19.25))(jiti@2.6.1)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.6.3)(yaml@2.8.1) @@ -17688,7 +17690,7 @@ importers: version: 3.1.0 jest: specifier: ^29.1.2 - version: 29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + version: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) type-fest: specifier: ^4.15.0 version: 4.41.0 @@ -31829,17 +31831,17 @@ 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 supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} @@ -37380,7 +37382,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -37394,7 +37396,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -37415,7 +37417,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -37429,7 +37431,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -39530,7 +39532,6 @@ snapshots: transitivePeerDependencies: - rolldown - rollup - - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.9)(rollup@4.53.2)': dependencies: @@ -43833,13 +43834,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.12 - create-jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -43848,13 +43849,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)): + create-jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -47745,16 +47746,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -47764,16 +47765,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)): + jest-cli@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + create-jest: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + jest-config: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -47783,7 +47784,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)): dependencies: '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 @@ -47809,12 +47810,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.19.25 - ts-node: 10.9.2(@types/node@20.19.25)(typescript@5.6.3) + ts-node: 10.9.2(@types/node@20.19.25)(typescript@3.9.10) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)): + jest-config@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): dependencies: '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 @@ -47840,38 +47841,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.19.25 - ts-node: 10.9.2(@types/node@24.10.1)(typescript@3.9.10) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)): - dependencies: - '@babel/core': 7.28.5 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.5) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 24.10.1 - ts-node: 10.9.2(@types/node@24.10.1)(typescript@3.9.10) + ts-node: 10.9.2(@types/node@20.19.25)(typescript@5.6.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -48107,24 +48077,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): + jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)): + jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.10.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10)) + jest-cli: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -53658,26 +53628,6 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.5))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)))(typescript@5.6.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.3 - type-fest: 4.41.0 - typescript: 5.6.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.5) - jest-util: 29.7.0 - ts-jest@29.4.5(@babel/core@8.0.0-beta.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-beta.3))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 @@ -53698,7 +53648,7 @@ snapshots: babel-jest: 29.7.0(@babel/core@8.0.0-beta.3) jest-util: 29.7.0 - ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3): + ts-node@10.9.2(@types/node@20.19.25)(typescript@3.9.10): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -53712,26 +53662,26 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 3.9.10 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@24.10.1)(typescript@3.9.10): + ts-node@10.9.2(@types/node@20.19.25)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.1 + '@types/node': 20.19.25 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 3.9.10 + typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optional: true From 231486c2c2b56fdb736bfe84f07ae159650f7b95 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Wed, 17 Dec 2025 16:29:44 -0500 Subject: [PATCH 3/3] updates --- .../sources/new-guest-created/new-guest-created.mjs | 2 +- .../new-reservation-created/new-reservation-created.mjs | 2 +- .../reservation-status-changed.mjs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs b/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs index 3637b5381b9c4..02c1fb39ce983 100644 --- a/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs +++ b/components/cloudbeds/sources/new-guest-created/new-guest-created.mjs @@ -21,7 +21,7 @@ export default { return { id: body.guestId, summary: `New guest created with ID: ${body.guestId}`, - ts: Math.floor(body.timestamp), + ts: Math.floor(body.timestamp * 1000), }; }, }, diff --git a/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs b/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs index 6a8f76b052f72..34851dc2de646 100644 --- a/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs +++ b/components/cloudbeds/sources/new-reservation-created/new-reservation-created.mjs @@ -21,7 +21,7 @@ export default { return { id: body.reservationID, summary: `New reservation created with ID: ${body.reservationID}`, - ts: Math.floor(body.timestamp), + ts: Math.floor(body.timestamp * 1000), }; }, }, diff --git a/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs b/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs index a30717bf21065..d788aaddb5db1 100644 --- a/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs +++ b/components/cloudbeds/sources/reservation-status-changed/reservation-status-changed.mjs @@ -36,13 +36,13 @@ export default { return "status_changed"; }, isRelevant(body) { - return this.statuses.includes(body.status); + return !this.statuses?.length || this.statuses.includes(body.status); }, generateMeta(body) { return { - id: body.timestamp, + id: `${body.reservationID}-${body.timestamp}`, summary: `Reservation status changed to ${body.status}`, - ts: Math.floor(body.timestamp), + ts: Math.floor(body.timestamp * 1000), }; }, },