diff --git a/components/edusign/actions/add-student-to-course/add-student-to-course.mjs b/components/edusign/actions/add-student-to-course/add-student-to-course.mjs new file mode 100644 index 0000000000000..f46034e9b5ca5 --- /dev/null +++ b/components/edusign/actions/add-student-to-course/add-student-to-course.mjs @@ -0,0 +1,40 @@ +import edusign from "../../edusign.app.mjs"; + +export default { + key: "edusign-add-student-to-course", + name: "Add Student to Course", + description: "Add a student to a course. [See the documentation](https://developers.edusign.com/reference/putv1courseattendancecourseid)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + edusign, + courseId: { + propDefinition: [ + edusign, + "courseId", + ], + }, + studentId: { + propDefinition: [ + edusign, + "studentId", + ], + }, + }, + async run({ $ }) { + const response = await this.edusign.addStudentToCourse({ + $, + courseId: this.courseId, + data: { + studentId: this.studentId, + }, + }); + $.export("$summary", `Successfully added student ${this.studentId} to course ${this.courseId}`); + return response; + }, +}; diff --git a/components/edusign/actions/create-course/create-course.mjs b/components/edusign/actions/create-course/create-course.mjs new file mode 100644 index 0000000000000..1394359400eab --- /dev/null +++ b/components/edusign/actions/create-course/create-course.mjs @@ -0,0 +1,92 @@ +import edusign from "../../edusign.app.mjs"; + +export default { + key: "edusign-create-course", + name: "Create Course", + description: "Create a new course. [See the documentation](https://developers.edusign.com/reference/postv1course)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + edusign, + name: { + type: "string", + label: "Name", + description: "The name of the course", + }, + start: { + type: "string", + label: "Start", + description: "Start date of the course (ISO 8601 datetime, e.g. `2023-02-15T09:00:00Z`)", + }, + end: { + type: "string", + label: "End", + description: "End date of the course (ISO 8601 datetime, e.g. `2025-11-29T15:00:00Z`)", + }, + professorId: { + propDefinition: [ + edusign, + "professorId", + ], + }, + needStudentSignature: { + type: "boolean", + label: "Need Student Signature", + description: "Whether the course needs a student signature", + }, + description: { + type: "string", + label: "Description", + description: "The description of the course", + optional: true, + }, + groupIds: { + propDefinition: [ + edusign, + "groupId", + ], + type: "string[]", + label: "Group IDs", + description: "The IDs of the groups to add to the course", + optional: true, + }, + maxStudents: { + type: "integer", + label: "Max Students", + description: "The maximum number of students to add to the course", + optional: true, + }, + classroomId: { + propDefinition: [ + edusign, + "classroomId", + ], + optional: true, + }, + }, + async run({ $ }) { + const response = await this.edusign.createCourse({ + $, + data: { + course: { + NAME: this.name, + START: this.start, + END: this.end, + PROFESSOR: this.professorId, + NEED_STUDENT_SIGNATURE: this.needStudentSignature, + DESCRIPTION: this.description, + SCHOOL_GROUP: this.groupIds, + MAX_STUDENTS: this.maxStudents, + CLASSROOM: this.classroomId, + }, + }, + }); + $.export("$summary", `Successfully created course with ID: ${response.result.ID}`); + return response; + }, +}; diff --git a/components/edusign/actions/create-group/create-group.mjs b/components/edusign/actions/create-group/create-group.mjs new file mode 100644 index 0000000000000..a26bea087e54f --- /dev/null +++ b/components/edusign/actions/create-group/create-group.mjs @@ -0,0 +1,50 @@ +import edusign from "../../edusign.app.mjs"; + +export default { + key: "edusign-create-group", + name: "Create Group", + description: "Create a new group. [See the documentation](https://developers.edusign.com/reference/postv1group)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + edusign, + name: { + type: "string", + label: "Name", + description: "The name of the group", + }, + description: { + type: "string", + label: "Description", + description: "The description of the group", + }, + studentIds: { + propDefinition: [ + edusign, + "studentId", + ], + type: "string[]", + label: "Student IDs", + description: "The IDs of the students to add to the group", + }, + }, + async run({ $ }) { + const response = await this.edusign.createGroup({ + $, + data: { + group: { + NAME: this.name, + DESCRIPTION: this.description, + STUDENTS: this.studentIds, + }, + }, + }); + $.export("$summary", `Successfully created group with ID: ${response.result.ID}`); + return response; + }, +}; diff --git a/components/edusign/actions/create-student/create-student.mjs b/components/edusign/actions/create-student/create-student.mjs new file mode 100644 index 0000000000000..15e19c61b6912 --- /dev/null +++ b/components/edusign/actions/create-student/create-student.mjs @@ -0,0 +1,85 @@ +import edusign from "../../edusign.app.mjs"; + +export default { + key: "edusign-create-student", + name: "Create Student", + description: "Create a new student. [See the documentation](https://developers.edusign.com/reference/postv1student)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + edusign, + firstName: { + type: "string", + label: "First Name", + description: "The first name of the student", + }, + lastName: { + type: "string", + label: "Last Name", + description: "The last name of the student", + }, + email: { + type: "string", + label: "Email", + description: "The email of the student", + }, + phone: { + type: "string", + label: "Phone", + description: "The phone number of the student", + optional: true, + }, + photo: { + type: "string", + label: "Photo", + description: "The URL of the student's photo", + optional: true, + }, + fileNumber: { + type: "string", + label: "File Number", + description: "The file number of the student", + optional: true, + }, + tags: { + type: "string[]", + label: "Tags", + description: "The tags of the student", + optional: true, + }, + groupIds: { + propDefinition: [ + edusign, + "groupId", + ], + type: "string[]", + label: "Groups", + description: "The groups of the student", + optional: true, + }, + }, + async run({ $ }) { + const response = await this.edusign.createStudent({ + $, + data: { + student: { + FIRSTNAME: this.firstName, + LASTNAME: this.lastName, + EMAIL: this.email, + PHONE: this.phone, + PHOTO: this.photo, + FILE_NUMBER: this.fileNumber, + TAGS: this.tags, + GROUPS: this.groupIds, + }, + }, + }); + $.export("$summary", `Successfully created student with ID: ${response.result.ID}`); + return response; + }, +}; diff --git a/components/edusign/edusign.app.mjs b/components/edusign/edusign.app.mjs index 160ba3074079d..a6172b5ae661c 100644 --- a/components/edusign/edusign.app.mjs +++ b/components/edusign/edusign.app.mjs @@ -1,11 +1,176 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "edusign", - propDefinitions: {}, + propDefinitions: { + courseId: { + type: "string", + label: "Course ID", + description: "The ID of the course", + async options({ page }) { + const { result: courses } = await this.listCourses({ + params: { + page, + }, + }); + return courses.map(({ + ID: value, NAME: label, + }) => ({ + label, + value, + })); + }, + }, + groupId: { + type: "string", + label: "Group ID", + description: "The ID of the group", + async options({ page }) { + const { result: groups } = await this.listGroups({ + params: { + page, + }, + }); + return groups.map(({ + ID: value, NAME: label, + }) => ({ + label, + value, + })); + }, + }, + studentId: { + type: "string", + label: "Student ID", + description: "The ID of the student", + async options({ page }) { + const { result: students } = await this.listStudents({ + params: { + page, + }, + }); + return students.map(({ + ID: value, USERNAME: label, + }) => ({ + label, + value, + })); + }, + }, + professorId: { + type: "string", + label: "Professor ID", + description: "The ID of the professor", + async options({ page }) { + const { result: professors } = await this.listProfessors({ + params: { + page, + }, + }); + return professors.map(({ + ID: value, FIRSTNAME: firstName, LASTNAME: lastName, + }) => ({ + label: `${firstName} ${lastName}`, + value, + })); + }, + }, + classroomId: { + type: "string", + label: "Classroom ID", + description: "The ID of the classroom", + async options() { + const { result: classrooms } = await this.listClassrooms(); + return classrooms.map(({ + ID: value, NAME: label, + }) => ({ + label, + value, + })); + }, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return "https://ext.edusign.fr"; + }, + _makeRequest({ + $ = this, path, ...opts + }) { + return axios($, { + url: `${this._baseUrl()}${path}`, + headers: { + Authorization: `Bearer ${this.$auth.api_key}`, + }, + ...opts, + }); + }, + listCourses(opts = {}) { + return this._makeRequest({ + path: "/v1/course", + ...opts, + }); + }, + listGroups(opts = {}) { + return this._makeRequest({ + path: "/v1/group", + ...opts, + }); + }, + listDocuments(opts = {}) { + return this._makeRequest({ + path: "/v2/documents", + ...opts, + }); + }, + listStudents(opts = {}) { + return this._makeRequest({ + path: "/v1/student", + ...opts, + }); + }, + listProfessors(opts = {}) { + return this._makeRequest({ + path: "/v1/professor", + ...opts, + }); + }, + listClassrooms(opts = {}) { + return this._makeRequest({ + path: "/v1/classrooms", + ...opts, + }); + }, + createCourse(opts = {}) { + return this._makeRequest({ + method: "POST", + path: "/v1/course", + ...opts, + }); + }, + createGroup(opts = {}) { + return this._makeRequest({ + method: "POST", + path: "/v1/group", + ...opts, + }); + }, + createStudent(opts = {}) { + return this._makeRequest({ + method: "POST", + path: "/v1/student", + ...opts, + }); + }, + addStudentToCourse({ + courseId, ...opts + }) { + return this._makeRequest({ + method: "PUT", + path: `/v1/course/attendance/${courseId}`, + ...opts, + }); }, }, -}; \ No newline at end of file +}; diff --git a/components/edusign/package.json b/components/edusign/package.json index 63452d87b10e0..97d6ad2f80023 100644 --- a/components/edusign/package.json +++ b/components/edusign/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/edusign", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Edusign Components", "main": "edusign.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/edusign/sources/common/base-polling.mjs b/components/edusign/sources/common/base-polling.mjs new file mode 100644 index 0000000000000..293a1556a81e9 --- /dev/null +++ b/components/edusign/sources/common/base-polling.mjs @@ -0,0 +1,36 @@ +import edusign from "../../edusign.app.mjs"; +import { + DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, ConfigurationError, +} from "@pipedream/platform"; + +export default { + props: { + edusign, + db: "$.service.db", + timer: { + type: "$.interface.timer", + default: { + intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, + }, + }, + }, + methods: { + _getLastCreated() { + return this.db.get("lastCreated") || new Date().toISOString(); + }, + _setLastCreated(lastCreated) { + this.db.set("lastCreated", lastCreated); + }, + processEvents() { + throw new ConfigurationError("processEvents is not implemented"); + }, + }, + hooks: { + async deploy() { + await this.processEvents(10); + }, + }, + async run() { + await this.processEvents(); + }, +}; diff --git a/components/edusign/sources/new-document-created/new-document-created.mjs b/components/edusign/sources/new-document-created/new-document-created.mjs new file mode 100644 index 0000000000000..ce22d959e3f9e --- /dev/null +++ b/components/edusign/sources/new-document-created/new-document-created.mjs @@ -0,0 +1,58 @@ +import common from "../common/base-polling.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "edusign-new-document-created", + name: "New Document Created", + description: "Emit new event when a new document is created. [See the documentation](https://developers.edusign.com/reference/getdocuments)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + async processEvents(max) { + const lastCreated = this._getLastCreated(); + let maxCreated = lastCreated; + + const { result: { documents: resultDocuments } } = await this.edusign.listDocuments({ + params: { + createdAfter: lastCreated, + }, + }); + + const documents = []; + for (const document of resultDocuments) { + if (Date.parse(document.DATE_CREATED) > Date.parse(lastCreated)) { + documents.push(document); + if (Date.parse(document.DATE_CREATED) > Date.parse(maxCreated)) { + maxCreated = document.DATE_CREATED; + } + } + } + + this._setLastCreated(maxCreated); + + if (!documents.length) { + return; + } + + if (max && documents.length > max) { + documents.length = max; + } + + documents.forEach((document) => { + const meta = this.generateMeta(document); + this.$emit(document, meta); + }); + }, + generateMeta(document) { + return { + id: document.ID, + summary: `New Document Created: ${document.NAME}`, + ts: Date.parse(document.DATE_CREATED), + }; + }, + }, + sampleEmit, +}; diff --git a/components/edusign/sources/new-document-created/test-event.mjs b/components/edusign/sources/new-document-created/test-event.mjs new file mode 100644 index 0000000000000..1f21da8ec5842 --- /dev/null +++ b/components/edusign/sources/new-document-created/test-event.mjs @@ -0,0 +1,103 @@ +export default { + "ID": "6m2zjwqb4o579dw2", + "NAME": "unicorn.pdf", + "TEMPLATE": "", + "SCHOOL_ID": "pespg7dmtae78xio", + "VARIABLES": { + "emails": { + "documentSent": { + "body": "", + "subject": "Edusign has sent you a document to sign - doc.pdf" + }, + "signatureReminder": { + "body": "", + "amount": 3, + "subject": "Edusign has sent you a document to sign - doc.pdf", + "interval": 86400, + "emailsAlreadySent": [] + } + }, + "version": "v2", + "carbonCopy": [], + "recipients": [ + { + "id": "31h81s28fua78xio", + "name": "John Doe", + "email": "john.doe@example.com", + "index": 0, + "order": 0, + "phone": "", + "token": "26e7748e-5cef-4ab7-abce-7e07f3b8733a", + "category": "admin", + "lastname": "Doe", + "firstname": "John", + "signatureNeeded": true, + "signatureState": "signed", + "signatureDate": "2025-12-11T18:52:18.455Z" + } + ], + "validationMethod": "sms", + "sendEmailWhenCompleted": true + }, + "INPUTS": [ + { + "id": 253372, + "type": "SIGNATURE", + "index": 0, + "label": "Signature", + "style": { + "fontSize": "12px", + "fontStyle": "normal", + "fontWeight": "normal", + "textDecoration": "none" + }, + "value": "https://signatures.core.edusign.fr/", + "category": "admin", + "personId": "31h81s28fua78xio", + "position": { + "x": 52.67610080685908, + "y": 453.69979639780735, + "page": 3, + "width": 98.99002990033225, + "height": 52.80375880971025 + }, + "required": true, + "signatureType": "handwritten" + } + ], + "METADATAS": [ + { + "SIGNATURE_URL": "https://signatures.core.edusign.fr/", + "SIGNATORY_TYPE": "admin", + "SIGNATURE_DATE": "2025-12-11T18:52:18.455Z", + "SIGNATURE_SIGN": "335deb1b411a565647476feebf5ce534", + "SIGNATORY_EMAIL": "john.doe@example.com", + "SIGNATORY_TOKEN": "26e7748e-5cef-4ab7-abce-7e07f3b8733a", + "VALIDATION_CODE": "", + "SIGNATORY_FULLNAME": "John Doe" + } + ], + "STUDENT_ID": "", + "PROFESSOR_ID": "", + "ADMIN_ID": "31h81s28fua78xio", + "USER_ID": "", + "DIRECTORY_ID": null, + "TEMPLATE_ID": "5fvux7my93q79du2", + "DOCUMENT_SECURED": true, + "DOCUMENT_URL": "https://s3-edusign.s3.eu-west-3", + "DOCUMENT_PROOF_URL": "https://s3-edusign.s3.eu-west-3", + "DOCUMENT_SIGNATURE_CODES": [], + "STUDENT_DOWNLOAD_DOCUMENT": true, + "YOUSIGN_PROCEDURE": "", + "AUTOMATIC_EMAIL_SEND": true, + "DATE_CREATED": "2025-12-11T18:52:20.000Z", + "DATE_UPDATED": "2025-12-11T18:52:20.000Z", + "DATE_EXPIRED": null, + "TO_DELETE": false, + "DELETED_BY": null, + "TRAINING_ID": null, + "PDF_URL": "https://s3-edusign.s3.eu-west-3.amazonaws.com", + "version": "v2", + "TYPE": 2, + "STATE": "completed" +} \ No newline at end of file diff --git a/components/edusign/sources/new-group-created/new-group-created.mjs b/components/edusign/sources/new-group-created/new-group-created.mjs new file mode 100644 index 0000000000000..f0dbb5822fed3 --- /dev/null +++ b/components/edusign/sources/new-group-created/new-group-created.mjs @@ -0,0 +1,63 @@ +import common from "../common/base-polling.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "edusign-new-group-created", + name: "New Group Created", + description: "Emit new event when a new group is created. [See the documentation](https://developers.edusign.com/reference/getv1group)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + async processEvents(max) { + const lastCreated = this._getLastCreated(); + let maxCreated = lastCreated; + const params = { + page: 0, + }; + const groups = []; + let total; + + do { + const { result = [] } = await this.edusign.listGroups({ + params, + }); + for (const group of result) { + if (Date.parse(group.DATE_CREATED) > Date.parse(lastCreated)) { + groups.push(group); + if (Date.parse(group.DATE_CREATED) > Date.parse(maxCreated)) { + maxCreated = group.DATE_CREATED; + } + } + } + total = result?.length; + params.page++; + } while (total); + + this._setLastCreated(maxCreated); + + if (!groups.length) { + return; + } + + if (max && groups.length > max) { + groups.length = max; + } + + groups.forEach((group) => { + const meta = this.generateMeta(group); + this.$emit(group, meta); + }); + }, + generateMeta(group) { + return { + id: group.ID, + summary: `New Group Created: ${group.NAME}`, + ts: Date.parse(group.DATE_CREATED), + }; + }, + }, + sampleEmit, +}; diff --git a/components/edusign/sources/new-group-created/test-event.mjs b/components/edusign/sources/new-group-created/test-event.mjs new file mode 100644 index 0000000000000..0da79cd09e0bb --- /dev/null +++ b/components/edusign/sources/new-group-created/test-event.mjs @@ -0,0 +1,18 @@ +export default { + "ID": "fj90rqczomt79c99", + "NAME": "Group W", + "DESCRIPTION": "group description", + "SCHOOL_ID": "pespg7dmtae78xio", + "STUDENTS": [ + "5lcounzcpb778xio" + ], + "PARENT": "", + "LOGO": "", + "HIDDEN": 0, + "API_ID": "", + "API_TYPE": "", + "DATE_CREATED": "2025-12-11T18:31:01.000Z", + "DATE_UPDATED": "2025-12-11T18:31:01.000Z", + "id": "fj90rqczomt79c99", + "VARIABLES": [] +} \ No newline at end of file diff --git a/components/edusign/sources/new-student-created/new-student-created.mjs b/components/edusign/sources/new-student-created/new-student-created.mjs new file mode 100644 index 0000000000000..ab8299c0ef590 --- /dev/null +++ b/components/edusign/sources/new-student-created/new-student-created.mjs @@ -0,0 +1,58 @@ +import common from "../common/base-polling.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "edusign-new-student-created", + name: "New Student Created", + description: "Emit new event when a new student is created. [See the documentation](https://developers.edusign.com/reference/getv1student)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + async processEvents(max) { + const lastCreated = this._getLastCreated(); + let maxCreated = lastCreated; + + const { result = [] } = await this.edusign.listStudents({ + params: { + updatedAfter: lastCreated, + }, + }); + + const students = []; + for (const student of result) { + if (Date.parse(student.DATE_CREATED) > Date.parse(lastCreated)) { + students.push(student); + if (Date.parse(student.DATE_CREATED) > Date.parse(maxCreated)) { + maxCreated = student.DATE_CREATED; + } + } + } + + this._setLastCreated(maxCreated); + + if (!students.length) { + return; + } + + if (max && students.length > max) { + students.length = max; + } + + students.forEach((student) => { + const meta = this.generateMeta(student); + this.$emit(student, meta); + }); + }, + generateMeta(student) { + return { + id: student.ID, + summary: `New Student Created: ${student.FIRSTNAME} ${student.LASTNAME}`, + ts: Date.parse(student.DATE_CREATED), + }; + }, + }, + sampleEmit, +}; diff --git a/components/edusign/sources/new-student-created/test-event.mjs b/components/edusign/sources/new-student-created/test-event.mjs new file mode 100644 index 0000000000000..c25ba3ae36211 --- /dev/null +++ b/components/edusign/sources/new-student-created/test-event.mjs @@ -0,0 +1,29 @@ +export default { + "ID": "0athprkic9ed79ba6", + "EMAIL": "kermitfrog@example.com", + "FIRSTNAME": "Kermit", + "LASTNAME": "TheFrog", + "USERNAME": "kthefrog0", + "PHOTO": "", + "PHONE": "", + "TRAINING_NAME": "", + "FILE_NUMBER": "", + "COMPANY": "", + "TAGS": [], + "SIGNATURE_ID": "", + "HIDDEN": 0, + "DATE_CREATED": "2025-12-11T18:18:38.000Z", + "DATE_UPDATED": "2025-12-11T18:18:38.000Z", + "MULTI_ACCOUNT_LOGIN_CODE": 0, + "SCHOOL_ID": "pespg7dmtae78xio", + "BADGE_ID": "", + "PUSH_TOKEN": "", + "API_ID": "", + "API_TYPE": "", + "LANGUAGE": "en", + "VARIABLES": [], + "STUDENT_FOLLOWER_ID": [], + "NEW_PASSWORD_NEEDED": 1, + "TRAINING_IDS": [], + "id": "0athprkic9ed79ba6" +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c38d6e1bf2ca..74eecc87ba63f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4652,7 +4652,11 @@ importers: specifier: ^3.1.1 version: 3.1.1 - components/edusign: {} + components/edusign: + dependencies: + '@pipedream/platform': + specifier: ^3.1.1 + version: 3.1.1 components/efinder: {} @@ -8458,7 +8462,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@24.10.1)(typescript@5.9.3) components/linkupapi: dependencies: @@ -17588,7 +17592,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.27.0)(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.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) @@ -31772,17 +31776,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==} @@ -35111,7 +35115,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 @@ -35131,7 +35135,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 @@ -35208,7 +35212,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: @@ -35973,7 +35977,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 @@ -35985,7 +35989,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 @@ -36113,6 +36117,19 @@ snapshots: - '@types/node' - typescript + '@commitlint/cli@19.8.1(@types/node@24.10.1)(typescript@5.9.3)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@24.10.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 @@ -36167,6 +36184,22 @@ snapshots: - '@types/node' - typescript + '@commitlint/load@19.8.1(@types/node@24.10.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@24.10.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': @@ -36722,7 +36755,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 @@ -36736,7 +36769,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 @@ -37225,7 +37258,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 @@ -38942,7 +38975,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 @@ -39023,7 +39056,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 @@ -39116,7 +39149,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: @@ -39127,7 +39160,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: @@ -39140,7 +39173,7 @@ snapshots: '@putout/babel': 4.5.4(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: @@ -39237,7 +39270,7 @@ snapshots: '@putout/operator-filesystem': 9.0.1(putout@40.14.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.14.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 @@ -39444,7 +39477,6 @@ snapshots: transitivePeerDependencies: - rolldown - rollup - - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.9)(rollup@4.53.2)': dependencies: @@ -40401,7 +40433,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 @@ -40409,6 +40441,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))': @@ -40419,7 +40465,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 @@ -40433,6 +40479,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 @@ -40450,13 +40518,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 @@ -40466,6 +40551,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 @@ -41094,7 +41195,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: @@ -41518,7 +41619,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: @@ -41530,7 +41631,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: @@ -41549,7 +41650,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 @@ -41558,7 +41659,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 @@ -41581,7 +41682,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 @@ -41593,7 +41694,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 @@ -41624,7 +41725,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 @@ -41640,7 +41741,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 @@ -41679,7 +41780,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 @@ -42046,7 +42147,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 @@ -42804,7 +42905,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 @@ -43591,6 +43692,13 @@ snapshots: jiti: 2.6.1 typescript: 5.6.3 + cosmiconfig-typescript-loader@6.2.0(@types/node@24.10.1)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + dependencies: + '@types/node': 24.10.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 @@ -43615,6 +43723,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 @@ -44761,7 +44878,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 @@ -45034,7 +45151,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 @@ -45303,7 +45420,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 @@ -45619,7 +45736,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 @@ -45732,7 +45849,7 @@ snapshots: dependencies: '@putout/engine-loader': 16.2.1(putout@40.14.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 @@ -45754,7 +45871,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: @@ -46071,7 +46188,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 @@ -46817,7 +46934,7 @@ 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 @@ -46877,14 +46994,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 @@ -46972,7 +47089,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 @@ -47495,7 +47612,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: @@ -48196,7 +48313,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 @@ -48375,6 +48492,20 @@ snapshots: - supports-color - typescript + linkup-sdk@1.2.0(@types/node@24.10.1)(typescript@5.9.3): + dependencies: + '@commitlint/cli': 19.8.1(@types/node@24.10.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 @@ -48617,7 +48748,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 @@ -49198,7 +49329,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 @@ -49206,7 +49337,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 @@ -49398,7 +49529,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 @@ -49407,7 +49538,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 @@ -49446,7 +49577,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 @@ -49593,7 +49724,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 @@ -49913,7 +50044,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 @@ -50368,7 +50499,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 @@ -50962,7 +51093,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 @@ -51059,7 +51190,7 @@ snapshots: dependencies: '@puppeteer/browsers': 2.10.13 chromium-bidi: 11.0.0(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 @@ -51223,7 +51354,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 @@ -51907,7 +52038,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 @@ -51968,7 +52099,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 @@ -52037,7 +52168,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 @@ -52171,7 +52302,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 @@ -52237,7 +52403,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 @@ -52522,7 +52688,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 @@ -52734,7 +52900,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 @@ -52953,7 +53119,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 @@ -53028,7 +53194,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 @@ -53042,7 +53208,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 @@ -53385,7 +53551,7 @@ snapshots: dependencies: '@aws-sdk/client-s3': 3.931.0(aws-crt@1.27.5) '@aws-sdk/s3-request-presigner': 3.931.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 @@ -53438,7 +53604,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.27.0)(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 @@ -53456,7 +53622,6 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.28.5) - esbuild: 0.27.0 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): @@ -53565,7 +53730,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 @@ -53630,7 +53795,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.27.0 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 @@ -53659,7 +53824,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.27.0 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 @@ -54337,7 +54502,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 @@ -54369,7 +54534,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