Blame view

node_modules/@jridgewell/sourcemap-codec/README.md 6.73 KB
7820380e   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
  # @jridgewell/sourcemap-codec
  
  Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
  
  
  ## Why?
  
  Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap.
  
  This package makes the process slightly easier.
  
  
  ## Installation
  
  ```bash
  npm install @jridgewell/sourcemap-codec
  ```
  
  
  ## Usage
  
  ```js
  import { encode, decode } from '@jridgewell/sourcemap-codec';
  
  var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
  
  assert.deepEqual( decoded, [
  	// the first line (of the generated code) has no mappings,
  	// as shown by the starting semi-colon (which separates lines)
  	[],
  
  	// the second line contains four (comma-separated) segments
  	[
  		// segments are encoded as you'd expect:
  		// [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
  
  		// i.e. the first segment begins at column 2, and maps back to the second column
  		// of the second line (both zero-based) of the 0th source, and uses the 0th
  		// name in the `map.names` array
  		[ 2, 0, 2, 2, 0 ],
  
  		// the remaining segments are 4-length rather than 5-length,
  		// because they don't map a name
  		[ 4, 0, 2, 4 ],
  		[ 6, 0, 2, 5 ],
  		[ 7, 0, 2, 7 ]
  	],
  
  	// the final line contains two segments
  	[
  		[ 2, 1, 10, 19 ],
  		[ 12, 1, 11, 20 ]
  	]
  ]);
  
  var encoded = encode( decoded );
  assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
  ```
  
  ## Benchmarks
  
  ```
  node v18.0.0
  
  amp.js.map - 45120 segments
  
  Decode Memory Usage:
  @jridgewell/sourcemap-codec       5479160 bytes
  sourcemap-codec                   5659336 bytes
  source-map-0.6.1                 17144440 bytes
  source-map-0.8.0                  6867424 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Decode speed:
  decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
  decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
  decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
  decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
  Fastest is decode: @jridgewell/sourcemap-codec
  
  Encode Memory Usage:
  @jridgewell/sourcemap-codec       1261620 bytes
  sourcemap-codec                   9119248 bytes
  source-map-0.6.1                  8968560 bytes
  source-map-0.8.0                  8952952 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Encode speed:
  encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
  encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
  encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
  encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
  Fastest is encode: @jridgewell/sourcemap-codec
  
  
  ***
  
  
  babel.min.js.map - 347793 segments
  
  Decode Memory Usage:
  @jridgewell/sourcemap-codec      35338184 bytes
  sourcemap-codec                  35922736 bytes
  source-map-0.6.1                 62366360 bytes
  source-map-0.8.0                 44337416 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Decode speed:
  decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
  decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
  decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
  decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
  Fastest is decode: source-map-0.8.0
  
  Encode Memory Usage:
  @jridgewell/sourcemap-codec       7212604 bytes
  sourcemap-codec                  21421456 bytes
  source-map-0.6.1                 25286888 bytes
  source-map-0.8.0                 25498744 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Encode speed:
  encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
  encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
  encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
  encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
  Fastest is encode: @jridgewell/sourcemap-codec
  
  
  ***
  
  
  preact.js.map - 1992 segments
  
  Decode Memory Usage:
  @jridgewell/sourcemap-codec        500272 bytes
  sourcemap-codec                    516864 bytes
  source-map-0.6.1                  1596672 bytes
  source-map-0.8.0                   517272 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Decode speed:
  decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
  decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
  decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
  decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
  Fastest is decode: @jridgewell/sourcemap-codec
  
  Encode Memory Usage:
  @jridgewell/sourcemap-codec        321026 bytes
  sourcemap-codec                    830832 bytes
  source-map-0.6.1                   586608 bytes
  source-map-0.8.0                   586680 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Encode speed:
  encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
  encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
  encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
  encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
  Fastest is encode: @jridgewell/sourcemap-codec
  
  
  ***
  
  
  react.js.map - 5726 segments
  
  Decode Memory Usage:
  @jridgewell/sourcemap-codec        734848 bytes
  sourcemap-codec                    954200 bytes
  source-map-0.6.1                  2276432 bytes
  source-map-0.8.0                   955488 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Decode speed:
  decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
  decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
  decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
  decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
  Fastest is decode: @jridgewell/sourcemap-codec
  
  Encode Memory Usage:
  @jridgewell/sourcemap-codec        638672 bytes
  sourcemap-codec                   1109840 bytes
  source-map-0.6.1                  1321224 bytes
  source-map-0.8.0                  1324448 bytes
  Smallest memory usage is @jridgewell/sourcemap-codec
  
  Encode speed:
  encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
  encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
  encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
  encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
  Fastest is encode: @jridgewell/sourcemap-codec
  ```
  
  # License
  
  MIT