From 3de0f5b1dfc84be178b33748b9c77ee2b30536bb Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 12:13:43 -0700 Subject: [PATCH 01/12] Electron Zed Client --- apps/zui/src/core/electron-zed-client.ts | 6 ++++++ apps/zui/src/core/main/main-object.ts | 3 ++- apps/zui/src/domain/lake/handlers.ts | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 apps/zui/src/core/electron-zed-client.ts diff --git a/apps/zui/src/core/electron-zed-client.ts b/apps/zui/src/core/electron-zed-client.ts new file mode 100644 index 0000000000..bda9dc4adb --- /dev/null +++ b/apps/zui/src/core/electron-zed-client.ts @@ -0,0 +1,6 @@ +import {Client} from "@brimdata/zed-node" +import {net} from "electron" + +export class ElectronZedClient extends Client { + fetch = net.fetch +} diff --git a/apps/zui/src/core/main/main-object.ts b/apps/zui/src/core/main/main-object.ts index 1392194e25..335107fb4e 100644 --- a/apps/zui/src/core/main/main-object.ts +++ b/apps/zui/src/core/main/main-object.ts @@ -30,6 +30,7 @@ import {getAuthToken} from "../../js/api/core/get-zealot" import {Abortables} from "src/app/core/models/abortables" import * as zui from "src/zui" import log from "electron-log" +import {ElectronZedClient} from "../electron-zed-client" export class MainObject { public isQuitting = false @@ -135,7 +136,7 @@ export class MainObject { const lakeData = Lakes.id(lakeId)(this.store.getState()) const lake = createLake(lakeData) const auth = await this.dispatch(getAuthToken(lake)) - return new Client(lake.getAddress(), {auth}) + return new ElectronZedClient(lake.getAddress(), {auth}) } async createDefaultClient() { diff --git a/apps/zui/src/domain/lake/handlers.ts b/apps/zui/src/domain/lake/handlers.ts index f583aea7d0..540a67d88b 100644 --- a/apps/zui/src/domain/lake/handlers.ts +++ b/apps/zui/src/domain/lake/handlers.ts @@ -6,6 +6,7 @@ import {validateToken} from "src/js/auth0/utils" import {getAuthCredentials} from "src/js/flows/lake/getAuthCredentials" import Lakes from "src/js/state/Lakes" import LakeStatuses from "src/js/state/LakeStatuses" +import {ElectronZedClient} from "src/core/electron-zed-client" export const getAuthToken = createHandler( async ({dispatch}, lake: LakeModel) => { @@ -30,7 +31,7 @@ export const getAuthToken = createHandler( export const createClient = createHandler(async ({select}) => { const lake = select(Current.mustGetLake) const auth = await getAuthToken(lake) - return new Client(lake.getAddress(), {auth}) + return new ElectronZedClient(lake.getAddress(), {auth}) }) type Options = { From 894cd72c6db73b43f081c46e19096d6ed8bcb179 Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 12:14:35 -0700 Subject: [PATCH 02/12] Not this one --- apps/zui/src/domain/lake/handlers.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/zui/src/domain/lake/handlers.ts b/apps/zui/src/domain/lake/handlers.ts index 540a67d88b..f583aea7d0 100644 --- a/apps/zui/src/domain/lake/handlers.ts +++ b/apps/zui/src/domain/lake/handlers.ts @@ -6,7 +6,6 @@ import {validateToken} from "src/js/auth0/utils" import {getAuthCredentials} from "src/js/flows/lake/getAuthCredentials" import Lakes from "src/js/state/Lakes" import LakeStatuses from "src/js/state/LakeStatuses" -import {ElectronZedClient} from "src/core/electron-zed-client" export const getAuthToken = createHandler( async ({dispatch}, lake: LakeModel) => { @@ -31,7 +30,7 @@ export const getAuthToken = createHandler( export const createClient = createHandler(async ({select}) => { const lake = select(Current.mustGetLake) const auth = await getAuthToken(lake) - return new ElectronZedClient(lake.getAddress(), {auth}) + return new Client(lake.getAddress(), {auth}) }) type Options = { From 8392dbfffc4b76297b630c82eaab9ba293413bcd Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 12:30:23 -0700 Subject: [PATCH 03/12] Add back node-fetch for the zed node package --- .eslintrc.json | 47 ++++++++++++++++++--------------- packages/zed-node/package.json | 3 ++- packages/zed-node/src/client.ts | 4 ++- yarn.lock | 15 +++++++++++ 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 8f0d2adc51..8a2ded529e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,13 +3,35 @@ "ignorePatterns": ["**/*"], "plugins": ["@nrwl/nx"], "overrides": [ + { + "files": ["*.ts", "*.tsx"], + "extends": ["plugin:@nrwl/nx/typescript"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "extends": ["plugin:@nrwl/nx/javascript"], + "rules": {} + }, + { + "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"], + "env": { + "jest": true + }, + "rules": {} + }, { "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], "rules": { - "@typescript-eslint/no-unused-vars": ["error", { - "varsIgnorePattern": "^_", - "argsIgnorePattern": "^_" - }], + "@typescript-eslint/no-unused-vars": [ + "error", + { + "varsIgnorePattern": "^_", + "argsIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-explicit-any": ["off", {}], + "@typescript-eslint/ban-ts-comment": ["off", {}], "@nrwl/nx/enforce-module-boundaries": [ "error", { @@ -24,23 +46,6 @@ } ] } - }, - { - "files": ["*.ts", "*.tsx"], - "extends": ["plugin:@nrwl/nx/typescript"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "extends": ["plugin:@nrwl/nx/javascript"], - "rules": {} - }, - { - "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"], - "env": { - "jest": true - }, - "rules": {} } ] } diff --git a/packages/zed-node/package.json b/packages/zed-node/package.json index d82668defb..4ded5e49a1 100644 --- a/packages/zed-node/package.json +++ b/packages/zed-node/package.json @@ -9,7 +9,8 @@ }, "dependencies": { "@brimdata/zed-js": "workspace:*", - "fs-extra": "^11.1.1" + "fs-extra": "^11.1.1", + "node-fetch": "^2.6.2" }, "peerDependencies": { "zed": "*" diff --git a/packages/zed-node/src/client.ts b/packages/zed-node/src/client.ts index e70d64d45a..1ace147a51 100644 --- a/packages/zed-node/src/client.ts +++ b/packages/zed-node/src/client.ts @@ -5,9 +5,11 @@ import { getLoadContentType, jsonHeader, } from '@brimdata/zed-js'; +// @ts-ignore +import nodeFetch from 'node-fetch'; export class Client extends BaseClient { - public fetch = globalThis.fetch; + public fetch = (...args: any[]) => nodeFetch(...args); async load( data: string | NodeJS.ReadableStream, diff --git a/yarn.lock b/yarn.lock index 56bc1d0af5..e27cfbd379 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1922,6 +1922,7 @@ __metadata: "@brimdata/zed-js": "workspace:*" "@types/fs-extra": ^11.0.1 fs-extra: ^11.1.1 + node-fetch: ^2.6.2 zed: "github:brimdata/zed#main" peerDependencies: zed: "*" @@ -14358,6 +14359,20 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.2": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 + languageName: node + linkType: hard + "node-gyp-build@npm:^4.3.0": version: 4.6.0 resolution: "node-gyp-build@npm:4.6.0" From 16c48d3162e6408bc8cbaa79c7d69f9afefe44cc Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 12:51:27 -0700 Subject: [PATCH 04/12] Remove ref --- apps/zui/src/core/main/main-object.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/zui/src/core/main/main-object.ts b/apps/zui/src/core/main/main-object.ts index 335107fb4e..6ef12892c7 100644 --- a/apps/zui/src/core/main/main-object.ts +++ b/apps/zui/src/core/main/main-object.ts @@ -2,7 +2,7 @@ import {app} from "electron" import keytar from "keytar" import {EventEmitter} from "events" import os from "os" -import {Client, Lake} from "@brimdata/zed-node" +import {Lake} from "@brimdata/zed-node" import {Store as ReduxStore} from "redux" import url from "url" import { From 8b8817cdaa7403fb78260633d79b2370e3a34130 Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 13:29:26 -0700 Subject: [PATCH 05/12] Debug --- apps/zui/src/electron/main.ts | 5 +++++ package.json | 3 ++- packages/zed-node/src/client.ts | 1 - yarn.lock | 27 +++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/apps/zui/src/electron/main.ts b/apps/zui/src/electron/main.ts index af849826b1..93db26b449 100644 --- a/apps/zui/src/electron/main.ts +++ b/apps/zui/src/electron/main.ts @@ -1,3 +1,4 @@ +import debug from "why-is-node-running" import {main} from "./run-main/run-main" import log from "electron-log" @@ -6,3 +7,7 @@ process.on("unhandledRejection", (e) => { }) main() + +setTimeout(() => { + debug() // logs out active handles that are keeping node running +}, 15_000) diff --git a/package.json b/package.json index 8d23713f35..20bbd5d42e 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "serve": "^14.2.0", "ts-jest": "^29.0.5", "ts-node": "10.9.1", - "typescript": "5.1.5" + "typescript": "5.1.5", + "why-is-node-running": "^2.2.2" }, "packageManager": "yarn@3.5.0", "workspaces": [ diff --git a/packages/zed-node/src/client.ts b/packages/zed-node/src/client.ts index 1ace147a51..92acb6d7ac 100644 --- a/packages/zed-node/src/client.ts +++ b/packages/zed-node/src/client.ts @@ -24,7 +24,6 @@ export class Client extends BaseClient { const res = await this.send({ path: `/pool/${poolId}/branch/${encodeURIComponent(branch)}`, method: 'POST', - // eslint-disable-next-line // @ts-ignore body: data, duplex: 'half', diff --git a/yarn.lock b/yarn.lock index e27cfbd379..f4f95706d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16977,6 +16977,13 @@ __metadata: languageName: node linkType: hard +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -17246,6 +17253,13 @@ __metadata: languageName: node linkType: hard +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + "stat-mode@npm:^1.0.0": version: 1.0.0 resolution: "stat-mode@npm:1.0.0" @@ -18952,6 +18966,18 @@ __metadata: languageName: node linkType: hard +"why-is-node-running@npm:^2.2.2": + version: 2.2.2 + resolution: "why-is-node-running@npm:2.2.2" + dependencies: + siginfo: ^2.0.0 + stackback: 0.0.2 + bin: + why-is-node-running: cli.js + checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a + languageName: node + linkType: hard + "wide-align@npm:^1.1.0, wide-align@npm:^1.1.2": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -19257,6 +19283,7 @@ __metadata: ts-node: 10.9.1 tslib: ^2.3.0 typescript: 5.1.5 + why-is-node-running: ^2.2.2 languageName: unknown linkType: soft From f08a717306ff18a6b0eceee5f06095122170b777 Mon Sep 17 00:00:00 2001 From: James Kerr Date: Tue, 7 May 2024 15:06:07 -0700 Subject: [PATCH 06/12] Use Net Fetch in the Lake class --- apps/zui/src/core/electron-zed-lake.ts | 6 ++++++ apps/zui/src/core/main/main-object.ts | 6 +++--- apps/zui/src/electron/main.ts | 5 ----- package.json | 3 +-- packages/zed-node/src/lake.ts | 3 ++- yarn.lock | 27 -------------------------- 6 files changed, 12 insertions(+), 38 deletions(-) create mode 100644 apps/zui/src/core/electron-zed-lake.ts diff --git a/apps/zui/src/core/electron-zed-lake.ts b/apps/zui/src/core/electron-zed-lake.ts new file mode 100644 index 0000000000..2f032e3777 --- /dev/null +++ b/apps/zui/src/core/electron-zed-lake.ts @@ -0,0 +1,6 @@ +import {Lake} from "@brimdata/zed-node" +import {net} from "electron" + +export class ElectronZedLake extends Lake { + fetch = net.fetch +} diff --git a/apps/zui/src/core/main/main-object.ts b/apps/zui/src/core/main/main-object.ts index 6ef12892c7..99383d25a7 100644 --- a/apps/zui/src/core/main/main-object.ts +++ b/apps/zui/src/core/main/main-object.ts @@ -2,7 +2,6 @@ import {app} from "electron" import keytar from "keytar" import {EventEmitter} from "events" import os from "os" -import {Lake} from "@brimdata/zed-node" import {Store as ReduxStore} from "redux" import url from "url" import { @@ -31,6 +30,7 @@ import {Abortables} from "src/app/core/models/abortables" import * as zui from "src/zui" import log from "electron-log" import {ElectronZedClient} from "../electron-zed-client" +import {ElectronZedLake} from "../electron-zed-lake" export class MainObject { public isQuitting = false @@ -44,7 +44,7 @@ export class MainObject { const windows = new WindowManager(data) const store = createMainStore(data?.globalState) const appMeta = await getAppMeta() - const lake = new Lake({ + const lake = new ElectronZedLake({ root: args.lakeRoot, port: args.lakePort, logs: args.lakeLogs, @@ -56,7 +56,7 @@ export class MainObject { // Only call this from boot constructor( - readonly lake: Lake, + readonly lake: ElectronZedLake, readonly windows: WindowManager, readonly store: ReduxStore, readonly session: Session, diff --git a/apps/zui/src/electron/main.ts b/apps/zui/src/electron/main.ts index 93db26b449..af849826b1 100644 --- a/apps/zui/src/electron/main.ts +++ b/apps/zui/src/electron/main.ts @@ -1,4 +1,3 @@ -import debug from "why-is-node-running" import {main} from "./run-main/run-main" import log from "electron-log" @@ -7,7 +6,3 @@ process.on("unhandledRejection", (e) => { }) main() - -setTimeout(() => { - debug() // logs out active handles that are keeping node running -}, 15_000) diff --git a/package.json b/package.json index 20bbd5d42e..8d23713f35 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,7 @@ "serve": "^14.2.0", "ts-jest": "^29.0.5", "ts-node": "10.9.1", - "typescript": "5.1.5", - "why-is-node-running": "^2.2.2" + "typescript": "5.1.5" }, "packageManager": "yarn@3.5.0", "workspaces": [ diff --git a/packages/zed-node/src/lake.ts b/packages/zed-node/src/lake.ts index 14f0b5f6ce..f5e51c7af8 100644 --- a/packages/zed-node/src/lake.ts +++ b/packages/zed-node/src/lake.ts @@ -11,6 +11,7 @@ type ConstructorOpts = { corsOrigins?: string[]; }; export class Lake { + fetch = globalThis.fetch; lake?: ChildProcess; root: string; port: number; @@ -82,7 +83,7 @@ export class Lake { async isUp() { try { - const response = await globalThis.fetch(`http://${this.addr()}/status`); + const response = await this.fetch(`http://${this.addr()}/status`); const text = await response.text(); return text === 'ok'; } catch (e) { diff --git a/yarn.lock b/yarn.lock index f4f95706d3..e27cfbd379 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16977,13 +16977,6 @@ __metadata: languageName: node linkType: hard -"siginfo@npm:^2.0.0": - version: 2.0.0 - resolution: "siginfo@npm:2.0.0" - checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -17253,13 +17246,6 @@ __metadata: languageName: node linkType: hard -"stackback@npm:0.0.2": - version: 0.0.2 - resolution: "stackback@npm:0.0.2" - checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 - languageName: node - linkType: hard - "stat-mode@npm:^1.0.0": version: 1.0.0 resolution: "stat-mode@npm:1.0.0" @@ -18966,18 +18952,6 @@ __metadata: languageName: node linkType: hard -"why-is-node-running@npm:^2.2.2": - version: 2.2.2 - resolution: "why-is-node-running@npm:2.2.2" - dependencies: - siginfo: ^2.0.0 - stackback: 0.0.2 - bin: - why-is-node-running: cli.js - checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a - languageName: node - linkType: hard - "wide-align@npm:^1.1.0, wide-align@npm:^1.1.2": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -19283,7 +19257,6 @@ __metadata: ts-node: 10.9.1 tslib: ^2.3.0 typescript: 5.1.5 - why-is-node-running: ^2.2.2 languageName: unknown linkType: soft From e8a3b8cc3d51bfc64d4da615c39de65da88bc13c Mon Sep 17 00:00:00 2001 From: Phil Rzewski Date: Thu, 9 May 2024 15:02:28 -0700 Subject: [PATCH 07/12] Revert "Debug" This reverts commit 8b8817cdaa7403fb78260633d79b2370e3a34130. --- packages/zed-node/src/client.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/zed-node/src/client.ts b/packages/zed-node/src/client.ts index 92acb6d7ac..1ace147a51 100644 --- a/packages/zed-node/src/client.ts +++ b/packages/zed-node/src/client.ts @@ -24,6 +24,7 @@ export class Client extends BaseClient { const res = await this.send({ path: `/pool/${poolId}/branch/${encodeURIComponent(branch)}`, method: 'POST', + // eslint-disable-next-line // @ts-ignore body: data, duplex: 'half', From 9aca504b8f88dd8121d15a4835f8e071aa32fe08 Mon Sep 17 00:00:00 2001 From: Phil Rzewski Date: Thu, 9 May 2024 16:39:37 -0700 Subject: [PATCH 08/12] Don't try to use Electron net.fetch in Jest tests --- apps/zui/src/core/electron-zed-client.ts | 2 +- apps/zui/src/core/electron-zed-lake.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/zui/src/core/electron-zed-client.ts b/apps/zui/src/core/electron-zed-client.ts index bda9dc4adb..771bd6cdb5 100644 --- a/apps/zui/src/core/electron-zed-client.ts +++ b/apps/zui/src/core/electron-zed-client.ts @@ -2,5 +2,5 @@ import {Client} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedClient extends Client { - fetch = net.fetch + fetch = (process.env.JEST_WORKER_ID === undefined) ? net.fetch : globalThis.fetch } diff --git a/apps/zui/src/core/electron-zed-lake.ts b/apps/zui/src/core/electron-zed-lake.ts index 2f032e3777..db8e422afc 100644 --- a/apps/zui/src/core/electron-zed-lake.ts +++ b/apps/zui/src/core/electron-zed-lake.ts @@ -2,5 +2,5 @@ import {Lake} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedLake extends Lake { - fetch = net.fetch + fetch = (process.env.JEST_WORKER_ID === undefined) ? net.fetch : globalThis.fetch } From 78880addcafcac95a157a9f2c53c774ac13837b4 Mon Sep 17 00:00:00 2001 From: Phil Rzewski Date: Thu, 9 May 2024 16:46:28 -0700 Subject: [PATCH 09/12] lint fix --- apps/zui/src/core/electron-zed-client.ts | 3 ++- apps/zui/src/core/electron-zed-lake.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/zui/src/core/electron-zed-client.ts b/apps/zui/src/core/electron-zed-client.ts index 771bd6cdb5..a81a3a178a 100644 --- a/apps/zui/src/core/electron-zed-client.ts +++ b/apps/zui/src/core/electron-zed-client.ts @@ -2,5 +2,6 @@ import {Client} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedClient extends Client { - fetch = (process.env.JEST_WORKER_ID === undefined) ? net.fetch : globalThis.fetch + fetch = + process.env.JEST_WORKER_ID === undefined ? net.fetch : globalThis.fetch } diff --git a/apps/zui/src/core/electron-zed-lake.ts b/apps/zui/src/core/electron-zed-lake.ts index db8e422afc..749e0007f1 100644 --- a/apps/zui/src/core/electron-zed-lake.ts +++ b/apps/zui/src/core/electron-zed-lake.ts @@ -2,5 +2,6 @@ import {Lake} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedLake extends Lake { - fetch = (process.env.JEST_WORKER_ID === undefined) ? net.fetch : globalThis.fetch + fetch = + process.env.JEST_WORKER_ID === undefined ? net.fetch : globalThis.fetch } From 2b926a9bd255d4338fcc59c426e2f820a6793689 Mon Sep 17 00:00:00 2001 From: Phil Rzewski Date: Fri, 10 May 2024 10:34:33 -0700 Subject: [PATCH 10/12] PR feedback: Fallback from Electron net.fetch doesn't need to be tied specifically to Jest --- apps/zui/src/core/electron-zed-client.ts | 4 ++-- apps/zui/src/core/electron-zed-lake.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/zui/src/core/electron-zed-client.ts b/apps/zui/src/core/electron-zed-client.ts index a81a3a178a..b6dbc0b6b4 100644 --- a/apps/zui/src/core/electron-zed-client.ts +++ b/apps/zui/src/core/electron-zed-client.ts @@ -2,6 +2,6 @@ import {Client} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedClient extends Client { - fetch = - process.env.JEST_WORKER_ID === undefined ? net.fetch : globalThis.fetch + // This avoids attempting to use Electron net.fetch in Jest tests + fetch = net !== undefined ? net.fetch : globalThis.fetch } diff --git a/apps/zui/src/core/electron-zed-lake.ts b/apps/zui/src/core/electron-zed-lake.ts index 749e0007f1..e47479f8ce 100644 --- a/apps/zui/src/core/electron-zed-lake.ts +++ b/apps/zui/src/core/electron-zed-lake.ts @@ -2,6 +2,6 @@ import {Lake} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedLake extends Lake { - fetch = - process.env.JEST_WORKER_ID === undefined ? net.fetch : globalThis.fetch + // This avoids attempting to use Electron net.fetch in Jest tests + fetch = net !== undefined ? net.fetch : globalThis.fetch } From 404496ffc55f1ebfce292baae4b8fee86172fc25 Mon Sep 17 00:00:00 2001 From: James Kerr Date: Thu, 6 Jun 2024 13:51:39 -0700 Subject: [PATCH 11/12] Use the electron mock --- apps/zui/src/core/electron-zed-client.ts | 3 +-- apps/zui/src/core/electron-zed-lake.ts | 3 +-- apps/zui/src/test/shared/__mocks__/electron.ts | 5 +++++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/zui/src/core/electron-zed-client.ts b/apps/zui/src/core/electron-zed-client.ts index b6dbc0b6b4..bda9dc4adb 100644 --- a/apps/zui/src/core/electron-zed-client.ts +++ b/apps/zui/src/core/electron-zed-client.ts @@ -2,6 +2,5 @@ import {Client} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedClient extends Client { - // This avoids attempting to use Electron net.fetch in Jest tests - fetch = net !== undefined ? net.fetch : globalThis.fetch + fetch = net.fetch } diff --git a/apps/zui/src/core/electron-zed-lake.ts b/apps/zui/src/core/electron-zed-lake.ts index e47479f8ce..2f032e3777 100644 --- a/apps/zui/src/core/electron-zed-lake.ts +++ b/apps/zui/src/core/electron-zed-lake.ts @@ -2,6 +2,5 @@ import {Lake} from "@brimdata/zed-node" import {net} from "electron" export class ElectronZedLake extends Lake { - // This avoids attempting to use Electron net.fetch in Jest tests - fetch = net !== undefined ? net.fetch : globalThis.fetch + fetch = net.fetch } diff --git a/apps/zui/src/test/shared/__mocks__/electron.ts b/apps/zui/src/test/shared/__mocks__/electron.ts index be1a8546f0..7899e3c74c 100644 --- a/apps/zui/src/test/shared/__mocks__/electron.ts +++ b/apps/zui/src/test/shared/__mocks__/electron.ts @@ -10,6 +10,11 @@ export const dialog = { showSaveDialog: jest.fn(), } +export const net = { + // @ts-ignore + fetch: (...args) => globalThis.fetch(...args), +} + class WebContents extends EventEmitter { send(channel, ...args) { ipcRenderer.emitter.emit("receive-from-main", channel, ...args) From 6626d66e409dc17a9f8e9ee384281ed10903cc86 Mon Sep 17 00:00:00 2001 From: James Kerr Date: Thu, 6 Jun 2024 13:55:32 -0700 Subject: [PATCH 12/12] We can actually remove node-fetch now --- packages/zed-node/package.json | 3 +-- packages/zed-node/src/client.ts | 4 +--- yarn.lock | 15 --------------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/packages/zed-node/package.json b/packages/zed-node/package.json index 4ded5e49a1..d82668defb 100644 --- a/packages/zed-node/package.json +++ b/packages/zed-node/package.json @@ -9,8 +9,7 @@ }, "dependencies": { "@brimdata/zed-js": "workspace:*", - "fs-extra": "^11.1.1", - "node-fetch": "^2.6.2" + "fs-extra": "^11.1.1" }, "peerDependencies": { "zed": "*" diff --git a/packages/zed-node/src/client.ts b/packages/zed-node/src/client.ts index 1ace147a51..abd3d8702f 100644 --- a/packages/zed-node/src/client.ts +++ b/packages/zed-node/src/client.ts @@ -5,11 +5,9 @@ import { getLoadContentType, jsonHeader, } from '@brimdata/zed-js'; -// @ts-ignore -import nodeFetch from 'node-fetch'; export class Client extends BaseClient { - public fetch = (...args: any[]) => nodeFetch(...args); + public fetch = globalThis.fetch.bind(globalThis); async load( data: string | NodeJS.ReadableStream, diff --git a/yarn.lock b/yarn.lock index 28f0d4ad2c..24c12da08c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1922,7 +1922,6 @@ __metadata: "@brimdata/zed-js": "workspace:*" "@types/fs-extra": ^11.0.1 fs-extra: ^11.1.1 - node-fetch: ^2.6.2 zed: "github:brimdata/zed#main" peerDependencies: zed: "*" @@ -14348,20 +14347,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.2": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 - languageName: node - linkType: hard - "node-gyp-build@npm:^4.3.0": version: 4.6.0 resolution: "node-gyp-build@npm:4.6.0"