{"_id":"nway","_rev":"27-30d0f0a7fed34d19bc5409fd57e05e48","name":"nway","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"nway","version":"0.1.0","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"*","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"index.js","engines":{"node":">= 0.8.x"},"_id":"nway@0.1.0","dist":{"shasum":"ec76df33dd8febb5a0643d355063f707c2ab3118","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.0.tgz","integrity":"sha512-HIoV7nlMi2optK3+xmgwPHSPBGvP8yVZZr3leW9C07BU6ADKbtf/TNFkUAhSd/DNsqWEL1SCAJpOIIXWUZnoKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOS2JD29TwCcHaOu/X3d4TcViC9EcmH1TJcSaYtZ0hxAiEAuFzrz32raicCrDXSEuLwcbNaNAMucpWjTvuHZQGgA/M="}]},"_npmVersion":"1.1.63","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.1":{"name":"nway","version":"0.1.1","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"*","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"index.js","engines":{"node":">= 0.8.x"},"_id":"nway@0.1.1","dist":{"shasum":"8b326606ee5286f88a5c12f6cb62c5124ad71143","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.1.tgz","integrity":"sha512-SF5hGzXUhuNVeJKm9AufwT9kM+kD/w3VgWS7YnjYMeByGm6rKr61P6GE1iUItFOUXnJeW1oy3qPQGhVE5WdN2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoPO/x/w28XTVxmPwuhjfQpt6ylsMKvUD7nKiuyuhCmAiEA/xZv+3/WMV5fa4q+uJKYF2RzwQIKiBlssGaVZIfjoOM="}]},"_npmVersion":"1.1.63","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.2":{"name":"nway","version":"0.1.2","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"index.js","engines":{"node":">= 0.8.x"},"_id":"nway@0.1.2","dist":{"shasum":"93ddb79a485e3720d6d40cbed5af9118c2b2aef5","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.2.tgz","integrity":"sha512-b0iASJXZ/2TBdmw9kSaJwmAyQmHZTb+hq1J7YShDmTx04sazjmDvbwnstzdIYmqZ1LItTNqbHxlzUqnSP/a9hA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcuTVjsigos7kEZ1h4gZ+5pAqSmrFq0BeZPU40wdlnEAIhAPsJok20swWCKqtkvQc/0XQkBMAEntJY2JCWPLAywRXM"}]},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.3":{"name":"nway","version":"0.1.3","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"index.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.1.3","dist":{"shasum":"a5e66deed76ca47417205fd06aba9cc2b59bb5cb","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.3.tgz","integrity":"sha512-WZzDs3Ox+hDlkuWxsVbzpKdQ+WsduUnfzCUVZmkxY4ac/cLzjWUfN3kggvOKqsvPnybRj+St0Rhr8psU3oY/OQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD64I0HI01p9juD1k56LAa/JZJEudSf2c+f3VnR/7zwTQIhANS72eBkdzysGMK2mGa8U3o2fxOxw2r7XnOAfhmKfxYj"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.4":{"name":"nway","version":"0.1.4","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"index.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.1.4","dist":{"shasum":"f6fe57c81e70278800c6e85f69159923875b8088","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.4.tgz","integrity":"sha512-YgWwY/gJLLeaVdguhW7Tvpmi2dOp6PbpzqjcqeUg/OmuXqYc8iz+WR4KkCEhZ2/fBorK5T9fmJwCiLUe0LT9Yw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaXERx8kORGz4HRnjxn8eXG26T8NoMqAHgU75ofZiBTAiBP8nPpcUIK133EDaSZtyxlKZpOIVgLxm0ns+LpLcMxSA=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.5":{"name":"nway","version":"0.1.5","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.1.5","dist":{"shasum":"26086a4ef5ffe16619a7466a0be6ae81b849eb01","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.5.tgz","integrity":"sha512-iP3U1lY2dQIlFmaprFR2sF6hH77oAb4/S3LmLzWKJVrX1NGVW5yqb+tV7z/gAE0kAb31O+NuriUrdI6M/YpT7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0mF7Xk1Y7ZWTqraEiannXu85pkNdtSLe4Q0F3k4IqDAIhAJn3YIoBdLD9ZzAYrBYKcvfXwufl5k/fI0m84P8oong9"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.1.6":{"name":"nway","version":"0.1.6","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.1.6","dist":{"shasum":"46c68180076f1165b1e29761b6c2976c2452e617","tarball":"https://registry.npmjs.org/nway/-/nway-0.1.6.tgz","integrity":"sha512-Wzvr1SfyQVW3ATXcnOSP5tx7v/TGFSlUgmMeJA80LfqAHuaPwxXM4YK4BY9wZ4V8mprgU/n9JdkAt0XBldSROQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVJK6pGTicm2fGv2/RNVLG/BuhZ3uKHT5u2rR2UYX3JAiEAoRF6UNx7R+pYegKZ+6YK3RUML/QT98HR4SAovsfxw0g="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.2.0":{"name":"nway","version":"0.2.0","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x","rework":"~0.17.1"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.2.0","dist":{"shasum":"3db5d8d6e60f8a890dd074273ecbbd66fa356a26","tarball":"https://registry.npmjs.org/nway/-/nway-0.2.0.tgz","integrity":"sha512-pvDLOkQFfskStNiNfZFCqjD6EfxCwzUZhsBbl1Wth3fiqw/1Zp6yy7Gwa4zVqFvw53SxHZKeJzRpenfblPzWKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAVNCzMH1WKPY60xvkn29q1JB5Oz6Pxa0PJEZFpk1g2+AiAQR2Z0iWHI5JXqq0wjHdqPj9uDw79s5F8/eVH8CB497A=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.2.1":{"name":"nway","version":"0.2.1","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x","rework":"~0.17.1"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.2.1","dist":{"shasum":"be39c6316301e05a098662df3783c57695aaf3f2","tarball":"https://registry.npmjs.org/nway/-/nway-0.2.1.tgz","integrity":"sha512-7MOtcwR+oMrigyRJfsgLEB5DV2UADZVtVTEHfLFKh9HcdM1Xgxr3rZq9H+UEJLQCc0PnaSSAYTv2NhfIWJ4Ybw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJnnFcuAA1/D28nHBswXU5/2n4C2zT6QzP7RxL1QeXgAiBs3MdkgHQQk7Kw5jMANkWUX9G0VajmwU44VYfN1hH00g=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.3.0":{"name":"nway","version":"0.3.0","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x","rework":"~0.17.1"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"_id":"nway@0.3.0","dist":{"shasum":"58ff1c363e84fdd1a3e15bd260b43caa05be7adf","tarball":"https://registry.npmjs.org/nway/-/nway-0.3.0.tgz","integrity":"sha512-zzE/ahd3L1bQ8or+tGkhfnbTXlPZ62UmxkqrV7dzWXR7szHTYzdcXjZAF515ATbzV19WisS3EBJhV1UIhljuRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEoWJjx5uDgGNgypo8d1vH1kfSIB1bhl4iFuZjYa4U0NAiA5UhoHcOGqDbURjK3wUlr0K2v22vaAW0plqD0BP8baZg=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.3.1":{"name":"nway","version":"0.3.1","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway.git"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x","rework":"~0.17.1"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"http://registry.npmjs.org/"},"gitHead":"6b053623c33ad7a6510fa55a6c625ca67cb3ef89","bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"homepage":"https://github.com/novadiscovery/nway#readme","_id":"nway@0.3.1","scripts":{},"_shasum":"35420396ab2ba5103970c51e565fb9c0e4e71508","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"dist":{"shasum":"35420396ab2ba5103970c51e565fb9c0e4e71508","tarball":"https://registry.npmjs.org/nway/-/nway-0.3.1.tgz","integrity":"sha512-8blTpHg+qErjly43CApjbw42IXJXv80UU6dtJ8Mb1uKDei73vqaLrlq+aKBoKO/9NqNhu4Zm8dT7q4Z5FqWGvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9Y3KTnEakcbb5aqZrJxAcl2DxtIfpAFH7f03G4riVSAiEAteszoubCyiD9fggvAf2VxIoHE5gim4Zhz0GvPUEv7vI="}]},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nway-0.3.1.tgz_1481537517683_0.05911046266555786"},"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."},"0.3.2":{"name":"nway","version":"0.3.2","description":"Bundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !","repository":{"type":"git","url":"git://github.com/novadiscovery/nway.git"},"url":"http://novadiscovery.github.com/nway","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"dependencies":{"async":"0.x.x","underscore":"1.x.x","underscore.string":"2.x.x","commander":"0.x.x","uglify-js":"<2.0.0","colors":"0.x.x","crc":"0.2.x","resolve":"0.2.x","mkdirp":"0.3.x","debug":"0.7.x","minimatch":"0.2.x","rework":"~0.17.1"},"devDependencies":{"should":"*","coffee-script":"*","mocha":"*","glob":"*","send":"*","zombie":"1.4.1","supertest":"*","connect":">=2.6.0","jade":">=0.27.6","moment":"*"},"bin":{"nway":"bin/nway"},"licenses":[{"type":"MIT","url":"https://github.com/novadiscovery/nway/raw/master/LICENSE"}],"main":"lib/nway.js","engines":{"node":">= 0.8.x"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"gitHead":"96dcf01fb733ae6109e7956475b9f11573778b8c","bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"homepage":"https://github.com/novadiscovery/nway#readme","_id":"nway@0.3.2","scripts":{},"_shasum":"38b7bee4d1c6b09537f885b3bfc5264c2ddef24e","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"},"dist":{"shasum":"38b7bee4d1c6b09537f885b3bfc5264c2ddef24e","tarball":"https://registry.npmjs.org/nway/-/nway-0.3.2.tgz","integrity":"sha512-yFTogu6acDPjSEwrlpIGUKKUT9OTTa5yhoeP9ZYu+hNBBfP9VgMkiKWf+TaViMmkWGS9qKdoX5QoFCjV/0+/ZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9RkCeeKbLIe6m3eh5WMh7W18Vu0uD3L43PPBGDJJyeAiBo+aTm542hfsnJP6gCfhrPHZRKcjOAyzFnxYKUlJqQIA=="}]},"maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nway-0.3.2.tgz_1481538219834_0.19136905809864402"},"deprecated":"Deprecated project, no longer maintained. We recommend browserify or webpack instead."}},"readme":"# nway\n\n**Deprecation Notice**\n\nNway was an innovative way to bundle application from another time, this project is no longer maintained. Please consider [browserify](http://browserify.org/) and [webpack](https://webpack.github.io/).\n\n---\n\n\nBundle commonjs javascript modules for the browser with cache optimisation: write browser-side script the node's way !\n\n**Github project:** https://github.com/novadiscovery/nway ● **Full documentation:** http://nway.novadiscovery.com/\n\n\n\n# Features\n\n  - Transforms node.js modules to browser-side code\n  - [Optimize](#cache_optimisation) client side cache by generating uniq, life-cachable, bundle of minimized sources.\n  - Provides a [connect.js](http://www.senchalabs.org/connect/) [middleware to apply cache information](#middleware) to HTTP responses before the static provider treats the request (may be [connect.static()](http://www.senchalabs.org/connect/static.html)).\n  - [Asynchronous code splitter module to drive client bundle generation](#arequire)\n  - [Module substitution to browser-only module](#substitute)\n  - [Script compression using uglify](#uglify)\n  - [Command line utility](#cmd) and [JavaScript API](#api)\n\n# Installation\n\n## With npm\n\n    npm install -g nway\n\n## Or clone the git repository\n\n    git clone git://github.com/novadiscovery/nway.git\n\nThen do\n\n    cd nway\n    npm install\n\nLink nway in npm to use the command line utility:\n\n    npm link\n\n# Introduction ##\n\n## It would be great if ... ###\n\nWhen you use Node.js for **server side** code, it is really great to **use the same language than client side** for many reasons. But, when you create client side code, it would be even greater if you could **organize your code the same way** you do for server side. And, in some cases, be able to **use the same code, server and client side** (at least part of it).\n\n## CommonJS is from Mars, AMD is from Venus ###\n\nNode provides an awesome way to create modular projects. This modularity, among other things, is a reason of the success of [node.js](http://nodejs.org/). It uses the [CommonJS convention](http://commonjs.org), and is implementation is described in the [module documentation](http://nodejs.org/api/modules.html).\n\nBut the CommonJS convention is a synchronous paradigm: all the dependencies must be instantly accessible. There is no mechanism to asynchronously load a dependency like [Asynchronous Module Definition](https://github.com/amdjs/amdjs-api/wiki/AMD) do. That is usualy what we need in rich client applications where source code size may be huge: to load only want we need and differ the loading of other parts of the application according to user needs.\n\n## nway magic trick ###\n\nNway transforms for you synchronous Node CommonJS modules into optimized client side AMD-like modules.\n\nBy detecting dependencies between your modules, and by adding an asynchronous code splitting concept, nway *understands* your application workflow and packs generated AMD-like modules in many cachable optimized files. This part of nway is inspired from [Google Web Toolkit Code Splitting](https://developers.google.com/web-toolkit/doc/latest/DevGuideCodeSplitting) mechanism.\n\n## What nway does ###\n\n**Consider the following module graph. Each dot represents a CommonJS module eventually requiring some other modules. The entry point can be any module identified as a main module (usually the index.js of a package).**\n\nAll your *client side modules* are standard Node.js modules, like any other module. They can require any *server side* module, packaged modules (such underscore or async) as well as Node.JS core modules (with some limitations).\n\nThe only difference is the use of an asynchronous require method (provided by nway). This asynchronous require `arequire()` is used to identify **splitting points** in your application workfow.\n\n![Client and server side modules](http://nway.novadiscovery.com/nway_01.png)\n\n---\n\n**Now, using nway, the following bundles will be identified, packed and optimized.**\n\nWhen a spliting point is reached, nway loads asynchronously the bundle that contains the required module (if not allready loaded) before returning the required module object.\n\n![Packet resolved](http://nway.novadiscovery.com/nway_02.png)\n\n---\n\n**The *module & require* point of view of the application workflow will be as follows (every behavior is configurable):**\n\n  - The client loads an un-cachable bootstrap (`bootstrap.nocache.js`) that contains both the the basic loading system and the dependency map.\n  - The bootstrap automaticaly loads the main (generated) bundle `E4FA2896C.js`: this is the one that contains the entry point module.\n  - The entry point is started and, as the user goes deeper and deeper in the application, the spitting points are reached thus triggering the loading of the required bundles (C then D or B).\n  - The loaded bundle is a javascript file identified by a hash name (e.g. `5FA13642E.js`) based on its content and the configuration used by nway to compile it: Using nway's middleware or any other static server mechanism, the bundle's files are served with cache ad-vitam HTTP headers.\n\n![Packet and splitting point workflow](http://nway.novadiscovery.com/nway_03.png)\n\n## nway just use nodejs modules mechanism ###\n\nAs the main usage of nway is to transform any nodejs module into browser compatible modules, not any transformation of your code is required to make it work with nway.\n\nUnless you need to explicitly split your application in asynchronously loaded bundles, nway only rely on standard **module** concept: `module.exports` object and `require()` mechanism:\n\n  - *\"In Node, files and modules are in one-to-one correspondence\"* ([nodejs module documentation](http://nodejs.org/api/modules.html))\n  - `module.exports` is a object always defined in a module. By default `module.exports` is an empty object `{}`. The value assigned to the `module.exports` object is what a module expose to those who requiring this module. `module.exports` support any kind of javascript value: object, string, number, function, date, boolean, array, etc.\n  - `require()` is a module scoped function used to import other modules. The value returned by `require('./foo.js')` is the value assigned to `module.exports` by the `./foo.js` module.\n  - A required module is only executed once. The exported value is cached for later require() calls done in any other modules.\n  - The  path passed to the `require()` function may be:\n    - A relative or absolute path to a file (with, or without .js extension): `require('./foo')` where `foo.js` is a file in the same folder.\n    - A relative or absolute path to a folder with a `index.js` file inside: `require('./bar')` where `bar` is a folder with a `index.js` file inside.\n    - A node package installed with npm localy or globaly: `require('underscore')` where `underscore` is node package resolvable by the nodejs `require.resolver()`.\n\n# Give us an exemple ! ##\n\n## Let's first write some standard server-side node module.\n\nThe first exemple uses [demo/01_simple](#demo/01_simple/simple.demo.js):\n\n    demo/01_simple (where the commands, below, are executed)\n     ├╴■ public\n     | ├╴■ generated\n     | └╴▫ index.html\n     ├╴▫ simple.demo.js\n     └╴■ src\n       ├╴▫ bar.js\n       ├╴▫ foo.js\n       └╴▫ index.js\n\n\n**src/index.js:**\nThis is the entry point of our application\n\n    console.log('index.js: I require foo.js');\n    var foo = require('./foo');\n\n    console.log('index.js: I call run() on foo');\n    foo.run();\n\n**src/foo.js:**\n\n    console.log('foo.js: I require bar.js');\n    var bar = require('./bar');\n\n    console.log('foo.js: I add a function run() too my export object');\n    exports.run = function() {\n      console.log('foo.js: In my run(). Now I call bar.');\n      bar('Foo');\n    }\n\n**src/bar.js:**\n\n    console.log('bar.js: I export a function');\n\n    module.exports = function(who) {\n      console.log('bar.js: I say hello to', who);\n    }\n\n**public/index.html:**\nThis file only import the nway generated bootstrap:\n\n    ...\n    <script src=\"./generated/bootstrap.nocache.js\" type=\"text/javascript\" charset=\"utf-8\" sync=\"true\"></script>\n    ...\n\n## This demo do really usefull things:\n\n*You can run `node src/index.js` to see what happen when execute server side with node*\n\n  - index.js require foo.js\n  - foo.js require bar.js\n  - bar.js export a Function\n  - foo.js add a function run to the exports object\n  - index.js call run() on foo.js\n  - foo.js call the function exported by bar in is run() function\n  - bar.js execute the executed function called by foo\n\n## nway it ! ###\n\nNow, using the nway command line, we generate the client version of this usefull application. The path given to nway is the main module (the entry point) of the application:\n\n    nway src/index.js\n\nnway shows both the configuration used to generate client sources and the resolved dependency tree.\n\nBy [default](#lib/defaultOptions.js) nway will output the client generated files in the `public/generated` folder (you can change this by using the `-o --output` option).\n\nIn the `public/generated` there are now two files:\n\n    public/generated\n     ├╴▫ bootstrap.nocache.js\n     └╴▫ F9C09E355E2151A2.js\n\n<a name=\"cache_optimisation\"></a>\n**The `bootstrap.nocache.js` is included by `public/index.html`**:\nThis tiny file contains a script loader that knows which file contains the required application modules. The bootstrap is very small, and changes as the application changes: that is why the client browser must **never keep it in cache**.\n\n**The `F9C09E355E2151A2.js` file contains all the application modules'**:\nThe name may be different: the first 8 chars `F9C09E35` change depending on nway's options and version number, the last 8 chars `5E2151A2` change with the modules contents: that is why the client browser **can keep it in cache for life**.\n\n*See [nway middleware and cache optimisation](#middleware)* for more information about this\n\nNow, open `public/index.html` in a browser. Open the javascript console. You should see the following output:\n\n    index.js: I require foo.js\n    foo.js: I require bar.js\n    bar.js: I export a function\n    foo.js: I add a function run() to my export object\n    index.js: I call run() on foo\n    foo.js: In my run(). Now I call bar.\n    bar.js: I say hello to Foo\n\nThat is the same result of the *server side* execution using only node: `node src/index.js`.\n\nThe [demo/01_simple/simple.demo.js](#demo/01_simple/simple.demo.js) file do, with the nway API, exactly what we do with nway command line.\n\n## What happens when the `index.html` file is executed?\n\n  1. The `bootstrap.nocache.js` file is loaded, it contains the AMD mechanism (require, define, script loader, ...) and the application map (index of bundle files and the modules they contain).\n  2. When the DOM is ready, the bootstrap resolve wich file contains the main module — index.js, the entry point — (`F9C09E355E2151A2.js`) and loads it.\n  3. The `F9C09E355E2151A2.js` file register the modules it contains (among which the main module).\n  4. The main module is executed by the bootstrap with the appropriate scoped variables (require(), module.exports, etc.)\n  5. The main module requires foo.js, foo.js is executed with some dedicated scoped require, and so on.\n\n\n<a name=\"arequire\"></a>\n# arequire: the asynchronous require() ##\n\n## Devide and conquer... speed ###\n\nAs we said before, nway does not force you to use nway-specific code to work: everything works just like it would in node. But, from the browser-side point of view, as your rich internet application become huge you don't want to load all the application at once. You just want to load progressively the parts of the application that the user needs. Also, if you update only a small part of your application, you don't want to loose all the benefits of the client browser cache (*See [nway middleware and cache optimisation](#middleware)*)...\n\n**That is why, nway provides an application splitter: `arequire()`.**\n\n`arequire()` is totally compatible with node. It is just a node module that provides the same behavior than node's `require()` except that the result (the exported value) is returned asynchronously to a callback function:\n\n    // The require() way:\n    var foo = require('foo');\n    console.log(foo);\n\n    // The arequire() way:\n    arequire('foo', function(err, foo) {\n      console.log(foo)\n    });\n\nThe goal of `arequire()` is not to remplace `require()`! You can just use it when you want **nway** to split your application.\n\n\n## How to import arequire() ###\n\n**arequire()** is very special: it needs the `require()` function of your module to work. So nway provides an `arequire` generator:\n\n    // Get an arequire method for the current module:\n    var arequire = require('nway/arequire')(require);\n\nIt is a good habit to import arequire() at the begining of your module. Of course, the variable name does not necessarily have to be *arequire*.\n\nThe only restriction is: **do not use another variable with the same name in your module**. It may work, but it could confuse nway's parser. In fact, essentialy due to performance reasons, nway's parser will not try to detect variable's scopes. Anyway you don't want to do this because is not neat!\n\n## Exemple using arequire(): [demo/02_arequire](#demo/02_arequire/arequire.demo.js) ###\n\n    demo/02_arequire  (where the commands, below, are executed)\n     ├╴▫ arequire.demo.js\n     ├╴■ public\n     | ├╴■ generated\n     | ├╴▫ index.html\n     | └╴▫ style.css\n     └╴■ src\n       ├╴▫ bar.js\n       ├╴▫ foo.js\n       └╴▫ index.js\n\n**src/index.js:**\nThis is the entry point of our application\n\n    console.log('index.js: I get a arequire() function for my module');\n\n    // This is where arequire is imported.\n    //\n    // It is a good habit to import arequire() on top of your module.\n    // The variable name does not have to be 'arequire', but it can prevent\n    // confusions to use this name.\n    //\n    // Caution: for parsing efficiency reason, do not use another variable with the same name\n    var arequire = require('nway/arequire')(require);\n\n    console.log('index.js: For demo purposes, I export my application object');\n\n    var application = module.exports = {\n\n      goFoo: function(callback) {\n        console.log('index.js: goFoo(). Asynchronously require foo.js. This is an application split point.');\n        arequire('./foo.js', function(err, foo) {\n          console.log('index.js: foo.js is imported. Execute its exported function foo().');\n          foo();\n          callback && callback();\n        })\n      }\n\n\n      ,goBar: function(callback) {\n        console.log('index.js: goBar(). Asynchronously require bar.js. This is an application split point.');\n        arequire('./bar.js', function(err, bar) {\n          console.log('index.js: bar.js is imported. Execute its exported function bar().');\n          bar();\n          callback && callback();\n        })\n      }\n    }\n\n\n    console.log('index.js: Go into the FOO part of the application:');\n    application.goFoo(function() {\n\n      console.log('index.js: Now go into the BAR part of the application:');\n      application.goBar();\n\n    });\n\n**src/foo.js:**\n\n    // foo.js\n\n    console.log(\"foo.js: I am a huge part of the application and I export a function\");\n\n    module.exports = function() {\n      console.log(\"foo.js: I am executed\");\n    }\n\n**src/bar.js** looks like foo.js\n\n\n*You can run `node src/index.js` to see what happens when execute in server-side mode with node*\n\n  - `index.js` creates an `arequire()` for is module and then creates an application with some methods that asynchronously require other modules\n  - `index.js` loads the FOO part of the application.\n  - Once the FOO part is loaded, `index.js` loads the BAR part of the application\n\n**Run nway to generate the client version**\n*Note: We do not specify `index.js`, this is redundant in node since `src` is a folder with an `index.js` inside!*\n\n    nway src\n\n**Open `public/index.html`** in your browser (`open public/index.html`), the output in your javascript console is the same of the pure nodejs execution of our application: `node src`:\n\n    index.js: I get a arequire() function for my module\n    index.js: For demo purpose, I export my application object\n    index.js: Go in the FOO part of the application:\n    index.js: goFoo(). Asynchronously require foo.js. This is an application split point.\n    foo.js: I am a huge part of the application and I export a function\n    index.js: foo.js is imported. Execute it exported function foo().\n    foo.js: I am executed\n    index.js: Now go in the BAR part of the application:\n    index.js: goBar(). Asynchronously require bar.js. This is an application split point.\n    bar.js: I am a huge part of the application and I export a function\n    index.js: bar.js is imported. Execute it exported function bar().\n    bar.js: I am executed\n\n**Great but what is the difference ?**\n\nIf you look at the `public/generated` folder, there are 4 files:\n\n    public/generated\n     ├╴▫ B70FBF6B67B040FD.js (bar.js)\n     ├╴▫ B70FBF6B94EE0B24.js (foo.js)\n     ├╴▫ B70FBF6BD1CB26E3.js (index.js and nway arequire generator)\n     └╴▫ bootstrap.nocache.js\n\nThis is the nway splitting effect!\n\n  - One bundle contains the main module `index.js` but there is nothing else inside (except a very small nway module: the arequire function generator).\n  - The two other bundles contains `foo.js` and `bar.js` and are loaded only when the application needs them.\n\n\n## Asynchronously require many modules ? ###\n\n### Solution 1: pack your multi-dependency into a module ####\n\n**foo.js** needs **a.js** and **b.js** to be asynchronously loaded before it can execute a function (the AMD way would be `require(['a','b'], function (a, b) {})`)\n\nCreate a **bundle_ab.js** that exports **a.js** and **b.js**:\n\n    module.exports = { a: require('./a'), b: require('./b')};\n\nNow in **foo.js** you can do:\n\n    arequire('./bundle_ab', function(error, results) {\n      // Now you have results.a and results.b ...\n    })\n\n### Solution 2: just do it async ! ####\n\nMany javascript libraries such as [async.js](https://github.com/caolan/async) or [queue.js](https://github.com/mbostock/queue) simplify this asynchronous pattern: You control exactly what you do and you can re-use the usefull patterns of this library in your application without the need to reload it.\n\n**foo.js** with async:\n\n    var async = require('async'), arequire = require('nway/arequire')(require);\n\n    async.parallel([\n       function(done) { arequire('./a.js', done)}\n      ,function(done) { arequire('./b.js', done)}\n    ]\n    , function(results) {\n        // Now you have results.a and results.b ...\n    })\n\n<a name=\"substitute\"></a>\n# Module substitution ##\n\nSome times you need to substitute a server-only module by a browser-compatible module.\n\nThere are many reasons to prevent yourself from doing this: even for testing where using headless browser is a much better solution to test browser-only modules.\n\nIn some cases you have no choice: for example, if you are using an external package that require a server-side-only module that is easy to override for browser side.\n\n**See module substitution sample in [substitute.demo.js](#demo/03_substitute/substitute.demo.js)**\n\n<a name=\"middleware\"></a>\n<a name=\"cache_optimisation\"></a>\n\n# Cache optimisation and nway middleware() ##\n\nnway's cache optimisation is based on:\n\n  - nway middleware. It applies http cache optimisation on nway-generated content.\n  - Generated bundle-file naming. A hash-name is used based on: nway version, compilation options and bundle content.\n  - A very tiny bootstrap script, never cached, that drives bundle loading\n\nExemple: consider the following `public/generated` folder:\n\n    public/generated\n     ├╴▫ bootstrap.nocache.js\n     ├╴▫ CDC551BB0420A359.js\n     ├╴▫ CDC551BB18A726CD.js\n     ├╴▫ CDC551BB1A74CB97.js\n     ├╴▫ CDC551BB29E43756.js\n     ├╴▫ CDC551BB5FCDA7AD.js\n     └╴▫ CDC551BB822417A8.js\n\n**`bootstrap.nocache.js` is the only file explicitly included in you web page**:\nThis file contains a script loader that knows which file contains the required application modules. The bootstrap is very small, and change as the application changes: that is why the client browser must **never keep it in cache**.\n\n** Files like `CDC551BB0420A359.js` contains the application modules**:\nThe first 8 chars `CDC551BB` change depending on nway's options and version number: that is why many files begin with this string. The last 8 chars `0420A359` change with the modules contents.\n\n**To summarize:**\n\n  - The bootstrap must never be cached (or, at least, it can be a http 304 response).\n  - The bundles are naturally cachable for life.\n\n**The nway middleware does exactly that**: it explicitly forces the http header obtain this effect (caching all generated bundles by the bootstrap). But you could do the same with any http server.\n\n**Exemple with a small connect.js driven http server:**\n\n     var connect = require('connect')\n       , http    = require('http')\n       , nway  = require('nway')\n     ;\n\n     // The options consumed by nway.middleware()\n     // must be the same than the ones used for compilation\n     // (at least the 'bootstrap', 'client' and 'extension' keys)\n     var options = {client:'/generated', bootstrap: 'bootstrap.nocache.js', extension: '.js'};\n\n     var app = connect()\n        .use(nway.middleware(options))\n        .use(connect.static('public')) // Path to public files\n        .listen(3000);\n\n     http.createServer(app).listen(3000);\n\nYour app is now served on http://localhost:3000/\n\n# Limitations ##\n\n### Dynamic require & arequire module argument is not *yet* allowed *(may be one day... or may be not)*:\n\n    // You can't yet do this kind of things:\n    var foobar = 'foobar';\n    require(foobar);\n\n    // Or this:\n    var x = 'foo';\n    require('module_' + x);\n\n    // Or this:\n    ['a','b'].forEach(function(m) { require(m) });\n\n    // Or this:\n    async.map(['a','b'], arequire, function(err, results) {});\n\n### Variable re-affecting for require or arequire:\n\n    // You can't do this:\n    var arequire = require('nway/arequire')(require);\n    var split    = arequire;\n    split('./a.js', function() {}) // Ok in nodejs but this won't work on browser side !\n\n    // Nor this:\n    var r = require;\n    r('path'); // Ok in nodejs but this won't work on browser side !\n\n### Using server-only package: ###\n\n  - nway can use alternative to node builtin packages (`event`, `path`, etc.). However some packages, such as node `fs`, can only be executed on server side (nway is compatible with browserify packages).\n  - All packages that uses C++ compiled modules... can't be compiled by nway to be run in the browser.\n\nAnyway, when you experience this kind of needs, consider reviewing in your application design. If after that your needs persist, consider using [`options.substitute`](#substitute) to provide a browser-alternative module.\n\n\n<a name=\"cmd\"></a>\n# Command line\n\n## Usage:\n\n    $ nway --help\n\n    Usage: nway [options] <index>\n\n    Options:\n\n      -h, --help                output usage information\n      -V, --version             output the version number\n      -b, --bootstrap [string]  Bootstrap file path [bootstrap.nocache.js]\n      -c, --client [string]     Client relative path to load module packages [./generated]\n      -e, --extension [string]  Extension to append to generate package [.js]\n      -f, --force               Force compilation, even if the destination file exist@[false]\n      -m, --nomangle            Do not mangle names (used only with --uglify) [false]\n      -o, --output [string]     Output path for generated module packages [./public/generated]\n      -p, --prepend [string]    Prepend all generated script with a string [null]\n      -n, --norun               Do not run entry point automaticaly when DOM is ready [false]\n      -s, --nosqueeze           No deep optimization (used only with --uglify) [false]\n      -u, --uglify              Uglify source using Uglify.js [false]\n      -y, --beautify            Generate human readable source (used only with --uglify) [false]\n      --onepack                 Pack all modules in a standalone source and send the result on the standards output  [false]\n\n## ZSH Completion ###\n\nTo enable zsh completion add this in any zsh configuration file: `compdef _gnu_generic nway`\n\n\n## Play with command line & demo ###\n\nGo in the demo folder:\n\n    cd demo\n\nExecute nway without options, just choose the application main module as entry point:\n\n    nway src/index.js\n\nNow in the `public/generated` folder contain the files generated by nway:\n\n    public/generated\n     ├╴▫ 15986D7A18A726CD.js\n     ├╴▫ 15986D7A214696ED.js\n     ├╴▫ 15986D7A822417A8.js\n     ├╴▫ 15986D7A8ECD6654.js\n     ├╴▫ 15986D7AF2AEA598.js\n     ├╴▫ 15986D7AF395D729.js\n     └╴▫ bootstrap.nocache.js\n\nEvery time you change a file content, or any nway options, the generated file names change.\n\nThen open the demo in a navigator:\n\n    open public/index.html\n\nNow, you can play with the demo application:\n\n  - Click on buttons to start a part of the application\n  - In the debug output (or your browser console) you can see the bundles loaded by nway.\n\nYou can do more things by using your browser javascript console (developper tool):\n\n  - Get the entry point: `var ep = require('/')`\n  - Then play with your entry point object: `ep.voronoi()`, `ep.load('underscore', function(_) {alert(_)})`, ...\n\n## Debug information ###\n\nnway uses [debug](https://github.com/visionmedia/debug) to output some debug information.\n\nTo show debug information, add `DEBUG='nway*'` before any command or script that uses nway:\n\n    DEBUG=nway* nway src/index.js -f\n\n(`-f` is used to force nway to re-generate all files)\n\n\n## Play with some command line options ###\n\n<a name=\"uglify\"></a>\n### -u, --uglify & co\n\nWith the option `uglify`, the generated sources are optimized and minimized with [UglifyJS](https://github.com/mishoo/UglifyJS):\n\n    nway src/index.js -u\n\nIf you look at the generated sources in `public/generated`, you can see that all the sources are deeply optimized.\n\nGenerating sources using uglify takes much much longer (at least the first time). Consider using this optimization for production compilation only.\n\nSome other options can alter uglify behaviours:\n\n  - `-m, --nomangle`: Keep original variable and function names\n  - `-s, --nosqueeze`: Disable deep source optimizations process\n  - `-y, --beautify`: Add indentation and line return to make generated source human readable.\n\n### -p, --prepend [string]\n\nPrepends all generated files with the given string (such a copyright notice):\n\n    nway src/index.js -p '// Copyright Foobar'\n\n### --onepack ###\n\nForces nway to bundle all the generated bundles in one single bundle. When you use the `--onepack` options, nway do not write anything to the disk, instead it writes the compilation result to the standard output.\n\nThis is usefull when you do not want a bootstrap file and you do not care of application splitting (to dump the script in a standalone html file for instance).\n\n    nway src/index.js --onepack > mypack.js\n\n<a name=\"api\"></a>\n\n\n\n# JavaScript API\n\nThis is the common usage of nway. For details, please read the API documentation.\n\n    var nway = require('nway');\n\n\n    nway({\n      // Generated file destination (absolute or relative path\n      // to the current working directory)\n        output      : './public/generated'\n\n      // Client url to the generated files (relative or absolute url)\n      , client      : './generated'\n\n      // The bootstrap file name (*.nocache.* pattern may be used to force static\n      // file server to disable cache)\n      , bootstrap   : 'bootstrap.nocache.js'\n\n      // Globals are used for script optimisation : those variable\n      // are scoped in each bundle to reduce file size when using\n      // uglify to mangle variable names\n      , globals     : 'window, document, console, require'\n\n      // The entry point (absolute or relative path to the\n      // current working directory)\n      , index       : './index.js'\n\n      // Generated packed file extension\n      , extension   : '.js'\n\n      // Do not automaticaly run main entry point (the index) when the DOM is ready\n      // (you have to do require('/') by your self when the dom is ready)\n      , norun         : false\n\n      // Optimise source with uglify\n      , uglify      : false\n\n      // Uglify option : do not mangle names\n      , nomangle    : false\n\n      // Uglify option : do not do deep source optimisation\n      , nosqueeze   : false\n\n      // Uglify option : generate readable source (comments are\n      // allways removed with uglify)\n      , beautify    : false\n\n      // Force re-generation even if a generated file allready exist with\n      // the same hash\n      , force       : false\n\n      // Prepend all the generated file with this string (maybe a copyright)\n      , prepend     : null\n\n      // core & node_modules remplacements\n      //\n      // Node.js core & node_modules remplacement are resolved using the following process :\n      //\n      // - Check for an alternative in options.alternative : { 'package-name': 'alternative-package-name'}\n      // - Check for a browserify alternative : {'http': 'node_modules/http-browserify'}\n      // - Check for a nway alternative : {'http': 'node_modules/http-nway'}\n      //\n      , alternative : {}\n\n      // Replace a file path resolved by another file path path\n      , substitute  : {}\n\n      // Alias list :\n      //\n      //   keys = module alias\n      //   value = module resolvable filepath\n      //\n      // nway provide a default alias for main module (entry point) : '/'\n      //\n      // You may define alias to manualy doing a require('myAlias') a module\n      // in the browser. Remember nway hide the real module path in generated sources\n      // as long as you not explicitly provide an alias to them.\n      , alias       : {}\n\n      // Used to force re-generation of bundle files when nway version\n      // has change (as the options are used to generate global uniq id)\n      , version     : require('../package.json').version\n\n      // To change global uniq id\n      , catkeyboard : ''\n\n\n\n      // Array of patterns of filepath to exclude form parsing\n      // Use it to enhance compilation speed on allready bundled source without\n      // any commonjs mechanism inside.\n      //\n      // Allowed values are :\n      //   - string : Used as a minimatch pattern on absolute file path\n      //   - regexp : Used to test absolute file path\n      //   - function : Receive the absolute file path and the Module object. Returns a boolean.\n      , noparse     : []\n\n      // Exclude some dependency from the generation process\n      // You will have to add those dependencies by your self using require.define()\n      // Exclude is an array of minimatch (https://github.com/isaacs/minimatch) wildcards\n      , excludes    : []\n\n\n      // compress is a compression function.\n      // default is nway.defaultCompressor (based on uglify)\n      , compress    : null\n\n      // prewrite is a function to execute on the source before\n      // write to disk : the function receive a source, and an object\n      // The object may be (instanceof) : an nway/lib/Bootstrap or a nway/lib/DepNode (bundle)\n      // This function MUST always return a source\n      , prewrite    : null\n\n      // Use the onepack builder : all the modules bundled in one source (ignore async splitter)\n      , onepack     : false\n\n      // Parsers :\n      // an hash of extra parser objects :\n      //\n      //    - match : minimatch pattern or regex on module filepath or function (with the same\n      //      arguments passed to the parse function listed below)\n      //    - parse : Parser function that return the parsed (and transformed) source\n      //      (see nway/lib/parsers/*) for exemples\n      //\n      // The parse function used in main nway parser is the one with a `match`\n      // pattern that suceed on the filepath\n      //\n      // Each `parse` function receive those arguments :\n      //\n      //    - src  (string)   : Source to parse and transform\n      //    - module (object) : Module object created by the main parser function\n      //    - makeModule (function): Main parser module creator : receives an absolute\n      //                        filepath to parse, and return a new Module object.\n      //    - options (object): An nway options object\n      //\n      // And return a parsed (and some time transformed) source\n      //\n      // nway defaults parsers (in nway/lib/parsers) :\n      //\n      //   - commonjs javascript source (.js)\n      //   - json source (comments allowed) (.json)\n      //\n      , parsers  : []\n    })\n\n\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2012-2013 Novadiscovery <osproject@novadiscovery.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","maintainers":[{"name":"jponchon","email":"jean.ponchon@novadiscovery.com"}],"time":{"modified":"2022-06-22T14:28:05.109Z","created":"2012-12-18T10:26:46.258Z","0.1.0":"2012-12-18T10:26:47.745Z","0.1.1":"2013-01-13T15:59:50.682Z","0.1.2":"2013-03-20T00:13:25.214Z","0.1.3":"2013-06-26T10:22:14.485Z","0.1.4":"2013-06-27T15:44:33.770Z","0.1.5":"2013-07-03T09:26:30.537Z","0.1.6":"2013-07-04T15:17:39.912Z","0.2.0":"2013-07-04T16:57:12.340Z","0.2.1":"2013-07-08T14:00:39.583Z","0.3.0":"2013-07-10T08:49:50.547Z","0.3.1":"2016-12-12T10:12:00.136Z","0.3.2":"2016-12-12T10:23:42.299Z"},"author":{"name":"Novadiscovery","email":"osproject@novadiscovery.com"},"repository":{"type":"git","url":"git://github.com/novadiscovery/nway.git"},"homepage":"https://github.com/novadiscovery/nway#readme","keywords":["commonjs","require","adynchronous","bundle","browser","cache","optimisation"],"contributors":[{"name":"Jean Ponchon","email":"jean.ponchon@novadiscovery.com"}],"bugs":{"url":"https://github.com/novadiscovery/nway/issues"},"readmeFilename":"README.md"}