diff --git a/components/google_docs/actions/append-image/append-image.mjs b/components/google_docs/actions/append-image/append-image.mjs index 19616795cba20..96b2a72fd6061 100644 --- a/components/google_docs/actions/append-image/append-image.mjs +++ b/components/google_docs/actions/append-image/append-image.mjs @@ -3,8 +3,8 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-append-image", name: "Append Image to Document", - description: "Appends an image to the end of a document. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertInlineImageRequest)", - version: "0.0.3", + description: "Appends an image to the end of a document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertInlineImageRequest)", + version: "0.0.4", type: "action", props: { googleDocs, @@ -28,13 +28,11 @@ export default { }, }, async run({ $ }) { - const image = { + await this.googleDocs.appendImage(this.docId, { uri: this.imageUri, - }; - const { data } = await this.googleDocs.appendImage(this.docId, image, this.appendAtBeginning); - $.export("$summary", "Successfully appended image to doc"); - return { - documentId: data.documentId, - }; + }, this.appendAtBeginning); + const doc = this.googleDocs.getDocument(this.docId); + $.export("$summary", `Successfully appended image to document with ID: ${this.docId}`); + return doc; }, }; diff --git a/components/google_docs/actions/append-text/append-text.mjs b/components/google_docs/actions/append-text/append-text.mjs index 69a1c9610f189..4e20930db5d93 100644 --- a/components/google_docs/actions/append-text/append-text.mjs +++ b/components/google_docs/actions/append-text/append-text.mjs @@ -3,8 +3,8 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-append-text", name: "Append Text", - description: "Append text to an existing document. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertTextRequest)", - version: "0.1.2", + description: "Append text to an existing document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertTextRequest)", + version: "0.1.3", type: "action", props: { googleDocs, @@ -28,13 +28,11 @@ export default { }, }, async run({ $ }) { - const text = { + await this.googleDocs.insertText(this.docId, { text: this.text, - }; - await this.googleDocs.insertText(this.docId, text, this.appendAtBeginning); - $.export("$summary", "Successfully appended text to doc"); - return { - documentId: this.docId, - }; + }, this.appendAtBeginning); + const doc = this.googleDocs.getDocument(this.docId); + $.export("$summary", `Successfully appended text to document with ID: ${this.docId}`); + return doc; }, }; diff --git a/components/google_docs/actions/create-document-from-text/create-document-from-text.mjs b/components/google_docs/actions/create-document-from-text/create-document-from-text.mjs deleted file mode 100644 index 2437bfd76057c..0000000000000 --- a/components/google_docs/actions/create-document-from-text/create-document-from-text.mjs +++ /dev/null @@ -1,30 +0,0 @@ -import googleDocs from "../../google_docs.app.mjs"; - -export default { - key: "google_docs-create-document-from-text", - name: "Create New Document from Text", - description: "Create a new document from plain text. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/create)", - version: "0.0.3", - type: "action", - props: { - googleDocs, - title: "string", - text: { - propDefinition: [ - googleDocs, - "text", - ], - }, - }, - async run({ $ }) { - const { documentId } = await this.googleDocs.createEmptyDoc(this.title); - const text = { - text: this.text, - }; - await this.googleDocs.insertText(documentId, text); - $.export("$summary", "Successfully created doc"); - return { - documentId, - }; - }, -}; diff --git a/components/google_docs/actions/create-document/create-document.mjs b/components/google_docs/actions/create-document/create-document.mjs index 8945536c1cb1b..d224e8be4825e 100644 --- a/components/google_docs/actions/create-document/create-document.mjs +++ b/components/google_docs/actions/create-document/create-document.mjs @@ -3,16 +3,59 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-create-document", name: "Create a New Document", - description: "Create a new, empty document. To add content after creating the document, pass the document ID exported by this step to the Append Text action. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/create)", - version: "0.1.2", + description: "Create a new document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/create)", + version: "0.1.3", type: "action", props: { googleDocs, - title: "string", + title: { + type: "string", + label: "Title", + description: "Title of the new document", + }, + text: { + propDefinition: [ + googleDocs, + "text", + ], + optional: true, + }, + folderId: { + propDefinition: [ + googleDocs, + "folderId", + ], + optional: true, + }, }, async run({ $ }) { - const createdDoc = await this.googleDocs.createEmptyDoc(this.title); - $.export("$summary", "Successfully created doc"); - return createdDoc; + // Create Doc + const { documentId } = await this.googleDocs.createEmptyDoc(this.title); + + // Insert text + if (this.text) { + await this.googleDocs.insertText(documentId, { + text: this.text, + }); + } + + // Move file + if (this.folderId) { + // Get file to get parents to remove + const file = await this.googleDocs.getFile(documentId); + + // Move file, removing old parents, adding new parent folder + await this.googleDocs.updateFile(documentId, { + fields: "*", + removeParents: file.parents.join(","), + addParents: this.folderId, + }); + } + + // Get updated doc resource to return + const doc = await this.googleDocs.getDocument(documentId); + + $.export("$summary", `Successfully created document with ID: ${documentId}`); + return doc; }, }; diff --git a/components/google_docs/actions/get-document/get-document.mjs b/components/google_docs/actions/get-document/get-document.mjs index ce94a97d89a30..0362a5af2e1f7 100644 --- a/components/google_docs/actions/get-document/get-document.mjs +++ b/components/google_docs/actions/get-document/get-document.mjs @@ -3,8 +3,8 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-get-document", name: "Get Document", - description: "Get the contents of the latest version of a document. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/get)", - version: "0.1.1", + description: "Get the contents of the latest version of a document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/get)", + version: "0.1.2", type: "action", props: { googleDocs, @@ -15,7 +15,9 @@ export default { ], }, }, - async run() { - return this.googleDocs.getDocument(this.docId); + async run({ $ }) { + const response = await this.googleDocs.getDocument(this.docId); + $.export("$summary", `Successfully retrieved document with ID: ${this.docId}`); + return response; }, }; diff --git a/components/google_docs/actions/replace-image/replace-image.mjs b/components/google_docs/actions/replace-image/replace-image.mjs index 059369d9768e5..bd97a3152fba5 100644 --- a/components/google_docs/actions/replace-image/replace-image.mjs +++ b/components/google_docs/actions/replace-image/replace-image.mjs @@ -3,8 +3,8 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-replace-image", name: "Replace Image", - description: "Replace image in a existing document. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/request#ReplaceImageRequest)", - version: "0.0.3", + description: "Replace image in a existing document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/request#ReplaceImageRequest)", + version: "0.0.4", type: "action", props: { googleDocs, @@ -37,9 +37,8 @@ export default { uri: this.imageUri, }; await this.googleDocs.replaceImage(this.docId, image); - $.export("$summary", "Successfully replaced image in doc"); - return { - documentId: this.docId, - }; + const doc = this.googleDocs.getDocument(this.docId); + $.export("$summary", `Successfully replaced image in doc with ID: ${this.docId}`); + return doc; }, }; diff --git a/components/google_docs/actions/replace-text/replace-text.mjs b/components/google_docs/actions/replace-text/replace-text.mjs index 4ccbe9277d9c0..0e2e66569da87 100644 --- a/components/google_docs/actions/replace-text/replace-text.mjs +++ b/components/google_docs/actions/replace-text/replace-text.mjs @@ -3,8 +3,8 @@ import googleDocs from "../../google_docs.app.mjs"; export default { key: "google_docs-replace-text", name: "Replace Text", - description: "Replace all instances of matched text in a existing document. [See the docs](https://developers.google.com/docs/api/reference/rest/v1/documents/request#ReplaceAllTextRequest)", - version: "0.0.3", + description: "Replace all instances of matched text in an existing document. [See the documentation](https://developers.google.com/docs/api/reference/rest/v1/documents/request#ReplaceAllTextRequest)", + version: "0.0.4", type: "action", props: { googleDocs, @@ -45,9 +45,8 @@ export default { }, }; await this.googleDocs.replaceText(this.docId, text); - $.export("$summary", "Successfully replaced text in doc"); - return { - documentId: this.docId, - }; + const doc = this.googleDocs.getDocument(this.docId); + $.export("$summary", `Successfully replaced text in doc with ID: ${this.docId}`); + return doc; }, }; diff --git a/components/google_docs/google_docs.app.mjs b/components/google_docs/google_docs.app.mjs index 9912749109b7d..4e81ef1bec516 100644 --- a/components/google_docs/google_docs.app.mjs +++ b/components/google_docs/google_docs.app.mjs @@ -9,12 +9,13 @@ export default { docId: { type: "string", label: "Document", - description: "Select a document or enter a custom expression to pass a value from a previous step (e.g., `{{steps.foo.$return_value.documentId}}`) or to manually enter a static ID (e.g., `1KuEN7k8jVP3Qi0_svM5OO8oEuiLkq0csihobF67eat8`).", + description: "Search for and select a document. You can also use a custom expression to pass a value from a previous step (e.g., `{{steps.foo.$return_value.documentId}}`) or you can enter a static ID (e.g., `1KuEN7k8jVP3Qi0_svM5OO8oEuiLkq0csihobF67eat8`).", + useQuery: true, async options({ - prevContext, driveId, + prevContext, driveId, query, }) { const { nextPageToken } = prevContext; - return this.listDocsOptions(driveId, nextPageToken); + return this.listDocsOptions(driveId, query, nextPageToken); }, }, imageId: { @@ -128,8 +129,11 @@ export default { async replaceImage(documentId, image) { return this._batchUpdate(documentId, "replaceImage", image); }, - async listDocsOptions(driveId, pageToken = null) { - const q = "mimeType='application/vnd.google-apps.document'"; + async listDocsOptions(driveId, query, pageToken = null) { + let q = "mimeType='application/vnd.google-apps.document'"; + if (query) { + q = `${q} and name contains '${query}'`; + } let request = { q, }; diff --git a/components/google_docs/package.json b/components/google_docs/package.json index be44a1268a6d7..80b20f3b5813f 100644 --- a/components/google_docs/package.json +++ b/components/google_docs/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/google_docs", - "version": "0.3.6", + "version": "0.4.0", "description": "Pipedream Google_docs Components", "main": "google_docs.app.mjs", "keywords": [ @@ -13,6 +13,6 @@ "access": "public" }, "dependencies": { - "@googleapis/docs": "^0.2.0" + "@googleapis/docs": "^3.3.0" } } diff --git a/components/google_docs/sources/common/base.mjs b/components/google_docs/sources/common/base.mjs new file mode 100644 index 0000000000000..8a135d965daee --- /dev/null +++ b/components/google_docs/sources/common/base.mjs @@ -0,0 +1,83 @@ +import newFilesInstant from "../../../google_drive/sources/new-files-instant/new-files-instant.mjs"; +import googleDrive from "../../google_docs.app.mjs"; +import { MY_DRIVE_VALUE } from "../../../google_drive/common/constants.mjs"; + +export default { + ...newFilesInstant, + props: { + googleDrive, + db: "$.service.db", + http: "$.interface.http", + timer: newFilesInstant.props.timer, + folders: { + propDefinition: [ + googleDrive, + "folderId", + ], + type: "string[]", + description: "(Optional) The folders you want to watch. Leave blank to watch for any new document.", + optional: true, + }, + }, + hooks: { + ...newFilesInstant.hooks, + async deploy() { + // Emit sample records on the first run + const docs = await this.getDocuments(5); + await this.emitFiles(docs); + }, + }, + methods: { + ...newFilesInstant.methods, + getDriveId() { + return googleDrive.methods.getDriveId(MY_DRIVE_VALUE); + }, + shouldProcess(file) { + return ( + file.mimeType.includes("document") && + newFilesInstant.methods.shouldProcess.bind(this)(file) + ); + }, + getDocumentsFromFolderOpts(folderId) { + const mimeQuery = "mimeType = 'application/vnd.google-apps.document'"; + let opts = { + q: `${mimeQuery} and parents in '${folderId}' and trashed = false`, + }; + return opts; + }, + async getDocumentsFromFiles(files, limit) { + return files.reduce(async (acc, file) => { + const docs = await acc; + const fileInfo = await this.googleDrive.getFile(file.id); + return docs.length >= limit + ? docs + : docs.concat(fileInfo); + }, []); + }, + async getDocuments(limit) { + const foldersIds = this.folders; + + if (!foldersIds?.length) { + const opts = this.getDocumentsFromFolderOpts("root"); + const { files } = await this.googleDrive.listFilesInPage(null, opts); + return this.getDocumentsFromFiles(files, limit); + } + + return foldersIds.reduce(async (docs, folderId) => { + const opts = this.getDocumentsFromFolderOpts(folderId); + const { files } = await this.googleDrive.listFilesInPage(null, opts); + const nextDocuments = await this.getDocumentsFromFiles(files, limit); + return (await docs).concat(nextDocuments); + }, []); + }, + async emitFiles(files) { + for (const file of files) { + if (!this.shouldProcess(file)) { + continue; + } + const doc = await this.googleDrive.getDocument(file.id); + this.$emit(doc, this.generateMeta(doc)); + } + }, + }, +}; diff --git a/components/google_docs/sources/new-document-created/new-document-created.mjs b/components/google_docs/sources/new-document-created/new-document-created.mjs new file mode 100644 index 0000000000000..de98f8ca78399 --- /dev/null +++ b/components/google_docs/sources/new-document-created/new-document-created.mjs @@ -0,0 +1,38 @@ +import common from "../common/base.mjs"; + +export default { + ...common, + key: "google_docs-new-document-created", + name: "New Document Created (Instant)", + description: "Emit new event when a new document is created in Google Docs. [See the documentation](https://developers.google.com/drive/api/reference/rest/v3/changes/watch)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + generateMeta(doc) { + return { + id: doc.documentId, + summary: `New Document: ${doc.documentId}`, + ts: Date.now(), + }; + }, + async processChanges() { + const lastFileCreatedTime = this._getLastFileCreatedTime(); + const timeString = new Date(lastFileCreatedTime).toISOString(); + + const args = this.getListFilesOpts({ + q: `mimeType != "application/vnd.google-apps.folder" and createdTime > "${timeString}" and trashed = false`, + orderBy: "createdTime desc", + fields: "*", + }); + + const { files } = await this.googleDrive.listFilesInPage(null, args); + if (!files?.length) { + return; + } + await this.emitFiles(files); + this._setLastFileCreatedTime(Date.parse(files[0].createdTime)); + }, + }, +}; diff --git a/components/google_docs/sources/new-or-updated-document/new-or-updated-document.mjs b/components/google_docs/sources/new-or-updated-document/new-or-updated-document.mjs new file mode 100644 index 0000000000000..0dc1c382cf407 --- /dev/null +++ b/components/google_docs/sources/new-or-updated-document/new-or-updated-document.mjs @@ -0,0 +1,51 @@ +import common from "../common/base.mjs"; +import { + GOOGLE_DRIVE_NOTIFICATION_CHANGE, + GOOGLE_DRIVE_NOTIFICATION_UPDATE, +} from "../../../google_drive/common/constants.mjs"; + +export default { + ...common, + key: "google_docs-new-or-updated-document", + name: "New or Updated Document (Instant)", + description: "Emit new event when a document is created or updated in Google Docs. [See the documentation](https://developers.google.com/drive/api/reference/rest/v3/changes/watch)", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getUpdateTypes() { + return [ + GOOGLE_DRIVE_NOTIFICATION_CHANGE, + GOOGLE_DRIVE_NOTIFICATION_UPDATE, + ]; + }, + generateMeta(doc) { + return { + id: doc.revisionId, + summary: `Document Updated: ${doc.documentId}`, + ts: Date.now(), + }; + }, + async processChanges(changedFiles) { + const filteredFiles = this.checkMinimumInterval(changedFiles); + + for (const file of filteredFiles) { + file.parents = (await this.googleDrive.getFile(file.id, { + fields: "parents", + })).parents; + + console.log(file); // see what file was processed + + if (!this.shouldProcess(file)) { + console.log(`Skipping file ${file.name}`); + continue; + } + + const doc = await this.googleDrive.getDocument(file.id); + const meta = this.generateMeta(doc); + this.$emit(doc, meta); + } + }, + }, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c37ea855af9fc..6cb7458a525a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3928,9 +3928,9 @@ importers: components/google_docs: specifiers: - '@googleapis/docs': ^0.2.0 + '@googleapis/docs': ^3.3.0 dependencies: - '@googleapis/docs': 0.2.0 + '@googleapis/docs': 3.3.0 components/google_drive: specifiers: @@ -12644,55 +12644,6 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso-oidc/3.600.0_tdq3komn4zwyd65w7klbptsu34: - resolution: {integrity: sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==} - engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.600.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/fetch-http-handler': 3.2.1 - '@smithy/hash-node': 3.0.2 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.2 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.6 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.2 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-sts' - - aws-crt - dev: false - /@aws-sdk/client-sso/3.423.0: resolution: {integrity: sha512-znIufHkwhCIePgaYciIs3x/+BpzR57CZzbCKHR9+oOvGyufEPPpUT5bFLvbwTgfiVkTjuk6sG/ES3U5Bc+xtrA==} engines: {node: '>=14.0.0'} @@ -12928,7 +12879,55 @@ packages: dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.600.0_tdq3komn4zwyd65w7klbptsu34 + '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/fetch-http-handler': 3.2.1 + '@smithy/hash-node': 3.0.2 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.2 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.6 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sts/3.600.0_dseaa2p5u2yk67qiepewcq3hkq: + resolution: {integrity: sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.600.0 '@aws-sdk/core': 3.598.0 '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 '@aws-sdk/middleware-host-header': 3.598.0 @@ -12967,6 +12966,7 @@ packages: '@smithy/util-utf8': 3.0.0 tslib: 2.6.3 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt dev: false @@ -16318,11 +16318,11 @@ packages: - supports-color dev: false - /@googleapis/docs/0.2.0: - resolution: {integrity: sha512-0VAhxZ5OnYsgNULESlO11m1ygmn6tHHDB/riZPxNqYrnKG8uQfmAZtK55063EQnxGNVSubaRhUv3+wxTDRRSFA==} - engines: {node: '>=10.0.0'} + /@googleapis/docs/3.3.0: + resolution: {integrity: sha512-F9euIJ44IUwaiDH9vP2XWeaVV4zMpYZ5dMbdpQDuDyuIBguCf7zdEfYKllAoOxCiCx4Rj5BmMhAUn2SJJpULDA==} + engines: {node: '>=12.0.0'} dependencies: - googleapis-common: 5.1.0 + googleapis-common: 7.0.0 transitivePeerDependencies: - encoding - supports-color @@ -17268,7 +17268,7 @@ packages: '@aws-sdk/client-sns': 3.423.0 '@aws-sdk/client-sqs': 3.423.0 '@aws-sdk/client-ssm': 3.423.0 - '@aws-sdk/client-sts': 3.600.0 + '@aws-sdk/client-sts': 3.600.0_dseaa2p5u2yk67qiepewcq3hkq '@aws-sdk/s3-request-presigner': 3.609.0 '@pipedream/helper_functions': 0.3.12 '@pipedream/platform': 1.6.5 @@ -25545,17 +25545,6 @@ packages: - supports-color dev: false - /gcp-metadata/6.0.0: - resolution: {integrity: sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==} - engines: {node: '>=14'} - dependencies: - gaxios: 6.1.1 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gcp-metadata/6.1.0: resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} engines: {node: '>=14'} @@ -25869,7 +25858,7 @@ packages: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 gaxios: 6.1.1 - gcp-metadata: 6.0.0 + gcp-metadata: 6.1.0 gtoken: 7.0.1 jws: 4.0.0 lru-cache: 6.0.0 @@ -25960,7 +25949,7 @@ packages: '@types/long': 4.0.2 abort-controller: 3.0.0 duplexify: 4.1.2 - google-auth-library: 9.1.0 + google-auth-library: 9.14.0 node-fetch: 2.7.0 object-hash: 3.0.0 proto3-json-serializer: 2.0.0 @@ -26044,7 +26033,7 @@ packages: dependencies: extend: 3.0.2 gaxios: 6.1.1 - google-auth-library: 9.1.0 + google-auth-library: 9.14.0 qs: 6.12.0 url-template: 2.0.8 uuid: 9.0.1