版博士V2.0程序
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

README.md 6.7 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. # @jridgewell/sourcemap-codec
  2. Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
  3. ## Why?
  4. 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.
  5. This package makes the process slightly easier.
  6. ## Installation
  7. ```bash
  8. npm install @jridgewell/sourcemap-codec
  9. ```
  10. ## Usage
  11. ```js
  12. import { encode, decode } from '@jridgewell/sourcemap-codec';
  13. var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
  14. assert.deepEqual( decoded, [
  15. // the first line (of the generated code) has no mappings,
  16. // as shown by the starting semi-colon (which separates lines)
  17. [],
  18. // the second line contains four (comma-separated) segments
  19. [
  20. // segments are encoded as you'd expect:
  21. // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
  22. // i.e. the first segment begins at column 2, and maps back to the second column
  23. // of the second line (both zero-based) of the 0th source, and uses the 0th
  24. // name in the `map.names` array
  25. [ 2, 0, 2, 2, 0 ],
  26. // the remaining segments are 4-length rather than 5-length,
  27. // because they don't map a name
  28. [ 4, 0, 2, 4 ],
  29. [ 6, 0, 2, 5 ],
  30. [ 7, 0, 2, 7 ]
  31. ],
  32. // the final line contains two segments
  33. [
  34. [ 2, 1, 10, 19 ],
  35. [ 12, 1, 11, 20 ]
  36. ]
  37. ]);
  38. var encoded = encode( decoded );
  39. assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
  40. ```
  41. ## Benchmarks
  42. ```
  43. node v18.0.0
  44. amp.js.map - 45120 segments
  45. Decode Memory Usage:
  46. @jridgewell/sourcemap-codec 5479160 bytes
  47. sourcemap-codec 5659336 bytes
  48. source-map-0.6.1 17144440 bytes
  49. source-map-0.8.0 6867424 bytes
  50. Smallest memory usage is @jridgewell/sourcemap-codec
  51. Decode speed:
  52. decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
  53. decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
  54. decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
  55. decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
  56. Fastest is decode: @jridgewell/sourcemap-codec
  57. Encode Memory Usage:
  58. @jridgewell/sourcemap-codec 1261620 bytes
  59. sourcemap-codec 9119248 bytes
  60. source-map-0.6.1 8968560 bytes
  61. source-map-0.8.0 8952952 bytes
  62. Smallest memory usage is @jridgewell/sourcemap-codec
  63. Encode speed:
  64. encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
  65. encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
  66. encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
  67. encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
  68. Fastest is encode: @jridgewell/sourcemap-codec
  69. ***
  70. babel.min.js.map - 347793 segments
  71. Decode Memory Usage:
  72. @jridgewell/sourcemap-codec 35338184 bytes
  73. sourcemap-codec 35922736 bytes
  74. source-map-0.6.1 62366360 bytes
  75. source-map-0.8.0 44337416 bytes
  76. Smallest memory usage is @jridgewell/sourcemap-codec
  77. Decode speed:
  78. decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
  79. decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
  80. decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
  81. decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
  82. Fastest is decode: source-map-0.8.0
  83. Encode Memory Usage:
  84. @jridgewell/sourcemap-codec 7212604 bytes
  85. sourcemap-codec 21421456 bytes
  86. source-map-0.6.1 25286888 bytes
  87. source-map-0.8.0 25498744 bytes
  88. Smallest memory usage is @jridgewell/sourcemap-codec
  89. Encode speed:
  90. encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
  91. encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
  92. encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
  93. encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
  94. Fastest is encode: @jridgewell/sourcemap-codec
  95. ***
  96. preact.js.map - 1992 segments
  97. Decode Memory Usage:
  98. @jridgewell/sourcemap-codec 500272 bytes
  99. sourcemap-codec 516864 bytes
  100. source-map-0.6.1 1596672 bytes
  101. source-map-0.8.0 517272 bytes
  102. Smallest memory usage is @jridgewell/sourcemap-codec
  103. Decode speed:
  104. decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
  105. decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
  106. decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
  107. decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
  108. Fastest is decode: @jridgewell/sourcemap-codec
  109. Encode Memory Usage:
  110. @jridgewell/sourcemap-codec 321026 bytes
  111. sourcemap-codec 830832 bytes
  112. source-map-0.6.1 586608 bytes
  113. source-map-0.8.0 586680 bytes
  114. Smallest memory usage is @jridgewell/sourcemap-codec
  115. Encode speed:
  116. encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
  117. encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
  118. encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
  119. encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
  120. Fastest is encode: @jridgewell/sourcemap-codec
  121. ***
  122. react.js.map - 5726 segments
  123. Decode Memory Usage:
  124. @jridgewell/sourcemap-codec 734848 bytes
  125. sourcemap-codec 954200 bytes
  126. source-map-0.6.1 2276432 bytes
  127. source-map-0.8.0 955488 bytes
  128. Smallest memory usage is @jridgewell/sourcemap-codec
  129. Decode speed:
  130. decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
  131. decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
  132. decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
  133. decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
  134. Fastest is decode: @jridgewell/sourcemap-codec
  135. Encode Memory Usage:
  136. @jridgewell/sourcemap-codec 638672 bytes
  137. sourcemap-codec 1109840 bytes
  138. source-map-0.6.1 1321224 bytes
  139. source-map-0.8.0 1324448 bytes
  140. Smallest memory usage is @jridgewell/sourcemap-codec
  141. Encode speed:
  142. encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
  143. encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
  144. encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
  145. encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
  146. Fastest is encode: @jridgewell/sourcemap-codec
  147. ```
  148. # License
  149. MIT