Code Monkey home page Code Monkey logo

ender's Introduction

ENDER

Ender is a full featured package manager for your browser

It allows you to search, install, manage, and compile front-end JavaScript packages and their dependencies for the web. We like to think of it as NPM's little sister.

Ender is not a JavaScript library

It's not a jQuery replacement. It's not even a static asset. It's a tool for making the consumption of front-end JavaScript packages dead simple and incredibly powerful.

Ender

WHY?

In the browser - small, loosely coupled modules are the future and large, tightly-bound monolithic libraries are the past!

Ender capitalizes on this by offering a unique way to bring together the exciting work happening in JavaScript packages and allows you to mix, match, and customize your own build, suited to your individual needs, without all the extra cruft that comes with larger libraries.

With Ender, if one library goes bad or unmaintained, it can be replaced with another. Need a specific package version? No problem! Does your package have dependencies? Let us handle that for you too!

MORE INFO

For more information checkout http://enderjs.com

BUILD STATUS

Ender Build Status

Ender Args Parser Build Status

Ender Builder Build Status

Ender Dependency Graph Build Status

Ender Installer Build Status

Ender Minify Build Status

Ender Package Util Build Status

Ender Repository Build Status

Licence

Ender is Copyright (c) 2012-2013 Dustin Diaz @ded, Jacob Thornton @fat and Rod Vagg @rvagg and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.

ender's People

Contributors

amccollum avatar andrewplummer avatar beatgammit avatar cbarrick avatar davidwood avatar ded avatar download13 avatar fat avatar mattknox avatar micahzoltu avatar ocean avatar pvorb avatar raynos avatar rvagg avatar tbranyen avatar tf avatar torgeir avatar voxpelli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ender's Issues

programmatic ender api use

Howdy ------- currently when you require("ender") in a node app, the only method you get is exec. Would it be cool/kosher to allow third-party code access to to the entire API defined in lib/ender.js? I've tested it with two simple changes, setting

module.exports = API

and moving the exec method into that API literal ---- then nothing else would have to change, but you'd get programmatic access to all the nice API methods. It's working on my local machine, so I can do something like....

require("ender").add(["bean"])

.... and the library rebuilds real nice.

Anyway, just a thought --- would enable cool third-party code for managing your ender build from an external app.

Underscore template settings are ignored

Changing the template delimiters for underscore has no affect, the default delimiters remain active.

Example:

$.templateSettings = {
    interpolate : /\{\{(.+?)\}\}/g
};
var template = $.template("Hello {{ name }}");
template({name:"World"});

Output:

Hello {{ name }}

Expected:

Hello World

However the default delimiters still work:

$.templateSettings = {
    interpolate : /\{\{(.+?)\}\}/g
};
var template = $.template("Hello <%= name %>");
template({name:"World"});

ender -b jquery fails

source at ./lib/ender.file.js:230 is undefined due to ./lib/ender.file.js:254, caused by some dependency package.json not defining the main property, in which case it is generated to be [].

Wouldn't the correct thing be to change ./lib/ender.file.js:254 from

if (!filePaths.length) return callback && callback();

into

if (!filePaths.length) return;

That is, if no paths are supplied, simply skip the package?

https://github.com/ender-js/Ender/blob/master/lib/ender.file.js#L230
https://github.com/ender-js/Ender/blob/master/lib/ender.file.js#L254

Licensing concerns

I grabbed the latest version of Ender and used the build command with 4 packages:

ender build domready qwery bean jquery

Note: the license for jQuery is dual MIT/GPLv2.

The output I got was:

/*!
  * Ender: open module JavaScript framework
  * copyright Dustin Diaz & Jacob Thornton 2011 (@ded @fat)
  * https://ender.no.de
  * License MIT
  * Build: ender build domready qwery bean jquery
  */
<minified code>

The concern I have is that not only is the minifed file licensed entirely under Dustin Diaz and Jacob Thornton, but its also entirely now licensed under MIT. All the required comment headers containing licensing are also now stripped.

Are there any plans to correct how this build script outputs?

no longer recursively assembles dependencies

something has happened in the past few days that if there is a dependency of modules more than 1-level deep the deeper modules aren't fetched and assembled in.

myModule - depends on
    * module a - depends on
        * fooModule
        * barModule
    * module b

fooModule and barModule will not be compiled in, but module a and b will compile in fine.

Error: cannot find module 'ender'

$ npm install ender
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info preinstall [email protected]
npm info install [email protected]
npm info postinstall [email protected]
npm info predeactivate [email protected]
npm info deactivate [email protected]
npm info postdeactivate [email protected]
npm info preactivate [email protected]
npm info activate [email protected]
npm info postactivate [email protected]
npm info build Success: [email protected]
npm ok

$ ender --help

node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'ender'
    at Function._resolveFilename (module.js:299:11)
    at Function._load (module.js:245:25)
    at require (module.js:327:19)
    at Object.<anonymous> (/usr/local/lib/node/.npm/ender/0.2.1/package/bin/ender:2:1)
    at Module._compile (module.js:383:26)
    at Object..js (module.js:389:10)
    at Module.load (module.js:315:31)
    at Function._load (module.js:276:12)
    at Array.<anonymous> (module.js:402:10)
    at EventEmitter._tickCallback (node.js:108:26)

What did I do wrong?

emile has no "issues"

So I report here:

Porting famous growl.js to ender.js revealed that:

  1. nodeList has no .find() -- users should refactor $(root).find(selector) to be $(selector, root)
  2. we miss easing methods such as slideUp
  3. fadeIn doesn't imply show, so fading-in display: none elements should be refactored

Best regards,
--Vladimir

".bin" dir in node_modules causes ender build failure

The package "view" includes other modules which have associated bin scripts. This creates a ".bin" directory in view's node_modules directory.

npm install view -g
ender build view

Will throw error: "something went wrong while trying to read node_modules/view/node_modules/.bin/package.json"

In ender.file.js I've added this check which fixes the problem for me:

