From 1e09207d04bbc5a2b8bb27681d2fa49cbb579bd3 Mon Sep 17 00:00:00 2001 From: Luan Cazarine Date: Thu, 20 Nov 2025 14:25:06 -0500 Subject: [PATCH 1/4] Enhance Encharge component with new actions and sources - Added actions for adding/updating a person, archiving a person, and removing tags. - Introduced new sources for detecting new and updated persons, as well as when tags are removed. - Updated prop definitions to include user ID and tags for better integration. - Implemented utility functions for parsing objects and managing API requests. - Bumped version to 0.1.0 and added dependencies for improved functionality. --- .../add-or-update-person.mjs | 73 +++++++++++ .../actions/archive-person/archive-person.mjs | 59 +++++++++ .../actions/remove-tags/remove-tags.mjs | 47 ++++++++ components/encharge/common/constants.mjs | 1 + components/encharge/common/utils.mjs | 24 ++++ components/encharge/encharge.app.mjs | 114 +++++++++++++++++- components/encharge/package.json | 5 +- components/encharge/sources/common/base.mjs | 35 ++++++ .../new-person-instant/new-person-instant.mjs | 30 +++++ .../sources/new-person-instant/test-event.mjs | 23 ++++ .../tag-removed-from-person-instant.mjs | 38 ++++++ .../test-event.mjs | 11 ++ .../updated-person-instant/test-event.mjs | 45 +++++++ .../updated-person-instant.mjs | 30 +++++ 14 files changed, 530 insertions(+), 5 deletions(-) create mode 100644 components/encharge/actions/add-or-update-person/add-or-update-person.mjs create mode 100644 components/encharge/actions/archive-person/archive-person.mjs create mode 100644 components/encharge/actions/remove-tags/remove-tags.mjs create mode 100644 components/encharge/common/constants.mjs create mode 100644 components/encharge/common/utils.mjs create mode 100644 components/encharge/sources/common/base.mjs create mode 100644 components/encharge/sources/new-person-instant/new-person-instant.mjs create mode 100644 components/encharge/sources/new-person-instant/test-event.mjs create mode 100644 components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs create mode 100644 components/encharge/sources/tag-removed-from-person-instant/test-event.mjs create mode 100644 components/encharge/sources/updated-person-instant/test-event.mjs create mode 100644 components/encharge/sources/updated-person-instant/updated-person-instant.mjs diff --git a/components/encharge/actions/add-or-update-person/add-or-update-person.mjs b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs new file mode 100644 index 0000000000000..2b4ec1a99693d --- /dev/null +++ b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs @@ -0,0 +1,73 @@ +import { parseObject } from "../../common/utils.mjs"; +import app from "../../encharge.app.mjs"; + +export default { + key: "encharge-add-or-update-person", + name: "Add or Update Person", + description: "Add or update a person in Encharge. [See the documentation](https://app-encharge-resources.s3.amazonaws.com/redoc.html#/people/createupdatepeople)", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + app, + userId: { + propDefinition: [ + app, + "userId", + ], + optional: true, + }, + firstName: { + type: "string", + label: "First Name", + description: "The first name of the person.", + optional: true, + }, + lastName: { + type: "string", + label: "Last Name", + description: "The last name of the person.", + optional: true, + }, + email: { + type: "string", + label: "Email", + description: "The email of the person.", + optional: true, + }, + additionalFields: { + type: "object", + label: "Additional Fields", + description: "Additional fields to include in the request body.", + optional: true, + }, + }, + async run({ $ }) { + const parsedAdditionalFields = parseObject(this.additionalFields) || {}; + const data = [ + { + firstName: this.firstName, + lastName: this.lastName, + email: this.email, + phone: this.phone, + id: this.userId, + additionalFields: this.additionalFields, + ...parsedAdditionalFields, + }, + ]; + + const response = await this.app.addOrUpdatePerson({ + $, + data, + }); + + $.export("$summary", `Successfully ${this.userId + ? "updated" + : "added"} person with email ${this.email}`); + return response; + }, +}; diff --git a/components/encharge/actions/archive-person/archive-person.mjs b/components/encharge/actions/archive-person/archive-person.mjs new file mode 100644 index 0000000000000..af64971f51c02 --- /dev/null +++ b/components/encharge/actions/archive-person/archive-person.mjs @@ -0,0 +1,59 @@ +import app from "../../encharge.app.mjs"; + +export default { + key: "encharge-archive-person", + name: "Archive Person", + description: "Archive a person in Encharge. [See the documentation](https://app-encharge-resources.s3.amazonaws.com/redoc.html#/people/archivepeople)", + version: "0.0.1", + annotations: { + destructiveHint: true, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + app, + userId: { + propDefinition: [ + app, + "userId", + ], + description: "The user ID of the person to archive.", + optional: true, + }, + email: { + type: "string", + label: "Email", + description: "The email of the person to archive.", + optional: true, + }, + force: { + type: "boolean", + label: "Force", + description: "If set to `true`, will delete the person's data. This is useful for GDPR-compliant removal of user data.", + default: false, + }, + }, + async run({ $ }) { + if (this.userId && this.email) { + throw new Error("You must provide either a user ID or an email, not both."); + } + + const response = await this.app.archivePerson({ + $, + params: { + people: [ + { + id: this.userId, + email: this.email, + }, + ], + force: this.force, + }, + }); + $.export("$summary", `Successfully archived person with ${this.userId + ? `ID ${this.userId}` + : `email ${this.email}`}`); + return response; + }, +}; diff --git a/components/encharge/actions/remove-tags/remove-tags.mjs b/components/encharge/actions/remove-tags/remove-tags.mjs new file mode 100644 index 0000000000000..884535e3e9017 --- /dev/null +++ b/components/encharge/actions/remove-tags/remove-tags.mjs @@ -0,0 +1,47 @@ +import { parseObject } from "../../common/utils.mjs"; +import app from "../../encharge.app.mjs"; + +export default { + key: "encharge-remove-tags", + name: "Remove Tags", + description: "Remove tag(s) from existing user. [See the documentation](https://app-encharge-resources.s3.amazonaws.com/#/tags/removetag)", + version: "0.0.1", + annotations: { + destructiveHint: true, + openWorldHint: true, + readOnlyHint: false, + }, + type: "action", + props: { + app, + userId: { + propDefinition: [ + app, + "userId", + ], + description: "UserID of the person.", + }, + tags: { + propDefinition: [ + app, + "tags", + ({ userId }) => ({ + userId, + }), + ], + }, + }, + async run({ $ }) { + const response = await this.app.removeTag({ + $, + data: { + tag: parseObject(this.tags).join(","), + id: this.userId, + }, + }); + $.export("$summary", `Successfully removed ${this.tags.length} tag${this.tags.length > 1 + ? "s" + : ""} from person with ID ${this.userId}`); + return response; + }, +}; diff --git a/components/encharge/common/constants.mjs b/components/encharge/common/constants.mjs new file mode 100644 index 0000000000000..ea830c15a04cb --- /dev/null +++ b/components/encharge/common/constants.mjs @@ -0,0 +1 @@ +export const LIMIT = 100; diff --git a/components/encharge/common/utils.mjs b/components/encharge/common/utils.mjs new file mode 100644 index 0000000000000..dcc9cc61f6f41 --- /dev/null +++ b/components/encharge/common/utils.mjs @@ -0,0 +1,24 @@ +export const parseObject = (obj) => { + if (!obj) return undefined; + + if (Array.isArray(obj)) { + return obj.map((item) => { + if (typeof item === "string") { + try { + return JSON.parse(item); + } catch (e) { + return item; + } + } + return item; + }); + } + if (typeof obj === "string") { + try { + return JSON.parse(obj); + } catch (e) { + return obj; + } + } + return obj; +}; diff --git a/components/encharge/encharge.app.mjs b/components/encharge/encharge.app.mjs index 32eb5dceb5a53..ffb04216dfb2f 100644 --- a/components/encharge/encharge.app.mjs +++ b/components/encharge/encharge.app.mjs @@ -1,11 +1,117 @@ +import { axios } from "@pipedream/platform"; +import { LIMIT } from "./common/constants.mjs"; + export default { type: "app", app: "encharge", - propDefinitions: {}, + propDefinitions: { + userId: { + type: "string", + label: "User ID", + description: "The user ID of the person to update.", + async options({ page }) { + const { people } = await this.listPeople({ + params: { + limit: LIMIT, + offset: LIMIT * page, + }, + }); + + return people.map(({ + id: value, name, email, + }) => ({ + label: `${name}${email + ? ` (${email})` + : ""}`, + value, + })); + }, + }, + tags: { + type: "string[]", + label: "Tags", + description: "Tags to remove from the person.", + async options({ userId }) { + const { + users: [ + { tags }, + ], + } = await this.getPerson({ + params: { + people: [ + { + id: userId, + }, + ], + }, + }); + return tags && tags.split(",") || []; + }, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _apiUrl() { + return "https://api.encharge.io/v1"; + }, + _getHeaders() { + return { + "Authorization": `Bearer ${this.$auth.oauth_access_token}`, + }; + }, + _makeRequest({ + $ = this, path, ...opts + }) { + return axios($, { + url: `${this._apiUrl()}/${path}`, + headers: this._getHeaders(), + ...opts, + }); + }, + getPerson(args = {}) { + return this._makeRequest({ + path: "people", + ...args, + }); + }, + listPeople(args = {}) { + return this._makeRequest({ + path: "people/all", + ...args, + }); + }, + addOrUpdatePerson(args = {}) { + return this._makeRequest({ + method: "POST", + path: "people", + ...args, + }); + }, + archivePerson(args = {}) { + return this._makeRequest({ + method: "DELETE", + path: "people", + ...args, + }); + }, + removeTag(args = {}) { + return this._makeRequest({ + method: "DELETE", + path: "tags", + ...args, + }); + }, + createHook(args = {}) { + return this._makeRequest({ + method: "POST", + path: "event-subscriptions", + ...args, + }); + }, + deleteHook(hookId) { + return this._makeRequest({ + method: "DELETE", + path: `event-subscriptions/${hookId}`, + }); }, }, }; diff --git a/components/encharge/package.json b/components/encharge/package.json index d5f4ed7920251..2bcf07317ccba 100644 --- a/components/encharge/package.json +++ b/components/encharge/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/encharge", - "version": "0.0.2", + "version": "0.1.0", "description": "Pipedream Encharge Components", "main": "encharge.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.1.1" } } diff --git a/components/encharge/sources/common/base.mjs b/components/encharge/sources/common/base.mjs new file mode 100644 index 0000000000000..d16377435d1e1 --- /dev/null +++ b/components/encharge/sources/common/base.mjs @@ -0,0 +1,35 @@ +import encharge from "../../encharge.app.mjs"; + +export default { + props: { + encharge, + db: "$.service.db", + http: "$.interface.http", + }, + methods: { + _setWebhookId(id) { + this.db.set("webhookId", id); + }, + _getWebhookId() { + return this.db.get("webhookId"); + }, + }, + hooks: { + async activate() { + const { subscription } = await this.encharge.createHook({ + data: { + url: this.http.endpoint, + eventType: this.getEvent(), + }, + }); + this._setWebhookId(subscription.id); + }, + async deactivate() { + const webhookId = this._getWebhookId(); + await this.encharge.deleteHook(webhookId); + }, + }, + async run({ body }) { + this.$emit(body, this.generateMeta(body)); + }, +}; diff --git a/components/encharge/sources/new-person-instant/new-person-instant.mjs b/components/encharge/sources/new-person-instant/new-person-instant.mjs new file mode 100644 index 0000000000000..813167a9d5f9e --- /dev/null +++ b/components/encharge/sources/new-person-instant/new-person-instant.mjs @@ -0,0 +1,30 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "encharge-new-person-instant", + name: "New Person (Instant)", + description: "Emit new event when a person is created.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getEvent() { + return "newUser"; + }, + generateMeta({ + endUserData: [ + data, + ], + }) { + return { + id: data.id, + summary: `New person with ID ${data.id} created`, + ts: data.createdAt, + }; + }, + }, + sampleEmit, +}; diff --git a/components/encharge/sources/new-person-instant/test-event.mjs b/components/encharge/sources/new-person-instant/test-event.mjs new file mode 100644 index 0000000000000..70463d3f16bea --- /dev/null +++ b/components/encharge/sources/new-person-instant/test-event.mjs @@ -0,0 +1,23 @@ +export default { + "eventType": "newUser", + "eventPayload": {}, + "endUserData": [ + { + "email": "email@test.com", + "firstName": "John", + "lastName": "Doe", + "name": "John Doe", + "lastActivity": "2025-11-20T19:05:09.385Z", + "createdAt": "2025-11-20T19:05:09.375Z", + "leadScore": 0, + "updatedAt": "2025-11-20T19:05:09.387Z", + "id": "934d4608-dce3-423e-815a-e6a4cc64b930", + "data": { + "additionalFields": { + "field01": "value 01", + "field02": "value 02" + } + } + } + ] +} \ No newline at end of file diff --git a/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs b/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs new file mode 100644 index 0000000000000..a89d73159bd7c --- /dev/null +++ b/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs @@ -0,0 +1,38 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "encharge-tag-removed-from-person-instant", + name: "Tag Removed from Person (Instant)", + description: "Emit new event when a tag is removed from a person.", + version: "0.0.1", + type: "source", + dedupe: "unique", + props: { + ...common.props, + tagId: { + type: "string", + label: "Tag ID", + description: "Tag ID to remove from person.", + }, + }, + methods: { + ...common.methods, + getEvent() { + return `removed-tag-${this.tagId}`; + }, + generateMeta({ + endUserData: [ + id, + ], + }) { + return { + id: `${id}-${this.tagId}`, + summary: `Tag ${this.tagId} removed from person with ID ${id}`, + ts: Date.now(), + }; + }, + }, + sampleEmit, +}; diff --git a/components/encharge/sources/tag-removed-from-person-instant/test-event.mjs b/components/encharge/sources/tag-removed-from-person-instant/test-event.mjs new file mode 100644 index 0000000000000..87acda15c1441 --- /dev/null +++ b/components/encharge/sources/tag-removed-from-person-instant/test-event.mjs @@ -0,0 +1,11 @@ +export default { + "eventType": "removed-tag-tagName", + "eventPayload": { + "tag": "tagName" + }, + "endUserData": [ + { + "id": "12345678-1234-1234-1234-1234567890" + } + ] +} \ No newline at end of file diff --git a/components/encharge/sources/updated-person-instant/test-event.mjs b/components/encharge/sources/updated-person-instant/test-event.mjs new file mode 100644 index 0000000000000..e1afebcf45d6c --- /dev/null +++ b/components/encharge/sources/updated-person-instant/test-event.mjs @@ -0,0 +1,45 @@ +export default { + "eventType": "updatedUser", + "eventPayload": { + "changedFields": { + "firstName": { + "newValue": "John", + "oldValue": "Martin" + }, + "lastName": { + "newValue": "Doe", + "oldValue": "Smith" + }, + "name": { + "newValue": "John Doe", + "oldValue": "Martin Smith" + } + }, + "source": "api" + }, + "endUserData": [ + { + "email": "email@test.com", + "firstName": "Martin", + "lastName": "Smith", + "name": "Martin Smith", + "lastActivity": "2025-11-20T19:08:19.373Z", + "createdAt": "2025-11-20T19:08:19.366Z", + "leadScore": 0, + "updatedAt": "2025-11-20T19:21:59.973Z", + "id": "12345678-1234-1234-1234-1234567890", + "validationResult": "invalid", + "validationConfidence": 75, + "isEmailDisposable": false, + "isEmailRole": false, + "data": { + "field01": "value 01", + "field02": "value 02", + "additionalFields": { + "field01": "value 01", + "field02": "value 02" + } + } + } + ] +} \ No newline at end of file diff --git a/components/encharge/sources/updated-person-instant/updated-person-instant.mjs b/components/encharge/sources/updated-person-instant/updated-person-instant.mjs new file mode 100644 index 0000000000000..4a30e884f7a39 --- /dev/null +++ b/components/encharge/sources/updated-person-instant/updated-person-instant.mjs @@ -0,0 +1,30 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "encharge-updated-person-instant", + name: "Updated Person (Instant)", + description: "Emit new event when a person is updated.", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getEvent() { + return "updatedUser"; + }, + generateMeta({ + endUserData: [ + data, + ], + }) { + return { + id: data.id, + summary: `Person with ID ${data.id} updated`, + ts: data.createdAt, + }; + }, + }, + sampleEmit, +}; From 2aa0c232fa62b5b8fc82931f3056ea81ac42f100 Mon Sep 17 00:00:00 2001 From: Luan Cazarine Date: Thu, 20 Nov 2025 14:27:28 -0500 Subject: [PATCH 2/4] pnpm update --- pnpm-lock.yaml | 319 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 243 insertions(+), 76 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07fbf0d8b3272..c9afc620f159c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4710,7 +4710,11 @@ importers: components/emelia: {} - components/encharge: {} + components/encharge: + dependencies: + '@pipedream/platform': + specifier: ^3.1.1 + version: 3.1.1 components/encodian: dependencies: @@ -8374,7 +8378,7 @@ importers: dependencies: linkup-sdk: specifier: ^1.0.3 - version: 1.2.0(@types/node@20.19.25)(typescript@5.6.3) + version: 1.2.0(@types/node@22.19.1)(typescript@5.9.3) components/linkupapi: dependencies: @@ -17423,7 +17427,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))(esbuild@0.25.12)(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@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) tsup: specifier: ^8.3.6 version: 8.5.0(@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) @@ -34784,7 +34788,7 @@ snapshots: '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -34804,7 +34808,7 @@ snapshots: '@jridgewell/remapping': 2.3.5 '@types/gensync': 1.0.4 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.7.3 @@ -34881,7 +34885,7 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) lodash.debounce: 4.0.8 resolve: 1.22.11 transitivePeerDependencies: @@ -35646,7 +35650,7 @@ snapshots: '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.5 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -35658,7 +35662,7 @@ snapshots: '@babel/parser': 8.0.0-beta.3 '@babel/template': 8.0.0-beta.3 '@babel/types': 8.0.0-beta.3 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -35786,6 +35790,19 @@ snapshots: - '@types/node' - typescript + '@commitlint/cli@19.8.1(@types/node@22.19.1)(typescript@5.9.3)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@22.19.1)(typescript@5.9.3) + '@commitlint/read': 19.8.1 + '@commitlint/types': 19.8.1 + tinyexec: 1.0.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + '@commitlint/config-conventional@19.8.1': dependencies: '@commitlint/types': 19.8.1 @@ -35840,6 +35857,22 @@ snapshots: - '@types/node' - typescript + '@commitlint/load@19.8.1(@types/node@22.19.1)(typescript@5.9.3)': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/execute-rule': 19.8.1 + '@commitlint/resolve-extends': 19.8.1 + '@commitlint/types': 19.8.1 + chalk: 5.6.2 + cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@22.19.1)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + '@commitlint/message@19.8.1': {} '@commitlint/parse@19.8.1': @@ -36317,7 +36350,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -36331,7 +36364,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -36820,7 +36853,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -38536,7 +38569,7 @@ snapshots: '@pnpm/tabtab@0.5.4': dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) enquirer: 2.4.1 minimist: 1.2.8 untildify: 4.0.0 @@ -38617,7 +38650,7 @@ snapshots: '@puppeteer/browsers@2.10.13': dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 @@ -38710,7 +38743,7 @@ snapshots: '@putout/babel': 3.2.0 '@putout/engine-parser': 12.6.0 '@putout/operate': 13.5.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) jessy: 4.1.0 nessy: 5.3.0 transitivePeerDependencies: @@ -38721,7 +38754,7 @@ snapshots: '@putout/babel': 3.2.0 '@putout/engine-parser': 13.1.0(rolldown@1.0.0-beta.9)(rollup@4.53.2) '@putout/operate': 13.5.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) jessy: 4.1.0 nessy: 5.3.0 transitivePeerDependencies: @@ -38734,7 +38767,7 @@ snapshots: '@putout/babel': 4.5.2(rolldown@1.0.0-beta.9)(rollup@4.53.2) '@putout/engine-parser': 14.2.0(rolldown@1.0.0-beta.9)(rollup@4.53.2) '@putout/operate': 14.2.0(rolldown@1.0.0-beta.9)(rollup@4.53.2) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) jessy: 4.1.0 nessy: 5.3.0 transitivePeerDependencies: @@ -38831,7 +38864,7 @@ snapshots: '@putout/operator-filesystem': 9.0.1(putout@40.13.0(eslint@8.57.1)(rolldown@1.0.0-beta.9)(rollup@4.53.2)(typescript@5.6.3))(rolldown@1.0.0-beta.9)(rollup@4.53.2) '@putout/operator-json': 2.2.0 '@putout/plugin-filesystem': 11.0.1(putout@40.13.0(eslint@8.57.1)(rolldown@1.0.0-beta.9)(rollup@4.53.2)(typescript@5.6.3))(rolldown@1.0.0-beta.9)(rollup@4.53.2) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fullstore: 3.0.0 jessy: 4.1.0 nessy: 5.3.0 @@ -39038,6 +39071,7 @@ snapshots: transitivePeerDependencies: - rolldown - rollup + - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.9)(rollup@4.53.2)': dependencies: @@ -39994,7 +40028,7 @@ snapshots: conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 @@ -40002,6 +40036,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.9(typescript@5.9.3))': + dependencies: + conventional-changelog-angular: 8.1.0 + conventional-changelog-writer: 8.2.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.2.1 + debug: 4.4.3(supports-color@9.4.0) + import-from-esm: 2.0.0 + lodash-es: 4.17.21 + micromatch: 4.0.8 + semantic-release: 24.2.9(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + '@semantic-release/error@4.0.0': {} '@semantic-release/github@11.0.6(semantic-release@24.2.9(typescript@5.6.3))': @@ -40012,7 +40060,7 @@ snapshots: '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) dir-glob: 3.0.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -40026,6 +40074,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@semantic-release/github@11.0.6(semantic-release@24.2.9(typescript@5.9.3))': + dependencies: + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.6) + '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6) + '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.4.3(supports-color@9.4.0) + dir-glob: 3.0.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + issue-parser: 7.0.1 + lodash-es: 4.17.21 + mime: 4.1.0 + p-filter: 4.1.0 + semantic-release: 24.2.9(typescript@5.9.3) + tinyglobby: 0.2.15 + url-join: 5.0.0 + transitivePeerDependencies: + - supports-color + '@semantic-release/npm@12.0.2(semantic-release@24.2.9(typescript@5.6.3))': dependencies: '@semantic-release/error': 4.0.0 @@ -40043,13 +40113,30 @@ snapshots: semver: 7.7.3 tempy: 3.1.0 + '@semantic-release/npm@12.0.2(semantic-release@24.2.9(typescript@5.9.3))': + dependencies: + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + execa: 9.6.0 + fs-extra: 11.3.2 + lodash-es: 4.17.21 + nerf-dart: 1.0.0 + normalize-url: 8.1.0 + npm: 10.9.4 + rc: 1.2.8 + read-pkg: 9.0.1 + registry-auth-token: 5.1.0 + semantic-release: 24.2.9(typescript@5.9.3) + semver: 7.7.3 + tempy: 3.1.0 + '@semantic-release/release-notes-generator@14.1.0(semantic-release@24.2.9(typescript@5.6.3))': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) get-stream: 7.0.1 import-from-esm: 2.0.0 into-stream: 7.0.0 @@ -40059,6 +40146,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@semantic-release/release-notes-generator@14.1.0(semantic-release@24.2.9(typescript@5.9.3))': + dependencies: + conventional-changelog-angular: 8.1.0 + conventional-changelog-writer: 8.2.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.2.1 + debug: 4.4.3(supports-color@9.4.0) + get-stream: 7.0.1 + import-from-esm: 2.0.0 + into-stream: 7.0.0 + lodash-es: 4.17.21 + read-package-up: 11.0.0 + semantic-release: 24.2.9(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + '@sendgrid/client@7.7.0': dependencies: '@sendgrid/helpers': 7.7.0 @@ -40687,7 +40790,7 @@ snapshots: '@tokenizer/inflate@0.3.1': dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fflate: 0.8.2 token-types: 6.1.1 transitivePeerDependencies: @@ -41104,7 +41207,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) eslint: 8.57.1 typescript: 5.6.3 transitivePeerDependencies: @@ -41116,7 +41219,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) eslint: 8.57.1 typescript: 5.9.3 transitivePeerDependencies: @@ -41135,7 +41238,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.6.3) '@typescript-eslint/types': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -41144,7 +41247,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) '@typescript-eslint/types': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -41167,7 +41270,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.6.3) '@typescript-eslint/utils': 8.46.4(eslint@8.57.1)(typescript@5.6.3) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 @@ -41179,7 +41282,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) '@typescript-eslint/utils': 8.46.4(eslint@8.57.1)(typescript@5.9.3) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 @@ -41210,7 +41313,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.6.3) '@typescript-eslint/types': 8.46.4 '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -41226,7 +41329,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) '@typescript-eslint/types': 8.46.4 '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -41265,7 +41368,7 @@ snapshots: '@typescript/vfs@1.6.2(typescript@5.4.5)': dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -41632,7 +41735,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -42390,7 +42493,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -43177,6 +43280,13 @@ snapshots: jiti: 2.6.1 typescript: 5.6.3 + cosmiconfig-typescript-loader@6.2.0(@types/node@22.19.1)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + dependencies: + '@types/node': 22.19.1 + cosmiconfig: 9.0.0(typescript@5.9.3) + jiti: 2.6.1 + typescript: 5.9.3 + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 @@ -43201,6 +43311,15 @@ snapshots: optionalDependencies: typescript: 5.6.3 + cosmiconfig@9.0.0(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + cp-file@6.2.0: dependencies: graceful-fs: 4.2.11 @@ -44318,7 +44437,7 @@ snapshots: eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) eslint: 8.57.1 get-tsconfig: 4.13.0 is-bun-module: 2.0.0 @@ -44591,7 +44710,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -44860,7 +44979,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -45176,7 +45295,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -45289,7 +45408,7 @@ snapshots: dependencies: '@putout/engine-loader': 16.2.1(putout@40.13.0(eslint@8.57.1)(rolldown@1.0.0-beta.9)(rollup@4.53.2)(typescript@5.6.3)) '@putout/operator-keyword': 2.2.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) js-tokens: 9.0.1 transitivePeerDependencies: - putout @@ -45311,7 +45430,7 @@ snapshots: follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) for-each@0.3.5: dependencies: @@ -45628,7 +45747,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -46370,14 +46489,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -46430,14 +46549,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -46525,7 +46644,7 @@ snapshots: import-from-esm@2.0.0: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) import-meta-resolve: 4.2.0 transitivePeerDependencies: - supports-color @@ -47048,7 +47167,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -47749,7 +47868,7 @@ snapshots: dependencies: '@types/express': 4.17.25 '@types/jsonwebtoken': 9.0.10 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) jose: 4.15.9 limiter: 1.1.5 lru-memoizer: 2.3.0 @@ -47928,6 +48047,20 @@ snapshots: - supports-color - typescript + linkup-sdk@1.2.0(@types/node@22.19.1)(typescript@5.9.3): + dependencies: + '@commitlint/cli': 19.8.1(@types/node@22.19.1)(typescript@5.9.3) + '@commitlint/config-conventional': 19.8.1 + axios: 1.13.2(debug@3.2.7) + semantic-release: 24.2.9(typescript@5.9.3) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + transitivePeerDependencies: + - '@types/node' + - debug + - supports-color + - typescript + lint-staged@12.5.0(enquirer@2.4.1): dependencies: cli-truncate: 3.1.0 @@ -48170,7 +48303,7 @@ snapshots: log4js@6.4.4: dependencies: date-format: 4.0.14 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) flatted: 3.3.3 rfdc: 1.4.1 streamroller: 3.1.5 @@ -48751,7 +48884,7 @@ snapshots: micromark@2.11.4: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -48759,7 +48892,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -48951,7 +49084,7 @@ snapshots: mqtt-packet@6.10.0: dependencies: bl: 4.1.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) process-nextick-args: 2.0.1 transitivePeerDependencies: - supports-color @@ -48960,7 +49093,7 @@ snapshots: dependencies: commist: 1.1.0 concat-stream: 2.0.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) duplexify: 4.1.3 help-me: 3.0.0 inherits: 2.0.4 @@ -48999,7 +49132,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) rfdc: 1.4.1 tarn: 3.0.2 tedious: 16.7.1 @@ -49146,7 +49279,7 @@ snapshots: content-type: 1.0.5 cookie: 1.0.2 cron-parser: 4.9.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) decache: 4.6.2 dot-prop: 9.0.0 dotenv: 17.2.3 @@ -49464,7 +49597,7 @@ snapshots: number-allocator@1.0.14: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) js-sdsl: 4.3.0 transitivePeerDependencies: - supports-color @@ -49919,7 +50052,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -50513,7 +50646,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -50610,7 +50743,7 @@ snapshots: dependencies: '@puppeteer/browsers': 2.10.13 chromium-bidi: 10.5.1(devtools-protocol@0.0.1521046) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) devtools-protocol: 0.0.1521046 typed-query-selector: 2.12.0 webdriver-bidi-protocol: 0.3.8 @@ -50774,7 +50907,7 @@ snapshots: '@putout/traverse': 14.0.0(rolldown@1.0.0-beta.9)(rollup@4.53.2) ajv: 8.17.1 ci-info: 4.3.1 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) deepmerge: 4.3.1 escalade: 3.2.0 fast-glob: 3.3.3 @@ -51458,7 +51591,7 @@ snapshots: retry-request@5.0.2: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) extend: 3.0.2 transitivePeerDependencies: - supports-color @@ -51519,7 +51652,7 @@ snapshots: '@babel/types': 7.28.5 ast-kit: 2.2.0 birpc: 2.8.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) dts-resolver: 2.1.3 get-tsconfig: 4.13.0 rolldown: 1.0.0-beta.9 @@ -51588,7 +51721,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -51722,7 +51855,42 @@ snapshots: '@semantic-release/release-notes-generator': 14.1.0(semantic-release@24.2.9(typescript@5.6.3)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.6.3) - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) + env-ci: 11.2.0 + execa: 9.6.0 + figures: 6.1.0 + find-versions: 6.0.0 + get-stream: 6.0.1 + git-log-parser: 1.2.1 + hook-std: 4.0.0 + hosted-git-info: 8.1.0 + import-from-esm: 2.0.0 + lodash-es: 4.17.21 + marked: 15.0.12 + marked-terminal: 7.3.0(marked@15.0.12) + micromatch: 4.0.8 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-package-up: 11.0.0 + resolve-from: 5.0.0 + semver: 7.7.3 + semver-diff: 5.0.0 + signale: 1.4.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + - typescript + + semantic-release@24.2.9(typescript@5.9.3): + dependencies: + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.9(typescript@5.9.3)) + '@semantic-release/error': 4.0.0 + '@semantic-release/github': 11.0.6(semantic-release@24.2.9(typescript@5.9.3)) + '@semantic-release/npm': 12.0.2(semantic-release@24.2.9(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.0(semantic-release@24.2.9(typescript@5.9.3)) + aggregate-error: 5.0.0 + cosmiconfig: 9.0.0(typescript@5.9.3) + debug: 4.4.3(supports-color@9.4.0) env-ci: 11.2.0 execa: 9.6.0 figures: 6.1.0 @@ -51788,7 +51956,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -52073,7 +52241,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -52289,7 +52457,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -52508,7 +52676,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.6.3) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 10.1.4 @@ -52583,7 +52751,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) form-data: 2.5.4 formidable: 1.2.6 methods: 1.1.2 @@ -52597,7 +52765,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) fast-safe-stringify: 2.1.1 form-data: 3.0.4 formidable: 1.2.6 @@ -52944,7 +53112,7 @@ snapshots: dependencies: '@aws-sdk/client-s3': 3.929.0(aws-crt@1.27.5) '@aws-sdk/s3-request-presigner': 3.929.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) form-data: 4.0.4 got: 14.4.9 into-stream: 9.0.0 @@ -52997,7 +53165,7 @@ 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))(esbuild@0.25.12)(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): + 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 @@ -53015,7 +53183,6 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.5) - esbuild: 0.25.12 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): @@ -53124,7 +53291,7 @@ snapshots: ansis: 4.2.0 cac: 6.7.14 chokidar: 4.0.3 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) diff: 8.0.2 empathic: 1.1.0 hookable: 5.5.3 @@ -53189,7 +53356,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 @@ -53218,7 +53385,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 @@ -53894,7 +54061,7 @@ snapshots: '@volar/typescript': 2.4.23 '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 1.1.2 magic-string: 0.30.21 @@ -53926,7 +54093,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 9.5.0 - debug: 4.4.3(supports-color@5.5.0) + debug: 4.4.3(supports-color@9.4.0) transitivePeerDependencies: - supports-color From e8cc937ab4a590aae8f303e8ea543226e6b920f6 Mon Sep 17 00:00:00 2001 From: Luan Cazarine Date: Thu, 20 Nov 2025 14:54:55 -0500 Subject: [PATCH 3/4] Refactor Encharge component actions for improved error handling and output formatting - Updated the return statement in the tags processing to use a ternary operator for clarity. - Removed unused additionalFields from the add-or-update-person action. - Enhanced the summary message in the add-or-update-person action to conditionally include the email. - Added validation in the archive-person action to ensure either user ID or email is provided. - Modified the remove-tags action to handle tags as an array for consistent processing. --- .../add-or-update-person/add-or-update-person.mjs | 5 +++-- .../encharge/actions/archive-person/archive-person.mjs | 3 +++ .../encharge/actions/remove-tags/remove-tags.mjs | 10 ++++++++-- components/encharge/encharge.app.mjs | 4 +++- .../tag-removed-from-person-instant.mjs | 2 +- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/components/encharge/actions/add-or-update-person/add-or-update-person.mjs b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs index 2b4ec1a99693d..8899dbefba9c4 100644 --- a/components/encharge/actions/add-or-update-person/add-or-update-person.mjs +++ b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs @@ -55,7 +55,6 @@ export default { email: this.email, phone: this.phone, id: this.userId, - additionalFields: this.additionalFields, ...parsedAdditionalFields, }, ]; @@ -67,7 +66,9 @@ export default { $.export("$summary", `Successfully ${this.userId ? "updated" - : "added"} person with email ${this.email}`); + : "added"} person${this.email + ? ` with email ${this.email}` + : ""}`); return response; }, }; diff --git a/components/encharge/actions/archive-person/archive-person.mjs b/components/encharge/actions/archive-person/archive-person.mjs index af64971f51c02..dfd2bfb9369e1 100644 --- a/components/encharge/actions/archive-person/archive-person.mjs +++ b/components/encharge/actions/archive-person/archive-person.mjs @@ -35,6 +35,9 @@ export default { }, }, async run({ $ }) { + if (!this.userId && !this.email) { + throw new Error("You must provide either a user ID or an email."); + } if (this.userId && this.email) { throw new Error("You must provide either a user ID or an email, not both."); } diff --git a/components/encharge/actions/remove-tags/remove-tags.mjs b/components/encharge/actions/remove-tags/remove-tags.mjs index 884535e3e9017..d47f102dbd83a 100644 --- a/components/encharge/actions/remove-tags/remove-tags.mjs +++ b/components/encharge/actions/remove-tags/remove-tags.mjs @@ -32,14 +32,20 @@ export default { }, }, async run({ $ }) { + const tags = parseObject(this.tags); + const tagsArray = Array.isArray(tags) + ? tags + : [ + tags, + ]; const response = await this.app.removeTag({ $, data: { - tag: parseObject(this.tags).join(","), + tag: tagsArray.join(","), id: this.userId, }, }); - $.export("$summary", `Successfully removed ${this.tags.length} tag${this.tags.length > 1 + $.export("$summary", `Successfully removed ${tagsArray.length} tag${tagsArray.length > 1 ? "s" : ""} from person with ID ${this.userId}`); return response; diff --git a/components/encharge/encharge.app.mjs b/components/encharge/encharge.app.mjs index ffb04216dfb2f..e24b353e8a0a0 100644 --- a/components/encharge/encharge.app.mjs +++ b/components/encharge/encharge.app.mjs @@ -45,7 +45,9 @@ export default { ], }, }); - return tags && tags.split(",") || []; + return tags + ? tags.split(",") + : []; }, }, }, diff --git a/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs b/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs index a89d73159bd7c..59620d3f059e8 100644 --- a/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs +++ b/components/encharge/sources/tag-removed-from-person-instant/tag-removed-from-person-instant.mjs @@ -24,7 +24,7 @@ export default { }, generateMeta({ endUserData: [ - id, + { id }, ], }) { return { From c1c302ad449e279e97e652695c29a9b86a0ac1d7 Mon Sep 17 00:00:00 2001 From: Luan Cazarine Date: Fri, 21 Nov 2025 11:38:11 -0500 Subject: [PATCH 4/4] Remove phone field from add-or-update-person action for cleaner data handling --- .../actions/add-or-update-person/add-or-update-person.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/components/encharge/actions/add-or-update-person/add-or-update-person.mjs b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs index 8899dbefba9c4..feb9e425fcc85 100644 --- a/components/encharge/actions/add-or-update-person/add-or-update-person.mjs +++ b/components/encharge/actions/add-or-update-person/add-or-update-person.mjs @@ -53,7 +53,6 @@ export default { firstName: this.firstName, lastName: this.lastName, email: this.email, - phone: this.phone, id: this.userId, ...parsedAdditionalFields, },