├── .gitattributes ├── .gitignore ├── .travis.yml ├── Cargo.toml ├── README.md ├── ci ├── before_deploy.sh ├── install.sh └── script.sh ├── esparse ├── Cargo.toml ├── LICENSE.md ├── data │ └── angular-1.2.5.js ├── examples │ └── lex-echo.rs └── src │ ├── ast.rs │ ├── lex.rs │ ├── lib.rs │ └── skip.rs ├── pax.sublime-project └── pax ├── Cargo.toml ├── LICENSE.md ├── examples ├── browser │ ├── index.js │ └── node_modules │ │ ├── alternate-files │ │ ├── foo-browser.js │ │ ├── foo.js │ │ ├── internal-import.js │ │ ├── nested │ │ │ ├── foo-browser.js │ │ │ └── foo.js │ │ └── package.json │ │ ├── alternate-main │ │ ├── index-browser.js │ │ ├── index.js │ │ └── package.json │ │ ├── alternate-module │ │ ├── index.js │ │ ├── package.json │ │ └── shim.js │ │ ├── alternate-nesting │ │ ├── baz │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ └── right.js │ │ ├── index.js │ │ ├── node_modules │ │ │ └── alternate-nesting2 │ │ │ │ ├── foo-browser │ │ │ │ └── bar.js │ │ │ │ ├── foo │ │ │ │ ├── bar-browser.js │ │ │ │ ├── bar.js │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ ├── package.json │ │ ├── replace.js │ │ └── wrong.js │ │ ├── browser-unsafe │ │ ├── index.js │ │ └── package.json │ │ └── ignored │ │ ├── index.js │ │ └── package.json ├── es6-cycles │ ├── even.mjs │ ├── index.mjs │ └── odd.mjs ├── es6-everywhere-simple │ ├── index.js │ ├── math.js │ ├── package-lock.json │ └── package.json ├── es6-forms │ ├── index.mjs │ └── mod.mjs ├── es6-import-meta │ └── index.mjs ├── es6-reexport │ ├── counter.mjs │ ├── counter2.mjs │ ├── index.mjs │ ├── inner.mjs │ └── outer.mjs ├── es6-simple │ ├── index.mjs │ ├── math.mjs │ ├── package-lock.json │ └── package.json ├── es6-views │ ├── counter.mjs │ └── index.mjs ├── module-scope │ ├── dir │ │ └── sub.js │ └── index.js └── simple │ ├── index.js │ ├── math.js │ ├── package-lock.json │ └── package.json ├── fixtures ├── browser │ ├── alternate-main-bare │ │ ├── main-browser.js │ │ ├── main-default.js │ │ └── package.json │ ├── alternate-main-rel │ │ ├── main-browser.js │ │ ├── main-default.js │ │ └── package.json │ ├── alternate-main-subdir-bare │ │ ├── browser │ │ │ └── main.js │ │ ├── default │ │ │ └── main.js │ │ └── package.json │ └── alternate-main-subdir-rel │ │ ├── browser │ │ └── main.js │ │ ├── default │ │ └── main.js │ │ └── package.json ├── resolve-order │ ├── 1-dir.js │ ├── 1-dir.json │ ├── 1-dir │ │ ├── index.js │ │ └── index.json │ ├── 1-file │ ├── 1-file.js │ ├── 1-file.json │ ├── 2-dir.json │ ├── 2-dir │ │ ├── index.js │ │ └── index.json │ ├── 2-file.js │ ├── 2-file.json │ ├── 3-dir │ │ ├── index.js │ │ └── index.json │ ├── 3-file.json │ └── 4-dir │ │ └── index.json ├── resolve │ ├── dir-js │ │ ├── index.js │ │ └── other-file.js │ ├── dir-json │ │ ├── index.json │ │ └── other-file.js │ ├── dir-mjs │ │ ├── index.mjs │ │ └── other-file.js │ ├── dotfiles │ │ ├── .js │ │ ├── .json │ │ ├── .mjs │ │ ├── .thing │ │ ├── .thing-js.js │ │ ├── .thing-json.json │ │ ├── .thing-mjs.mjs │ │ ├── mod-js │ │ │ ├── .thing-js.js │ │ │ └── package.json │ │ ├── mod-json │ │ │ ├── .thing-json.json │ │ │ └── package.json │ │ ├── mod-mjs │ │ │ ├── .thing-mjs.mjs │ │ │ └── package.json │ │ └── mod-noext │ │ │ ├── .thing │ │ │ └── package.json │ ├── external.js │ ├── file-and-dir.js │ ├── file-and-dir │ │ ├── index.js │ │ ├── subdir │ │ │ └── otherfile.js │ │ └── submod │ │ │ ├── otherfile.js │ │ │ └── package.json │ ├── file-and-mod.js │ ├── file-and-mod │ │ ├── index.js │ │ ├── main.js │ │ ├── package.json │ │ ├── subdir │ │ │ └── otherfile.js │ │ └── submod │ │ │ ├── otherfile.js │ │ │ └── package.json │ ├── mod-js-dir-bare │ │ ├── index.js │ │ ├── main-js │ │ │ └── index.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-dir-rel │ │ ├── index.js │ │ ├── main-js │ │ │ └── index.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-ext-bare │ │ ├── index.js │ │ ├── main-js.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-ext-rel │ │ ├── index.js │ │ ├── main-js.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-noext-bare │ │ ├── index.js │ │ ├── main-js.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-noext-rel │ │ ├── index.js │ │ ├── main-js.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-js-slash-bare │ │ ├── main.js │ │ ├── main │ │ │ └── index.js │ │ └── package.json │ ├── mod-js-slash-rel │ │ ├── main.js │ │ ├── main │ │ │ └── index.js │ │ └── package.json │ ├── mod-json-dir-bare │ │ ├── index.json │ │ ├── main-json │ │ │ └── index.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-json-dir-rel │ │ ├── index.json │ │ ├── main-json │ │ │ └── index.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-json-ext-bare │ │ ├── index.json │ │ ├── main-json.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-json-ext-rel │ │ ├── index.json │ │ ├── main-json.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-json-noext-bare │ │ ├── index.json │ │ ├── main-json.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-json-noext-rel │ │ ├── index.json │ │ ├── main-json.json │ │ ├── other-file.js │ │ └── package.json │ ├── mod-main-nesting-bare │ │ ├── other-file.js │ │ ├── package.json │ │ └── subdir │ │ │ ├── index.js │ │ │ ├── inner-main.js │ │ │ └── package.json │ ├── mod-main-nesting-rel │ │ ├── other-file.js │ │ ├── package.json │ │ └── subdir │ │ │ ├── index.js │ │ │ ├── inner-main.js │ │ │ └── package.json │ ├── mod-mjs-dir-bare │ │ ├── index.mjs │ │ ├── main-mjs │ │ │ └── index.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-mjs-dir-rel │ │ ├── index.mjs │ │ ├── main-mjs │ │ │ └── index.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-mjs-ext-bare │ │ ├── index.mjs │ │ ├── main-mjs.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-mjs-ext-rel │ │ ├── index.mjs │ │ ├── main-mjs.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-mjs-noext-bare │ │ ├── index.mjs │ │ ├── main-mjs.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-mjs-noext-rel │ │ ├── index.mjs │ │ ├── main-mjs.mjs │ │ ├── other-file.js │ │ └── package.json │ ├── mod-noext-bare │ │ ├── index │ │ ├── main-noext │ │ ├── other-file.js │ │ └── package.json │ ├── mod-noext-rel │ │ ├── index │ │ ├── main-noext │ │ ├── other-file.js │ │ └── package.json │ ├── mod-outer │ │ ├── index.js │ │ ├── main.js │ │ ├── mod-parent-noslash │ │ │ └── package.json │ │ ├── mod-parent-slash │ │ │ └── package.json │ │ └── package.json │ ├── mod-outside │ │ ├── other-file.js │ │ └── package.json │ ├── mod-self-noslash │ │ ├── index.js │ │ ├── other-file.js │ │ └── package.json │ ├── mod-self-slash │ │ ├── index.js │ │ ├── other-file.js │ │ └── package.json │ ├── named-js.js │ ├── named-json.json │ ├── named-jsz.jsz │ ├── named-mjs.mjs │ ├── named-noext │ ├── node_modules │ │ ├── @user │ │ │ └── scoped │ │ │ │ └── index.js │ │ ├── deep │ │ │ └── dir1 │ │ │ │ └── dir2 │ │ │ │ └── dir3 │ │ │ │ ├── d-dir-js │ │ │ │ ├── index.js │ │ │ │ └── other-file.js │ │ │ │ ├── d-dir-json │ │ │ │ ├── index.json │ │ │ │ └── other-file.js │ │ │ │ ├── d-dir-mjs │ │ │ │ ├── index.mjs │ │ │ │ └── other-file.js │ │ │ │ ├── d-file-and-dir.js │ │ │ │ ├── d-file-and-dir │ │ │ │ └── index.js │ │ │ │ ├── d-file-and-mod.js │ │ │ │ ├── d-file-and-mod │ │ │ │ ├── index.js │ │ │ │ ├── main.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-dir-bare │ │ │ │ ├── index.js │ │ │ │ ├── main-js │ │ │ │ │ └── index.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-dir-rel │ │ │ │ ├── index.js │ │ │ │ ├── main-js │ │ │ │ │ └── index.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-ext-bare │ │ │ │ ├── index.js │ │ │ │ ├── main-js.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-ext-rel │ │ │ │ ├── index.js │ │ │ │ ├── main-js.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-noext-bare │ │ │ │ ├── index.js │ │ │ │ ├── main-js.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-noext-rel │ │ │ │ ├── index.js │ │ │ │ ├── main-js.js │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-slash-bare │ │ │ │ ├── main.js │ │ │ │ ├── main │ │ │ │ │ └── index.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-js-slash-rel │ │ │ │ ├── main.js │ │ │ │ ├── main │ │ │ │ │ └── index.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-dir-bare │ │ │ │ ├── index.json │ │ │ │ ├── main-json │ │ │ │ │ └── index.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-dir-rel │ │ │ │ ├── index.json │ │ │ │ ├── main-json │ │ │ │ │ └── index.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-ext-bare │ │ │ │ ├── index.json │ │ │ │ ├── main-json.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-ext-rel │ │ │ │ ├── index.json │ │ │ │ ├── main-json.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-noext-bare │ │ │ │ ├── index.json │ │ │ │ ├── main-json.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-json-noext-rel │ │ │ │ ├── index.json │ │ │ │ ├── main-json.json │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-main-nesting-bare │ │ │ │ ├── other-file.js │ │ │ │ ├── package.json │ │ │ │ └── subdir │ │ │ │ │ ├── index.js │ │ │ │ │ ├── inner-main.js │ │ │ │ │ └── package.json │ │ │ │ ├── d-mod-main-nesting-rel │ │ │ │ ├── other-file.js │ │ │ │ ├── package.json │ │ │ │ └── subdir │ │ │ │ │ ├── index.js │ │ │ │ │ ├── inner-main.js │ │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-dir-bare │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs │ │ │ │ │ └── index.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-dir-rel │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs │ │ │ │ │ └── index.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-ext-bare │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-ext-rel │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-noext-bare │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-mjs-noext-rel │ │ │ │ ├── index.mjs │ │ │ │ ├── main-mjs.mjs │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-noext-bare │ │ │ │ ├── index │ │ │ │ ├── main-noext │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-noext-rel │ │ │ │ ├── index │ │ │ │ ├── main-noext │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-mod-outside │ │ │ │ ├── other-file.js │ │ │ │ └── package.json │ │ │ │ ├── d-named-js.js │ │ │ │ ├── d-named-json.json │ │ │ │ ├── d-named-jsz.jsz │ │ │ │ ├── d-named-mjs.mjs │ │ │ │ └── d-named-noext │ │ ├── external │ │ │ ├── file.js │ │ │ ├── index.js │ │ │ └── subdir │ │ │ │ └── index.js │ │ ├── n-dir-js │ │ │ ├── index.js │ │ │ └── other-file.js │ │ ├── n-dir-json │ │ │ ├── index.json │ │ │ └── other-file.js │ │ ├── n-dir-mjs │ │ │ ├── index.mjs │ │ │ └── other-file.js │ │ ├── n-file-and-dir.js │ │ ├── n-file-and-dir │ │ │ └── index.js │ │ ├── n-file-and-mod.js │ │ ├── n-file-and-mod │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ └── package.json │ │ ├── n-mod-js-dir-bare │ │ │ ├── index.js │ │ │ ├── main-js │ │ │ │ └── index.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-dir-rel │ │ │ ├── index.js │ │ │ ├── main-js │ │ │ │ └── index.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-ext-bare │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-ext-rel │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-noext-bare │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-noext-rel │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-js-slash-bare │ │ │ ├── main.js │ │ │ ├── main │ │ │ │ └── index.js │ │ │ └── package.json │ │ ├── n-mod-js-slash-rel │ │ │ ├── main.js │ │ │ ├── main │ │ │ │ └── index.js │ │ │ └── package.json │ │ ├── n-mod-json-dir-bare │ │ │ ├── index.json │ │ │ ├── main-json │ │ │ │ └── index.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-json-dir-rel │ │ │ ├── index.json │ │ │ ├── main-json │ │ │ │ └── index.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-json-ext-bare │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-json-ext-rel │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-json-noext-bare │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-json-noext-rel │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-main-nesting-bare │ │ │ ├── other-file.js │ │ │ ├── package.json │ │ │ └── subdir │ │ │ │ ├── index.js │ │ │ │ ├── inner-main.js │ │ │ │ └── package.json │ │ ├── n-mod-main-nesting-rel │ │ │ ├── other-file.js │ │ │ ├── package.json │ │ │ └── subdir │ │ │ │ ├── index.js │ │ │ │ ├── inner-main.js │ │ │ │ └── package.json │ │ ├── n-mod-mjs-dir-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs │ │ │ │ └── index.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-mjs-dir-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs │ │ │ │ └── index.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-mjs-ext-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-mjs-ext-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-mjs-noext-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-mjs-noext-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-noext-bare │ │ │ ├── index │ │ │ ├── main-noext │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-noext-rel │ │ │ ├── index │ │ │ ├── main-noext │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-mod-outside │ │ │ ├── other-file.js │ │ │ └── package.json │ │ ├── n-named-js.js │ │ ├── n-named-json.json │ │ ├── n-named-jsz.jsz │ │ ├── n-named-mjs.mjs │ │ ├── n-named-noext │ │ ├── shadowed │ │ │ └── index.js │ │ └── shallow │ │ │ ├── s-dir-js │ │ │ ├── index.js │ │ │ └── other-file.js │ │ │ ├── s-dir-json │ │ │ ├── index.json │ │ │ └── other-file.js │ │ │ ├── s-dir-mjs │ │ │ ├── index.mjs │ │ │ └── other-file.js │ │ │ ├── s-file-and-dir.js │ │ │ ├── s-file-and-dir │ │ │ └── index.js │ │ │ ├── s-file-and-mod.js │ │ │ ├── s-file-and-mod │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ └── package.json │ │ │ ├── s-mod-js-dir-bare │ │ │ ├── index.js │ │ │ ├── main-js │ │ │ │ └── index.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-dir-rel │ │ │ ├── index.js │ │ │ ├── main-js │ │ │ │ └── index.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-ext-bare │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-ext-rel │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-noext-bare │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-noext-rel │ │ │ ├── index.js │ │ │ ├── main-js.js │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-js-slash-bare │ │ │ ├── main.js │ │ │ ├── main │ │ │ │ └── index.js │ │ │ └── package.json │ │ │ ├── s-mod-js-slash-rel │ │ │ ├── main.js │ │ │ ├── main │ │ │ │ └── index.js │ │ │ └── package.json │ │ │ ├── s-mod-json-dir-bare │ │ │ ├── index.json │ │ │ ├── main-json │ │ │ │ └── index.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-json-dir-rel │ │ │ ├── index.json │ │ │ ├── main-json │ │ │ │ └── index.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-json-ext-bare │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-json-ext-rel │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-json-noext-bare │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-json-noext-rel │ │ │ ├── index.json │ │ │ ├── main-json.json │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-main-nesting-bare │ │ │ ├── other-file.js │ │ │ ├── package.json │ │ │ └── subdir │ │ │ │ ├── index.js │ │ │ │ ├── inner-main.js │ │ │ │ └── package.json │ │ │ ├── s-mod-main-nesting-rel │ │ │ ├── other-file.js │ │ │ ├── package.json │ │ │ └── subdir │ │ │ │ ├── index.js │ │ │ │ ├── inner-main.js │ │ │ │ └── package.json │ │ │ ├── s-mod-mjs-dir-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs │ │ │ │ └── index.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-mjs-dir-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs │ │ │ │ └── index.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-mjs-ext-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-mjs-ext-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-mjs-noext-bare │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-mjs-noext-rel │ │ │ ├── index.mjs │ │ │ ├── main-mjs.mjs │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-noext-bare │ │ │ ├── index │ │ │ ├── main-noext │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-noext-rel │ │ │ ├── index │ │ │ ├── main-noext │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-mod-outside │ │ │ ├── other-file.js │ │ │ └── package.json │ │ │ ├── s-named-js.js │ │ │ ├── s-named-json.json │ │ │ ├── s-named-jsz.jsz │ │ │ ├── s-named-mjs.mjs │ │ │ └── s-named-noext │ ├── subdir │ │ ├── node_modules │ │ │ └── shadowed │ │ │ │ └── index.js │ │ └── subdir2 │ │ │ └── node_modules │ │ │ └── shadowed │ │ │ └── index.js │ └── unicode │ │ └── 𝌆.js └── tools │ ├── package-lock.json │ └── package.json └── src ├── es6.rs ├── head.js ├── main.rs ├── opts.rs ├── tail.js └── test ├── itt.js └── mod.rs /.gitattributes: -------------------------------------------------------------------------------- 1 | esparse/data/**/*.js linguist-vendored 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | **/*.rs.bk 3 | Cargo.lock 4 | private 5 | node_modules 6 | *.sublime-workspace 7 | .DS_Store 8 | .cargo 9 | !pax/examples/browser/**/node_modules 10 | !pax/fixtures/**/node_modules 11 | pax/fixtures/tools/node_modules 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # Based on the "trust" template v0.1.2 2 | # https://github.com/japaric/trust/tree/v0.1.2 3 | 4 | dist: trusty 5 | language: rust 6 | services: docker 7 | sudo: required 8 | 9 | env: 10 | global: 11 | - CRATE_NAME=pax 12 | 13 | matrix: 14 | include: 15 | # Android 16 | #- env: TARGET=aarch64-linux-android DISABLE_TESTS=1 17 | #- env: TARGET=arm-linux-androideabi DISABLE_TESTS=1 18 | #- env: TARGET=armv7-linux-androideabi DISABLE_TESTS=1 19 | #- env: TARGET=i686-linux-android DISABLE_TESTS=1 20 | #- env: TARGET=x86_64-linux-android DISABLE_TESTS=1 21 | 22 | # iOS 23 | #- env: TARGET=aarch64-apple-ios DISABLE_TESTS=1 24 | # os: osx 25 | #- env: TARGET=armv7-apple-ios DISABLE_TESTS=1 26 | # os: osx 27 | #- env: TARGET=armv7s-apple-ios DISABLE_TESTS=1 28 | # os: osx 29 | #- env: TARGET=i386-apple-ios DISABLE_TESTS=1 30 | # os: osx 31 | #- env: TARGET=x86_64-apple-ios DISABLE_TESTS=1 32 | # os: osx 33 | 34 | # Linux 35 | #- env: TARGET=aarch64-unknown-linux-gnu 36 | #- env: TARGET=arm-unknown-linux-gnueabi 37 | #- env: TARGET=armv7-unknown-linux-gnueabihf 38 | #- env: TARGET=i686-unknown-linux-gnu 39 | #- env: TARGET=i686-unknown-linux-musl 40 | #- env: TARGET=mips-unknown-linux-gnu 41 | #- env: TARGET=mips64-unknown-linux-gnuabi64 42 | #- env: TARGET=mips64el-unknown-linux-gnuabi64 43 | #- env: TARGET=mipsel-unknown-linux-gnu 44 | #- env: TARGET=powerpc-unknown-linux-gnu 45 | #- env: TARGET=powerpc64-unknown-linux-gnu 46 | #- env: TARGET=powerpc64le-unknown-linux-gnu 47 | #- env: TARGET=s390x-unknown-linux-gnu DISABLE_TESTS=1 48 | - env: TARGET=x86_64-unknown-linux-gnu 49 | # - env: TARGET=x86_64-unknown-linux-musl 50 | 51 | # OSX 52 | #- env: TARGET=i686-apple-darwin 53 | # os: osx 54 | - env: TARGET=x86_64-apple-darwin 55 | os: osx 56 | 57 | # *BSD 58 | #- env: TARGET=i686-unknown-freebsd DISABLE_TESTS=1 59 | #- env: TARGET=x86_64-unknown-freebsd DISABLE_TESTS=1 60 | #- env: TARGET=x86_64-unknown-netbsd DISABLE_TESTS=1 61 | 62 | # Windows 63 | - env: 64 | - TARGET=x86_64-pc-windows-gnu 65 | - SKIP_TESTS="test_resolve_consistency test_resolve_unicode" 66 | - env: 67 | - TARGET=i686-pc-windows-gnu 68 | - SKIP_TESTS="test_resolve_consistency test_resolve_unicode" 69 | 70 | # Bare metal 71 | # These targets don't support std and as such are likely not suitable for 72 | # most crates. 73 | # - env: TARGET=thumbv6m-none-eabi 74 | # - env: TARGET=thumbv7em-none-eabi 75 | # - env: TARGET=thumbv7em-none-eabihf 76 | # - env: TARGET=thumbv7m-none-eabi 77 | 78 | # Testing other channels 79 | - env: TARGET=x86_64-unknown-linux-gnu 80 | rust: nightly 81 | - env: TARGET=x86_64-apple-darwin 82 | os: osx 83 | rust: nightly 84 | allow_failures: 85 | - rust: nightly 86 | 87 | before_install: 88 | - set -e 89 | - rustup self update 90 | 91 | install: 92 | - sh ci/install.sh 93 | - if [ "$TARGET" = "x86_64-apple-darwin" ]; then nvm install stable; nvm use stable; fi 94 | - source ~/.cargo/env || true 95 | 96 | script: 97 | - bash ci/script.sh 98 | 99 | after_script: set +e 100 | 101 | before_deploy: 102 | - sh ci/before_deploy.sh 103 | 104 | deploy: 105 | api_key: 106 | secure: "PmbvU2JqDtPPxChibE6slSRNFUAT0vbKmLgirx0PIckqc7/z9lIk0U7RT/YMsf56apPP2eEEd1uvCbPfT1Yhc1h1jzEBv4rRmcrGaRVqvNEAaae2/W/RN4q/xNyioygIFlC5FsXHKdUDjoSYsCYiKcuTKWW6HXOVaY+J38DaYVQfzFIR3hmyyzTDYhhonV3WNzOoJJHkOBCxWRnzCKizGZ60j5mmIEJl46pDUmHfEORzbSae5a82vHvrGEzqA3Qajb6xe7e6k8x/VoTxBV18/j5Q7Qo5T2Dnh6p30gNZm2DbQlfMG3UU+3gbi750YKuxEMrGAEokAY2x5eOrt5j6kJvyQCkoPOECb3kw9t9ye4jlz6xKMUCeeuBlwQmsBMCCO0vV+etyfywOFOnTKZhYJteJhQkBf3iUmdEsDf0sQe0HC52yeU6w824BqXhldSP7gIGpSnhivn2se0WPAGuOuLLWXiGRcQPiYHy4sASjPHmimNCjuhBnFQlbuk8OXoHkGNxtDIMX5sCJFNXcUDhJmChr5rICRiNK+5q3gH2dV7rIoPl91TSCAwu865o0VXmcjIZ+DUdGz3bt3gC/WV7DR5/rMWId69iY1WqNiTK6SAT1cQd2IK7WuNMNKL0FG/+lYbchII6plfMn+TSzD6cOZIjgJoKE56fYTc2hNBsl0fs=" 107 | file_glob: true 108 | file: $TRAVIS_TAG-$TARGET.* 109 | on: 110 | rust: stable 111 | all_branches: true 112 | condition: $TRAVIS_TAG = pax-* 113 | provider: releases 114 | skip_cleanup: true 115 | draft: true 116 | 117 | cache: cargo 118 | before_cache: 119 | # Travis can't cache files that are not readable by "others" 120 | - chmod -R a+r $HOME/.cargo 121 | 122 | # branches: 123 | # only: 124 | # # release tags 125 | # - /^pax-v\d+\.\d+\.\d+.*$/ 126 | # - master 127 | 128 | notifications: 129 | email: 130 | on_success: never 131 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["esparse", "pax"] 3 | 4 | [profile.release] 5 | lto = true 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pax 2 | 3 | The [fastest](#is-it-fast) JavaScript bundler in the galaxy. Fully supports ECMAScript module syntax (`import`/`export`) in addition to CommonJS `require()`. 4 | 5 | - [Why do I need it?](#why-do-i-need-it) 6 | - [How do I get it?](#how-do-i-get-it) 7 | - [How do I use it?](#how-do-i-use-it) 8 | - [Does it do source maps?](#does-it-do-source-maps) 9 | - [Modules?](#modules) 10 | - [What are the options?](#what-are-the-options) 11 | - [Is it fast?](#is-it-fast) 12 | 13 | # Why do I need it? 14 | 15 | Because your bundler is **too slow**. 16 | 17 | You know the feeling. You make that tweak, hit ⌘S ⌘Tab ⌘R, and… **nothing changes**. You get the old version. You beat the bundler. You wait a few seconds, hit ⌘R again, and your changes finally show up. But it’s too late—**you’ve lost momentum.** It’s the wrong shade of pink. You spelled “menu” with a z. The bug still happens sometimes. 18 | 19 | Rinse. Repeat. Ten cycles later, things are looking good. It’s time to `git commit`. But you spent **more time waiting than working**. And it’s your bundler’s fault. 20 | 21 | Pax is a bundler. But you’ll never beat it. Why? 22 | 23 | - It’s parallelized. It makes the most of your cores. 24 | - It’s minimal. It isn’t bogged down by features you don’t need. 25 | - It knows exactly enough about JavaScript to handle dependency resolution. It doesn’t even bother parsing most of your source code. 26 | 27 | Don’t waste time waiting for your bundler to do its thing. Use Pax while you’re developing, and **iterate to your heart’s content**. Use your super-cool, magical, slow-as-molasses bundler for releases, when you don’t care how long it takes to run. 28 | 29 | # How do I get it? 30 | 31 | ```sh 32 | > cargo install pax 33 | ``` 34 | 35 | If you don’t have `cargo`, install it with [https://rustup.rs](https://rustup.rs/). 36 | 37 | # How do I use it? 38 | 39 | ```js 40 | // index.js: 41 | const itt = require('itt') 42 | const math = require('./math') 43 | console.log(itt.range(10).map(math.square).join(' ')) 44 | 45 | // math.js: 46 | exports.square = x => x * x 47 | ``` 48 | 49 | ```sh 50 | > px index.js bundle.js 51 | ``` 52 | 53 | Slap on a `