, constructDependencyTree: function (packages, dir, callback) {
    var tree = {}, x = 0;
    packages.forEach(function (name) {
      if(name == '.bin'){
        return;
      }
      ...

I'm not going to do a push request for this because it seems like there needs to be a more comprehensive check somewhere.

Thanks - Ryan

Require doesn't work for packages with local dependencies

If I have a relatively large Ender module that is split up into separate files, Ender does not correctly make these files available. For example:

  • package root (with package.json)
    • lib (here's all my code)
      • index.js
      • feature (directory with code for a feature)
        • code1.js
        • code2.js

Currently having multiple files in a package doesn't seem to be supported.

Perhaps we could do something similar to what node does? We could sand-box each installed module with its own require handler. This handler would:

  1. Check a global package list
  2. Check the local file list

Only the name (from the package.json) should show up in the global package list, but the path (relative to its respective package.json) of each file would show up in a package-specific file list. Since we don't have a filesystem to work with, this may be the best way to manage local dependencies.

Use Case

From the above example, index.js would have the path ./lib/index and code1.js would have the path ./lib/feature/code1 when I require code1.js from index.js, my require statement would look something like require('./feature/code1').

Inside require, the path would be tested against the global package-list. Since there are no packages with this path, the path could be normalized (remove ./) and a regex would be built (/feature/code1$/), which would be tested against all of the modules until found ./lib/feature/code1 because feature/code1 is a substring of it.

Has Jeesh grown?

I'm not sure wether or not this is an issue, but according to http://ender.no.de the jeesh package should be pretty light.
When I run ender build jeesh it builds a package with the following content:

Building using NPM version 1.0.15
installing packages with command "npm install ender-js domready klass scriptjs qwery bonzo bean reqwest emile     underscore"... 
this can take a minute...

after it's built I and I run ender info, I get the following output

Active packages:
├── [email protected] - an events api for javascript
├── [email protected] - Asyncronous JavaScript loader and dependency manager
├── [email protected] - blazing fast CSS1|2|3 query selector engine
├── [email protected] - bullet proof DOM ready method
├── [email protected] - JavaScript's functional programming helper library.
├── [email protected] - Class provider with classical inheritance interface
├── [email protected] - A robust lightweight wrapper for asynchronous http requests
├── [email protected] - no-thrills stand-alone CSS animation JavaScript framework
└── [email protected] - Library agnostic, extensible DOM utility

My Node stack:

reqwest fails to work

When I add reqwest to ender via ender add reqwest the library does not work. According to the documentation I should be able to do something like $.ajax({...}). $.ajax does exist, but it is just a basic object and has no actual functionality.

TypeError: object is not a function

Not sure if where to post this since it appears to be an error in uglify-js, but as it's involving Ender this is my first stop. Just installed Ender via NPM and attempted to run the example build on the website. Got the following.

Destiny:~ chiper$ /Users/chiper/node_modules/ender/bin/ender build scriptjs query underscore
Welcome to ENDER - The no-library library
-----------------------------------------
Building using NPM version 1.0.5
installing packages with command "npm install ender-js scriptjs query underscore"...
this can take a minute...
finished installing local packages
assembling packages...

/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:272
        throw new JS_Parse_Error(message, line, col, pos);
              ^
TypeError: object is not a function
    at Object.CALL_NON_FUNCTION (native)
    at new JS_Parse_Error (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:261:20)
    at js_error (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:272:15)
    at parse_error (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:363:17)
    at Object.next_token [as input] (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:588:17)
    at next (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:692:37)
    at Object.semicolon [as 1] (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:735:38)
    at prog1 (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:1270:28)
    at $statement (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:840:40)
    at block_ (/Users/chiper/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:964:32)
Destiny:~ chiper$ 

Internet Explorer bug?

I i run the example in Internet Explorer, I get an error saying "Object doesn't support this property or method" on line 1196. I avoided the error by adding an if statement on the prop variable:

var p = parseFloat(prop), q = prop ? prop.replace(/^[-\d.]+/, '') : prop;

Used Internet Explorer 8

Ender.js doesnt build

make doesnt work with latest ender.js

node make/build.js

node.js:63
    throw e;
    ^
Error: Cannot find module 'colors'
    at loadModule (node.js:275:15)
    at require (node.js:411:14)
    at Object.<anonymous> (/home/user/Development/Ender.js/build/smoosh/lib/smoosh/index.js:2:14)
    at Module._compile (node.js:462:23)
    at Module._loadScriptSync (node.js:469:10)
    at Module.loadSync (node.js:338:12)
    at loadModule (node.js:283:14)
    at require (node.js:411:14)
    at Object.<anonymous> (/home/user/Development/Ender.js/build/smoosh/index.js:1:80)
    at Module._compile (node.js:462:23)
make: *** [boosh] Error 1

IE 7 and below JSON.parse

Hi Guys,

Ender doesn't have any json parsing support. This is an issue if the user is using IE 8 compatibility or IE 7 and below. I think since ajax requests which return json are used in Ender this would be needed.

I can submit a pull request if needed, just like to know how you would prefer it done and in which module.

Uncaught TypeError: Cannot read property 'nextSibling'

Attempting to create a second element in chrome response with the above error. The same code works fine in Safari. Doing the same with qwery.js responds with a DOM Exception 12.

$.domReady(function () {
   var table = $("<table>");
   var thead = $("<thead>");
   var th    = $("<th>"); 
});

_

Hi!

When bundling in an underscore extension I miss _, since underscore may be bundled after the extension. E.g. both ender -j jeesh underscore-data and ender -j underscore-data jeesh produce files which result in runtime error. Can you please confirm and try to fix?

TIA,
--Vladimir

CSS Assets

A lot of clientside stuff has need of assets for the script (like a UI library).

Perhaps define "assets" in the package.json, then have ender pull them out of node_modules and toss them into an assets directory?

Add local files to ender package

I've got a couple plugins that I'd like to add, but I'd like to make sure everything goes smoothly before pushing to NPM. Then I got to thinking, why not just allow local files to be added without publishing to NPM?

NPM is great and all, but sometimes a plug-in might make more sense as a local file instead of being published to the world, but it also makes sense as an ender plugin.

What I think would be cool:

  • NPM-style install, but installs only to ender package (give it a path)
  • Remote package install from URL without using NPM (say, from a blog or something)

Add compatibility with npm 1.x

I'm using npm 1.x (currently in RC and soon to be the standard). ender -b fails due to two issues:

  1. If I use npm install -g ender to do a global install, then npm ls installed won't work (since it only shows locally installed things). You should try npm ls installed first, and then if that fails, try npm ls installed -g.
  2. Even if I do a local install, the regex gets nothing because npm's ls installed output now looks like this:

The re regex can't handle all that extra whitespace and weird characters. You should change it to ignore everything from the start of the line up until the first word character.

Cannot install via NPM since version 0.3.5

Having issues installing the new version of ender on a new machine.


smodtm005:~ troywhiteley$ sudo npm install -g ender
Password:
npm ERR! TypeError: Cannot call method 'filter' of undefined
npm ERR!     at /Users/troywhiteley/local/node/lib/node_modules/npm/lib/utils/load-package-defaults.js:64:15
npm ERR!     at cb (/Users/troywhiteley/local/node/lib/node_modules/npm/lib/utils/async-map.js:51:11)
npm ERR!     at /Users/troywhiteley/local/node/lib/node_modules/npm/lib/utils/find.js:23:20
npm ERR!     at cb (/Users/troywhiteley/local/node/lib/node_modules/npm/lib/utils/graceful-fs.js:31:9)
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>
npm ERR! 
npm ERR! System Darwin 11.0.0
npm ERR! command "node" "/Users/troywhiteley/local/node/bin/npm" "install" "-g" "ender"
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/troywhiteley/npm-debug.log
npm not ok

I went back and the latest working version is 0.3.4


smodtm005:~ troywhiteley$ sudo npm install -g [email protected]
[email protected] /Users/troywhiteley/local/node/lib/node_modules/ender/node_modules/rimraf
[email protected] /Users/troywhiteley/local/node/lib/node_modules/ender/node_modules/colors
[email protected] /Users/troywhiteley/local/node/lib/node_modules/ender/node_modules/gzip
[email protected] /Users/troywhiteley/local/node/lib/node_modules/ender/node_modules/uglify-js
/Users/troywhiteley/local/node/bin/ender -> /Users/troywhiteley/local/node/lib/node_modules/ender/bin/ender
[email protected] /Users/troywhiteley/local/node/lib/node_modules/ender

Here's the npm log

info it worked if it ends with ok
verbose cli [ 'node',
verbose cli   '/Users/troywhiteley/local/node/bin/npm',
verbose cli   'install',
verbose cli   '-g',
verbose cli   'ender' ]
info using [email protected]
info using [email protected]
verbose config file /Users/troywhiteley/.npmrc
verbose config file /Users/troywhiteley/local/node/etc/npmrc
verbose into /Users/troywhiteley/local/node/lib [ 'ender' ]
verbose cache add [ 'ender', null ]
info addNamed [ 'ender', '' ]
verbose addNamed [ null, '' ]
verbose GET ender
verbose raw, before any munging ender
verbose url resolving [ 'http://registry.npmjs.org/', './ender' ]
verbose url resolved http://registry.npmjs.org/ender
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/ender',
verbose url parsed   href: 'http://registry.npmjs.org/ender' }
verbose etag "CX83FACKFHDUGL8REXIEVR01U"
verbose response http://registry.npmjs.org/ender
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"CX83FACKFHDUGL8REXIEVR01U"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:33 GMT',
silly get cb     'content-length': '0' } ]
verbose etag ender from cache
verbose GET ender/0.4.1
verbose raw, before any munging ender/0.4.1
verbose url resolving [ 'http://registry.npmjs.org/', './ender/0.4.1' ]
verbose url resolved http://registry.npmjs.org/ender/0.4.1
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/ender/0.4.1',
verbose url parsed   href: 'http://registry.npmjs.org/ender/0.4.1' }
verbose etag "CX83FACKFHDUGL8REXIEVR01U"
verbose response http://registry.npmjs.org/ender/0.4.1
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"CX83FACKFHDUGL8REXIEVR01U"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:33 GMT',
silly get cb     'content-length': '0' } ]
verbose etag ender/0.4.1 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: 'be35e6299631c3adfd05527f50cf298d54e14e24',
verbose bin dist     tarball: 'http://registry.npmjs.org/ender/-/ender-0.4.1.tgz' } ]
silly resolved [ { name: 'ender',
silly resolved     description: 'next level JavaScript modules',
silly resolved     version: '0.4.1',
silly resolved     authors: [ 'Dustin Diaz <@ded>', 'Jacob Thornton <@fat>' ],
silly resolved     keywords: 
silly resolved      [ 'ender',
silly resolved        'modules',
silly resolved        'builder',
silly resolved        'framework',
silly resolved        'packager' ],
silly resolved     main: './index.js',
silly resolved     homepage: 'https://github.com/ender-js/ender',
silly resolved     engines: { node: '>= 0.4.0' },
silly resolved     dependencies: 
silly resolved      { npm: '>= 1.0.6',
silly resolved        colors: '>= 0.3.0',
silly resolved        'uglify-js': '>= 0.0.1',
silly resolved        gzip: '>= 0.1.0',
silly resolved        rimraf: '>= 1.0.1' },
silly resolved     directories: { lib: './lib', bin: './bin' },
silly resolved     bin: { ender: './bin/ender' },
silly resolved     preferGlobal: true,
silly resolved     _npmJsonOpts: 
silly resolved      { file: '/Users/dustin/.npm/ender/0.4.1/package/package.json',
silly resolved        wscript: false,
silly resolved        contributors: false,
silly resolved        serverjs: false },
silly resolved     _id: '[email protected]',
silly resolved     devDependencies: {},
silly resolved     _engineSupported: true,
silly resolved     _npmVersion: '1.0.14',
silly resolved     _nodeVersion: 'v0.5.0-pre',
silly resolved     _defaultsLoaded: true,
silly resolved     dist: 
silly resolved      { shasum: 'be35e6299631c3adfd05527f50cf298d54e14e24',
silly resolved        tarball: 'http://registry.npmjs.org/ender/-/ender-0.4.1.tgz' },
silly resolved     scripts: {} } ]
info into /Users/troywhiteley/local/node/lib [email protected]
info installOne [email protected]
info unbuild /Users/troywhiteley/local/node/lib/node_modules/ender
silly testEngine { name: 'ender',
silly testEngine   description: 'next level JavaScript modules',
silly testEngine   version: '0.3.4',
silly testEngine   authors: [ 'Dustin Diaz <@ded>', 'Jacob Thornton <@fat>' ],
silly testEngine   keywords: 
silly testEngine    [ 'ender',
silly testEngine      'modules',
silly testEngine      'builder',
silly testEngine      'framework',
silly testEngine      'packager' ],
silly testEngine   main: './index.js',
silly testEngine   homepage: 'https://github.com/ender-js/ender',
silly testEngine   engines: { node: '>= 0.4.0' },
silly testEngine   dependencies: 
silly testEngine    { colors: '>= 0.3.0',
silly testEngine      'uglify-js': '>= 0.0.1',
silly testEngine      gzip: '>= 0.1.0',
silly testEngine      rimraf: '>= 1.0.1' },
silly testEngine   directories: { lib: './lib', bin: './bin' },
silly testEngine   bin: { ender: './bin/ender' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true }
verbose caching /Users/troywhiteley/local/node/lib/node_modules/ender/package.json
verbose loadDefaults [email protected]
info preuninstall [email protected]
info uninstall [email protected]
verbose unbuild [email protected] [ false,
verbose unbuild [email protected]   '/Users/troywhiteley/local/node/node_modules',
verbose unbuild [email protected]   '/Users/troywhiteley/local/node/lib/node_modules' ]
info postuninstall [email protected]
silly testEngine { name: 'ender',
silly testEngine   description: 'next level JavaScript modules',
silly testEngine   version: '0.4.1',
silly testEngine   authors: [ 'Dustin Diaz <@ded>', 'Jacob Thornton <@fat>' ],
silly testEngine   keywords: 
silly testEngine    [ 'ender',
silly testEngine      'modules',
silly testEngine      'builder',
silly testEngine      'framework',
silly testEngine      'packager' ],
silly testEngine   main: './index.js',
silly testEngine   homepage: 'https://github.com/ender-js/ender',
silly testEngine   engines: { node: '>= 0.4.0' },
silly testEngine   dependencies: 
silly testEngine    { npm: '>= 1.0.6',
silly testEngine      colors: '>= 0.3.0',
silly testEngine      'uglify-js': '>= 0.0.1',
silly testEngine      gzip: '>= 0.1.0',
silly testEngine      rimraf: '>= 1.0.1' },
silly testEngine   directories: { lib: './lib', bin: './bin' },
silly testEngine   bin: { ender: './bin/ender' },
silly testEngine   preferGlobal: true,
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   dist: { shasum: '4c2c425522740535a2d4f0a1cc2a22837c117924' } }
verbose caching /Users/troywhiteley/.npm/ender/0.4.1/package.json
silly exec /Users/troywhiteley/local/node/bin/node "/Users/troywhiteley/local/node/lib/node_modules/npm/bin/npm-get-uid-gid.js" "nobody" 20
silly output from getuid/gid {"uid":-2,"gid":20}
silly output from getuid/gid 
verbose mkdir done: /Users/troywhiteley/local/node/lib/node_modules/___ender.npm
verbose unpack_ uid, gid [ -2, 20 ]
verbose unpackTarget /Users/troywhiteley/local/node/lib/node_modules/ender
verbose success gzip "--decompress" "--stdout" "/Users/troywhiteley/.npm/ender/0.4.1/package.tgz"
verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/Users/troywhiteley/local/node/lib/node_modules/___ender.npm"
verbose gunzed /Users/troywhiteley/local/node/lib/node_modules/___ender.npm/package
verbose rm'ed /Users/troywhiteley/local/node/lib/node_modules/ender
verbose renamed [ '/Users/troywhiteley/local/node/lib/node_modules/___ender.npm/package',
verbose renamed   '/Users/troywhiteley/local/node/lib/node_modules/ender' ]
verbose from cache /Users/troywhiteley/local/node/lib/node_modules/ender/package.json
verbose into /Users/troywhiteley/local/node/lib/node_modules/ender [ 'npm@>= 1.0.6',
verbose into /Users/troywhiteley/local/node/lib/node_modules/ender   'colors@>= 0.3.0',
verbose into /Users/troywhiteley/local/node/lib/node_modules/ender   'uglify-js@>= 0.0.1',
verbose into /Users/troywhiteley/local/node/lib/node_modules/ender   'gzip@>= 0.1.0',
verbose into /Users/troywhiteley/local/node/lib/node_modules/ender   'rimraf@>= 1.0.1' ]
verbose cache add [ 'npm@>= 1.0.6', null ]
info addNamed [ 'npm', '>= 1.0.6' ]
verbose addNamed [ null, '>=1.0.6' ]
verbose cache add [ 'colors@>= 0.3.0', null ]
info addNamed [ 'colors', '>= 0.3.0' ]
verbose addNamed [ null, '>=0.3.0' ]
verbose GET npm
verbose raw, before any munging npm
verbose url resolving [ 'http://registry.npmjs.org/', './npm' ]
verbose url resolved http://registry.npmjs.org/npm
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/npm',
verbose url parsed   href: 'http://registry.npmjs.org/npm' }
verbose etag "CQ7RNNXF4SHIJQ0ITYOZT8Q6A"
verbose cache add [ 'uglify-js@>= 0.0.1', null ]
info addNamed [ 'uglify-js', '>= 0.0.1' ]
verbose addNamed [ null, '>=0.0.1' ]
verbose cache add [ 'gzip@>= 0.1.0', null ]
info addNamed [ 'gzip', '>= 0.1.0' ]
verbose addNamed [ null, '>=0.1.0' ]
verbose cache add [ 'rimraf@>= 1.0.1', null ]
info addNamed [ 'rimraf', '>= 1.0.1' ]
verbose addNamed [ null, '>=1.0.1' ]
verbose GET colors
verbose raw, before any munging colors
verbose url resolving [ 'http://registry.npmjs.org/', './colors' ]
verbose url resolved http://registry.npmjs.org/colors
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/colors',
verbose url parsed   href: 'http://registry.npmjs.org/colors' }
verbose etag "68BPSLXTA3MM9DIY2AA1SG9NE"
verbose GET uglify-js
verbose raw, before any munging uglify-js
verbose url resolving [ 'http://registry.npmjs.org/', './uglify-js' ]
verbose url resolved http://registry.npmjs.org/uglify-js
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/uglify-js',
verbose url parsed   href: 'http://registry.npmjs.org/uglify-js' }
verbose etag "EQG2EYZ404E1EZDU4AW3P1A7F"
verbose GET gzip
verbose raw, before any munging gzip
verbose url resolving [ 'http://registry.npmjs.org/', './gzip' ]
verbose url resolved http://registry.npmjs.org/gzip
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/gzip',
verbose url parsed   href: 'http://registry.npmjs.org/gzip' }
verbose etag "840VIMJXSFPHI02HZNFOOQ2RA"
verbose GET rimraf
verbose raw, before any munging rimraf
verbose url resolving [ 'http://registry.npmjs.org/', './rimraf' ]
verbose url resolved http://registry.npmjs.org/rimraf
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/rimraf',
verbose url parsed   href: 'http://registry.npmjs.org/rimraf' }
verbose etag "8531ALUL11O5WK9A7NAU4NCQW"
verbose response http://registry.npmjs.org/npm
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"CQ7RNNXF4SHIJQ0ITYOZT8Q6A"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:33 GMT',
silly get cb     'content-length': '0' } ]
verbose etag npm from cache
verbose GET npm/1.0.14
verbose raw, before any munging npm/1.0.14
verbose url resolving [ 'http://registry.npmjs.org/', './npm/1.0.14' ]
verbose url resolved http://registry.npmjs.org/npm/1.0.14
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/npm/1.0.14',
verbose url parsed   href: 'http://registry.npmjs.org/npm/1.0.14' }
verbose etag "CQ7RNNXF4SHIJQ0ITYOZT8Q6A"
verbose response http://registry.npmjs.org/colors
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"68BPSLXTA3MM9DIY2AA1SG9NE"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:33 GMT',
silly get cb     'content-length': '0' } ]
verbose etag colors from cache
verbose GET colors/0.5.0
verbose raw, before any munging colors/0.5.0
verbose url resolving [ 'http://registry.npmjs.org/', './colors/0.5.0' ]
verbose url resolved http://registry.npmjs.org/colors/0.5.0
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/colors/0.5.0',
verbose url parsed   href: 'http://registry.npmjs.org/colors/0.5.0' }
verbose etag "68BPSLXTA3MM9DIY2AA1SG9NE"
verbose response http://registry.npmjs.org/uglify-js
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"EQG2EYZ404E1EZDU4AW3P1A7F"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:33 GMT',
silly get cb     'content-length': '0' } ]
verbose etag uglify-js from cache
verbose GET uglify-js/1.0.2
verbose raw, before any munging uglify-js/1.0.2
verbose url resolving [ 'http://registry.npmjs.org/', './uglify-js/1.0.2' ]
verbose url resolved http://registry.npmjs.org/uglify-js/1.0.2
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/uglify-js/1.0.2',
verbose url parsed   href: 'http://registry.npmjs.org/uglify-js/1.0.2' }
verbose etag "EQG2EYZ404E1EZDU4AW3P1A7F"
verbose response http://registry.npmjs.org/gzip
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"840VIMJXSFPHI02HZNFOOQ2RA"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag gzip from cache
verbose GET gzip/0.1.0
verbose raw, before any munging gzip/0.1.0
verbose url resolving [ 'http://registry.npmjs.org/', './gzip/0.1.0' ]
verbose url resolved http://registry.npmjs.org/gzip/0.1.0
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/gzip/0.1.0',
verbose url parsed   href: 'http://registry.npmjs.org/gzip/0.1.0' }
verbose etag "840VIMJXSFPHI02HZNFOOQ2RA"
verbose response http://registry.npmjs.org/rimraf
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"8531ALUL11O5WK9A7NAU4NCQW"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag rimraf from cache
verbose GET rimraf/1.0.2
verbose raw, before any munging rimraf/1.0.2
verbose url resolving [ 'http://registry.npmjs.org/', './rimraf/1.0.2' ]
verbose url resolved http://registry.npmjs.org/rimraf/1.0.2
verbose url parsed { protocol: 'http:',
verbose url parsed   slashes: true,
verbose url parsed   host: 'registry.npmjs.org',
verbose url parsed   hostname: 'registry.npmjs.org',
verbose url parsed   pathname: '/rimraf/1.0.2',
verbose url parsed   href: 'http://registry.npmjs.org/rimraf/1.0.2' }
verbose etag "8531ALUL11O5WK9A7NAU4NCQW"
verbose response http://registry.npmjs.org/npm/1.0.14
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"CQ7RNNXF4SHIJQ0ITYOZT8Q6A"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag npm/1.0.14 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: '54f98190a3a2ff7c55c824d3828316395ceb00ed',
verbose bin dist     tarball: 'http://registry.npmjs.org/npm/-/npm-1.0.14.tgz' } ]
verbose addRemoteTarball [ 'http://registry.npmjs.org/npm/-/npm-1.0.14.tgz',
verbose addRemoteTarball   '54f98190a3a2ff7c55c824d3828316395ceb00ed' ]
verbose mkdir done: /tmp/npm-1308787294555/1308787294555-0.09710001689381897
info fetch http://registry.npmjs.org/npm/-/npm-1.0.14.tgz
verbose fetch to /tmp/npm-1308787294555/1308787294555-0.09710001689381897/tmp.tgz
verbose response http://registry.npmjs.org/colors/0.5.0
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"68BPSLXTA3MM9DIY2AA1SG9NE"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag colors/0.5.0 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: 'ac3ed125fcd8ccbb939b796117bf05d5f15c3e67',
verbose bin dist     tarball: 'http://registry.npmjs.org/colors/-/colors-0.5.0.tgz' } ]
verbose response http://registry.npmjs.org/uglify-js/1.0.2
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"EQG2EYZ404E1EZDU4AW3P1A7F"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag uglify-js/1.0.2 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: '28494cc77c26042d4065d73736391d78417d680a',
verbose bin dist     tarball: 'http://registry.npmjs.org/uglify-js/-/uglify-js-1.0.2.tgz' } ]
verbose response http://registry.npmjs.org/gzip/0.1.0
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"840VIMJXSFPHI02HZNFOOQ2RA"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag gzip/0.1.0 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: '775341d20ea2f1d1a176e73f4b6bc8678703fd8e',
verbose bin dist     tarball: 'http://registry.npmjs.org/gzip/-/gzip-0.1.0.tgz' } ]
verbose response http://registry.npmjs.org/rimraf/1.0.2
silly get cb [ 304,
silly get cb   { server: 'CouchDB/1.1.0 (Erlang OTP/R14B)',
silly get cb     etag: '"8531ALUL11O5WK9A7NAU4NCQW"',
silly get cb     date: 'Thu, 23 Jun 2011 00:01:34 GMT',
silly get cb     'content-length': '0' } ]
verbose etag rimraf/1.0.2 from cache
verbose bin dist [ '0.4-darwin-11.0.0',
verbose bin dist   { shasum: '4cc292a756559123ee9e4995cffb783e769b50a3',
verbose bin dist     tarball: 'http://registry.npmjs.org/rimraf/-/rimraf-1.0.2.tgz' } ]
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 40960
silly updated sha bytes 29769
info shasum 54f98190a3a2ff7c55c824d3828316395ceb00ed
info shasum /tmp/npm-1308787294555/1308787294555-0.09710001689381897/tmp.tgz
verbose mkdir done: /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/___package.npm
verbose unpack_ uid, gid [ 0, 0 ]
verbose unpackTarget /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package
verbose success gzip "--decompress" "--stdout" "/tmp/npm-1308787294555/1308787294555-0.09710001689381897/tmp.tgz"
verbose success tar "-mvxpf" "-" "--no-same-owner" "-C" "/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/___package.npm"
verbose gunzed /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/___package.npm/package
verbose rm'ed /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package
verbose renamed [ '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/___package.npm/package',
verbose renamed   '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package' ]
silly testEngine { name: 'npm',
silly testEngine   description: 'A package manager for node',
silly testEngine   keywords: 
silly testEngine    [ 'package manager',
silly testEngine      'modules',
silly testEngine      'install',
silly testEngine      'package.json' ],
silly testEngine   version: '1.0.14',
silly testEngine   preferGlobal: true,
silly testEngine   config: { publishtest: false },
silly testEngine   homepage: 'http://npmjs.org/',
silly testEngine   author: 
silly testEngine    { name: 'Isaac Z. Schlueter',
silly testEngine      email: '[email protected]',
silly testEngine      url: 'http://blog.izs.me' },
silly testEngine   repository: 
silly testEngine    { type: 'git',
silly testEngine      url: 'git://github.com/isaacs/npm.git' },
silly testEngine   bugs: 
silly testEngine    { email: '[email protected]',
silly testEngine      url: 'http://github.com/isaacs/npm/issues' },
silly testEngine   directories: 
silly testEngine    { doc: './doc',
silly testEngine      man: './man1',
silly testEngine      lib: './lib',
silly testEngine      bin: './bin' },
silly testEngine   main: 'npm',
silly testEngine   bin: 
silly testEngine    { npm: './bin/npm.js',
silly testEngine      npm_g: './bin/npm.js',
silly testEngine      'npm-g': './bin/npm.js' },
silly testEngine   dependencies: 
silly testEngine    { semver: '1',
silly testEngine      abbrev: '1',
silly testEngine      nopt: '1',
silly testEngine      'node-uuid': '1.2' },
silly testEngine   bundleDependencies: [ 'semver', 'abbrev', 'nopt', 'node-uuid' ],
silly testEngine   devDependencies: { ronn: '' },
silly testEngine   engines: { node: '0.4 || 0.5', npm: '1' },
silly testEngine   scripts: { test: './test/run.sh', prepublish: 'make doc' },
silly testEngine   licenses: 
silly testEngine    [ { type: 'MIT',
silly testEngine        url: 'http://github.com/isaacs/npm/raw/master/LICENSE' } ],
silly testEngine   _id: '[email protected]',
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   man: 
silly testEngine    [ 'man1/adduser.1',
silly testEngine      'man1/author.1',
silly testEngine      'man1/bin.1',
silly testEngine      'man1/build.1',
silly testEngine      'man1/bundle.1',
silly testEngine      'man1/cache.1',
silly testEngine      'man1/changelog.1',
silly testEngine      'man1/coding-style.1',
silly testEngine      'man1/completion.1',
silly testEngine      'man1/config.1',
silly testEngine      'man1/deprecate.1',
silly testEngine      'man1/developers.1',
silly testEngine      'man1/docs.1',
silly testEngine      'man1/edit.1',
silly testEngine      'man1/explore.1',
silly testEngine      'man1/faq.1',
silly testEngine      'man1/find.1',
silly testEngine      'man1/folders.1',
silly testEngine      'man1/get.1',
silly testEngine      'man1/global.1',
silly testEngine      'man1/help-search.1',
silly testEngine      'man1/init.1',
silly testEngine      'man1/install.1',
silly testEngine      'man1/json.1',
silly testEngine      'man1/link.1',
silly testEngine      'man1/list.1',
silly testEngine      'man1/ln.1',
silly testEngine      'man1/ls.1',
silly testEngine      'man1/npm.1',
silly testEngine      'man1/outdated.1',
silly testEngine      'man1/owner.1',
silly testEngine      'man1/prefix.1',
silly testEngine      'man1/prune.1',
silly testEngine      'man1/publish.1',
silly testEngine      'man1/rebuild.1',
silly testEngine      'man1/registry.1',
silly testEngine      'man1/removing-npm.1',
silly testEngine      'man1/restart.1',
silly testEngine      'man1/rm.1',
silly testEngine      'man1/root.1',
silly testEngine      'man1/run-script.1',
silly testEngine      'man1/scripts.1',
silly testEngine      'man1/search.1',
silly testEngine      'man1/semver.1',
silly testEngine      'man1/set.1',
silly testEngine      'man1/start.1',
silly testEngine      'man1/stop.1',
silly testEngine      'man1/tag.1',
silly testEngine      'man1/test.1',
silly testEngine      'man1/uninstall.1',
silly testEngine      'man1/unpublish.1',
silly testEngine      'man1/update.1',
silly testEngine      'man1/version.1',
silly testEngine      'man1/view.1',
silly testEngine      'man1/whoami.1' ],
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/package.json
verbose loadDefaults [email protected]
verbose tarball contents [ 'package' ]
verbose from cache /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/package.json
verbose pack /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package /Users/troywhiteley/.npm/npm/1.0.14/package.tgz
verbose from cache /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/package.json
silly testEngine { name: 'abbrev',
silly testEngine   version: '1.0.3',
silly testEngine   description: 'Like ruby\'s abbrev module, but in js',
silly testEngine   author: { name: 'Isaac Z. Schlueter', email: '[email protected]' },
silly testEngine   main: './lib/abbrev.js',
silly testEngine   scripts: { test: 'node lib/abbrev.js' },
silly testEngine   repository: 
silly testEngine    { type: 'git',
silly testEngine      url: 'git://github.com/isaacs/abbrev-js.git' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/abbrev' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/abbrev/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'node-uuid',
silly testEngine   description: 'Simple, fast generation of RFC4122(v4) UUIDs.',
silly testEngine   url: 'http://github.com/broofa/node-uuid',
silly testEngine   keywords: [ 'uuid', 'guid', 'rfc4122' ],
silly testEngine   author: { name: 'Robert Kieffer', email: '[email protected]' },
silly testEngine   contributors: [],
silly testEngine   dependencies: {},
silly testEngine   lib: '.',
silly testEngine   main: './uuid.js',
silly testEngine   version: '1.2.0',
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/node-uuid' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/node-uuid/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'nopt',
silly testEngine   version: '1.0.4',
silly testEngine   description: 'Option parsing for Node, supporting types, shorthands, etc. Used by npm.',
silly testEngine   author: 
silly testEngine    { name: 'Isaac Z. Schlueter',
silly testEngine      email: '[email protected]',
silly testEngine      url: 'http://blog.izs.me/' },
silly testEngine   main: 'lib/nopt.js',
silly testEngine   scripts: { test: 'node lib/nopt.js' },
silly testEngine   repository: 
silly testEngine    { type: 'git',
silly testEngine      url: 'git://github.com/isaacs/nopt.git' },
silly testEngine   dependencies: { abbrev: '1' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/nopt' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/nopt/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'semver',
silly testEngine   version: '1.0.7',
silly testEngine   description: 'The semantic version parser used by npm.',
silly testEngine   main: 'semver.js',
silly testEngine   scripts: { test: 'node semver.js' },
silly testEngine   devDependencies: { tap: '0.x' },
silly testEngine   license: 
silly testEngine    { type: 'MIT',
silly testEngine      url: 'https://github.com/isaacs/semver/raw/master/LICENSE' },
silly testEngine   repository: 
silly testEngine    { type: 'git',
silly testEngine      url: 'git://github.com/isaacs/node-semver.git' },
silly testEngine   bin: { semver: './bin/semver' },
silly testEngine   dependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/semver' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/node_modules/semver/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'bundletest',
silly testEngine   version: '1.0.0',
silly testEngine   dependencies: { bundletest: '*' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/bundlerecurs' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/bundlerecurs/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'failer',
silly testEngine   version: '9999.999.99',
silly testEngine   dependencies: { base64: '*' },
silly testEngine   scripts: { preinstall: 'exit 1' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/failer' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/failer/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'fast',
silly testEngine   description: 'does nothing, and not very fast',
silly testEngine   version: '1.2.3',
silly testEngine   scripts: 
silly testEngine    { preinstall: 'sleep 1 && echo fast 1 $(date +%s) && echo fast 2',
silly testEngine      install: 'sleep 1 && echo fast 2 $(date +%s) && echo fast 3',
silly testEngine      postinstall: 'sleep 1 && echo fast 3 $(date +%s) && echo fast 4',
silly testEngine      preactivate: 'sleep 1 && echo fast 4 $(date +%s) && echo fast 5',
silly testEngine      activate: 'sleep 1 && echo fast 5 $(date +%s) && echo fast 6',
silly testEngine      postactivate: 'sleep 1 && echo fast 6 $(date +%s) && echo fast 7' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/fast' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/fast/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'package-config',
silly testEngine   version: '1.2.3',
silly testEngine   config: { foo: 'bar' },
silly testEngine   scripts: { test: './test.js' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/package-config' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/package-config/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'slow',
silly testEngine   description: 'just like fast, but even slower',
silly testEngine   version: '1.2.3',
silly testEngine   scripts: 
silly testEngine    { preinstall: 'sleep 1 && echo slow 1 $(date +%s) && sleep 1 && echo slow 2 $(date +%s)',
silly testEngine      install: 'sleep 1 && echo slow 2 $(date +%s) && sleep 1 && echo slow 3 $(date +%s)',
silly testEngine      postinstall: 'sleep 1 && echo slow 3 $(date +%s) && sleep 1 && echo slow 4 $(date +%s)',
silly testEngine      preactivate: 'sleep 1 && echo slow 4 $(date +%s) && sleep 1 && echo slow 5 $(date +%s)',
silly testEngine      activate: 'sleep 1 && echo slow 5 $(date +%s) && sleep 1 && echo slow 6 $(date +%s)',
silly testEngine      postactivate: 'sleep 1 && echo slow 6 $(date +%s) && sleep 1 && echo slow 7 $(date +%s)' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/slow' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/slow/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'startstop',
silly testEngine   version: '1.2.3',
silly testEngine   scripts: { start: 'echo \'start\'', stop: 'echo \'stop\'' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/startstop' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/disabled/startstop/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'npm-test-blerg',
silly testEngine   version: '0.0.0',
silly testEngine   scripts: { test: 'node test.js' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-blerg' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-blerg/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'npm-test-env-reader',
silly testEngine   version: '1.2.3',
silly testEngine   dependencies: { connect: '*', fab: '*', glob: '*' },
silly testEngine   scripts: 
silly testEngine    { install: './test.sh',
silly testEngine      preinstall: './test.sh',
silly testEngine      activate: './test.sh',
silly testEngine      postactivate: './test.sh',
silly testEngine      preuninstall: './test.sh',
silly testEngine      postuninstall: './test.sh',
silly testEngine      predeactivate: './test.sh',
silly testEngine      test: './test.sh',
silly testEngine      stop: './test.sh',
silly testEngine      start: './test.sh',
silly testEngine      restart: './test.sh',
silly testEngine      foo: './test.sh' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-env-reader' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-env-reader/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'npm-test-missing-bindir',
silly testEngine   version: '0.0.0',
silly testEngine   scripts: { test: 'node test.js' },
silly testEngine   directories: { bin: './not-found' },
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   bin: {} }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-missing-bindir/package.json
verbose loadDefaults [email protected]
verbose [email protected] linking default bins
silly testEngine { name: 'npm-test-private',
silly testEngine   version: '9.9.9-9',
silly testEngine   homepage: 'http://www.youtube.com/watch?v=1MLry6Cn_D4',
silly testEngine   private: 'true',
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-private' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-private/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'npm-test-test-package',
silly testEngine   author: { name: 'Testy McMock' },
silly testEngine   version: '1.2.3-99-b',
silly testEngine   description: 'This is a test package used for debugging. It has some random data and that\'s all.',
silly testEngine   dependencies: {},
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-test-package' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-test-package/package.json
verbose loadDefaults [email protected]
silly testEngine { name: 'npm-test-url-dep',
silly testEngine   version: '1.2.3',
silly testEngine   files: [],
silly testEngine   dependencies: 
silly testEngine    { express: '*',
silly testEngine      npm: 'https://github.com/isaacs/npm/tarball/master' },
silly testEngine   devDependencies: {},
silly testEngine   _id: '[email protected]',
silly testEngine   engines: { node: '*' },
silly testEngine   _engineSupported: true,
silly testEngine   _npmVersion: '1.0.1rc8',
silly testEngine   _nodeVersion: 'v0.4.4',
silly testEngine   _defaultsLoaded: true,
silly testEngine   path: '/tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-url-dep' }
verbose caching /tmp/npm-1308787294555/1308787294555-0.09710001689381897/contents/package/test/packages/npm-test-url-dep/package.json
verbose loadDefaults [email protected]
ERR! { stack: [Getter/Setter],
ERR!   arguments: [ 'filter', undefined ],
ERR!   type: 'non_object_property_call',
ERR!   message: [Getter/Setter] }
ERR! Report this *entire* log at:
ERR!     <http://github.com/isaacs/npm/issues>
ERR! or email it to:
ERR!     <[email protected]>
ERR! 
ERR! System Darwin 11.0.0
ERR! command "node" "/Users/troywhiteley/local/node/bin/npm" "install" "-g" "ender"
verbose exit [ 1, true ]

ender modules shouldn't need `provide` to be `require`-able

provide isn't CommonJS - it's merely a shim used in require-kiss and closure in lieu of a CommonJS spec for such a thing.

Since you're already wrapping modules, the provide should automatically occur:

!function ($) {
  var module = {}, exports = {};
  module.exports = exports;

  // `my-module.js` auto-pasted here

  provide('my-module', module.exports);
}(ender || $);

Note: since a module may modify the global environment, it's entirely possible that fs.readFileSync('my-module.js').match(/exports/) would be false.

Continuing the discussion from http://enderjs.com/topic/10-commonjs-require-api-compatibility/

deferreds

Hi!

Wonder if you could bundle/recommend a robust extension which provides $.Deferred/dojo.Deferred functionality.

TIA,
--Vladimir

script loader

Hi!

I used to use LAB.js to load scripts in parallel. Does $.script() provide means for the same pattern and tested to work for all major browsers?

TIA,
--Vladimir

Removing a library removes all instances of it

I added reqwest and valentine not knowing that reqwest already requires and downloads Valentine. When I typed ender remove valentine It removed it in both places. As a work around of course I removed both libraries and re-added reqwest.

Bug?

Make pre-compiled js file more obvious

I wanted to add http://ender-js.s3.amazonaws.com/ender.min.js to a project quickly, and it took about 5 minutes of searching the website to find it buried in a paragraph of text.

I think it would be very helpful to make it more prominent.

$("").html method in IE 8

I found that in IE 8, $("form select").html("op_1") would change 's innerHTML to be op_1. Rather peculiar.

Ender config file

It would be nice to have an ender config file (.ender) so I don't have to keep typing all of the dependancies every time.

In my assets folder, I could have an .ender file that could look like:
bean
reqwest
qwery

and then when I'm in that directory, I could just run ender -b and it'll read that file and build.

Thoughts?

installing dependencies separately fails in some cases

Works

ender build jQuery campusbooks

Fails

ender build jQuery ahr2 campusbooks

Welcome to ENDER - The no-library library
-----------------------------------------
installing packages: "ender-js jQuery campusbooks"...
this can take a minute...
successfully finished installing packages
assembling packages...
The package.json for campusbooks/ahr2 could not be found.
ender.js successfully built!
ender.min.js successfully built!

Additionally, this reports a successful build when it wasn't actually successful

build failure, query related

using node 0.4.6
installed latest today: ender info

Welcome to ENDER - The no-library library

Your current build type is "build"
Your current library size is 10.9 kb

Active packages:
├── [email protected] - no-thrills stand-alone CSS animation JavaScript framework
├── [email protected] - bullet proof DOM ready method
├── [email protected] - an events api for javascript
├── [email protected] - JavaScript's functional programming helper library.
├── [email protected] - A robust lightweight wrapper for asynchronous http requests
└── [email protected] - simple, hassle-free, library agnostic, extensible DOM utility

ender build bonzo bean domready emile underscore reqwest
...all successful...

problem:
ender build query bonzo bean domready emile underscore reqwest

Welcome to ENDER - The no-library library

Building using NPM version 1.0.6
installing packages with command "npm install ender-js query bonzo bean domready emile underscore reqwest"...
this can take a minute...
finished installing local packages
assembling packages...

/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:272
throw new JS_Parse_Error(message, line, col, pos);
^
TypeError: object is not a function
at Object.CALL_NON_FUNCTION (native)
at new JS_Parse_Error (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:261:20)
at js_error (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:272:15)
at parse_error (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:363:17)
at Object.next_token as input
at next (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:692:37)
at Object.semicolon as 1
at prog1 (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:1270:28)
at $statement (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:840:40)
at block_ (/opt/local/lib/node_modules/ender/node_modules/uglify-js/lib/parse-js.js:964:32)

Before and after package load callbacks

Sometimes modules behave differently when other modules are also 'installed', especially for having a premium and free version of a webapp. I have hacked up my own way, but it is just that, a hack. It would be nice to have an API for doing this.

This could be built in ($.packages), or it could be made into a separate module that can be plugged into the API.

Making something as simple as before and after load callbacks would make it easy to make something like this, and also could provide the ability to make some pretty cool package-management modules (loading bars, lazy-loading of modules, etc).

Perhaps attaching it to provide could do the trick:

  • provide.before
  • provide.after

There would have to be a way to ensure that the module that is attaching callbacks to the provide method is executed first. I can't think of a clean way without requiring the module to have a specific 'keyword' in it's package.json.

It might, alternatively, be nice to have an event module. Provide could emit an event that could be listened to. This would have the same requirement as the other way, unless ender delays emitting events until all modules have been loaded. This seems a little messy to me, but I guess it could work.

I don't know the best way to do this, or even if the current setup can easily support this.

Having npm's global option enabled causes problems

I don't know if it's considered a good idea among npm people to enable its global option, but for whatever reason I found had it turned on. Naturally, Ender completely fails in this scenario, as during the build step, it assumes that the packages it just installed have been done so locally, and therefore when it goes to find them, it comes up empty. I wonder if it would be a good idea if Ender could detect this error (basically, the readFile() in ender.file.js's constructDependencyTree() function fails) and show a helpful error message such as, "Couldn't find X package. Do you have npm's global option on?". WDYT?

cannot call method map

HI when I run ender -b qwery I get the following error :

/usr/local/lib/node_modules/ender/bin/ender:54
        packages = out.match(re).map(function (p) {
TypeError: Cannot call method 'map' of null
    at /usr/local/lib/node_modules/ender/bin/ender:54:34

I don't know if this might be because i'm using npm version 1.0.0. ?

Equivelant of npm link

It would be nice to have a ender link where it just gets all details from the local package.json file and builds that.

Currently I get an error complaining that my local package.json is not published in the npm register.

$.aug doesn't work?

It seems that $.aug that is just bonzo.aug doesn't work.
I $.aug with a new method, and it is just unavailable as a method of $("...")

doctype must be

Hi!

This simple file:

<html>
<head>
    <script type="text/javascript" src="js/ender.js"></script>
</head>
<body></body>
</html>

causes Uncaught TypeError: Cannot use 'in' operator to search for 'compareDocumentPosition' in null at ender.js L#643. Prepending with <!doctype hrml> solves the issue.

Bug or feature?

--Vladimir

List of ender modules?

I know NPM has a search function, but I personally don't like it (it's kinda slow). Maybe a separate package list could be created? Things that could be included are useful packages grouped by category.

If there was a way to add one through the ender command-line utility, I would be super excited. What would be even more cool if I could publish an ender package to npm and ender at the same time through a single command!

Ender doesn't work with jsdom

JSDom can have a script passed in, and the examples use jQuery. I tried using ender, but it did not attach to the window object.

Simple example:

var jsdom = require('jsdom')
jsdom.env('<html></html>', ['ender.js'], function (errors, window) {
    console.log(window.$); // undefined
    console.log(window.__scriptContext.$); // defined
});

jQuery works fine and attaches properly to the window object.

Is this a bug with jsdom or ender? The same package that I built attaches properly to the window object in the browser.

$(html_text)

Hi!

$('<div id="growlcontainer"></div>').appendTo("body") raises Uncaught Error: SYNTAX_ERR: DOM Exception 12.

What could be the fix? How do i mimick this functionality in ender.js?

TIA,
--Vladimir

typo

Sorry I may be not getting the joke, but the main website "http://ender.no.de/" has this intro title:

welcome to you're "doom!"

This is not correct (unless I am not getting the joke)

It should be:

welcome to your "doom!"

you're means "you are"

welcome to you are "doom!" < ?

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.