diff --git a/e2e/coverage-handlebars/transform-handlebars.js b/e2e/coverage-handlebars/transform-handlebars.js index a20adf41393d..e34e2fe448ec 100644 --- a/e2e/coverage-handlebars/transform-handlebars.js +++ b/e2e/coverage-handlebars/transform-handlebars.js @@ -6,15 +6,17 @@ */ const Handlebars = require('handlebars/dist/cjs/handlebars.js'); -const {SourceMapConsumer, SourceNode} = require('source-map'); +const {SourceMapConsumer, SourceNode} = require('source-map-sync'); exports.process = (code, filename) => { const pc = Handlebars.precompile(code, {srcName: filename}); + const consumer = new SourceMapConsumer(pc.map); const out = new SourceNode(null, null, null, [ 'const Handlebars = require("handlebars/dist/cjs/handlebars.runtime.js");\n', 'module.exports = Handlebars.template(', - SourceNode.fromStringWithSourceMap(pc.code, new SourceMapConsumer(pc.map)), + SourceNode.fromStringWithSourceMap(pc.code, consumer), ');\n', ]).toStringWithSourceMap(); + consumer.destroy(); return {code: out.code, map: out.map.toString()}; }; diff --git a/packages/jest-jasmine2/src/jasmine/Spec.ts b/packages/jest-jasmine2/src/jasmine/Spec.ts index 4043416075e2..fe0a8998f41b 100644 --- a/packages/jest-jasmine2/src/jasmine/Spec.ts +++ b/packages/jest-jasmine2/src/jasmine/Spec.ts @@ -69,6 +69,7 @@ export type SpecResult = { pendingReason: string; status: Status; __callsite?: { + destroy: () => void; getColumnNumber: () => number; getLineNumber: () => number; }; diff --git a/packages/jest-jasmine2/src/reporter.ts b/packages/jest-jasmine2/src/reporter.ts index 507295b0f946..f7fdd7ac0209 100644 --- a/packages/jest-jasmine2/src/reporter.ts +++ b/packages/jest-jasmine2/src/reporter.ts @@ -138,6 +138,7 @@ export default class Jasmine2Reporter implements Reporter { line: specResult.__callsite.getLineNumber(), } : null; + if (specResult.__callsite) specResult.__callsite.destroy(); const results: AssertionResult = { ancestorTitles, duration, diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index 5651ce381006..f7da4bd5741b 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -29,7 +29,7 @@ "jest-util": "^27.0.0-next.1", "jest-worker": "^27.0.0-next.2", "slash": "^3.0.0", - "source-map": "^0.6.0", + "source-map-sync": "^0.8.0-beta.1", "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^7.0.0" diff --git a/packages/jest-reporters/src/CoverageReporter.ts b/packages/jest-reporters/src/CoverageReporter.ts index 1883b39861e4..1acca1566dd4 100644 --- a/packages/jest-reporters/src/CoverageReporter.ts +++ b/packages/jest-reporters/src/CoverageReporter.ts @@ -14,7 +14,7 @@ import istanbulCoverage = require('istanbul-lib-coverage'); import istanbulReport = require('istanbul-lib-report'); import libSourceMaps = require('istanbul-lib-source-maps'); import istanbulReports = require('istanbul-reports'); -import type {RawSourceMap} from 'source-map'; +import type {RawSourceMap} from 'source-map-sync'; import v8toIstanbul = require('v8-to-istanbul'); import type { AggregatedResult, @@ -35,7 +35,7 @@ import type { } from './types'; // This is fixed in a newer versions of source-map, but our dependencies are still stuck on old versions -interface FixedRawSourceMap extends Omit { +interface FixedRawSourceMap extends Omit { version: number; file?: string; } diff --git a/packages/jest-source-map/package.json b/packages/jest-source-map/package.json index 5c7cff48a296..d1a1f23f12db 100644 --- a/packages/jest-source-map/package.json +++ b/packages/jest-source-map/package.json @@ -16,7 +16,7 @@ "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "source-map-sync": "^0.8.0-beta.1" }, "devDependencies": { "@types/graceful-fs": "^4.1.2" diff --git a/packages/jest-source-map/src/__tests__/getCallsite.test.ts b/packages/jest-source-map/src/__tests__/getCallsite.test.ts index 1ff293058e83..1d5ec0349a88 100644 --- a/packages/jest-source-map/src/__tests__/getCallsite.test.ts +++ b/packages/jest-source-map/src/__tests__/getCallsite.test.ts @@ -6,7 +6,7 @@ */ import * as fs from 'graceful-fs'; -import SourceMap from 'source-map'; +import SourceMap from 'source-map-sync'; import getCallsite from '../getCallsite'; // Node 10.5.x compatibility diff --git a/packages/jest-source-map/src/getCallsite.ts b/packages/jest-source-map/src/getCallsite.ts index 5a0f74a5bdfb..ab5ac5f51ae3 100644 --- a/packages/jest-source-map/src/getCallsite.ts +++ b/packages/jest-source-map/src/getCallsite.ts @@ -7,7 +7,7 @@ import callsites = require('callsites'); import {readFileSync} from 'graceful-fs'; -import {SourceMapConsumer} from 'source-map'; +import {SourceMapConsumer} from 'source-map-sync'; import type {SourceMapRegistry} from './types'; // Copied from https://github.com/rexxars/sourcemap-decorate-callsites/blob/5b9735a156964973a75dc62fd2c7f0c1975458e8/lib/index.js#L113-L158 @@ -26,11 +26,16 @@ const addSourceMapConsumer = ( line: getLineNumber.call(callsite) || -1, }); } - return position; } Object.defineProperties(callsite, { + destroy: { + value() { + consumer.destroy(); + }, + writable: false, + }, getColumnNumber: { value() { return getPosition().column || getColumnNumber.call(callsite); @@ -57,7 +62,6 @@ export default ( if (sourceMapFileName) { try { const sourceMap = readFileSync(sourceMapFileName, 'utf8'); - // @ts-expect-error: Not allowed to pass string addSourceMapConsumer(stack, new SourceMapConsumer(sourceMap)); } catch { // ignore diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index 3bb4cec021f4..969bcc33d38b 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -27,7 +27,7 @@ "micromatch": "^4.0.2", "pirates": "^4.0.1", "slash": "^3.0.0", - "source-map": "^0.6.1", + "source-map-sync": "^0.8.0-beta.1", "write-file-atomic": "^3.0.0" }, "devDependencies": { diff --git a/packages/jest-transform/src/types.ts b/packages/jest-transform/src/types.ts index 97492c0f46b5..7df59e4f3025 100644 --- a/packages/jest-transform/src/types.ts +++ b/packages/jest-transform/src/types.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {RawSourceMap} from 'source-map'; +import type {RawSourceMap} from 'source-map-sync'; import type {Config, TransformTypes} from '@jest/types'; export type ShouldInstrumentOptions = Pick< diff --git a/yarn.lock b/yarn.lock index ad2b0c01ef47..3a1a68d50e57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2007,7 +2007,7 @@ __metadata: jest-worker: ^27.0.0-next.2 mock-fs: ^4.4.1 slash: ^3.0.0 - source-map: ^0.6.0 + source-map-sync: ^0.8.0-beta.1 string-length: ^4.0.1 strip-ansi: ^6.0.0 terminal-link: ^2.0.0 @@ -2027,7 +2027,7 @@ __metadata: "@types/graceful-fs": ^4.1.2 callsites: ^3.0.0 graceful-fs: ^4.2.4 - source-map: ^0.6.0 + source-map-sync: ^0.8.0-beta.1 languageName: unknown linkType: soft @@ -2130,7 +2130,7 @@ __metadata: micromatch: ^4.0.2 pirates: ^4.0.1 slash: ^3.0.0 - source-map: ^0.6.1 + source-map-sync: ^0.8.0-beta.1 write-file-atomic: ^3.0.0 languageName: unknown linkType: soft @@ -18102,6 +18102,15 @@ react-native@0.63.2: languageName: node linkType: hard +"source-map-sync@npm:^0.8.0-beta.1": + version: 0.8.0-beta.1 + resolution: "source-map-sync@npm:0.8.0-beta.1" + dependencies: + whatwg-url: ^7.0.0 + checksum: a45bf3b3075404b80794a890f43addd75d0eb1d7c2694f6d9c60284e5942945d051e66b13de6a7f13be5e99ca8b0b775ec334aff347a8a02cd21afc8b08268c2 + languageName: node + linkType: hard + "source-map-url@npm:^0.4.0": version: 0.4.0 resolution: "source-map-url@npm:0.4.0"