npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cush/sorcery

v1.4.7

Published

Resolve a chain of sourcemaps back to the original source

Downloads

44

Readme

sorcery v1.4.7

Fork of Rich-Harris/sorcery that caters toward build tools.

const sorcery = require('sorcery');

// Returns a v3 source map.
const sourceMap = sorcery([
  {content: minifiedCode, map: {...}},
  transpiledCode, // <= a string with an inline map
  sourceCode, // <= the original source code
]);

// Provide hooks into your file cache.
const sourceMap = sorcery(sources, {
  // Return a string or null for file requests.
  readFile(file) {
    return cache[file].read();
  },
  // Return a string, object, false, or null for sourcemap requests.
  getMap(file) {
    return cache[file].sourceMap;
  }
});

Options

  • sourceRoot: ?string a relative path prepended to each source path when consumed
  • generatedFile: ?string where the generated file lives relative to the new sourcemap
  • includeContent: ?boolean whether to embed source contents in the new sourcemap (default: true)
  • readFile(file) read the contents of a file (may be a source or sourcemap)
  • getMap(file) get a sourcemap from your file cache

When defined, the sourceRoot option is assumed to be relative to the sourcemap's directory. When the sourcemap is consumed, the sourceRoot prepended to every path in its sources array.

When defined, the generatedFile option is assumed to be relative to the sourcemap's directory. This option merely sets the file property of the returned SourceMap object. Its value should be identical to wherever you save the content in relation to the generated sourcemap.

The readFile function is required if any source is missing its content. This usually occurs when a sourcemap has no sourcesContent property. It must return either a string or null.

The getMap function must return either a JSON string, a sourcemap object, or null. If this option is undefined (or you return null), the generated file is parsed for a sourceMappingURL comment at the end. If you already know that a file has no sourcemap, you should return false to avoid extra work.

sorcery.portal

The portal function takes the same arguments as sorcery, but it returns a function instead of a SourceMap object.

The returned function traces a (line: number, column: number) pair to its original source. It returns an object (or null if the pair is untraceable) which has the following properties:

  • source: ?string the original filename
  • line: number the original line
  • column: number the original column
  • name: ?string the original identifier
const trace = sorcery.portal(chain, options);
trace(1 /* one-based line */, 0 /* zero-based column */); // {source, line, column, name} || null

License

MIT