diff --git a/packages/jest-serializer/src/__tests__/index.test.ts b/packages/jest-serializer/src/__tests__/index.test.ts index 9a62e10aaee1..f23cf3651525 100644 --- a/packages/jest-serializer/src/__tests__/index.test.ts +++ b/packages/jest-serializer/src/__tests__/index.test.ts @@ -18,9 +18,7 @@ import serializer from '..'; const v8s = [ { - // @ts-ignore - Node 8+ only deserialize: v8.deserialize, - // @ts-ignore - Node 8+ only serialize: v8.serialize, }, { @@ -57,9 +55,7 @@ afterEach(() => { v8s.forEach((mockV8, i) => { describe('Using V8 implementation ' + i, () => { beforeEach(() => { - // @ts-ignore - Node 8+ only v8.serialize = mockV8.serialize; - // @ts-ignore - Node 8+ only v8.deserialize = mockV8.deserialize; }); diff --git a/packages/jest-serializer/src/global.d.ts b/packages/jest-serializer/src/global.d.ts new file mode 100644 index 000000000000..809c49911f31 --- /dev/null +++ b/packages/jest-serializer/src/global.d.ts @@ -0,0 +1,11 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module 'v8' { + function serialize(value: unknown): Buffer; + function deserialize(value: Buffer): unknown; +} diff --git a/packages/jest-serializer/src/index.ts b/packages/jest-serializer/src/index.ts index 41d415f9c2c5..e2055ef70785 100644 --- a/packages/jest-serializer/src/index.ts +++ b/packages/jest-serializer/src/index.ts @@ -114,40 +114,28 @@ function jsonParse(content: string) { // In memory functions. export function deserialize(buffer: Buffer): any { - // @ts-ignore - Node 8+ only return v8.deserialize - ? // - // @ts-ignore - Node 8+ only - v8.deserialize(buffer) + ? v8.deserialize(buffer) : jsonParse(buffer.toString('utf8')); } export function serialize(content: unknown): Buffer { - // @ts-ignore - Node 8+ only return v8.serialize - ? // - // @ts-ignore - Node 8+ only - v8.serialize(content) + ? v8.serialize(content) : Buffer.from(jsonStringify(content)); } // Synchronous filesystem functions. export function readFileSync(filePath: Path): any { - // @ts-ignore - Node 8+ only return v8.deserialize - ? // - // @ts-ignore - Node 8+ only - v8.deserialize(fs.readFileSync(filePath)) + ? v8.deserialize(fs.readFileSync(filePath)) : jsonParse(fs.readFileSync(filePath, 'utf8')); } export function writeFileSync(filePath: Path, content: any) { - // @ts-ignore - Node 8+ only return v8.serialize - ? // - // @ts-ignore - Node 8+ only - fs.writeFileSync(filePath, v8.serialize(content)) + ? fs.writeFileSync(filePath, v8.serialize(content)) : fs.writeFileSync(filePath, jsonStringify(content), 'utf8'); }