diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 2a9849421c696..a8a4bd6c92877 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,6 +1,15 @@ # 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. + ## [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 de28ac31eeabb..c9089deb8d8fe 100644 --- a/packages/sdk/src/server/async.ts +++ b/packages/sdk/src/server/async.ts @@ -4,6 +4,11 @@ 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; +} + export type ServerAsyncResponseManagerOpts = { apiHost: string; getOauthToken: () => Promise | AccessToken; @@ -16,12 +21,20 @@ export class ServerAsyncResponseManager extends AsyncResponseManager { constructor(opts: ServerAsyncResponseManagerOpts) { super(); this.serverOpts = opts; + // 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 { - const token = await this.serverOpts.getOauthToken(); + 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 { url: `wss://${this.serverOpts.apiHost}/websocket?oauth_token=${token}`, diff --git a/packages/sdk/src/server/cli.ts b/packages/sdk/src/server/cli.ts index eb6d3c61d47f9..a3bac72af2436 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,9 @@ const client = createBackendClient({ }, projectId: PROJECT_ID, apiHost: API_HOST, + environment: ENVIRONMENT === "production" + ? "production" + : "development", }); program