diff --git a/components/docparser/actions/fetch-document-url/fetch-document-url.mjs b/components/docparser/actions/fetch-document-url/fetch-document-url.mjs new file mode 100644 index 0000000000000..81b4654824a0a --- /dev/null +++ b/components/docparser/actions/fetch-document-url/fetch-document-url.mjs @@ -0,0 +1,38 @@ +import FormData from "form-data"; +import docparser from "../../docparser.app.mjs"; + +export default { + key: "docparser-fetch-document-url", + name: "Fetch Document by URL", + description: "Fetches a document from a provided URL and imports it to Docparser for parsing. [See the documentation](https://docparser.com/api/)", + version: "0.0.1", + type: "action", + props: { + docparser, + parserId: { + propDefinition: [ + docparser, + "parserId", + ], + }, + url: { + type: "string", + label: "Document URL", + description: "The URL of the document to be fetched and imported into Docparser.", + }, + }, + async run({ $ }) { + const data = new FormData(); + data.append("url", this.url); + + const response = await this.docparser.fetchDocumentFromURL({ + $, + parserId: this.parserId, + data, + headers: data.getHeaders(), + }); + + $.export("$summary", `Document is scheduled to be fetched and processed. Document ID: ${response.document_id}`); + return response; + }, +}; diff --git a/components/docparser/actions/upload-document/upload-document.mjs b/components/docparser/actions/upload-document/upload-document.mjs new file mode 100644 index 0000000000000..a2e89111b8a4f --- /dev/null +++ b/components/docparser/actions/upload-document/upload-document.mjs @@ -0,0 +1,40 @@ +import FormData from "form-data"; +import fs from "fs"; +import { checkTmp } from "../../common/utils.mjs"; +import docparser from "../../docparser.app.mjs"; + +export default { + key: "docparser-upload-document", + name: "Upload Document", + description: "Uploads a document to docparser that initiates parsing immediately after reception. [See the documentation](https://docparser.com/api/#import-documents)", + version: "0.0.1", + type: "action", + props: { + docparser, + parserId: { + propDefinition: [ + docparser, + "parserId", + ], + }, + file: { + type: "string", + label: "File", + description: "The path to a file in the `/tmp` directory. [See the documentation on working with files](https://pipedream.com/docs/code/nodejs/working-with-files/#writing-a-file-to-tmp)", + }, + }, + async run({ $ }) { + const data = new FormData(); + data.append("file", fs.createReadStream(checkTmp(this.file))); + + const response = await this.docparser.uploadDocument({ + $, + parserId: this.parserId, + data, + headers: data.getHeaders(), + }); + + $.export("$summary", `Successfully uploaded document. Document ID: ${response.id}`); + return response; + }, +}; diff --git a/components/docparser/common/utils.mjs b/components/docparser/common/utils.mjs new file mode 100644 index 0000000000000..1a5e36f32a603 --- /dev/null +++ b/components/docparser/common/utils.mjs @@ -0,0 +1,6 @@ +export const checkTmp = (filename) => { + if (!filename.startsWith("/tmp")) { + return `/tmp/${filename}`; + } + return filename; +}; diff --git a/components/docparser/docparser.app.mjs b/components/docparser/docparser.app.mjs index 10bde6efc3a6e..1af664cd7e0ad 100644 --- a/components/docparser/docparser.app.mjs +++ b/components/docparser/docparser.app.mjs @@ -1,11 +1,73 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "docparser", - propDefinitions: {}, + propDefinitions: { + parserId: { + type: "string", + label: "Parser ID", + description: "The ID of the parser to be used.", + async options() { + const parsers = await this.listParsers(); + return parsers.map(({ + id: value, label, + }) => ({ + label, + value, + })); + }, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return "https://api.docparser.com"; + }, + _auth() { + return { + username: `${this.$auth.api_key}`, + password: "", + }; + }, + _makeRequest({ + $ = this, path, ...opts + }) { + return axios($, { + url: this._baseUrl() + path, + auth: this._auth(), + ...opts, + }); + }, + listData({ + parserId, ...opts + }) { + return this._makeRequest({ + path: `/v1/results/${parserId}`, + ...opts, + }); + }, + listParsers() { + return this._makeRequest({ + path: "/v1/parsers", + }); + }, + fetchDocumentFromURL({ + parserId, ...opts + }) { + return this._makeRequest({ + method: "POST", + path: `/v2/document/fetch/${parserId}`, + ...opts, + }); + }, + uploadDocument({ + parserId, ...opts + }) { + return this._makeRequest({ + method: "POST", + path: `/v1/document/upload/${parserId}`, + ...opts, + }); }, }, }; diff --git a/components/docparser/package.json b/components/docparser/package.json index fd4c035efdd74..919aa94281846 100644 --- a/components/docparser/package.json +++ b/components/docparser/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/docparser", - "version": "0.6.0", + "version": "0.1.0", "description": "Pipedream docparser Components", "main": "docparser.app.mjs", "keywords": [ @@ -13,6 +13,6 @@ "access": "public" }, "dependencies": { - "@pipedream/platform": "^3.0.0" + "@pipedream/platform": "^3.0.3" } } diff --git a/components/docparser/sources/common/base.mjs b/components/docparser/sources/common/base.mjs new file mode 100644 index 0000000000000..fa7cd3800b0f6 --- /dev/null +++ b/components/docparser/sources/common/base.mjs @@ -0,0 +1,69 @@ +import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"; +import app from "../../docparser.app.mjs"; + +export default { + props: { + app, + db: "$.service.db", + timer: { + type: "$.interface.timer", + default: { + intervalSeconds: DEFAULT_POLLING_SOURCE_TIMER_INTERVAL, + }, + }, + parserId: { + propDefinition: [ + app, + "parserId", + ], + }, + }, + methods: { + _getLastDate() { + return this.db.get("lastDate") || "1970-01-01T00:00:00"; + }, + _setLastDate(lastDate) { + this.db.set("lastDate", lastDate); + }, + async emitEvent(maxResults = false) { + const lastDate = this._getLastDate(); + const fn = this.getFunction(); + const params = { + sort_by: "parsed_at", + sort_order: "DESC", + list: "processed_after", + date: lastDate, + }; + + if (maxResults) { + params.limit = maxResults; + } + + const response = await fn({ + parserId: this.parserId, + params, + }); + + if (response.length) { + const dateTime = response[0].processed_at_utc; + this._setLastDate(dateTime.substring(0, dateTime.length - 6)); + } + + for (const item of response.reverse()) { + this.$emit(item, { + id: item.id, + summary: this.getSummary(item), + ts: Date.parse(item.created || new Date()), + }); + } + }, + }, + hooks: { + async deploy() { + await this.emitEvent(25); + }, + }, + async run() { + await this.emitEvent(); + }, +}; diff --git a/components/docparser/sources/new-document-data-available/new-document-data-available.mjs b/components/docparser/sources/new-document-data-available/new-document-data-available.mjs new file mode 100644 index 0000000000000..f14f305b51b5f --- /dev/null +++ b/components/docparser/sources/new-document-data-available/new-document-data-available.mjs @@ -0,0 +1,22 @@ +import common from "../common/base.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "docparser-new-document-data-available", + name: "New Document Data Available", + description: "Emit new event every time a document is processed and parsed data is available. [See the documentation](https://docparser.com/api/)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getFunction() { + return this.app.listData; + }, + getSummary(item) { + return `New Document Parsed: ${item.file_name}`; + }, + }, + sampleEmit, +}; diff --git a/components/docparser/sources/new-document-data-available/test-event.mjs b/components/docparser/sources/new-document-data-available/test-event.mjs new file mode 100644 index 0000000000000..4d1fcdfd90c78 --- /dev/null +++ b/components/docparser/sources/new-document-data-available/test-event.mjs @@ -0,0 +1,16 @@ +export default { + "id": "2b11659f161dcd26694e9403fc430cfd", + "document_id": "2b11659f161dcd26694e9403fc430cfd", + "remote_id": "", + "file_name": "file.pdf", + "media_link": "https://api.docparser.com/v1/document/media/2b11659f161dcd26694e9403fc430cfd-2b11659f161dcd26694e9403fc430cfd", + "media_link_original": "https://api.docparser.com/v1/document/media/2b11659f161dcd26694e9403fc430cfd-2b11659f161dcd26694e9403fc430cfd/original", + "media_link_data": "https://api.docparser.com/v1/document/media/2b11659f161dcd26694e9403fc430cfd-2b11659f161dcd26694e9403fc430cfd/data", + "page_count": 5, + "uploaded_at": "2025-04-08T13:32:02+00:00", + "processed_at": "2025-04-08T13:32:02+00:00", + "uploaded_at_utc": "2025-04-08T13:32:02+00:00", + "uploaded_at_user": "2025-04-08T06:32:02+00:00", + "processed_at_utc": "2025-04-08T13:32:02+00:00", + "processed_at_user": "2025-04-08T06:32:02+00:00" +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18ebccc160460..79e3e27c89513 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -379,8 +379,7 @@ importers: specifier: ^20.0.0 version: 20.0.0 - components/adyntel: - specifiers: {} + components/adyntel: {} components/aerisweather: dependencies: @@ -3557,7 +3556,7 @@ importers: components/docparser: dependencies: '@pipedream/platform': - specifier: ^3.0.0 + specifier: ^3.0.3 version: 3.0.3 components/docraptor: {} @@ -5771,8 +5770,7 @@ importers: specifier: ^3.0.0 version: 3.0.3 - components/hamsa: - specifiers: {} + components/hamsa: {} components/handwrytten: {} @@ -14898,8 +14896,8 @@ importers: docs-v2: dependencies: '@docsearch/react': - specifier: ^3.6.1 - version: 3.8.0(@algolia/client-search@5.17.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + specifier: ^3.8.1 + version: 3.9.0(@algolia/client-search@5.17.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) '@vercel/analytics': specifier: ^1.3.1 version: 1.4.1(next@14.2.19(@babel/core@8.0.0-alpha.13)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vue@2.7.16) @@ -15194,126 +15192,74 @@ packages: resolution: {integrity: sha512-C+jj5XBTCNs7AFwufOkPLhuqn9bdgSDcqLB6b/Ppi9Fujwt613vWmA1hxeG76RX49vzHZIDJLq6N/v0o2SY1sA==} engines: {node: '>=18'} - '@algolia/autocomplete-core@1.17.7': - resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + '@algolia/autocomplete-core@1.17.9': + resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} - '@algolia/autocomplete-plugin-algolia-insights@1.17.7': - resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + '@algolia/autocomplete-plugin-algolia-insights@1.17.9': + resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} peerDependencies: search-insights: '>= 1 < 3' - '@algolia/autocomplete-preset-algolia@1.17.7': - resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + '@algolia/autocomplete-preset-algolia@1.17.9': + resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/autocomplete-shared@1.17.7': - resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + '@algolia/autocomplete-shared@1.17.9': + resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.15.0': - resolution: {integrity: sha512-FaEM40iuiv1mAipYyiptP4EyxkJ8qHfowCpEeusdHUC4C7spATJYArD2rX3AxkVeREkDIgYEOuXcwKUbDCr7Nw==} - engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.17.1': resolution: {integrity: sha512-Os/xkQbDp5A5RdGYq1yS3fF69GoBJH5FIfrkVh+fXxCSe714i1Xdl9XoXhS4xG76DGKm6EFMlUqP024qjps8cg==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.15.0': - resolution: {integrity: sha512-lho0gTFsQDIdCwyUKTtMuf9nCLwq9jOGlLGIeQGKDxXF7HbiAysFIu5QW/iQr1LzMgDyM9NH7K98KY+BiIFriQ==} - engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.17.1': resolution: {integrity: sha512-WKpGC+cUhmdm3wndIlTh8RJXoVabUH+4HrvZHC4hXtvCYojEXYeep8RZstatwSZ7Ocg6Y2u67bLw90NEINuYEw==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.15.0': - resolution: {integrity: sha512-IofrVh213VLsDkPoSKMeM9Dshrv28jhDlBDLRcVJQvlL8pzue7PEB1EZ4UoJFYS3NSn7JOcJ/V+olRQzXlJj1w==} - engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.17.1': resolution: {integrity: sha512-5rb5+yPIie6912riAypTSyzbE23a7UM1UpESvD8GEPI4CcWQvA9DBlkRNx9qbq/nJ5pvv8VjZjUxJj7rFkzEAA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.15.0': - resolution: {integrity: sha512-bDDEQGfFidDi0UQUCbxXOCdphbVAgbVmxvaV75cypBTQkJ+ABx/Npw7LkFGw1FsoVrttlrrQbwjvUB6mLVKs/w==} - engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.17.1': resolution: {integrity: sha512-nb/tfwBMn209TzFv1DDTprBKt/wl5btHVKoAww9fdEVdoKK02R2KAqxe5tuXLdEzAsS+LevRyOM/YjXuLmPtjQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.15.0': - resolution: {integrity: sha512-LfaZqLUWxdYFq44QrasCDED5bSYOswpQjSiIL7Q5fYlefAAUO95PzBPKCfUhSwhb4rKxigHfDkd81AvEicIEoA==} - engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.17.1': resolution: {integrity: sha512-JuNlZe1SdW9KbV0gcgdsiVkFfXt0mmPassdS3cBSGvZGbPB9JsHthD719k5Y6YOY4dGvw1JmC1i9CwCQHAS8hg==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.15.0': - resolution: {integrity: sha512-wu8GVluiZ5+il8WIRsGKu8VxMK9dAlr225h878GGtpTL6VBvwyJvAyLdZsfFIpY0iN++jiNb31q2C1PlPL+n/A==} - engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.17.1': resolution: {integrity: sha512-RBIFIv1QE3IlAikJKWTOpd6pwE4d2dY6t02iXH7r/SLXWn0HzJtsAPPeFg/OKkFvWAXt0H7In2/Mp7a1/Dy2pw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.15.0': - resolution: {integrity: sha512-Z32gEMrRRpEta5UqVQA612sLdoqY3AovvUPClDfMxYrbdDAebmGDVPtSogUba1FZ4pP5dx20D3OV3reogLKsRA==} - engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.17.1': resolution: {integrity: sha512-bd5JBUOP71kPsxwDcvOxqtqXXVo/706NFifZ/O5Rx5GB8ZNVAhg4l7aGoT6jBvEfgmrp2fqPbkdIZ6JnuOpGcw==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.15.0': - resolution: {integrity: sha512-MkqkAxBQxtQ5if/EX2IPqFA7LothghVyvPoRNA/meS2AW2qkHwcxjuiBxv4H6mnAVEPfJlhu9rkdVz9LgCBgJg==} - engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.17.1': resolution: {integrity: sha512-T18tvePi1rjRYcIKhd82oRukrPWHxG/Iy1qFGaxCplgRm9Im5z96qnYOq75MSKGOUHkFxaBKJOLmtn8xDR+Mcw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.15.0': - resolution: {integrity: sha512-QPrFnnGLMMdRa8t/4bs7XilPYnoUXDY8PMQJ1sf9ZFwhUysYYhQNX34/enoO0LBjpoOY6rLpha39YQEFbzgKyQ==} - engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.17.1': resolution: {integrity: sha512-gDtow+AUywTehRP8S1tWKx2IvhcJOxldAoqBxzN3asuQobF7er5n72auBeL++HY4ImEuzMi7PDOA/Iuwxs2IcA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.15.0': - resolution: {integrity: sha512-5eupMwSqMLDObgSMF0XG958zR6GJP3f7jHDQ3/WlzCM9/YIJiWIUoJFGsko9GYsA5xbLDHE/PhWtq4chcCdaGQ==} - engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.17.1': resolution: {integrity: sha512-2992tTHkRe18qmf5SP57N78kN1D3e5t4PO1rt10sJncWtXBZWiNOK6K/UcvWsFbNSGAogFcIcvIMAl5mNp6RWA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.15.0': - resolution: {integrity: sha512-Po/GNib6QKruC3XE+WKP1HwVSfCDaZcXu48kD+gwmtDlqHWKc7Bq9lrS0sNZ456rfCKhXksOmMfUs4wRM/Y96w==} - engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.17.1': resolution: {integrity: sha512-XpKgBfyczVesKgr7DOShNyPPu5kqlboimRRPjdqAw5grSyHhCmb8yoTIKy0TCqBABZeXRPMYT13SMruUVRXvHA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.15.0': - resolution: {integrity: sha512-rOZ+c0P7ajmccAvpeeNrUmEKoliYFL8aOR5qGW5pFq3oj3Iept7Y5mEtEsOBYsRt6qLnaXn4zUKf+N8nvJpcIw==} - engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.17.1': resolution: {integrity: sha512-EhUomH+DZP5vb6DnEjT0GvXaXBSwzZnuU6hPGNU1EYKRXDouRjII/bIWpVjt7ycMgL2D2oQruqDh6rAWUhQwRw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.15.0': - resolution: {integrity: sha512-b1jTpbFf9LnQHEJP5ddDJKE2sAlhYd7EVSOWgzo/27n/SfCoHfqD0VWntnWYD83PnOKvfe8auZ2+xCb0TXotrQ==} - engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.17.1': resolution: {integrity: sha512-PSnENJtl4/wBWXlGyOODbLYm6lSiFqrtww7UpQRCJdsHXlJKF8XAP6AME8NxvbE0Qo/RJUxK0mvyEh9sQcx6bg==} engines: {node: '>= 14.0.0'} @@ -16483,15 +16429,15 @@ packages: resolution: {integrity: sha512-4JINx4Rttha29f50PBsJo48xZXx/He5yaIWJRwVarhYAN947+S84YciHl+AIhQNRPAFkg8+5qFngEGtKxQDWXA==} engines: {node: '>=18.18.0'} - '@docsearch/css@3.8.0': - resolution: {integrity: sha512-pieeipSOW4sQ0+bE5UFC51AOZp9NGxg89wAlZ1BAQFaiRAGK1IKUaPQ0UGZeNctJXyqZ1UvBtOQh2HH+U5GtmA==} + '@docsearch/css@3.9.0': + resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} - '@docsearch/react@3.8.0': - resolution: {integrity: sha512-WnFK720+iwTVt94CxY3u+FgX6exb3BfN5kE9xUY6uuAH/9W/UFboBZFLlrw/zxFRHoHZCOXRtOylsXF+6LHI+Q==} + '@docsearch/react@3.9.0': + resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==} peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' + '@types/react': '>= 16.8.0 < 20.0.0' + react: '>= 16.8.0 < 20.0.0' + react-dom: '>= 16.8.0 < 20.0.0' search-insights: '>= 1 < 3' peerDependenciesMeta: '@types/react': @@ -20234,10 +20180,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.15.0: - resolution: {integrity: sha512-Yf3Swz1s63hjvBVZ/9f2P1Uu48GjmjCN+Esxb6MAONMGtZB1fRX8/S1AhUTtsuTlcGovbYLxpHgc7wEzstDZBw==} - engines: {node: '>= 14.0.0'} - algoliasearch@5.17.1: resolution: {integrity: sha512-3CcbT5yTWJDIcBe9ZHgsPi184SkT1kyZi3GWlQU5EFgvq1V73X2sqHRkPCQMe0RA/uvZbB+1sFeAk73eWygeLg==} engines: {node: '>= 14.0.0'} @@ -29122,40 +29064,33 @@ snapshots: transitivePeerDependencies: - supports-color - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1) '@algolia/client-search': 5.17.1 - algoliasearch: 5.15.0 + algoliasearch: 5.17.1 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)': dependencies: '@algolia/client-search': 5.17.1 - algoliasearch: 5.15.0 - - '@algolia/client-abtesting@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 + algoliasearch: 5.17.1 '@algolia/client-abtesting@5.17.1': dependencies: @@ -29164,13 +29099,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/client-analytics@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/client-analytics@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29178,17 +29106,8 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/client-common@5.15.0': {} - '@algolia/client-common@5.17.1': {} - '@algolia/client-insights@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/client-insights@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29196,13 +29115,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/client-personalization@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/client-personalization@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29210,13 +29122,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/client-query-suggestions@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/client-query-suggestions@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29224,13 +29129,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/client-search@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/client-search@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29238,13 +29136,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/ingestion@1.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/ingestion@1.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29252,13 +29143,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/monitoring@1.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/monitoring@1.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29266,13 +29150,6 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/recommend@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - '@algolia/recommend@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -29280,26 +29157,14 @@ snapshots: '@algolia/requester-fetch': 5.17.1 '@algolia/requester-node-http': 5.17.1 - '@algolia/requester-browser-xhr@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-browser-xhr@5.17.1': dependencies: '@algolia/client-common': 5.17.1 - '@algolia/requester-fetch@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-fetch@5.17.1': dependencies: '@algolia/client-common': 5.17.1 - '@algolia/requester-node-http@5.15.0': - dependencies: - '@algolia/client-common': 5.15.0 - '@algolia/requester-node-http@5.17.1': dependencies: '@algolia/client-common': 5.17.1 @@ -32233,14 +32098,14 @@ snapshots: tar-stream: 3.1.7 which: 4.0.0 - '@docsearch/css@3.8.0': {} + '@docsearch/css@3.9.0': {} - '@docsearch/react@3.8.0(@algolia/client-search@5.17.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.17.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.17.1)(algoliasearch@5.15.0) - '@docsearch/css': 3.8.0 - algoliasearch: 5.15.0 + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.17.1)(algoliasearch@5.17.1) + '@docsearch/css': 3.9.0 + algoliasearch: 5.17.1 optionalDependencies: '@types/react': 18.3.12 react: 18.3.1 @@ -36842,22 +36707,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.15.0: - dependencies: - '@algolia/client-abtesting': 5.15.0 - '@algolia/client-analytics': 5.15.0 - '@algolia/client-common': 5.15.0 - '@algolia/client-insights': 5.15.0 - '@algolia/client-personalization': 5.15.0 - '@algolia/client-query-suggestions': 5.15.0 - '@algolia/client-search': 5.15.0 - '@algolia/ingestion': 1.15.0 - '@algolia/monitoring': 1.15.0 - '@algolia/recommend': 5.15.0 - '@algolia/requester-browser-xhr': 5.15.0 - '@algolia/requester-fetch': 5.15.0 - '@algolia/requester-node-http': 5.15.0 - algoliasearch@5.17.1: dependencies: '@algolia/client-abtesting': 5.17.1