Gathering detailed insights and metrics for @jridgewell/trace-mapping
Gathering detailed insights and metrics for @jridgewell/trace-mapping
Trace the original position through a source map
npm install @jridgewell/trace-mapping
Typescript
Module System
Node Version
NPM Version
99.4
Supply Chain
99.1
Quality
78.5
Maintenance
100
Vulnerability
100
License
TypeScript (64.89%)
JavaScript (35.11%)
Total Downloads
6,558,529,559
Last Day
12,353,388
Last Week
56,669,299
Last Month
249,928,638
Last Year
3,119,703,915
105 Stars
154 Commits
8 Forks
6 Watching
1 Branches
6 Contributors
Minified
Minified + Gzipped
Latest Version
0.3.25
Package Id
@jridgewell/trace-mapping@0.3.25
Unpacked Size
165.36 kB
Size
37.34 kB
File Count
16
NPM Version
10.2.3
Node Version
20.10.0
Publised On
02 Mar 2024
Cumulative downloads
Total Downloads
Last day
-3.4%
12,353,388
Compared to previous day
Last week
-13.7%
56,669,299
Compared to previous week
Last month
5.2%
249,928,638
Compared to previous month
Last year
34.8%
3,119,703,915
Compared to previous year
2
Trace the original position through a source map
trace-mapping
allows you to take the line and column of an output file and trace it to the
original location in the source file through a source map.
You may already be familiar with the source-map
package's SourceMapConsumer
. This
provides the same originalPositionFor
and generatedPositionFor
API, without requiring WASM.
1npm install @jridgewell/trace-mapping
1import { 2 TraceMap, 3 originalPositionFor, 4 generatedPositionFor, 5 sourceContentFor, 6 isIgnored, 7} from '@jridgewell/trace-mapping'; 8 9const tracer = new TraceMap({ 10 version: 3, 11 sources: ['input.js'], 12 sourcesContent: ['content of input.js'], 13 names: ['foo'], 14 mappings: 'KAyCIA', 15 ignoreList: [], 16}); 17 18// Lines start at line 1, columns at column 0. 19const traced = originalPositionFor(tracer, { line: 1, column: 5 }); 20assert.deepEqual(traced, { 21 source: 'input.js', 22 line: 42, 23 column: 4, 24 name: 'foo', 25}); 26 27const content = sourceContentFor(tracer, traced.source); 28assert.strictEqual(content, 'content for input.js'); 29 30const generated = generatedPositionFor(tracer, { 31 source: 'input.js', 32 line: 42, 33 column: 4, 34}); 35assert.deepEqual(generated, { 36 line: 1, 37 column: 5, 38}); 39 40const ignored = isIgnored(tracer, 'input.js'); 41assert.equal(ignored, false);
We also provide a lower level API to get the actual segment that matches our line and column. Unlike
originalPositionFor
, traceSegment
uses a 0-base for line
:
1import { traceSegment } from '@jridgewell/trace-mapping'; 2 3// line is 0-base. 4const traced = traceSegment(tracer, /* line */ 0, /* column */ 5); 5 6// Segments are [outputColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] 7// Again, line is 0-base and so is sourceLine 8assert.deepEqual(traced, [5, 0, 41, 4, 0]);
The sourcemap spec defines a special sections
field that's designed to handle concatenation of
output code with associated sourcemaps. This type of sourcemap is rarely used (no major build tool
produces it), but if you are hand coding a concatenation you may need it. We provide an AnyMap
helper that can receive either a regular sourcemap or a SectionedSourceMap
and returns a
TraceMap
instance:
1import { AnyMap } from '@jridgewell/trace-mapping'; 2const fooOutput = 'foo'; 3const barOutput = 'bar'; 4const output = [fooOutput, barOutput].join('\n'); 5 6const sectioned = new AnyMap({ 7 version: 3, 8 sections: [ 9 { 10 // 0-base line and column 11 offset: { line: 0, column: 0 }, 12 // fooOutput's sourcemap 13 map: { 14 version: 3, 15 sources: ['foo.js'], 16 names: ['foo'], 17 mappings: 'AAAAA', 18 }, 19 }, 20 { 21 // barOutput's sourcemap will not affect the first line, only the second 22 offset: { line: 1, column: 0 }, 23 map: { 24 version: 3, 25 sources: ['bar.js'], 26 names: ['bar'], 27 mappings: 'AAAAA', 28 }, 29 }, 30 ], 31}); 32 33const traced = originalPositionFor(sectioned, { 34 line: 2, 35 column: 0, 36}); 37 38assert.deepEqual(traced, { 39 source: 'bar.js', 40 line: 1, 41 column: 0, 42 name: 'bar', 43});
node v18.0.0
amp.js.map - 45120 segments
Memory Usage:
trace-mapping decoded 562400 bytes
trace-mapping encoded 5706544 bytes
source-map-js 10717664 bytes
source-map-0.6.1 17446384 bytes
source-map-0.8.0 9701757 bytes
Smallest memory usage is trace-mapping decoded
Init speed:
trace-mapping: decoded JSON input x 180 ops/sec ±0.34% (85 runs sampled)
trace-mapping: encoded JSON input x 364 ops/sec ±1.77% (89 runs sampled)
trace-mapping: decoded Object input x 3,116 ops/sec ±0.50% (96 runs sampled)
trace-mapping: encoded Object input x 410 ops/sec ±2.62% (85 runs sampled)
source-map-js: encoded Object input x 84.23 ops/sec ±0.91% (73 runs sampled)
source-map-0.6.1: encoded Object input x 37.21 ops/sec ±2.08% (51 runs sampled)
Fastest is trace-mapping: decoded Object input
Trace speed:
trace-mapping: decoded originalPositionFor x 3,952,212 ops/sec ±0.17% (98 runs sampled)
trace-mapping: encoded originalPositionFor x 3,487,468 ops/sec ±1.58% (90 runs sampled)
source-map-js: encoded originalPositionFor x 827,730 ops/sec ±0.78% (97 runs sampled)
source-map-0.6.1: encoded originalPositionFor x 748,991 ops/sec ±0.53% (94 runs sampled)
source-map-0.8.0: encoded originalPositionFor x 2,532,894 ops/sec ±0.57% (95 runs sampled)
Fastest is trace-mapping: decoded originalPositionFor
***
babel.min.js.map - 347793 segments
Memory Usage:
trace-mapping decoded 89832 bytes
trace-mapping encoded 35474640 bytes
source-map-js 51257176 bytes
source-map-0.6.1 63515664 bytes
source-map-0.8.0 42933752 bytes
Smallest memory usage is trace-mapping decoded
Init speed:
trace-mapping: decoded JSON input x 15.41 ops/sec ±8.65% (34 runs sampled)
trace-mapping: encoded JSON input x 28.20 ops/sec ±12.87% (42 runs sampled)
trace-mapping: decoded Object input x 964 ops/sec ±0.36% (99 runs sampled)
trace-mapping: encoded Object input x 31.77 ops/sec ±13.79% (45 runs sampled)
source-map-js: encoded Object input x 6.45 ops/sec ±5.16% (21 runs sampled)
source-map-0.6.1: encoded Object input x 4.07 ops/sec ±5.24% (15 runs sampled)
Fastest is trace-mapping: decoded Object input
Trace speed:
trace-mapping: decoded originalPositionFor x 7,183,038 ops/sec ±0.58% (95 runs sampled)
trace-mapping: encoded originalPositionFor x 5,192,185 ops/sec ±0.41% (100 runs sampled)
source-map-js: encoded originalPositionFor x 4,259,489 ops/sec ±0.79% (94 runs sampled)
source-map-0.6.1: encoded originalPositionFor x 3,742,629 ops/sec ±0.71% (95 runs sampled)
source-map-0.8.0: encoded originalPositionFor x 6,270,211 ops/sec ±0.64% (94 runs sampled)
Fastest is trace-mapping: decoded originalPositionFor
***
preact.js.map - 1992 segments
Memory Usage:
trace-mapping decoded 37128 bytes
trace-mapping encoded 247280 bytes
source-map-js 1143536 bytes
source-map-0.6.1 1290992 bytes
source-map-0.8.0 96544 bytes
Smallest memory usage is trace-mapping decoded
Init speed:
trace-mapping: decoded JSON input x 3,483 ops/sec ±0.30% (98 runs sampled)
trace-mapping: encoded JSON input x 6,092 ops/sec ±0.18% (97 runs sampled)
trace-mapping: decoded Object input x 249,076 ops/sec ±0.24% (98 runs sampled)
trace-mapping: encoded Object input x 14,555 ops/sec ±0.48% (100 runs sampled)
source-map-js: encoded Object input x 2,447 ops/sec ±0.36% (99 runs sampled)
source-map-0.6.1: encoded Object input x 1,201 ops/sec ±0.57% (96 runs sampled)
Fastest is trace-mapping: decoded Object input
Trace speed:
trace-mapping: decoded originalPositionFor x 7,620,192 ops/sec ±0.09% (99 runs sampled)
trace-mapping: encoded originalPositionFor x 6,872,554 ops/sec ±0.30% (97 runs sampled)
source-map-js: encoded originalPositionFor x 2,489,570 ops/sec ±0.35% (94 runs sampled)
source-map-0.6.1: encoded originalPositionFor x 1,698,633 ops/sec ±0.28% (98 runs sampled)
source-map-0.8.0: encoded originalPositionFor x 4,015,644 ops/sec ±0.22% (98 runs sampled)
Fastest is trace-mapping: decoded originalPositionFor
***
react.js.map - 5726 segments
Memory Usage:
trace-mapping decoded 16176 bytes
trace-mapping encoded 681552 bytes
source-map-js 2418352 bytes
source-map-0.6.1 2443672 bytes
source-map-0.8.0 111768 bytes
Smallest memory usage is trace-mapping decoded
Init speed:
trace-mapping: decoded JSON input x 1,720 ops/sec ±0.34% (98 runs sampled)
trace-mapping: encoded JSON input x 4,406 ops/sec ±0.35% (100 runs sampled)
trace-mapping: decoded Object input x 92,122 ops/sec ±0.10% (99 runs sampled)
trace-mapping: encoded Object input x 5,385 ops/sec ±0.37% (99 runs sampled)
source-map-js: encoded Object input x 794 ops/sec ±0.40% (98 runs sampled)
source-map-0.6.1: encoded Object input x 416 ops/sec ±0.54% (91 runs sampled)
Fastest is trace-mapping: decoded Object input
Trace speed:
trace-mapping: decoded originalPositionFor x 32,759,519 ops/sec ±0.33% (100 runs sampled)
trace-mapping: encoded originalPositionFor x 31,116,306 ops/sec ±0.33% (97 runs sampled)
source-map-js: encoded originalPositionFor x 17,458,435 ops/sec ±0.44% (97 runs sampled)
source-map-0.6.1: encoded originalPositionFor x 12,687,097 ops/sec ±0.43% (95 runs sampled)
source-map-0.8.0: encoded originalPositionFor x 23,538,275 ops/sec ±0.38% (95 runs sampled)
Fastest is trace-mapping: decoded originalPositionFor
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
Reason
4 existing vulnerabilities detected
Details
Reason
Found 1/30 approved changesets -- score normalized to 0
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
branch protection not enabled on development/release branches
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2025-01-27
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More