diff --git a/typescript/.changeset/bitter-pugs-flow.md b/typescript/.changeset/bitter-pugs-flow.md new file mode 100644 index 000000000..c0856a097 --- /dev/null +++ b/typescript/.changeset/bitter-pugs-flow.md @@ -0,0 +1,5 @@ +--- +"@coinbase/agentkit": patch +--- + +Converted all dynamic to static imports diff --git a/typescript/agentkit/src/action-providers/across/acrossActionProvider.test.ts b/typescript/agentkit/src/action-providers/across/acrossActionProvider.test.ts index 61374d0a3..bbd86da10 100644 --- a/typescript/agentkit/src/action-providers/across/acrossActionProvider.test.ts +++ b/typescript/agentkit/src/action-providers/across/acrossActionProvider.test.ts @@ -2,6 +2,7 @@ import { acrossActionProvider } from "./acrossActionProvider"; import { EvmWalletProvider } from "../../wallet-providers"; import { Network } from "../../network"; import { createPublicClient, PublicClient } from "viem"; +import { createAcrossClient as mockCreateAcrossClient } from "@across-protocol/app-sdk"; // Mock the necessary imports and modules jest.mock("viem", () => { @@ -67,11 +68,15 @@ jest.mock("../../network", () => { }); // Mock the Across SDK -const mockCreateAcrossClient = jest.fn(); jest.mock("@across-protocol/app-sdk", () => ({ - createAcrossClient: mockCreateAcrossClient, + createAcrossClient: jest.fn(), })); +// Cast the imported mock to a Jest mock function +const mockedCreateAcrossClient = mockCreateAcrossClient as jest.MockedFunction< + typeof mockCreateAcrossClient +>; + // Default implementation for the createAcrossClient mock const defaultClientImplementation = () => ({ getSupportedChains: jest.fn().mockResolvedValue([ @@ -140,7 +145,7 @@ const defaultClientImplementation = () => ({ }); // Set the default implementation -mockCreateAcrossClient.mockImplementation(() => { +mockedCreateAcrossClient.mockImplementation(() => { const client = defaultClientImplementation(); // Add the chains property to match what the code expects return { @@ -157,7 +162,8 @@ mockCreateAcrossClient.mockImplementation(() => { network: "optimism", }, ], - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any; }); // Mock the isTestnet function @@ -180,7 +186,7 @@ describe("Across Action Provider", () => { beforeEach(() => { jest.clearAllMocks(); // Reset to default implementation - mockCreateAcrossClient.mockImplementation(() => { + mockedCreateAcrossClient.mockImplementation(() => { const client = defaultClientImplementation(); // Add the chains property to match what the code expects return { @@ -197,7 +203,8 @@ describe("Across Action Provider", () => { network: "optimism", }, ], - }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any; }); mockPublicClient = { @@ -269,48 +276,52 @@ describe("Across Action Provider", () => { it("should fail when slippage is too high", async () => { // Override the default mock with high slippage for this test only - mockCreateAcrossClient.mockImplementationOnce(() => ({ - getSupportedChains: jest.fn().mockResolvedValue([ - { - chainId: 1, - inputTokens: [ + mockedCreateAcrossClient.mockImplementationOnce( + () => + ({ + getSupportedChains: jest.fn().mockResolvedValue([ { - symbol: "ETH", - address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - decimals: 18, + chainId: 1, + inputTokens: [ + { + symbol: "ETH", + address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + decimals: 18, + }, + ], }, - ], - }, - ]), - getAvailableRoutes: jest.fn().mockResolvedValue([ - { - isNative: true, - originToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - ]), - getQuote: jest.fn().mockResolvedValue({ - deposit: { - inputAmount: BigInt("1000000000000000000"), // 1 ETH - outputAmount: BigInt("800000000000000000"), // 0.8 ETH (20% difference) - spokePoolAddress: "0x1234567890123456789012345678901234567890", - }, - limits: { - minDeposit: BigInt("100000000000000000"), - maxDeposit: BigInt("10000000000000000000"), - }, - }), - simulateDepositTx: jest.fn().mockResolvedValue({ - request: { - address: "0x1234567890123456789012345678901234567890", - abi: [], - functionName: "deposit", - args: [], - }, - }), - waitForDepositTx: jest.fn().mockResolvedValue({ - depositId: "123456", - }), - })); + ]), + getAvailableRoutes: jest.fn().mockResolvedValue([ + { + isNative: true, + originToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + ]), + getQuote: jest.fn().mockResolvedValue({ + deposit: { + inputAmount: BigInt("1000000000000000000"), // 1 ETH + outputAmount: BigInt("800000000000000000"), // 0.8 ETH (20% difference) + spokePoolAddress: "0x1234567890123456789012345678901234567890", + }, + limits: { + minDeposit: BigInt("100000000000000000"), + maxDeposit: BigInt("10000000000000000000"), + }, + }), + simulateDepositTx: jest.fn().mockResolvedValue({ + request: { + address: "0x1234567890123456789012345678901234567890", + abi: [], + functionName: "deposit", + args: [], + }, + }), + waitForDepositTx: jest.fn().mockResolvedValue({ + depositId: "123456", + }), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + }) as any, + ); // Set a low max slippage const args = { diff --git a/typescript/agentkit/src/action-providers/across/acrossActionProvider.ts b/typescript/agentkit/src/action-providers/across/acrossActionProvider.ts index 86cf8c0dd..69c1914ae 100644 --- a/typescript/agentkit/src/action-providers/across/acrossActionProvider.ts +++ b/typescript/agentkit/src/action-providers/across/acrossActionProvider.ts @@ -8,6 +8,7 @@ import { EvmWalletProvider } from "../../wallet-providers"; import { isAcrossSupportedTestnet } from "./utils"; import { privateKeyToAccount } from "viem/accounts"; import { erc20Abi as ERC20_ABI } from "viem"; +import { createAcrossClient } from "@across-protocol/app-sdk"; /** * Configuration options for the SafeWalletProvider. */ @@ -68,10 +69,6 @@ export class AcrossActionProvider extends ActionProvider { args: z.infer, ): Promise { try { - // Use dynamic import to get the Across SDK - const acrossModule = await import("@across-protocol/app-sdk"); - const createAcrossClient = acrossModule.createAcrossClient; - // Get recipient address if provided, otherwise use sender const address = walletProvider.getAddress() as Hex; const recipient = (args.recipient || address) as Hex; diff --git a/typescript/agentkit/src/action-providers/baseAccount/baseAccountActionProvider.ts b/typescript/agentkit/src/action-providers/baseAccount/baseAccountActionProvider.ts index b8aab94af..9eeb27bef 100644 --- a/typescript/agentkit/src/action-providers/baseAccount/baseAccountActionProvider.ts +++ b/typescript/agentkit/src/action-providers/baseAccount/baseAccountActionProvider.ts @@ -13,6 +13,12 @@ import { import { formatTimestamp, formatPeriod } from "./utils"; import { FetchedPermission } from "./types"; import { retryWithExponentialBackoff } from "../../utils"; +import { + fetchPermissions, + getPermissionStatus, + prepareSpendCallData, + prepareRevokeCallData, +} from "@base-org/account/spend-permission"; /** * Fetch spend permissions for a user account from a spender address @@ -28,7 +34,6 @@ async function fetchUserSpendPermissions( tokenAddress?: Address, ): Promise { try { - const { fetchPermissions } = await import("@base-org/account/spend-permission"); const permissions = await fetchPermissions({ account: userAccount, chainId: 8453, @@ -257,9 +262,6 @@ Important notes: } // Check permission status and prepare spend call data - const { getPermissionStatus, prepareSpendCallData } = await import( - "@base-org/account/spend-permission" - ); const status = await retryWithExponentialBackoff( // eslint-disable-next-line @typescript-eslint/no-explicit-any () => getPermissionStatus(_permission as any), @@ -405,7 +407,6 @@ Important notes: const _permission = permissions[permissionIndex - 1]; // Prepare the revoke transaction - const { prepareRevokeCallData } = await import("@base-org/account/spend-permission"); // eslint-disable-next-line @typescript-eslint/no-explicit-any const revokeCall = await prepareRevokeCallData(_permission as any); diff --git a/typescript/agentkit/src/action-providers/clanker/utils.ts b/typescript/agentkit/src/action-providers/clanker/utils.ts index 464cf2732..9449fb65a 100644 --- a/typescript/agentkit/src/action-providers/clanker/utils.ts +++ b/typescript/agentkit/src/action-providers/clanker/utils.ts @@ -1,6 +1,7 @@ import { createWalletClient, http } from "viem"; import { EvmWalletProvider } from "../../wallet-providers"; import { NETWORK_ID_TO_VIEM_CHAIN } from "../../network"; +import { Clanker } from "clanker-sdk/v4"; /** * Creates the client Clanker expects from the EvmWalletProvider @@ -10,8 +11,6 @@ import { NETWORK_ID_TO_VIEM_CHAIN } from "../../network"; * @returns The Clanker implementation */ export async function createClankerClient(walletProvider: EvmWalletProvider, networkId: string) { - const { Clanker } = await import("clanker-sdk/v4"); - const account = walletProvider.toSigner(); const publicClient = walletProvider.getPublicClient(); diff --git a/typescript/agentkit/src/action-providers/jupiter/jupiterActionProvider.ts b/typescript/agentkit/src/action-providers/jupiter/jupiterActionProvider.ts index 0b4714899..8b0a87b8a 100644 --- a/typescript/agentkit/src/action-providers/jupiter/jupiterActionProvider.ts +++ b/typescript/agentkit/src/action-providers/jupiter/jupiterActionProvider.ts @@ -6,6 +6,7 @@ import { CreateAction } from "../actionDecorator"; import { SwapTokenSchema } from "./schemas"; import { PublicKey, VersionedTransaction } from "@solana/web3.js"; import { createJupiterApiClient, SwapRequest } from "@jup-ag/api"; +import { getMint } from "@solana/spl-token"; /** * JupiterActionProvider handles token swaps using Jupiter's API. @@ -46,8 +47,6 @@ export class JupiterActionProvider extends ActionProvider { const inputMint = new PublicKey(args.inputMint); const outputMint = new PublicKey(args.outputMint); - const { getMint } = await import("@solana/spl-token"); - let mintInfo: Awaited>; try { mintInfo = await getMint(walletProvider.getConnection(), inputMint); diff --git a/typescript/agentkit/src/action-providers/spl/splActionProvider.ts b/typescript/agentkit/src/action-providers/spl/splActionProvider.ts index 2a2648438..1826010d4 100644 --- a/typescript/agentkit/src/action-providers/spl/splActionProvider.ts +++ b/typescript/agentkit/src/action-providers/spl/splActionProvider.ts @@ -10,6 +10,14 @@ import { MessageV0, TransactionInstruction, } from "@solana/web3.js"; +import { + getMint, + getAssociatedTokenAddress, + getAccount, + TokenAccountNotFoundError, + createAssociatedTokenAccountInstruction, + createTransferCheckedInstruction, +} from "@solana/spl-token"; /** * SplActionProvider serves as a provider for SPL token actions. @@ -53,9 +61,6 @@ export class SplActionProvider extends ActionProvider { const mintPubkey = new PublicKey(args.mintAddress); const ownerPubkey = new PublicKey(args.address); - const { getMint, getAssociatedTokenAddress, getAccount, TokenAccountNotFoundError } = - await import("@solana/spl-token"); - let mintInfo: Awaited>; try { mintInfo = await getMint(connection, mintPubkey); @@ -109,14 +114,6 @@ export class SplActionProvider extends ActionProvider { const toPubkey = new PublicKey(args.recipient); const mintPubkey = new PublicKey(args.mintAddress); - const { - getMint, - getAssociatedTokenAddress, - getAccount, - createAssociatedTokenAccountInstruction, - createTransferCheckedInstruction, - } = await import("@solana/spl-token"); - let mintInfo: Awaited>; try { mintInfo = await getMint(connection, mintPubkey); diff --git a/typescript/agentkit/src/action-providers/superfluid/graphQueries/superfluidGraphQueries.ts b/typescript/agentkit/src/action-providers/superfluid/graphQueries/superfluidGraphQueries.ts index 892225799..fdb120217 100644 --- a/typescript/agentkit/src/action-providers/superfluid/graphQueries/superfluidGraphQueries.ts +++ b/typescript/agentkit/src/action-providers/superfluid/graphQueries/superfluidGraphQueries.ts @@ -1,6 +1,7 @@ import { getAccountOutflowQuery } from "./queries"; import { BASE_GRAPH_ENDPOINT } from "./endpoints"; import { SuperfluidAccountResponse } from "./types"; +import { GraphQLClient } from "graphql-request"; /** * Gets the current account outflows for the user @@ -12,7 +13,6 @@ export async function getAccountOutflow( userId: string, ): Promise { try { - const { GraphQLClient } = await import("graphql-request"); const client = new GraphQLClient(BASE_GRAPH_ENDPOINT); const variables = { id: userId.toLowerCase() }; diff --git a/typescript/agentkit/src/action-providers/zora/zoraActionProvider.ts b/typescript/agentkit/src/action-providers/zora/zoraActionProvider.ts index c158bbf27..9fc8b83b0 100644 --- a/typescript/agentkit/src/action-providers/zora/zoraActionProvider.ts +++ b/typescript/agentkit/src/action-providers/zora/zoraActionProvider.ts @@ -6,6 +6,7 @@ import { CreateAction } from "../actionDecorator"; import { Hex, encodeFunctionData } from "viem"; import { Network } from "../../network"; import { generateZoraTokenUri } from "./utils"; +import { createCoinCall, DeployCurrency, getCoinCreateFromLogs } from "@zoralabs/coins-sdk"; const SUPPORTED_NETWORKS = ["base-mainnet", "base-sepolia"]; @@ -68,11 +69,6 @@ The action will return the transaction hash, coin address, and deployment detail pinataConfig: { jwt: this.#pinataJwt }, }); - // Dynamically import Zora SDK - const { createCoinCall, DeployCurrency, getCoinCreateFromLogs } = await import( - "@zoralabs/coins-sdk" - ); - // Create coin call const call = { name: args.name, diff --git a/typescript/agentkit/tsconfig.json b/typescript/agentkit/tsconfig.json index cc5fd9808..423815367 100644 --- a/typescript/agentkit/tsconfig.json +++ b/typescript/agentkit/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "./dist", "rootDir": "./src", - "module": "Node16" + "module": "nodenext", + "isolatedModules": true }, "include": ["src/**/*.ts"], "exclude": ["src/tests"] diff --git a/typescript/framework-extensions/langchain/src/index.test.ts b/typescript/framework-extensions/langchain/src/index.test.ts index d69121ff7..cdd926ae4 100644 --- a/typescript/framework-extensions/langchain/src/index.test.ts +++ b/typescript/framework-extensions/langchain/src/index.test.ts @@ -1,27 +1,26 @@ import { z } from "zod"; import { getLangChainTools } from "./index"; -import { AgentKit, Action } from "@coinbase/agentkit"; +import { AgentKit } from "@coinbase/agentkit"; -// Mocking the Action class -const mockAction: Action = { +// Mock AgentKit before importing - this prevents loading ES-only dependencies +jest.mock("@coinbase/agentkit", () => ({ + AgentKit: { + from: jest.fn(), + }, +})); + +// Define mock action after imports +const mockAction = { name: "testAction", description: "A test action", schema: z.object({ test: z.string() }), - invoke: jest.fn(async arg => `Invoked with ${arg.test}`), + invoke: jest.fn(async (arg: { test: string }) => `Invoked with ${arg.test}`), }; -// Creating a mock for AgentKit -jest.mock("@coinbase/agentkit", () => { - const originalModule = jest.requireActual("@coinbase/agentkit"); - return { - ...originalModule, - AgentKit: { - from: jest.fn().mockImplementation(() => ({ - getActions: jest.fn(() => [mockAction]), - })), - }, - }; -}); +// Configure the mock +(AgentKit.from as jest.Mock).mockImplementation(() => ({ + getActions: jest.fn(() => [mockAction]), +})); describe("getLangChainTools", () => { it("should return an array of tools with correct properties", async () => { diff --git a/typescript/framework-extensions/langchain/tsconfig.json b/typescript/framework-extensions/langchain/tsconfig.json index 4c666fee5..708700a02 100644 --- a/typescript/framework-extensions/langchain/tsconfig.json +++ b/typescript/framework-extensions/langchain/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "./dist", "rootDir": "./src", - "module": "Node16" + "module": "nodenext", + "isolatedModules": true }, "include": ["src/**/*.ts"], "exclude": ["src/**/*.test.ts"] diff --git a/typescript/framework-extensions/model-context-protocol/src/index.test.ts b/typescript/framework-extensions/model-context-protocol/src/index.test.ts index 0e9fc5ce3..ad30cee77 100644 --- a/typescript/framework-extensions/model-context-protocol/src/index.test.ts +++ b/typescript/framework-extensions/model-context-protocol/src/index.test.ts @@ -1,28 +1,27 @@ import { z } from "zod"; import { zodToJsonSchema } from "zod-to-json-schema"; import { getMcpTools } from "./index"; -import { AgentKit, Action } from "@coinbase/agentkit"; +import { AgentKit } from "@coinbase/agentkit"; -// Mocking the Action class -const mockAction: Action = { +// Mock AgentKit before importing - this prevents loading ES-only dependencies +jest.mock("@coinbase/agentkit", () => ({ + AgentKit: { + from: jest.fn(), + }, +})); + +// Define mock action after imports +const mockAction = { name: "testAction", description: "A test action", schema: z.object({ test: z.string() }), - invoke: jest.fn(async arg => `Invoked with ${arg.test}`), + invoke: jest.fn(async (arg: { test: string }) => `Invoked with ${arg.test}`), }; -// Creating a mock for AgentKit -jest.mock("@coinbase/agentkit", () => { - const originalModule = jest.requireActual("@coinbase/agentkit"); - return { - ...originalModule, - AgentKit: { - from: jest.fn().mockImplementation(() => ({ - getActions: jest.fn(() => [mockAction]), - })), - }, - }; -}); +// Configure the mock +(AgentKit.from as jest.Mock).mockImplementation(() => ({ + getActions: jest.fn(() => [mockAction]), +})); describe("getMcpTools", () => { it("should return an array of tools and a tool handler with correct properties", async () => { diff --git a/typescript/framework-extensions/model-context-protocol/tsconfig.json b/typescript/framework-extensions/model-context-protocol/tsconfig.json index 4c666fee5..708700a02 100644 --- a/typescript/framework-extensions/model-context-protocol/tsconfig.json +++ b/typescript/framework-extensions/model-context-protocol/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "./dist", "rootDir": "./src", - "module": "Node16" + "module": "nodenext", + "isolatedModules": true }, "include": ["src/**/*.ts"], "exclude": ["src/**/*.test.ts"] diff --git a/typescript/framework-extensions/vercel-ai-sdk/src/getVercelAiTools.test.ts b/typescript/framework-extensions/vercel-ai-sdk/src/getVercelAiTools.test.ts index 1c3ade561..0cc71a37e 100644 --- a/typescript/framework-extensions/vercel-ai-sdk/src/getVercelAiTools.test.ts +++ b/typescript/framework-extensions/vercel-ai-sdk/src/getVercelAiTools.test.ts @@ -1,28 +1,26 @@ import { z } from "zod"; -import { AgentKit, Action } from "@coinbase/agentkit"; - import { getVercelAITools } from "./getVercelAiTools"; +import { AgentKit } from "@coinbase/agentkit"; + +// Mock AgentKit before importing - this prevents loading ES-only dependencies +jest.mock("@coinbase/agentkit", () => ({ + AgentKit: { + from: jest.fn(), + }, +})); -// Mocking the Action class -const mockAction: Action = { +// Define mock action after imports +const mockAction = { name: "testAction", description: "A test action", schema: z.object({ test: z.string() }), - invoke: jest.fn(async arg => `Invoked with ${arg.test}`), + invoke: jest.fn(async (arg: { test: string }) => `Invoked with ${arg.test}`), }; -// Creating a mock for AgentKit -jest.mock("@coinbase/agentkit", () => { - const originalModule = jest.requireActual("@coinbase/agentkit"); - return { - ...originalModule, - AgentKit: { - from: jest.fn().mockImplementation(() => ({ - getActions: jest.fn(() => [mockAction]), - })), - }, - }; -}); +// Configure the mock +(AgentKit.from as jest.Mock).mockImplementation(() => ({ + getActions: jest.fn(() => [mockAction]), +})); describe("getVercelAITools", () => { it("should return a record of tools with correct properties", async () => { diff --git a/typescript/framework-extensions/vercel-ai-sdk/tsconfig.json b/typescript/framework-extensions/vercel-ai-sdk/tsconfig.json index 4c666fee5..708700a02 100644 --- a/typescript/framework-extensions/vercel-ai-sdk/tsconfig.json +++ b/typescript/framework-extensions/vercel-ai-sdk/tsconfig.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "./dist", "rootDir": "./src", - "module": "Node16" + "module": "nodenext", + "isolatedModules": true }, "include": ["src/**/*.ts"], "exclude": ["src/**/*.test.ts"] diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 000d9cb1f..464a4384f 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -6394,7 +6394,7 @@ snapshots: '@babel/traverse': 7.27.0 '@babel/types': 7.27.0 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -6552,7 +6552,7 @@ snapshots: '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7877,7 +7877,7 @@ snapshots: bufferutil: 4.0.9 cross-fetch: 4.1.0 date-fns: 2.30.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) eciesjs: 0.4.15 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -7901,7 +7901,7 @@ snapshots: '@paulmillr/qr': 0.2.1 bowser: 2.12.1 cross-fetch: 4.1.0 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) eciesjs: 0.4.15 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -7928,7 +7928,7 @@ snapshots: '@scure/base': 1.2.6 '@types/debug': 4.1.12 '@types/lodash': 4.17.20 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) lodash: 4.17.21 pony-cause: 2.1.11 semver: 7.7.1 @@ -7940,7 +7940,7 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) semver: 7.7.1 superstruct: 1.0.4 transitivePeerDependencies: @@ -7953,7 +7953,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.1 uuid: 9.0.1 @@ -7967,7 +7967,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.1 uuid: 9.0.1 @@ -10652,10 +10652,6 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.0(supports-color@5.5.0): dependencies: ms: 2.1.3 @@ -11941,7 +11937,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -13224,7 +13220,7 @@ snapshots: portfinder@1.0.35: dependencies: async: 3.2.6 - debug: 4.4.0 + debug: 4.4.0(supports-color@5.5.0) transitivePeerDependencies: - supports-color