diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fe38aa4aac3..d1b806080ee2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### Chore & Maintenance +- `[jest-serializer]` Remove deprecated module from source tree ([#12735](https://github.com/facebook/jest/pull/12735)) + ### Performance ## 28.0.0 diff --git a/packages/jest-serializer/.npmignore b/packages/jest-serializer/.npmignore deleted file mode 100644 index 80bf61eb922c..000000000000 --- a/packages/jest-serializer/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -**/__mocks__/** -**/__tests__/** -__typetests__ -src -tsconfig.json -tsconfig.tsbuildinfo -api-extractor.json diff --git a/packages/jest-serializer/README.md b/packages/jest-serializer/README.md deleted file mode 100644 index 5eee3c1c9cfc..000000000000 --- a/packages/jest-serializer/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# jest-serializer - -> DEPRECATED: Use `v8` APIs directly: https://nodejs.org/api/v8.html#serialization-api - -Module for serializing and deserializing object into memory and disk. The Node core `v8` implementations are used. This seriializer have the advantage of being able to serialize `Map`, `Set`, `undefined`, `NaN`, etc.. - -## Install - -```sh -$ yarn add jest-serializer -``` - -## API - -Three kinds of API groups are exposed: - -### In-memory serialization: `serialize` and `deserialize` - -This set of functions take or return a `Buffer`. All the process happens in memory. This is useful when willing to transfer over HTTP, TCP or via UNIX pipes. - -```javascript -import {deserialize, serialize} from 'jest-serializer'; - -const myObject = { - foo: 'bar', - baz: [0, true, '2', [], {}], -}; - -const buffer = serialize(myObject); -const myCopyObject = deserialize(buffer); -``` - -### Synchronous persistent filesystem: `readFileSync` and `writeFileSync` - -This set of functions allow to send to disk a serialization result and retrieve it back, in a synchronous way. It mimics the `fs` API so it looks familiar. - -```javascript -import {readFileSync, writeFileSync} from 'jest-serializer'; - -const myObject = { - foo: 'bar', - baz: [0, true, '2', [], {}], -}; - -const myFile = '/tmp/obj'; - -writeFileSync(myFile, myObject); -const myCopyObject = readFileSync(myFile); -``` diff --git a/packages/jest-serializer/package.json b/packages/jest-serializer/package.json deleted file mode 100644 index 7877dc5c6d9a..000000000000 --- a/packages/jest-serializer/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "jest-serializer", - "version": "28.0.0", - "repository": { - "type": "git", - "url": "https://github.com/facebook/jest.git", - "directory": "packages/jest-serializer" - }, - "devDependencies": { - "@types/graceful-fs": "^4.1.3" - }, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0" - }, - "license": "MIT", - "main": "./build/index.js", - "types": "./build/index.d.ts", - "exports": { - ".": { - "types": "./build/index.d.ts", - "default": "./build/index.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/jest-serializer/src/__tests__/index.test.ts b/packages/jest-serializer/src/__tests__/index.test.ts deleted file mode 100644 index dae4124b8446..000000000000 --- a/packages/jest-serializer/src/__tests__/index.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * 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. - */ - -import {tmpdir} from 'os'; -import * as path from 'path'; -import * as fs from 'graceful-fs'; -import {format as prettyFormat} from 'pretty-format'; -import serializer from '..'; - -const objs = [ - 3, - null, - [0, true, '2', [3.14, {}, null]], - {key1: 'foo', key2: 'bar', key3: {array: [null, {}]}}, - {minusInf: -Infinity, nan: NaN, plusInf: +Infinity}, - {date: new Date(1234567890), re: /foo/gi}, - { - // @ts-expect-error - testing NaN - map: new Map([ - [NaN, 4], - [undefined, 'm'], - ]), - set: new Set([undefined, NaN]), - }, - {buf: Buffer.from([0, 255, 127])}, -]; - -const file = path.join(tmpdir(), '__jest-serialize-test__'); - -afterEach(() => { - try { - fs.unlinkSync(file); - } catch { - // Do nothing if file does not exist. - } -}); - -describe('Using V8 implementation', () => { - it('throws the error with an invalid serialization', () => { - // No chance this is a valid serialization, neither in JSON nor V8. - const invalidBuffer = Buffer.from([0, 85, 170, 255]); - - fs.writeFileSync(file, invalidBuffer); - - expect(() => serializer.deserialize(invalidBuffer)).toThrow(); - expect(() => serializer.readFileSync(file)).toThrow(); - }); - - objs.forEach((obj, i) => { - describe(`Object ${i}`, () => { - it('serializes/deserializes in memory', () => { - const buf = serializer.serialize(obj); - - expect(buf).toBeInstanceOf(Buffer); - - expect(prettyFormat(serializer.deserialize(buf))).toEqual( - prettyFormat(obj), - ); - }); - - it('serializes/deserializes in disk', () => { - serializer.writeFileSync(file, obj); - - expect(prettyFormat(serializer.readFileSync(file))).toEqual( - prettyFormat(obj), - ); - }); - }); - }); -}); diff --git a/packages/jest-serializer/src/index.ts b/packages/jest-serializer/src/index.ts deleted file mode 100644 index 62ae49c41e4f..000000000000 --- a/packages/jest-serializer/src/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * 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. - */ - -import {deserialize as v8Deserialize, serialize as v8Serialize} from 'v8'; -import * as fs from 'graceful-fs'; - -// JSON and V8 serializers are both stable when it comes to compatibility. The -// current JSON specification is well defined in RFC 8259, and V8 ensures that -// the versions are compatible by encoding the serialization version in the own -// generated buffer. - -// In memory functions. - -export function deserialize(buffer: Buffer): unknown { - return v8Deserialize(buffer); -} - -export function serialize(content: unknown): Buffer { - return v8Serialize(content); -} - -// Synchronous filesystem functions. - -export function readFileSync(filePath: string): unknown { - return v8Deserialize(fs.readFileSync(filePath)); -} - -export function writeFileSync(filePath: string, content: unknown): void { - return fs.writeFileSync(filePath, v8Serialize(content)); -} - -export default { - deserialize, - readFileSync, - serialize, - writeFileSync, -}; diff --git a/packages/jest-serializer/tsconfig.json b/packages/jest-serializer/tsconfig.json deleted file mode 100644 index bb13eb783ccc..000000000000 --- a/packages/jest-serializer/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "build" - }, - "include": ["./src/**/*"], - "exclude": ["./**/__tests__/**/*"] -} diff --git a/yarn.lock b/yarn.lock index b9521e6c84e6..bb163c7b2839 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13538,16 +13538,6 @@ __metadata: languageName: node linkType: hard -"jest-serializer@workspace:packages/jest-serializer": - version: 0.0.0-use.local - resolution: "jest-serializer@workspace:packages/jest-serializer" - dependencies: - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - graceful-fs: ^4.2.9 - languageName: unknown - linkType: soft - "jest-silent-reporter@npm:^0.5.0": version: 0.5.0 resolution: "jest-silent-reporter@npm:0.5.0"