2.0.7 • Published 4 years ago

caffeine-source-map v2.0.7

Weekly downloads
1,464
License
ISC
Repository
github
Last release
4 years ago

Caffeine.SourceMap

  • Primary purpose: Generate source maps
  • Secondary purposes:
    • Consume source-maps in a simple-to-understand way, primarily for validation. The source-map npm is probably a faster choice for consuming source-maps for real-world uses, but it's clunky.
  • Future:
    • Source-map validation
    • Source-map visualization

Install

npm install caffeine-source-map

Based on

Why rewrite source-map npm?

  • Performance:
    • source-map npm's generator isn't very performance-optimized. It creates at least 3 objects per sourcemap segment generated. CaffeineSourceMap generates no extra objects beyond those needed to create the SourceNode tree.
      • CaffeineScript generates a structure of nested arrays. Using source-map, I have to compactFlatten them first, which means creating more objects and iterating over the contents twice. If a SourceNode is JUST a string, no need to create an array.
    • Since CaffeineSourceMap works with sourceIndexes, if we don't actually generate a sourceMap, we never have to compute the lines and columns and yet we can still use CaffeineSourceMap to output the generated code.
  • Simplicity:
    • As a single-file compiler, we can dramatically simplify the API.
    • CaffeineSourceMap.SourceNode allows @children to be:
      • string
      • sourceNode
      • null / undefined
      • or an arbitrarily, nested array-structure of the above.
    • CaffeineSourceMapWe works in sourceIndex-space most the time. Code-generation doesn't have to think about lines and columns. Only CaffeineSourceMap needs to actually worry about lines and columns.
  • Consistency:
    • both column AND LINE are 0-based, same as the SourceMapV3 standard. I had so many off-by-one bugs with source-map npm!
2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

6 years ago

1.1.0

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago