Code Monkey home page Code Monkey logo

shuji's Introduction

shuji (周氏)

Reverse engineering JavaScript and CSS sources from sourcemaps

Build Status Windows build status codecov dependencies Status FOSSA Status

Background for the name

The name of the project is for honouring the legacy of a certain master from the Ryukyu archipelago who contributed to the martial arts that we today know as karate and ryukyu kobujutsu.

Getting started

Install the shuji command line utility globally with npm. Elevated privileges might be needed via sudo, depending on the platform. In most cases just:

npm install --global shuji

Please note that the minimum supported version of Node.js is 8.11.1, which is the active Long Term Support (LTS) version.

Command line options

The output of shuji --help pretty much covers all the options:

shuji - Reverse engineering JavaScript and CSS sources from sourcemaps
Usage: shuji [options] <file|directory>

  -h, --help               Help and usage instructions
  -o, --output-dir String  Output directory - default: .
  -p, --preserve           Preserve sourcemap's original folder structure.
  -M, --match String       Regular expression for matching and filtering files -
                           default: \.map$
  -v, --verbose            Verbose output, will print which file is currently being
                           processed
  -V, --version            Version number

Version 0.6.1

Testing

Test files are generated with UglifyJS 3 and sass by using files from the stretchy project, with the following commands:

uglifyjs stretchy.js --compress --mangle \
 --output stretchy.min.js --source-map includeSources
mv stretchy.min.js.map stretchy-with-sources.min.js.map

uglifyjs stretchy.js --compress --mangle \
 --output stretchy.min.js --source-map "url=inline"
mv stretchy.min.js stretchy-inline-sources.min.js

uglifyjs stretchy.js --compress --mangle \
 --output stretchy.min.js --source-map "url=stretchy.min.js.map"

sass stretchy.scss:stretchy.css

sass stretchy.scss:stretchy-inline.css --embed-source-map

Unit tests are written with tape and can be executed with npm test. Code coverage is inspected with nyc and can be executed with npm run coverage after running npm test. Please make sure it is over 90% at all times.

Contributing

"A Beginner's Guide to Open Source: The Best Advice for Making your First Contribution".

Also there is a blog post about "45 Github Issues Dos and Don’ts".

Linting is done with ESLint and can be executed with npm run lint. There should be no errors appearing after any JavaScript file changes.

Please note that any features or changed will not be merged without working unit tests.

Version history

  • v0.6.1 (2019-09-13)
    • Dependency update and better unit test coverage
  • v0.6.0 (2019-05-27)
    • Removed the option for directory recursion, it is now always a recursive operation
    • Support for reading inline source maps, from JavaScript and CSS files
    • Use npm-shrinkwrap.json for locking the working set of 3rd party dependencies
  • v0.5.1 (2019-05-21)
    • Updated dependencies in order to remove possible security vulnerabilities
  • v0.5.0 (2018-10-24)
    • Minimum Node.js version lifted from 6.9.5 to 8.11.1
    • Ignoring parts in the filename after ?
  • v0.4.0 (2017-08-10)
    • Minimum Node.js version lifted from 4.2.0 to 6.9.5
    • Configure code coverage reporting to correctly validate unit test coverage, via --exclude configuration
    • Dependencies are once again up to date :neckbeard:
  • v0.3.1 (2016-08-08)
  • v0.3.0 (2016-07-07)
    • Start using shared ESLint configuration #1
    • Test against Node.js v6
  • v0.2.0 (2016-03-14)
    • Do not overwrite existing files, instead skip them
  • v0.1.0 (2016-02-12)
    • Initial release which can make it happen

License

Copyright (c) Juga Paazmaya [email protected]

Licensed under the MIT license.

FOSSA Status

shuji's People

Contributors

paazmaya avatar renovate-bot avatar tjallingt avatar jerry9926 avatar karpotkin avatar temtum avatar fossabot avatar snyk-bot avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.