From 08732f18ac5e8b8396bfa0c59be144e82e18e968 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 15:33:49 -0800 Subject: [PATCH 1/6] Fix issues with rails/actioncable --- packages/sdk/src/server/async.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/server/async.ts b/packages/sdk/src/server/async.ts index de28ac31eeabb..ef882e0b0f35a 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -4,6 +4,13 @@ import type { AsyncResponseManagerOpts } from "../shared/async"; import { adapters } from "@rails/actioncable"; import * as WS from "ws"; +declare global { + function addEventListener(type: string, listener: () => void): void + function removeEventListener(type: string, listener: () => void): void +} +global.addEventListener = () => {} +global.removeEventListener = () => {} + export type ServerAsyncResponseManagerOpts = { apiHost: string; getOauthToken: () => Promise | AccessToken; @@ -21,7 +28,8 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { } protected override async getOpts(): Promise { - const token = await this.serverOpts.getOauthToken(); + const oauthToken = await this.serverOpts.getOauthToken(); + const token = oauthToken.token.access_token; const projectId = await this.serverOpts.getProjectId(); return { url: `wss://${this.serverOpts.apiHost}/websocket?oauth_token=${token}`, From 39bb683ae799c56dbadb9f68689d1f6820a44f48 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 15:42:11 -0800 Subject: [PATCH 2/6] Safer fix that can't hurt the client sdk accidentally --- packages/sdk/src/server/async.ts | 4 ++-- packages/sdk/src/server/cli.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/sdk/src/server/async.ts b/packages/sdk/src/server/async.ts index ef882e0b0f35a..0702b187cbbe3 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -8,8 +8,6 @@ declare global { function addEventListener(type: string, listener: () => void): void function removeEventListener(type: string, listener: () => void): void } -global.addEventListener = () => {} -global.removeEventListener = () => {} export type ServerAsyncResponseManagerOpts = { apiHost: string; @@ -23,6 +21,8 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { constructor(opts: ServerAsyncResponseManagerOpts) { super(); this.serverOpts = opts; + global.addEventListener = () => {} + global.removeEventListener = () => {} if (typeof adapters.WebSocket === "undefined") adapters.WebSocket == WS; } diff --git a/packages/sdk/src/server/cli.ts b/packages/sdk/src/server/cli.ts index eb6d3c61d47f9..be58de4f19202 100644 --- a/packages/sdk/src/server/cli.ts +++ b/packages/sdk/src/server/cli.ts @@ -2,7 +2,7 @@ import { createBackendClient } from "./index"; import { program } from "commander"; const { - CLIENT_ID, CLIENT_SECRET, PROJECT_ID, API_HOST, + CLIENT_ID, CLIENT_SECRET, PROJECT_ID, API_HOST, ENVIRONMENT, } = process.env; if (!CLIENT_ID || !CLIENT_SECRET || !PROJECT_ID) { @@ -17,6 +17,7 @@ const client = createBackendClient({ }, projectId: PROJECT_ID, apiHost: API_HOST, + environment: ENVIRONMENT === "production" ? "production" : "development", }); program From dec9efe064377c0d2b06022e5b7b4decca06b5f2 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 16:35:46 -0800 Subject: [PATCH 3/6] Linting and minor fix --- packages/sdk/src/server/async.ts | 12 +++++++----- packages/sdk/src/server/cli.ts | 4 +++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/sdk/src/server/async.ts b/packages/sdk/src/server/async.ts index 0702b187cbbe3..25b384ca65fa8 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -5,8 +5,8 @@ import { adapters } from "@rails/actioncable"; import * as WS from "ws"; declare global { - function addEventListener(type: string, listener: () => void): void - function removeEventListener(type: string, listener: () => void): void + function addEventListener(type: string, listener: () => void): void; + function removeEventListener(type: string, listener: () => void): void; } export type ServerAsyncResponseManagerOpts = { @@ -21,10 +21,12 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { constructor(opts: ServerAsyncResponseManagerOpts) { super(); this.serverOpts = opts; - global.addEventListener = () => {} - global.removeEventListener = () => {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + global.addEventListener = () => {}; + // eslint-disable-next-line @typescript-eslint/no-empty-function + global.removeEventListener = () => {}; if (typeof adapters.WebSocket === "undefined") - adapters.WebSocket == WS; + adapters.WebSocket = WS as unknown as WebSocket; } protected override async getOpts(): Promise { diff --git a/packages/sdk/src/server/cli.ts b/packages/sdk/src/server/cli.ts index be58de4f19202..a3bac72af2436 100644 --- a/packages/sdk/src/server/cli.ts +++ b/packages/sdk/src/server/cli.ts @@ -17,7 +17,9 @@ const client = createBackendClient({ }, projectId: PROJECT_ID, apiHost: API_HOST, - environment: ENVIRONMENT === "production" ? "production" : "development", + environment: ENVIRONMENT === "production" + ? "production" + : "development", }); program From 054ca036e0dcbaa3831ff0e8c136b09f7149f474 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 16:36:28 -0800 Subject: [PATCH 4/6] Update packages/sdk/src/server/async.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- packages/sdk/src/server/async.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/sdk/src/server/async.ts b/packages/sdk/src/server/async.ts index 25b384ca65fa8..d365e7340a2ad 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -31,6 +31,9 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { protected override async getOpts(): Promise { const oauthToken = await this.serverOpts.getOauthToken(); + if (!oauthToken?.token?.access_token) { + throw new Error('Invalid OAuth token structure'); + } const token = oauthToken.token.access_token; const projectId = await this.serverOpts.getProjectId(); return { From 1b40276ac9839ee2653c2337dc71bbfe0582fa00 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 16:42:50 -0800 Subject: [PATCH 5/6] Bump version and add CHANGELOG --- packages/sdk/CHANGELOG.md | 15 +++++++++++++++ packages/sdk/package.json | 2 +- packages/sdk/src/server/async.ts | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 2a9849421c696..0e2ad868fcb49 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,6 +1,21 @@ # Changelog +## [1.0.7] - 2024-11-21 + +### Changed + +- The backend client now correctly uses asynchronous messaging to handle long running + operations. +- Updated the backend command line tool to respect the `ENVIRONMENT` env variable + if set. + +### Changed + +- Use client Connect tokens to make api calls directly from the client. +- Deprecated the `environments` property on `createFrontendClient` since it is now + stored in the token + ## [1.0.6] - 2024-11-20 ### Changed diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 4894158faec45..e1f1fb14d50f9 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/sdk", - "version": "1.0.6", + "version": "1.0.7", "description": "Pipedream SDK", "main": "dist/server/server/index.js", "module": "dist/server/server/index.js", diff --git a/packages/sdk/src/server/async.ts b/packages/sdk/src/server/async.ts index d365e7340a2ad..c9089deb8d8fe 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -32,7 +32,7 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { protected override async getOpts(): Promise { const oauthToken = await this.serverOpts.getOauthToken(); if (!oauthToken?.token?.access_token) { - throw new Error('Invalid OAuth token structure'); + throw new Error("Invalid OAuth token structure"); } const token = oauthToken.token.access_token; const projectId = await this.serverOpts.getProjectId(); From 0f3199d61829291fe1413bbd69b0c66654806b95 Mon Sep 17 00:00:00 2001 From: adolfo-pd Date: Thu, 21 Nov 2024 16:44:00 -0800 Subject: [PATCH 6/6] Fix changelog --- packages/sdk/CHANGELOG.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 0e2ad868fcb49..a8a4bd6c92877 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -10,12 +10,6 @@ - Updated the backend command line tool to respect the `ENVIRONMENT` env variable if set. -### Changed - -- Use client Connect tokens to make api calls directly from the client. -- Deprecated the `environments` property on `createFrontendClient` since it is now - stored in the token - ## [1.0.6] - 2024-11-20 ### Changed