mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-05 08:10:14 +00:00
fix: add polyfill for getDefaultHighWaterMark to support VS Code 1.85.x
- VS Code 1.85.x bundles Node.js 16.14.2 which lacks getDefaultHighWaterMark - Added polyfill at the start of extension.ts before any imports - Added comprehensive tests for the polyfill functionality - Fixes #6240
This commit is contained in:
parent
62160758fc
commit
61d0d15fa4
2 changed files with 65 additions and 0 deletions
52
src/__tests__/extension-polyfill.spec.ts
Normal file
52
src/__tests__/extension-polyfill.spec.ts
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import { describe, it, expect, vi } from "vitest"
|
||||
|
||||
describe("getDefaultHighWaterMark polyfill", () => {
|
||||
it("should add getDefaultHighWaterMark if it doesn't exist", () => {
|
||||
// Mock the stream module without getDefaultHighWaterMark
|
||||
const mockStream: any = {}
|
||||
|
||||
// Execute the polyfill code
|
||||
if (!mockStream.getDefaultHighWaterMark) {
|
||||
mockStream.getDefaultHighWaterMark = function (objectMode: boolean): number {
|
||||
return objectMode ? 16 : 16 * 1024
|
||||
}
|
||||
}
|
||||
|
||||
// Verify the function was added
|
||||
expect(mockStream.getDefaultHighWaterMark).toBeDefined()
|
||||
expect(typeof mockStream.getDefaultHighWaterMark).toBe("function")
|
||||
})
|
||||
|
||||
it("should return correct values for objectMode", () => {
|
||||
const mockStream: any = {}
|
||||
mockStream.getDefaultHighWaterMark = function (objectMode: boolean): number {
|
||||
return objectMode ? 16 : 16 * 1024
|
||||
}
|
||||
|
||||
// Test objectMode = true
|
||||
expect(mockStream.getDefaultHighWaterMark(true)).toBe(16)
|
||||
|
||||
// Test objectMode = false
|
||||
expect(mockStream.getDefaultHighWaterMark(false)).toBe(16 * 1024)
|
||||
})
|
||||
|
||||
it("should not override existing getDefaultHighWaterMark", () => {
|
||||
// Mock stream with existing getDefaultHighWaterMark
|
||||
const originalFunction = vi.fn((objectMode: boolean) => (objectMode ? 32 : 32 * 1024))
|
||||
const mockStream: any = {
|
||||
getDefaultHighWaterMark: originalFunction,
|
||||
}
|
||||
|
||||
// Execute polyfill check
|
||||
if (!mockStream.getDefaultHighWaterMark) {
|
||||
mockStream.getDefaultHighWaterMark = function (objectMode: boolean): number {
|
||||
return objectMode ? 16 : 16 * 1024
|
||||
}
|
||||
}
|
||||
|
||||
// Verify original function is preserved
|
||||
expect(mockStream.getDefaultHighWaterMark).toBe(originalFunction)
|
||||
expect(mockStream.getDefaultHighWaterMark(true)).toBe(32)
|
||||
expect(mockStream.getDefaultHighWaterMark(false)).toBe(32 * 1024)
|
||||
})
|
||||
})
|
||||
|
|
@ -1,3 +1,16 @@
|
|||
// Polyfill for getDefaultHighWaterMark to support older VS Code versions
|
||||
// VS Code 1.85.x uses Node.js 16.14.2 which doesn't have getDefaultHighWaterMark
|
||||
// (introduced in Node.js 16.7.0). This polyfill ensures compatibility.
|
||||
// This must be added before any imports that might use the stream module.
|
||||
// See: https://github.com/RooCodeInc/Roo-Code/issues/6240
|
||||
if (!require("stream").getDefaultHighWaterMark) {
|
||||
const stream = require("stream")
|
||||
stream.getDefaultHighWaterMark = function (objectMode: boolean): number {
|
||||
// Default values from Node.js source
|
||||
return objectMode ? 16 : 16 * 1024
|
||||
}
|
||||
}
|
||||
|
||||
import * as vscode from "vscode"
|
||||
import * as dotenvx from "@dotenvx/dotenvx"
|
||||
import * as path from "path"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue