From 5637d56f26a04df16aaf1f37a682c0c2f7bbb89c Mon Sep 17 00:00:00 2001 From: Nicola Migone Date: Fri, 3 Jan 2025 14:45:17 +0100 Subject: [PATCH] fix: fixed circular dependency giving errors under webpack --- src/lib/constants.ts | 18 ++---------------- src/lib/helpers.ts | 7 ------- src/lib/runtime.ts | 20 ++++++++++++++++++++ src/packages/AbstractLiveClient.ts | 2 +- src/packages/AbstractRestClient.ts | 2 +- test/constants.test.ts | 4 ++-- 6 files changed, 26 insertions(+), 27 deletions(-) create mode 100644 src/lib/runtime.ts diff --git a/src/lib/constants.ts b/src/lib/constants.ts index a464e83..3069e2e 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,22 +1,8 @@ -import { convertProtocolToWs, isBrowser, isBun, isNode } from "./helpers"; +import { convertProtocolToWs } from "./helpers"; +import { isBrowser, isBun, isNode, NODE_VERSION, BUN_VERSION, BROWSER_AGENT } from "./runtime"; import { version } from "./version"; import type { DefaultNamespaceOptions, DefaultClientOptions } from "./types"; -export const NODE_VERSION = - typeof process !== "undefined" && process.versions && process.versions.node - ? process.versions.node - : "unknown"; - -export const BUN_VERSION = - typeof process !== "undefined" && process.versions && process.versions.bun - ? process.versions.bun - : "unknown"; - -export const BROWSER_AGENT = - typeof window !== "undefined" && window.navigator && window.navigator.userAgent - ? window.navigator.userAgent - : "unknown"; - const getAgent = () => { if (isNode()) { return `node/${NODE_VERSION}`; diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts index 275a1fe..0e62efe 100644 --- a/src/lib/helpers.ts +++ b/src/lib/helpers.ts @@ -11,18 +11,11 @@ import { import { Headers as CrossFetchHeaders } from "cross-fetch"; import { Readable } from "stream"; import merge from "deepmerge"; -import { BROWSER_AGENT, BUN_VERSION, NODE_VERSION } from "./constants"; export function stripTrailingSlash(url: string): string { return url.replace(/\/$/, ""); } -export const isBrowser = () => BROWSER_AGENT !== "unknown"; - -export const isNode = () => NODE_VERSION !== "unknown"; - -export const isBun = () => BUN_VERSION !== "unknown"; - export function applyDefaults(options: Partial = {}, subordinate: Partial = {}): S { return merge(subordinate, options); } diff --git a/src/lib/runtime.ts b/src/lib/runtime.ts new file mode 100644 index 0000000..b7f25d2 --- /dev/null +++ b/src/lib/runtime.ts @@ -0,0 +1,20 @@ +export const NODE_VERSION = + typeof process !== "undefined" && process.versions && process.versions.node + ? process.versions.node + : "unknown"; + +export const BUN_VERSION = + typeof process !== "undefined" && process.versions && process.versions.bun + ? process.versions.bun + : "unknown"; + +export const BROWSER_AGENT = + typeof window !== "undefined" && window.navigator && window.navigator.userAgent + ? window.navigator.userAgent + : "unknown"; + +export const isBrowser = () => BROWSER_AGENT !== "unknown"; + +export const isNode = () => NODE_VERSION !== "unknown"; + +export const isBun = () => BUN_VERSION !== "unknown"; diff --git a/src/packages/AbstractLiveClient.ts b/src/packages/AbstractLiveClient.ts index 004710e..f9e7dfe 100644 --- a/src/packages/AbstractLiveClient.ts +++ b/src/packages/AbstractLiveClient.ts @@ -2,7 +2,7 @@ import { AbstractClient, noop } from "./AbstractClient"; import { CONNECTION_STATE, SOCKET_STATES } from "../lib/constants"; import type { DeepgramClientOptions, LiveSchema } from "../lib/types"; import type { WebSocket as WSWebSocket } from "ws"; -import { isBun } from "../lib/helpers"; +import { isBun } from "../lib/runtime"; /** * Represents a constructor for a WebSocket-like object that can be used in the application. diff --git a/src/packages/AbstractRestClient.ts b/src/packages/AbstractRestClient.ts index 9f693d7..9f5600b 100644 --- a/src/packages/AbstractRestClient.ts +++ b/src/packages/AbstractRestClient.ts @@ -4,7 +4,7 @@ import { fetchWithAuth, resolveResponse } from "../lib/fetch"; import type { Fetch, FetchOptions, RequestMethodType } from "../lib/types/Fetch"; import { AbstractClient } from "./AbstractClient"; import { DeepgramClientOptions } from "../lib/types"; -import { isBrowser } from "../lib/helpers"; +import { isBrowser } from "../lib/runtime"; import merge from "deepmerge"; /** diff --git a/test/constants.test.ts b/test/constants.test.ts index c6156ef..3cd8f45 100644 --- a/test/constants.test.ts +++ b/test/constants.test.ts @@ -1,13 +1,13 @@ -import { applyDefaults, convertProtocolToWs, isBrowser } from "../src/lib/helpers"; +import { applyDefaults, convertProtocolToWs } from "../src/lib/helpers"; import { CONNECTION_STATE, DEFAULT_GLOBAL_OPTIONS, DEFAULT_HEADERS, DEFAULT_OPTIONS, DEFAULT_URL, - NODE_VERSION, SOCKET_STATES, } from "../src/lib/constants"; +import { isBrowser, NODE_VERSION } from "../src/lib/runtime"; import { DeepgramClientOptions } from "../src/lib/types/DeepgramClientOptions"; import { expect } from "chai"; import { faker } from "@faker-js/faker";