diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 392da0f..57d308f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/perplexity-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata') steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Node uses: actions/setup-node@v6 @@ -43,7 +43,7 @@ jobs: contents: read id-token: write steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Node uses: actions/setup-node@v6 @@ -61,7 +61,7 @@ jobs: github.repository == 'stainless-sdks/perplexity-typescript' && !startsWith(github.ref, 'refs/heads/stl/') id: github-oidc - uses: actions/github-script@v8 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: core.setOutput('github_token', await core.getIDToken()); @@ -80,7 +80,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/perplexity-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Node uses: actions/setup-node@v6 diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index cf69b78..ffacf56 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -17,7 +17,7 @@ jobs: id-token: write steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Node uses: actions/setup-node@v6 diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index 725f00a..0a647c2 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -12,9 +12,8 @@ jobs: if: github.repository == 'perplexityai/perplexity-node' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Check release environment run: | bash ./bin/check-release-environment - diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2b11449..9800444 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.27.0" + ".": "0.28.0" } diff --git a/.stats.yml b/.stats.yml index 86b0bd0..7936813 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 10 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/perplexity-ai%2Fperplexity-e5052719572f5155f4cf704d996e5c7a875700a16f68f2335975ea3d06140b17.yml -openapi_spec_hash: 97d9df5dc228bb6d71be54212bc5b600 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/perplexity-ai/perplexity-cefddb763d493b69465328583ef47cf95655d9cdb3dd0f2c8680fd9679f3c8d8.yml +openapi_spec_hash: 72274397b70c787db6db52dfd34a75ee config_hash: e09a1767e929614701fb498eaaac682d diff --git a/CHANGELOG.md b/CHANGELOG.md index 6372a0b..508ed4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## 0.28.0 (2026-05-13) + +Full Changelog: [v0.27.0...v0.28.0](https://github.com/perplexityai/perplexity-node/compare/v0.27.0...v0.28.0) + +### Features + +* **responses:** add people_search and finance_search built-in tools ([f73d971](https://github.com/perplexityai/perplexity-node/commit/f73d971af644ff4d3166fe2f0c319a33a85e5e1c)) +* support setting headers via env ([8d99818](https://github.com/perplexityai/perplexity-node/commit/8d99818d6981bc084189213fc03f38408aa4dfe6)) + + +### Chores + +* apply prettier formatting to README ([147cf39](https://github.com/perplexityai/perplexity-node/commit/147cf3973b774527f0cba6426bb0c963a67befef)) +* **format:** run eslint and prettier separately ([bd0078c](https://github.com/perplexityai/perplexity-node/commit/bd0078c41267bf36971c2a621076d07056bd2e13)) +* **formatter:** run prettier and eslint separately ([e5b3c00](https://github.com/perplexityai/perplexity-node/commit/e5b3c0095da82ac41791343a1ba5333ca011fb7f)) +* **internal:** codegen related update ([d99d9e3](https://github.com/perplexityai/perplexity-node/commit/d99d9e316cf824d4a67cd29cb9ac026d63351aca)) +* **internal:** more robust bootstrap script ([c32e68e](https://github.com/perplexityai/perplexity-node/commit/c32e68ee007146374b83abb0901fde46731f0e3d)) +* redact api-key headers in debug logs ([af8b1ee](https://github.com/perplexityai/perplexity-node/commit/af8b1eee91c3ad2fa5f5f1adbb00d836e1560799)) + ## 0.27.0 (2026-04-14) Full Changelog: [v0.26.6...v0.27.0](https://github.com/perplexityai/perplexity-node/compare/v0.26.6...v0.27.0) diff --git a/README.md b/README.md index d6c9588..cc1f9da 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ const client = new Perplexity({ }); const search = await client.search.create({ - query: "latest AI developments 2024", - max_results: 5 + query: 'latest AI developments 2024', + max_results: 5, }); for (const result of search.results) { @@ -66,12 +66,8 @@ Run multiple related searches in a single request: ```js const search = await client.search.create({ - query: [ - "renewable energy trends 2024", - "solar power innovations", - "wind energy developments" - ], - max_results: 10 + query: ['renewable energy trends 2024', 'solar power innovations', 'wind energy developments'], + max_results: 10, }); ``` @@ -81,14 +77,9 @@ Limit search results to specific trusted domains: ```js const search = await client.search.create({ - query: "climate change research", - search_domain_filter: [ - "science.org", - "pnas.org", - "cell.com", - "nature.com" - ], - max_results: 10 + query: 'climate change research', + search_domain_filter: ['science.org', 'pnas.org', 'cell.com', 'nature.com'], + max_results: 10, }); ``` @@ -99,15 +90,15 @@ Filter results by recency or specific date ranges: ```js // Get results from the past week const recentSearch = await client.search.create({ - query: "latest AI developments", - search_recency_filter: "week" + query: 'latest AI developments', + search_recency_filter: 'week', }); // Search within a specific date range const dateRangeSearch = await client.search.create({ - query: "AI developments", - search_after_date_filter: "01/01/2024", - search_before_date_filter: "12/31/2024" + query: 'AI developments', + search_after_date_filter: '01/01/2024', + search_before_date_filter: '12/31/2024', }); ``` @@ -117,9 +108,9 @@ Search academic sources for research purposes: ```js const academicSearch = await client.search.create({ - query: "machine learning algorithms", - search_mode: "academic", - max_results: 10 + query: 'machine learning algorithms', + search_mode: 'academic', + max_results: 10, }); ``` @@ -158,16 +149,16 @@ const client = new Perplexity({ // Search API types const searchParams: Perplexity.Search.SearchCreateParams = { - query: "artificial intelligence trends", + query: 'artificial intelligence trends', max_results: 5, - search_mode: "web" + search_mode: 'web', }; const searchResponse: Perplexity.Search.SearchCreateResponse = await client.search.create(searchParams); // Responses API types const responseParams: Perplexity.ResponseCreateParams = { - input: "What is the capital of France?", - model: "sonar", + input: 'What is the capital of France?', + model: 'sonar', }; const response: Perplexity.ResponseCreateResponse = await client.responses.create(responseParams); @@ -189,17 +180,15 @@ a subclass of `APIError` will be thrown: ```ts // Search API error handling -const search = await client.search - .create({ query: "AI developments", max_results: 5 }) - .catch(async (err) => { - if (err instanceof Perplexity.APIError) { - console.log(err.status); // 400 - console.log(err.name); // BadRequestError - console.log(err.headers); // {server: 'nginx', ...} - } else { - throw err; - } - }); +const search = await client.search.create({ query: 'AI developments', max_results: 5 }).catch(async (err) => { + if (err instanceof Perplexity.APIError) { + console.log(err.status); // 400 + console.log(err.name); // BadRequestError + console.log(err.headers); // {server: 'nginx', ...} + } else { + throw err; + } +}); // Chat completions error handling const streamChunk = await client.chat.completions @@ -246,13 +235,19 @@ const client = new Perplexity({ }); // Or, configure per-request: -await client.search.create({ query: "AI developments", max_results: 5 }, { - maxRetries: 5, -}); +await client.search.create( + { query: 'AI developments', max_results: 5 }, + { + maxRetries: 5, + }, +); -await client.chat.completions.create({ messages: [{ role: 'user', content: 'What is the capital of France?' }], model: 'sonar' }, { - maxRetries: 5, -}); +await client.chat.completions.create( + { messages: [{ role: 'user', content: 'What is the capital of France?' }], model: 'sonar' }, + { + maxRetries: 5, + }, +); ``` ### Timeouts @@ -266,13 +261,19 @@ const client = new Perplexity({ }); // Override per-request: -await client.search.create({ query: "AI developments", max_results: 5 }, { - timeout: 5 * 1000, -}); +await client.search.create( + { query: 'AI developments', max_results: 5 }, + { + timeout: 5 * 1000, + }, +); -await client.chat.completions.create({ messages: [{ role: 'user', content: 'What is the capital of France?' }], model: 'sonar' }, { - timeout: 5 * 1000, -}); +await client.chat.completions.create( + { messages: [{ role: 'user', content: 'What is the capital of France?' }], model: 'sonar' }, + { + timeout: 5 * 1000, + }, +); ``` On timeout, an `APIConnectionTimeoutError` is thrown. @@ -293,14 +294,12 @@ Unlike `.asResponse()` this method consumes the body, returning once it is parse const client = new Perplexity(); // With search API -const searchResponse = await client.search - .create({ query: "AI developments", max_results: 5 }) - .asResponse(); +const searchResponse = await client.search.create({ query: 'AI developments', max_results: 5 }).asResponse(); console.log(searchResponse.headers.get('X-My-Header')); console.log(searchResponse.statusText); // access the underlying Response object const { data: search, response: rawSearchResponse } = await client.search - .create({ query: "AI developments", max_results: 5 }) + .create({ query: 'AI developments', max_results: 5 }) .withResponse(); console.log(rawSearchResponse.headers.get('X-My-Header')); console.log(search.results.length); diff --git a/eslint.config.mjs b/eslint.config.mjs index 230d8df..6642dab 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,7 +1,6 @@ // @ts-check import tseslint from 'typescript-eslint'; import unusedImports from 'eslint-plugin-unused-imports'; -import prettier from 'eslint-plugin-prettier'; export default tseslint.config( { @@ -14,11 +13,9 @@ export default tseslint.config( plugins: { '@typescript-eslint': tseslint.plugin, 'unused-imports': unusedImports, - prettier, }, rules: { 'no-unused-vars': 'off', - 'prettier/prettier': 'error', 'unused-imports/no-unused-imports': 'error', 'no-restricted-imports': [ 'error', diff --git a/package.json b/package.json index 17bd582..83456ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@perplexity-ai/perplexity_ai", - "version": "0.27.0", + "version": "0.28.0", "description": "The official TypeScript library for the Perplexity API", "author": "Perplexity ", "types": "dist/index.d.ts", @@ -36,7 +36,6 @@ "@typescript-eslint/eslint-plugin": "8.31.1", "@typescript-eslint/parser": "8.31.1", "eslint": "^9.39.1", - "eslint-plugin-prettier": "^5.4.1", "eslint-plugin-unused-imports": "^4.1.4", "iconv-lite": "^0.6.3", "jest": "^29.4.0", diff --git a/scripts/bootstrap b/scripts/bootstrap index a8b69ff..2e315f5 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,7 +4,7 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { echo -n "==> Install Homebrew dependencies? (y/N): " read -r response diff --git a/scripts/fast-format b/scripts/fast-format index 53721ac..f1873ae 100755 --- a/scripts/fast-format +++ b/scripts/fast-format @@ -31,10 +31,7 @@ if ! [ -z "$ESLINT_FILES" ]; then fi echo "==> Running prettier --write" -# format things eslint didn't -PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)" -if ! [ -z "$PRETTIER_FILES" ]; then - echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \ - --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern \ - '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs' +if ! [ -z "$FILE_LIST" ]; then + cat "$FILE_LIST" | xargs ./node_modules/.bin/prettier \ + --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern --ignore-unknown fi diff --git a/scripts/format b/scripts/format index 7a75640..b1b2c17 100755 --- a/scripts/format +++ b/scripts/format @@ -8,5 +8,4 @@ echo "==> Running eslint --fix" ./node_modules/.bin/eslint --fix . echo "==> Running prettier --write" -# format things eslint didn't -./node_modules/.bin/prettier --write --cache --cache-strategy metadata . '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs' +./node_modules/.bin/prettier --write --cache --cache-strategy metadata . diff --git a/scripts/lint b/scripts/lint index 3ffb78a..1f53254 100755 --- a/scripts/lint +++ b/scripts/lint @@ -4,6 +4,9 @@ set -e cd "$(dirname "$0")/.." +echo "==> Running prettier --check" +./node_modules/.bin/prettier --check . + echo "==> Running eslint" ./node_modules/.bin/eslint . diff --git a/scripts/utils/postprocess-files.cjs b/scripts/utils/postprocess-files.cjs index deae575..a8cdeb7 100644 --- a/scripts/utils/postprocess-files.cjs +++ b/scripts/utils/postprocess-files.cjs @@ -23,12 +23,19 @@ async function postprocess() { // strip out lib="dom", types="node", and types="react" references; these // are needed at build time, but would pollute the user's TS environment - const transformed = code.replace( + let transformed = code.replace( /^ *\/\/\/ * ' '.repeat(match.length - 1) + '\n', ); + // TypeScript's declaration emitter collapses /** @ts-ignore */ onto the same + // line as the type declaration, which doesn't work. So we convert to // @ts-ignore + // on its own line to properly suppresses errors. + if (file.endsWith('.d.ts') || file.endsWith('.d.mts') || file.endsWith('.d.cts')) { + transformed = transformed.replace(/\/\*\* @ts-ignore\b[^*]*\*\/ /gm, '// @ts-ignore\n'); + } + if (transformed !== code) { console.error(`wrote ${path.relative(process.cwd(), file)}`); await fs.promises.writeFile(file, transformed, 'utf8'); diff --git a/src/client.ts b/src/client.ts index 20f90f3..cf2129d 100644 --- a/src/client.ts +++ b/src/client.ts @@ -194,6 +194,18 @@ export class Perplexity { this.fetch = options.fetch ?? Shims.getDefaultFetch(); this.#encoder = Opts.FallbackEncoder; + const customHeadersEnv = readEnv('PERPLEXITY_CUSTOM_HEADERS'); + if (customHeadersEnv) { + const parsed: Record = {}; + for (const line of customHeadersEnv.split('\n')) { + const colon = line.indexOf(':'); + if (colon >= 0) { + parsed[line.substring(0, colon).trim()] = line.substring(colon + 1).trim(); + } + } + options.defaultHeaders = { ...parsed, ...options.defaultHeaders }; + } + this._options = options; this.apiKey = apiKey; diff --git a/src/internal/types.ts b/src/internal/types.ts index b668dfc..a050513 100644 --- a/src/internal/types.ts +++ b/src/internal/types.ts @@ -40,7 +40,6 @@ type OverloadedParameters = : T extends (...args: infer A) => unknown ? A : never; -/* eslint-disable */ /** * These imports attempt to get types from a parent package's dependencies. * Unresolved bare specifiers can trigger [automatic type acquisition][1] in some projects, which @@ -63,19 +62,18 @@ type OverloadedParameters = * * [1]: https://www.typescriptlang.org/tsconfig/#typeAcquisition */ -/** @ts-ignore For users with \@types/node */ +/** @ts-ignore For users with \@types/node */ /* prettier-ignore */ type UndiciTypesRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny; -/** @ts-ignore For users with undici */ +/** @ts-ignore For users with undici */ /* prettier-ignore */ type UndiciRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny; -/** @ts-ignore For users with \@types/bun */ +/** @ts-ignore For users with \@types/bun */ /* prettier-ignore */ type BunRequestInit = globalThis.FetchRequestInit; -/** @ts-ignore For users with node-fetch@2 */ +/** @ts-ignore For users with node-fetch@2 */ /* prettier-ignore */ type NodeFetch2RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny; -/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */ +/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */ /* prettier-ignore */ type NodeFetch3RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny; -/** @ts-ignore For users who use Deno */ +/** @ts-ignore For users who use Deno */ /* prettier-ignore */ type FetchRequestInit = NonNullable[1]>; -/* eslint-enable */ type RequestInits = | NotAny diff --git a/src/internal/utils/log.ts b/src/internal/utils/log.ts index c8062b7..21b42dd 100644 --- a/src/internal/utils/log.ts +++ b/src/internal/utils/log.ts @@ -107,6 +107,8 @@ export const formatRequestDetails = (details: { name, ( name.toLowerCase() === 'authorization' || + name.toLowerCase() === 'api-key' || + name.toLowerCase() === 'x-api-key' || name.toLowerCase() === 'cookie' || name.toLowerCase() === 'set-cookie' ) ? diff --git a/src/resources/responses.ts b/src/resources/responses.ts index 5b7c45c..0deca6b 100644 --- a/src/resources/responses.ts +++ b/src/resources/responses.ts @@ -960,7 +960,13 @@ export interface ResponsesCreateParams { /** * Tools available to the model */ - tools?: Array; + tools?: Array< + | ResponsesCreateParams.WebSearchTool + | ResponsesCreateParams.FetchURLTool + | ResponsesCreateParams.PeopleSearchTool + | FunctionTool + | ResponsesCreateParams.FinanceSearchTool + >; } export namespace ResponsesCreateParams { @@ -1040,6 +1046,22 @@ export namespace ResponsesCreateParams { */ max_urls?: number; } + + export interface PeopleSearchTool { + /** + * Enables the `people_search` tool. + */ + type: 'people_search'; + } + + export interface FinanceSearchTool { + /** + * Enables the `finance_search` tool. The model can request structured financial + * data (quotes, financials, segments, earnings transcripts, etc.) via + * category-based fan-out to FMP, Finchat, and Quartr. + */ + type: 'finance_search'; + } } export interface ResponsesUsage { @@ -1189,7 +1211,13 @@ export interface ResponseCreateParamsBase { /** * Tools available to the model */ - tools?: Array; + tools?: Array< + | ResponseCreateParams.WebSearchTool + | ResponseCreateParams.FetchURLTool + | ResponseCreateParams.PeopleSearchTool + | FunctionTool + | ResponseCreateParams.FinanceSearchTool + >; } export namespace ResponseCreateParams { @@ -1270,6 +1298,22 @@ export namespace ResponseCreateParams { max_urls?: number; } + export interface PeopleSearchTool { + /** + * Enables the `people_search` tool. + */ + type: 'people_search'; + } + + export interface FinanceSearchTool { + /** + * Enables the `finance_search` tool. The model can request structured financial + * data (quotes, financials, segments, earnings transcripts, etc.) via + * category-based fan-out to FMP, Finchat, and Quartr. + */ + type: 'finance_search'; + } + export type ResponseCreateParamsNonStreaming = ResponsesAPI.ResponseCreateParamsNonStreaming; export type ResponseCreateParamsStreaming = ResponsesAPI.ResponseCreateParamsStreaming; } diff --git a/src/version.ts b/src/version.ts index 288031c..3e76cc4 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.27.0'; // x-release-please-version +export const VERSION = '0.28.0'; // x-release-please-version diff --git a/yarn.lock b/yarn.lock index f6eae3c..18e7cbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -709,11 +709,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pkgr/core@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c" - integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -1515,14 +1510,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-plugin-prettier@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz#99b55d7dd70047886b2222fdd853665f180b36af" - integrity sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.11.7" - eslint-plugin-unused-imports@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738" @@ -1674,11 +1661,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -2841,13 +2823,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - prettier@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" @@ -3144,13 +3119,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.11.7: - version "0.11.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" - integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== - dependencies: - "@pkgr/core" "^0.2.4" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"