From 84887d6788a224976538b86d7666f0aacc2aa3f9 Mon Sep 17 00:00:00 2001 From: Jorge Cortes Date: Mon, 27 Oct 2025 17:24:44 -0500 Subject: [PATCH] [Components] Exa - new components --- .../answer-question/answer-question.mjs | 58 ++++ .../find-similar-links/find-similar-links.mjs | 291 ++++++++++++++++++ .../exa/actions/get-contents/get-contents.mjs | 184 +++++++++++ components/exa/actions/search/search.mjs | 143 +++++++++ components/exa/exa.app.mjs | 262 +++++++++++++++- components/exa/package.json | 7 +- pnpm-lock.yaml | 172 ++--------- 7 files changed, 961 insertions(+), 156 deletions(-) create mode 100644 components/exa/actions/answer-question/answer-question.mjs create mode 100644 components/exa/actions/find-similar-links/find-similar-links.mjs create mode 100644 components/exa/actions/get-contents/get-contents.mjs create mode 100644 components/exa/actions/search/search.mjs diff --git a/components/exa/actions/answer-question/answer-question.mjs b/components/exa/actions/answer-question/answer-question.mjs new file mode 100644 index 0000000000000..a89718c38defe --- /dev/null +++ b/components/exa/actions/answer-question/answer-question.mjs @@ -0,0 +1,58 @@ +import app from "../../exa.app.mjs"; + +export default { + key: "exa-answer-question", + name: "Answer Question", + description: "Generates LLM-powered responses to queries, informed by Exa search results with citations. Handles both factual queries requiring direct answers and open-ended questions needing detailed summaries. [See the documentation](https://docs.exa.ai/reference/answer)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + query: { + label: "Question", + description: "The question or query to answer", + propDefinition: [ + app, + "query", + ], + }, + text: { + propDefinition: [ + app, + "text", + ], + description: "Whether to include full text content from search results in the response", + }, + stream: { + type: "boolean", + label: "Stream", + description: "Enable streaming response via server-sent events (not recommended for Pipedream workflows)", + optional: true, + }, + }, + async run({ $ }) { + const { + app, + query, + text, + stream, + } = this; + + const response = await app.answer({ + $, + data: { + query, + text, + stream, + }, + }); + + $.export("$summary", "Successfully answered question."); + return response; + }, +}; diff --git a/components/exa/actions/find-similar-links/find-similar-links.mjs b/components/exa/actions/find-similar-links/find-similar-links.mjs new file mode 100644 index 0000000000000..b814cfdfa1582 --- /dev/null +++ b/components/exa/actions/find-similar-links/find-similar-links.mjs @@ -0,0 +1,291 @@ +import { ConfigurationError } from "@pipedream/platform"; +import app from "../../exa.app.mjs"; + +export default { + key: "exa-find-similar-links", + name: "Find Similar Links", + description: "Identifies and retrieves web pages similar to a provided URL with optional content extraction. [See the documentation](https://docs.exa.ai/reference/find-similar-links)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + url: { + propDefinition: [ + app, + "url", + ], + }, + numResults: { + propDefinition: [ + app, + "numResults", + ], + }, + includeDomains: { + propDefinition: [ + app, + "includeDomains", + ], + }, + excludeDomains: { + propDefinition: [ + app, + "excludeDomains", + ], + }, + startCrawlDate: { + propDefinition: [ + app, + "startCrawlDate", + ], + }, + endCrawlDate: { + propDefinition: [ + app, + "endCrawlDate", + ], + }, + startPublishedDate: { + propDefinition: [ + app, + "startPublishedDate", + ], + }, + endPublishedDate: { + propDefinition: [ + app, + "endPublishedDate", + ], + }, + includeText: { + propDefinition: [ + app, + "includeText", + ], + }, + excludeText: { + propDefinition: [ + app, + "excludeText", + ], + }, + context: { + propDefinition: [ + app, + "context", + ], + }, + moderation: { + propDefinition: [ + app, + "moderation", + ], + }, + contentsText: { + label: "Contents - Text", + propDefinition: [ + app, + "text", + ], + }, + contentsHighlightsNumSentences: { + label: "Contents - Highlights - Number of Sentences", + propDefinition: [ + app, + "highlightsNumSentences", + ], + }, + contentsHighlightsPerUrl: { + label: "Contents - Highlights - Number of Snippets per URL", + propDefinition: [ + app, + "highlightsPerUrl", + ], + }, + contentsHighlightsQuery: { + label: "Contents - Highlights - Custom Query", + propDefinition: [ + app, + "highlightsQuery", + ], + }, + contentsSummaryQuery: { + label: "Contents - Summary - Custom Query", + propDefinition: [ + app, + "summaryQuery", + ], + }, + contentsSummarySchema: { + label: "Contents - Summary - JSON Schema", + propDefinition: [ + app, + "summarySchema", + ], + }, + contentsLivecrawl: { + label: "Contents - Live Crawl", + propDefinition: [ + app, + "livecrawl", + ], + }, + contentsLivecrawlTimeout: { + label: "Contents - Live Crawl Timeout", + propDefinition: [ + app, + "livecrawlTimeout", + ], + }, + contentsSubpages: { + label: "Contents - Subpages", + propDefinition: [ + app, + "subpages", + ], + }, + contentsSubpageTarget: { + label: "Contents - Subpage Target", + propDefinition: [ + app, + "subpageTarget", + ], + }, + contentsExtrasLinks: { + label: "Contents - Extras - Number of Links", + propDefinition: [ + app, + "extrasLinks", + ], + }, + contentsExtrasImageLinks: { + label: "Contents - Extras - Number of Image Links", + propDefinition: [ + app, + "extrasImageLinks", + ], + }, + contentsContext: { + label: "Contents - Context", + propDefinition: [ + app, + "context", + ], + }, + }, + async run({ $ }) { + const { + app, + url, + numResults, + includeDomains, + excludeDomains, + startCrawlDate, + endCrawlDate, + startPublishedDate, + endPublishedDate, + includeText, + excludeText, + contentsText, + contentsHighlightsNumSentences, + contentsHighlightsPerUrl, + contentsHighlightsQuery, + contentsSummaryQuery, + contentsSummarySchema, + contentsLivecrawl, + contentsLivecrawlTimeout, + contentsSubpages, + contentsSubpageTarget, + contentsExtrasLinks, + contentsExtrasImageLinks, + contentsContext, + } = this; + + const highlights = contentsHighlightsNumSentences + || contentsHighlightsPerUrl + || contentsHighlightsQuery + ? { + numSentences: contentsHighlightsNumSentences, + highlightsPerUrl: contentsHighlightsPerUrl, + query: contentsHighlightsQuery, + } + : undefined; + + let parsedSchema; + if (contentsSummarySchema) { + if (typeof contentsSummarySchema === "string") { + try { + parsedSchema = JSON.parse(contentsSummarySchema); + } catch (error) { + throw new ConfigurationError(`Invalid JSON schema format: ${error.message}. Please provide a valid JSON object.`); + } + } else { + parsedSchema = contentsSummarySchema; + } + } + + const summary = contentsSummaryQuery + || contentsSummarySchema + ? { + query: contentsSummaryQuery, + schema: parsedSchema, + } + : undefined; + + const extras = contentsExtrasLinks + || contentsExtrasImageLinks + ? { + links: contentsExtrasLinks, + imageLinks: contentsExtrasImageLinks, + } + : undefined; + + const response = await app.findSimilar({ + $, + data: { + url, + numResults, + includeDomains, + excludeDomains, + startCrawlDate, + endCrawlDate, + startPublishedDate, + endPublishedDate, + includeText, + excludeText, + ...(contentsText + || contentsLivecrawl + || contentsLivecrawlTimeout + || contentsSubpages + || contentsSubpageTarget + || contentsContext + || highlights + || summary + || extras + ? { + contents: { + text: contentsText, + context: contentsContext, + highlights, + summary, + livecrawl: contentsLivecrawl, + livecrawlTimeout: contentsLivecrawlTimeout, + subpages: contentsSubpages, + subpageTarget: contentsSubpageTarget, + extras, + }, + } + : undefined + ), + }, + }); + + $.export("$summary", `Successfully found similar links with ID \`${response.requestId}\`.`); + return response; + }, +}; diff --git a/components/exa/actions/get-contents/get-contents.mjs b/components/exa/actions/get-contents/get-contents.mjs new file mode 100644 index 0000000000000..2ffd4480d8871 --- /dev/null +++ b/components/exa/actions/get-contents/get-contents.mjs @@ -0,0 +1,184 @@ +import { ConfigurationError } from "@pipedream/platform"; +import app from "../../exa.app.mjs"; + +export default { + key: "exa-get-contents", + name: "Get Contents", + description: "Retrieves full page contents, summaries, and metadata for a list of URLs. Uses cached results with optional live crawling fallback. [See the documentation](https://docs.exa.ai/reference/get-contents)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + urls: { + propDefinition: [ + app, + "urls", + ], + }, + text: { + description: "If `true`, returns full page text with default settings. If `false`, disables text return.", + propDefinition: [ + app, + "text", + ], + }, + highlightsNumSentences: { + propDefinition: [ + app, + "highlightsNumSentences", + ], + }, + highlightsPerUrl: { + propDefinition: [ + app, + "highlightsPerUrl", + ], + }, + highlightsQuery: { + propDefinition: [ + app, + "highlightsQuery", + ], + }, + summaryQuery: { + propDefinition: [ + app, + "summaryQuery", + ], + }, + summarySchema: { + propDefinition: [ + app, + "summarySchema", + ], + }, + livecrawl: { + propDefinition: [ + app, + "livecrawl", + ], + }, + livecrawlTimeout: { + type: "integer", + label: "Live Crawl Timeout", + description: "Timeout in milliseconds for live crawling (default: 10000)", + optional: true, + }, + subpages: { + propDefinition: [ + app, + "subpages", + ], + }, + subpageTarget: { + propDefinition: [ + app, + "subpageTarget", + ], + }, + extrasLinks: { + propDefinition: [ + app, + "extrasLinks", + ], + }, + extrasImageLinks: { + propDefinition: [ + app, + "extrasImageLinks", + ], + }, + context: { + description: "Return page contents as a context string for LLM. When true, combines all result contents into one string. We recommend using 10000+ characters for best results, though no limit works best. Context strings often perform better than highlights for RAG applications.", + propDefinition: [ + app, + "context", + ], + }, + }, + async run({ $ }) { + const { + app, + urls, + text, + highlightsNumSentences, + highlightsPerUrl, + highlightsQuery, + summaryQuery, + summarySchema, + livecrawl, + livecrawlTimeout, + subpages, + subpageTarget, + extrasLinks, + extrasImageLinks, + context, + } = this; + + let parsedSchema; + if (summarySchema) { + if (typeof summarySchema === "string") { + try { + parsedSchema = JSON.parse(summarySchema); + } catch (error) { + throw new ConfigurationError(`Invalid JSON schema format: ${error.message}. Please provide a valid JSON object.`); + } + } else { + parsedSchema = summarySchema; + } + } + + const response = await app.getContents({ + $, + data: { + urls, + text, + livecrawl, + livecrawlTimeout, + subpages, + subpageTarget, + context, + ...(extrasLinks + || extrasImageLinks + ? { + extras: { + links: extrasLinks, + imageLinks: extrasImageLinks, + }, + } + : undefined + ), + ...(highlightsNumSentences + || highlightsPerUrl + || highlightsQuery + ? { + highlights: { + numSentences: highlightsNumSentences, + highlightsPerUrl, + query: highlightsQuery, + }, + } + : undefined + ), + ...(summaryQuery + || summarySchema + ? { + summary: { + query: summaryQuery, + schema: parsedSchema, + }, + } + : undefined + ), + }, + }); + + $.export("$summary", `Successfully retrieved contents with ID \`${response.requestId}\`.`); + return response; + }, +}; diff --git a/components/exa/actions/search/search.mjs b/components/exa/actions/search/search.mjs new file mode 100644 index 0000000000000..6964313c8669a --- /dev/null +++ b/components/exa/actions/search/search.mjs @@ -0,0 +1,143 @@ +import app from "../../exa.app.mjs"; + +export default { + key: "exa-search", + name: "Search", + description: "Performs an intelligent web search. [See the documentation](https://docs.exa.ai/reference/search)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + app, + query: { + propDefinition: [ + app, + "query", + ], + }, + type: { + propDefinition: [ + app, + "type", + ], + }, + category: { + propDefinition: [ + app, + "category", + ], + }, + numResults: { + propDefinition: [ + app, + "numResults", + ], + }, + includeDomains: { + propDefinition: [ + app, + "includeDomains", + ], + }, + excludeDomains: { + propDefinition: [ + app, + "excludeDomains", + ], + }, + startCrawlDate: { + propDefinition: [ + app, + "startCrawlDate", + ], + }, + endCrawlDate: { + propDefinition: [ + app, + "endCrawlDate", + ], + }, + startPublishedDate: { + propDefinition: [ + app, + "startPublishedDate", + ], + }, + endPublishedDate: { + propDefinition: [ + app, + "endPublishedDate", + ], + }, + includeText: { + propDefinition: [ + app, + "includeText", + ], + }, + excludeText: { + propDefinition: [ + app, + "excludeText", + ], + }, + context: { + propDefinition: [ + app, + "context", + ], + }, + moderation: { + propDefinition: [ + app, + "moderation", + ], + }, + }, + async run({ $ }) { + const { + app, + query, + type, + numResults, + category, + includeDomains, + excludeDomains, + startCrawlDate, + endCrawlDate, + startPublishedDate, + endPublishedDate, + includeText, + excludeText, + context, + moderation, + } = this; + + const response = await app.search({ + $, + data: { + query, + type, + numResults, + category, + includeDomains, + excludeDomains, + startCrawlDate, + endCrawlDate, + startPublishedDate, + endPublishedDate, + includeText, + excludeText, + context, + moderation, + }, + }); + + $.export("$summary", `Successfully performed search with ID \`${response.requestId}\`.`); + return response; + }, +}; diff --git a/components/exa/exa.app.mjs b/components/exa/exa.app.mjs index 602bab1293f4d..3aad6afd0eba9 100644 --- a/components/exa/exa.app.mjs +++ b/components/exa/exa.app.mjs @@ -1,11 +1,265 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "exa", - propDefinitions: {}, + propDefinitions: { + query: { + type: "string", + label: "Query", + description: "The search query string", + }, + url: { + type: "string", + label: "URL", + description: "The URL to find similar links for. Example: `https://arxiv.org/abs/2307.06435`", + }, + urls: { + type: "string[]", + label: "URLs", + description: "List of URLs to retrieve contents for", + }, + numResults: { + type: "integer", + label: "Number of Results", + description: "Number of search results to return. Maximum 10 for `keyword` search, 100 for `neural` search", + optional: true, + }, + type: { + type: "string", + label: "Search Type", + description: "The type of search to perform", + optional: true, + options: [ + "auto", + "neural", + "keyword", + "fast", + ], + }, + category: { + type: "string", + label: "Category", + description: "A data category to focus on", + optional: true, + options: [ + "company", + "research paper", + "news", + "pdf", + "github", + "tweet", + "personal site", + "linkedin profile", + "financial report", + ], + }, + includeDomains: { + type: "string[]", + label: "Include Domains", + description: "List of domains to include in the search results", + optional: true, + }, + excludeDomains: { + type: "string[]", + label: "Exclude Domains", + description: "List of domains to exclude from the search results", + optional: true, + }, + startCrawlDate: { + type: "string", + label: "Start Crawl Date", + description: "Results will only include links crawled after this date (ISO 8601 format). Example: `2025-01-01T00:00:00Z`", + optional: true, + }, + endCrawlDate: { + type: "string", + label: "End Crawl Date", + description: "Results will only include links crawled before this date (ISO 8601 format). Example: `2025-01-01T00:00:00Z`", + optional: true, + }, + startPublishedDate: { + type: "string", + label: "Start Published Date", + description: "Results will only include links published after this date (ISO 8601 format). Example: `2025-01-01T00:00:00Z`", + optional: true, + }, + endPublishedDate: { + type: "string", + label: "End Published Date", + description: "Results will only include links published before this date (ISO 8601 format). Example: `2025-01-01T00:00:00Z`", + optional: true, + }, + includeText: { + type: "string[]", + label: "Include Text", + description: "List of strings that must be present in the webpage text (max 5 words per string)", + optional: true, + }, + excludeText: { + type: "string[]", + label: "Exclude Text", + description: "List of strings that must not be present in the webpage text", + optional: true, + }, + context: { + type: "boolean", + label: "Include Context", + description: "Whether to include the context string in the search results", + optional: true, + }, + moderation: { + type: "boolean", + label: "Include Moderation", + description: "Whether to include the moderation string in the search results", + optional: true, + }, + text: { + type: "boolean", + label: "Include Text", + description: "Whether to include the full text of the search results", + optional: true, + }, + highlightsNumSentences: { + type: "integer", + label: "Highlights Num Sentences", + description: "The number of sentences to return for each snippet.", + optional: true, + }, + highlightsPerUrl: { + type: "integer", + label: "Highlights Per URL", + description: "The number of snippets to return for each result.", + optional: true, + }, + highlightsQuery: { + type: "string", + label: "Highlights Query", + description: "Custom query to direct the LLM's selection of highlights.", + optional: true, + }, + summaryQuery: { + type: "string", + label: "Summary Query", + description: "Custom query to guide summary generation", + optional: true, + }, + summarySchema: { + type: "object", + label: "Summary Schema", + description: `JSON schema for structured output from summary. See [JSON Schema documentation](https://json-schema.org/overview/what-is-jsonschema) for details. + +**Example:** +\`\`{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Title", + "type": "object", + "properties": { + "Property 1": { + "type": "string", + "description": "Description" + }, + "Property 2": { + "type": "string", + "enum": ["option 1", "option 2", "option 3"], + "description": "Description" + } + }, + "required": ["Property 1"] +}\`\``, + optional: true, + }, + livecrawl: { + type: "string", + label: "Live Crawl", + description: "Control caching behavior for content retrieval", + optional: true, + options: [ + "never", + "fallback", + "always", + "preferred", + ], + }, + livecrawlTimeout: { + type: "integer", + label: "Live Crawl Timeout", + description: "Timeout in milliseconds for live crawling (default: 10000)", + optional: true, + }, + subpages: { + type: "integer", + label: "Subpages", + description: "Number of subpages to crawl per result", + optional: true, + }, + subpageTarget: { + type: "string", + label: "Subpage Target", + description: "Keywords to identify specific subpages to crawl", + optional: true, + }, + extrasLinks: { + type: "integer", + label: "Extras Links", + description: "Number of URLs to return from each webpage.", + optional: true, + }, + extrasImageLinks: { + type: "integer", + label: "Extras Image Links", + description: "Number of images to return for each result.", + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + getUrl(path) { + return `https://api.exa.ai${path}`; + }, + _headers() { + return { + "x-api-key": this.$auth.api_key, + "Content-Type": "application/json", + }; + }, + _makeRequest({ + $ = this, path, ...args + }) { + return axios($, { + url: this.getUrl(path), + headers: this._headers(), + ...args, + }); + }, + post(args = {}) { + return this._makeRequest({ + method: "POST", + ...args, + }); + }, + search(args = {}) { + return this.post({ + path: "/search", + ...args, + }); + }, + getContents(args = {}) { + return this.post({ + path: "/contents", + ...args, + }); + }, + findSimilar(args = {}) { + return this.post({ + path: "/findSimilar", + ...args, + }); + }, + answer(args = {}) { + return this.post({ + path: "/answer", + ...args, + }); }, }, }; diff --git a/components/exa/package.json b/components/exa/package.json index 2f76910331878..e20204ecdacc1 100644 --- a/components/exa/package.json +++ b/components/exa/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/exa", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Exa Components", "main": "exa.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.1.0" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19cbab7ede498..d64430815da6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 4.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) tsc-esm-fix: specifier: ^2.18.0 version: 2.20.27 @@ -4800,7 +4800,11 @@ importers: specifier: ^1.5.1 version: 1.6.6 - components/exa: {} + components/exa: + dependencies: + '@pipedream/platform': + specifier: ^3.1.0 + version: 3.1.0 components/exact: dependencies: @@ -17081,7 +17085,7 @@ importers: version: 3.1.7 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@20.17.30))(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.7.2)(yaml@2.8.0) @@ -35928,7 +35932,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -36199,45 +36203,21 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36248,34 +36228,16 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36286,89 +36248,41 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@8.0.0-alpha.13)': - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/helper-plugin-utils': 7.25.9 - optional: true - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -37431,7 +37345,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -39954,8 +39868,6 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) - transitivePeerDependencies: - - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -42516,7 +42428,7 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.15.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.57.1 optionalDependencies: typescript: 5.6.3 @@ -43410,20 +43322,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-jest@29.7.0(@babel/core@8.0.0-alpha.13): - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@8.0.0-alpha.13) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - optional: true - babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -43490,39 +43388,12 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - babel-preset-current-node-syntax@1.1.0(@babel/core@8.0.0-alpha.13): - dependencies: - '@babel/core': 8.0.0-alpha.13 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.0-alpha.13) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@8.0.0-alpha.13) - optional: true - babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - babel-preset-jest@29.6.3(@babel/core@8.0.0-alpha.13): - dependencies: - '@babel/core': 8.0.0-alpha.13 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@8.0.0-alpha.13) - optional: true - backoff@2.5.0: dependencies: precond: 0.2.3 @@ -45731,7 +45602,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -47592,7 +47463,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -50173,7 +50044,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) rfdc: 1.4.1 tarn: 3.0.2 tedious: 16.7.1 @@ -51924,7 +51795,7 @@ snapshots: ajv: 8.17.1 chalk: 5.3.0 ci-info: 4.1.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) deepmerge: 4.3.1 escalade: 3.2.0 fast-glob: 3.3.2 @@ -54060,7 +53931,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -54078,8 +53949,9 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) + esbuild: 0.24.2 - ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -54093,10 +53965,10 @@ snapshots: typescript: 5.6.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 8.0.0-alpha.13 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@8.0.0-alpha.13) + babel-jest: 29.7.0(@babel/core@7.26.0) ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2): dependencies: @@ -54268,7 +54140,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54296,7 +54168,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54920,7 +54792,7 @@ snapshots: '@volar/typescript': 2.4.10 '@vue/language-core': 2.1.6(typescript@5.9.2) compare-versions: 6.1.1 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7(supports-color@5.5.0) kolorist: 1.8.0 local-pkg: 0.5.1 magic-string: 0.30.13