merged Travis's Node branch with 4.5.1 node-upgrade
authorlynnaloo <lynnaloo@gmail.com>
Wed, 2 Jul 2014 19:08:24 +0000 (15:08 -0400)
committerlynnaloo <lynnaloo@gmail.com>
Wed, 2 Jul 2014 19:08:24 +0000 (15:08 -0400)
47 files changed:
.gitignore
.travis.yml
enyo-client/application/lib [deleted symlink]
enyo-client/application/tools/deploy.sh
enyo-client/database/orm/models/customer.json
enyo-client/database/orm/models/incident.json
enyo-client/database/orm/models/sale_type.json
enyo-client/extensions/source/project/database/orm/models/project.json
enyo-client/extensions/source/purchasing/database/orm/models/purchase_order.json
lib/enyo-x/source/less/screen.less
lib/enyo-x/source/stylesheets/screen.css
lib/enyo-x/source/views/navigator.js
lib/enyo-x/source/views/search.js
lib/module [deleted symlink]
lib/tools/lib/package.js
node-datasource/views/login/assets/grabbutton.png [new file with mode: 0644]
node-datasource/views/login/assets/item-hilite.png [new file with mode: 0644]
node-datasource/views/login/assets/login-blue-scr.png [new file with mode: 0644]
node-datasource/views/login/assets/login-logo.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-bookmark.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-export.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-gear.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-help.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-lock.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-new.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-refresh.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-relation.png [new file with mode: 0644]
node-datasource/views/login/assets/menu-icon-search.png [new file with mode: 0644]
node-datasource/views/login/assets/relation-icon-search.png [new file with mode: 0644]
node-datasource/views/login/assets/search-input-search.png [new file with mode: 0644]
node-datasource/views/login/assets/setup-icon.png [new file with mode: 0644]
node-datasource/views/login/assets/sliding-shadow.png [new file with mode: 0644]
node-datasource/views/login/assets/sort-icon.png [new file with mode: 0644]
node-datasource/xt/xt.js
npm-shrinkwrap.json [deleted file]
package.json
test/build/build_app.js
test/database/financialreport.js
test/database/gotchas.js
test/database/joins.js
test/database/setmetric.js
test/extensions/all/list_relations_box.js
test/extensions/all/workspace.js
test/extensions/sales/quote_customer_widget.js
test/extensions/sales/sales_order_workspace.js
test/lib/smoke.js
test/lib/zombie_auth.js

index 1892508..35f4232 100644 (file)
@@ -13,6 +13,10 @@ scripts/lib/build
 scripts/lib/deploy
 scripts/lib/package.js
 test/lib/demo-test.backup
-test/lib/login_data.js
+test/lib/login_data.js*
 test/mocha/lib/demo-test.backup
-test/shared/login_data.js
+install.log
+enyo-client/application/lib
+enyo-client/application/build
+enyo-client/application/deploy
+lib/module
index da8ebf3..8124fa5 100644 (file)
@@ -1,17 +1,28 @@
-language: node_js
-node_js:
-  - "0.8"
+language: c
+
+before_install:
+  - rm -rf ~/.nvm
+  - wget git.io/hikK5g -qO- | sudo bash
+  - n latest
+  - npm install xtuple-server -g
+  - n stable
 
 install:
-  - "bash scripts/install_xtuple.sh -ipn"
+  - npm install
+  - sudo xtuple-server install-dev --xt-demo --pg-worldlogin
 
 before_script:
-  - "cd node-datasource"
-  - "node main.js &"
-  - "sleep 10"
-  - "cd .."
+  - npm run test-build
+  - npm start &
+  - sleep 10
 
 script:
-  - "npm run-script test-datasource"
-  - "npm run-script test"
-  - "npm run-script jshint"
+  - npm test
+  - npm run test-datasource
+  - npm run jshint
+
+after_failure:
+  - env
+  - cat test/lib/login_data.json
+  - cat node-datasource/config.js
+  - cat npm-debug.log
diff --git a/enyo-client/application/lib b/enyo-client/application/lib
deleted file mode 120000 (symlink)
index 58677dd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../lib
\ No newline at end of file
index f2f4984..0756b9e 100755 (executable)
@@ -9,7 +9,7 @@ FOLDER=deploy
 SUFFIX=`date "+-%Y_%m_%d-%I_%M_%S%p"`
 
 # The grandparent folder for this script
-SOURCE=$(cd `dirname $0`/../; pwd)
+SOURCE=$(cd `dirname $0`/..; pwd)
 
 # extract project folder name
 NAME=${SOURCE##*/}
index ae86963..bc83dc3 100644 (file)
     "type": "CustomerEmailProfile",
     "table": "xt.custemlprofile",
     "isRest": true,
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Customer Email Profile Map",
     "privileges": {
       "all": {
     "nameSpace": "SYS",
     "type": "CustomerEmailProfile",
     "table": "xt.custemlprofile",
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Customer Email Profile Map",
     "privileges": {
       "all": {
index 8ab47ef..b109523 100644 (file)
     "type": "IncidentEmailProfile",
     "table": "xt.incdtemlprofile",
     "isRest": true,
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Incident Email Profile Map",
     "privileges": {
       "all": {
index 0e23f2d..8c18e82 100644 (file)
     "table": "xt.salesemlprofile",
     "lockable": true,
     "isRest": true,
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Sales Email Profile Map",
     "privileges": {
       "all": {
index d20afa3..2ce6d90 100644 (file)
@@ -5,7 +5,7 @@
     "type": "ProjectEmailProfile",
     "table": "xt.prjemlprofile",
     "isRest": true,
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Project Email Profile Map",
     "privileges": {
       "all": {
index 5efa964..69ab33c 100644 (file)
@@ -5,7 +5,7 @@
     "type": "PurchaseEmailProfile",
     "table": "xt.poemlprofile",
     "isRest": true,
-    "idSequenceName": "emlprofile_emlprofile_id_seq",
+    "idSequenceName": "xt.emlprofile_emlprofile_id_seq",
     "comment": "Purchase Email Profile Map",
     "privileges": {
       "all": {
index ffbd2a8..9058f77 100644 (file)
@@ -362,13 +362,11 @@ a, .hyperlink {
   }
 
   .xv-toolbar-label, .xv-search {
+    color: @white;
     width: @searchLength;
     margin: 0;
     margin-left: 6px;
   }
-  .xv-search {
-    color: @med-gray;
-  }
 }
 
 // local imports
index 0edfcd6..3fed221 100755 (executable)
@@ -1912,13 +1912,11 @@ a,
 }
 .onyx-toolbar .xv-toolbar-label,
 .onyx-toolbar .xv-search {
+  color: #fdfdfd;
   width: 185px;
   margin: 0;
   margin-left: 6px;
 }
-.onyx-toolbar .xv-search {
-  color: #939393;
-}
 .xv-navigator .xv-header {
   background-color: #fdfdfd;
   padding: 6px 12px;
index 52eaa55..5b93c94 100644 (file)
@@ -78,8 +78,8 @@ trailing:true*/
                icon: "time",
                ontap: "showHistory", content: "_history".loc()},
             {kind: "font.TextIcon", name: "searchIconButton",
-               icon: "search", ontap: "showParameters",
-               content: "_search".loc(), showing: false},
+               icon: "search",
+               ontap: "showParameters", content: "_search".loc(), showing: false},
             {kind: "font.TextIcon", name: "helpIconButton",
                icon: "question",
                ontap: "showHelp", content: "_help".loc()}
@@ -137,12 +137,13 @@ trailing:true*/
             {kind: "font.TextIcon", icon: "share", content: "_export".loc()},
             {kind: "onyx.Menu", name: "exportMenu", floating: true}
           ]},
-          {kind: "XV.SortPopup", name: "sortPopup", showing: false},
           {name: "search", kind: "onyx.InputDecorator",
-            showing: false, classes: "xv-search", components: [
-            {name: 'searchInput', kind: "onyx.Input",
+            showing: false, components: [
+            {name: 'searchInput', kind: "onyx.Input", classes: "xv-search",
               placeholder: "_search".loc(), onchange: "inputChanged"},
-            {tag: "i", classes: "icon-search", name: "searchJump", ontap: "jump"}
+            {kind: "Image", src: "/assets/search-input-search.png",
+              name: "searchJump", ontap: "jump"},
+            {kind: "XV.SortPopup", name: "sortPopup", showing: false}
           ]}
         ]},
         {name: "messageHeader"},
index fbd7e88..c132e21 100644 (file)
@@ -60,11 +60,11 @@ trailing:true, white:true*/
           {name: "spacer", classes: "spacer", fit: true},
           {kind: "font.TextIcon", name: "refreshButton",
               icon: "rotate-right", content: "_refresh".loc(), ontap: "requery"},
-          {name: "search", kind: "onyx.InputDecorator",
-            classes: "xv-search", components: [
-            {name: 'searchInput', kind: "onyx.Input",
+          {name: "search", kind: "onyx.InputDecorator", components: [
+            {name: 'searchInput', kind: "onyx.Input", classes: "xv-search",
               placeholder: "_search".loc(), onchange: "requery"},
-            {tag: "i", classes: "icon-search", name: "searchJump", ontap: "jump"}
+            {kind: "Image", src: "/assets/search-input-search.png",
+              name: "searchJump", ontap: "jump"}
           ]}
         ]},
         {name: "messageHeader", content: "", classes: ""},
diff --git a/lib/module b/lib/module
deleted file mode 120000 (symlink)
index ea095f3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../node_modules/
\ No newline at end of file
index cc96c8d..3dbe03e 100644 (file)
@@ -2,7 +2,6 @@ var depends = (typeof enyo !== 'undefined') ? enyo.depends : X.depends;
 depends(
   "underscore/underscore.js",
   "async/lib/async.js",
-  "globalize/lib/globalize.js",
-  "globalize/lib/globalize.js",
+  "../../module/globalize/lib/globalize.js",
   '../../module/moment/moment.js'
 );
diff --git a/node-datasource/views/login/assets/grabbutton.png b/node-datasource/views/login/assets/grabbutton.png
new file mode 100644 (file)
index 0000000..1dc205a
Binary files /dev/null and b/node-datasource/views/login/assets/grabbutton.png differ
diff --git a/node-datasource/views/login/assets/item-hilite.png b/node-datasource/views/login/assets/item-hilite.png
new file mode 100644 (file)
index 0000000..7e9c07d
Binary files /dev/null and b/node-datasource/views/login/assets/item-hilite.png differ
diff --git a/node-datasource/views/login/assets/login-blue-scr.png b/node-datasource/views/login/assets/login-blue-scr.png
new file mode 100644 (file)
index 0000000..33ff19c
Binary files /dev/null and b/node-datasource/views/login/assets/login-blue-scr.png differ
diff --git a/node-datasource/views/login/assets/login-logo.png b/node-datasource/views/login/assets/login-logo.png
new file mode 100644 (file)
index 0000000..02e187b
Binary files /dev/null and b/node-datasource/views/login/assets/login-logo.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-bookmark.png b/node-datasource/views/login/assets/menu-icon-bookmark.png
new file mode 100644 (file)
index 0000000..4c26d8f
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-bookmark.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-export.png b/node-datasource/views/login/assets/menu-icon-export.png
new file mode 100644 (file)
index 0000000..d309e06
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-export.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-gear.png b/node-datasource/views/login/assets/menu-icon-gear.png
new file mode 100644 (file)
index 0000000..b4027b2
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-gear.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-help.png b/node-datasource/views/login/assets/menu-icon-help.png
new file mode 100644 (file)
index 0000000..e8c0fbe
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-help.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-lock.png b/node-datasource/views/login/assets/menu-icon-lock.png
new file mode 100644 (file)
index 0000000..5f7b79e
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-lock.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-new.png b/node-datasource/views/login/assets/menu-icon-new.png
new file mode 100644 (file)
index 0000000..8725795
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-new.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-refresh.png b/node-datasource/views/login/assets/menu-icon-refresh.png
new file mode 100644 (file)
index 0000000..2575608
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-refresh.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-relation.png b/node-datasource/views/login/assets/menu-icon-relation.png
new file mode 100644 (file)
index 0000000..4823db2
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-relation.png differ
diff --git a/node-datasource/views/login/assets/menu-icon-search.png b/node-datasource/views/login/assets/menu-icon-search.png
new file mode 100644 (file)
index 0000000..4823db2
Binary files /dev/null and b/node-datasource/views/login/assets/menu-icon-search.png differ
diff --git a/node-datasource/views/login/assets/relation-icon-search.png b/node-datasource/views/login/assets/relation-icon-search.png
new file mode 100644 (file)
index 0000000..d409fd9
Binary files /dev/null and b/node-datasource/views/login/assets/relation-icon-search.png differ
diff --git a/node-datasource/views/login/assets/search-input-search.png b/node-datasource/views/login/assets/search-input-search.png
new file mode 100644 (file)
index 0000000..36bf1b5
Binary files /dev/null and b/node-datasource/views/login/assets/search-input-search.png differ
diff --git a/node-datasource/views/login/assets/setup-icon.png b/node-datasource/views/login/assets/setup-icon.png
new file mode 100644 (file)
index 0000000..721ad6e
Binary files /dev/null and b/node-datasource/views/login/assets/setup-icon.png differ
diff --git a/node-datasource/views/login/assets/sliding-shadow.png b/node-datasource/views/login/assets/sliding-shadow.png
new file mode 100644 (file)
index 0000000..7b23803
Binary files /dev/null and b/node-datasource/views/login/assets/sliding-shadow.png differ
diff --git a/node-datasource/views/login/assets/sort-icon.png b/node-datasource/views/login/assets/sort-icon.png
new file mode 100644 (file)
index 0000000..f45e253
Binary files /dev/null and b/node-datasource/views/login/assets/sort-icon.png differ
index f00146a..6e28736 100644 (file)
@@ -113,9 +113,5 @@ XT = { };
     // give any running process the opportunity to save state
     // or log as gracefully as possible
     process.once('exit', _.bind(X.cleanup, X));
-
-    _.forEach(["SIGINT", "SIGHUP", "SIGQUIT", "SIGKILL", "SIGSEGV", "SIGILL"], function (sig) {
-      process.once(sig, _.bind(sighandler, X, sig));
-    });
   });
 }());
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
deleted file mode 100644 (file)
index 1a94b39..0000000
+++ /dev/null
@@ -1,1944 +0,0 @@
-{
-  "name": "xtuple",
-  "version": "4.4.1",
-  "dependencies": {
-    "async": {
-      "version": "0.2.10",
-      "from": "async@0.2.x"
-    },
-    "backbone": {
-      "version": "0.9.10",
-      "from": "backbone@0.9.10",
-      "resolved": "https://registry.npmjs.org/backbone/-/backbone-0.9.10.tgz"
-    },
-    "backbone-relational": {
-      "version": "0.8.0",
-      "from": "backbone-relational@0.8.0",
-      "resolved": "https://registry.npmjs.org/backbone-relational/-/backbone-relational-0.8.0.tgz"
-    },
-    "bcrypt": {
-      "version": "0.7.8",
-      "from": "bcrypt@0.7.x",
-      "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.7.8.tgz",
-      "dependencies": {
-        "bindings": {
-          "version": "1.0.0",
-          "from": "bindings@1.0.0",
-          "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.0.0.tgz"
-        }
-      }
-    },
-    "colors": {
-      "version": "0.6.2",
-      "from": "colors@0.6.x"
-    },
-    "commander": {
-      "version": "1.2.0",
-      "from": "commander@1.2.x",
-      "dependencies": {
-        "keypress": {
-          "version": "0.1.0",
-          "from": "keypress@0.1.x"
-        }
-      }
-    },
-    "congruence": {
-      "version": "1.2.9",
-      "from": "congruence@~1.2.4",
-      "dependencies": {
-        "moment": {
-          "version": "2.5.1",
-          "from": "https://registry.npmjs.org/moment/-/moment-2.5.1.tgz",
-          "resolved": "https://registry.npmjs.org/moment/-/moment-2.5.1.tgz"
-        },
-        "underscore": {
-          "version": "1.6.0",
-          "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
-          "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
-        }
-      }
-    },
-    "connect-ensure-login": {
-      "version": "0.1.1",
-      "from": "connect-ensure-login@0.1.x"
-    },
-    "ejs": {
-      "version": "0.8.8",
-      "from": "ejs@0.8.x"
-    },
-    "express": {
-      "version": "3.1.2",
-      "from": "express@3.1.x",
-      "dependencies": {
-        "connect": {
-          "version": "2.7.5",
-          "from": "connect@2.7.5",
-          "dependencies": {
-            "qs": {
-              "version": "0.5.1",
-              "from": "qs@0.5.1"
-            },
-            "formidable": {
-              "version": "1.0.11",
-              "from": "formidable@1.0.11",
-              "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz"
-            },
-            "buffer-crc32": {
-              "version": "0.1.1",
-              "from": "buffer-crc32@0.1.1"
-            },
-            "bytes": {
-              "version": "0.2.0",
-              "from": "bytes@0.2.0"
-            },
-            "pause": {
-              "version": "0.0.1",
-              "from": "pause@0.0.1"
-            }
-          }
-        },
-        "commander": {
-          "version": "0.6.1",
-          "from": "commander@0.6.1"
-        },
-        "range-parser": {
-          "version": "0.0.4",
-          "from": "range-parser@0.0.4"
-        },
-        "mkdirp": {
-          "version": "0.3.5",
-          "from": "mkdirp@~0.3.4"
-        },
-        "cookie": {
-          "version": "0.0.5",
-          "from": "cookie@0.0.5"
-        },
-        "buffer-crc32": {
-          "version": "0.2.1",
-          "from": "buffer-crc32@~0.2.1"
-        },
-        "fresh": {
-          "version": "0.1.0",
-          "from": "fresh@0.1.0"
-        },
-        "methods": {
-          "version": "0.0.1",
-          "from": "methods@0.0.1"
-        },
-        "send": {
-          "version": "0.1.0",
-          "from": "send@0.1.0",
-          "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz",
-          "dependencies": {
-            "mime": {
-              "version": "1.2.6",
-              "from": "mime@1.2.6",
-              "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz"
-            }
-          }
-        },
-        "cookie-signature": {
-          "version": "1.0.0",
-          "from": "cookie-signature@1.0.0",
-          "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.0.tgz"
-        },
-        "debug": {
-          "version": "0.8.1",
-          "from": "debug@*",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz"
-        }
-      }
-    },
-    "fluentreports": {
-      "version": "0.0.2",
-      "from": "fluentreports@git://github.com/xtuple/fluentreports.git",
-      "resolved": "git://github.com/xtuple/fluentreports.git#161ecebe081ade6fdd56c1fd11471c39297f8d29",
-      "dependencies": {
-        "pdfkit": {
-          "version": "0.2.6",
-          "from": "pdfkit@git://github.com/Nathanaela/pdfkit.git#Release",
-          "resolved": "git://github.com/Nathanaela/pdfkit.git#5e393ce15484afc47b35edbca79f6d518cbce67c",
-          "dependencies": {
-            "png-js": {
-              "version": "0.1.1",
-              "from": "png-js@>=0.1.0"
-            }
-          }
-        }
-      }
-    },
-    "ipp": {
-      "version": "0.0.5",
-      "from": "ipp@0.0.5",
-      "resolved": "https://registry.npmjs.org/ipp/-/ipp-0.0.5.tgz"
-    },
-    "json-patch": {
-      "version": "0.0.1",
-      "from": "json-patch@git://github.com/xtuple/JSON-Patch.git",
-      "resolved": "git://github.com/xtuple/JSON-Patch.git#eb69a78f6d041b2f630a9747a5b227c42c8df077"
-    },
-    "less": {
-      "version": "1.5.0",
-      "from": "less@1.5.0",
-      "resolved": "https://registry.npmjs.org/less/-/less-1.5.0.tgz",
-      "dependencies": {
-        "mime": {
-          "version": "1.2.11",
-          "from": "mime@1.2.x",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
-        },
-        "mkdirp": {
-          "version": "0.3.5",
-          "from": "mkdirp@~0.3.4"
-        },
-        "clean-css": {
-          "version": "1.0.12",
-          "from": "clean-css@1.0.x",
-          "dependencies": {
-            "commander": {
-              "version": "1.3.2",
-              "from": "commander@1.3.x",
-              "dependencies": {
-                "keypress": {
-                  "version": "0.1.0",
-                  "from": "keypress@0.1.x"
-                }
-              }
-            }
-          }
-        },
-        "source-map": {
-          "version": "0.1.33",
-          "from": "source-map@0.1.x",
-          "dependencies": {
-            "amdefine": {
-              "version": "0.1.0",
-              "from": "amdefine@>=0.0.4"
-            }
-          }
-        }
-      }
-    },
-    "moment": {
-      "version": "2.4.0",
-      "from": "moment@2.4.x"
-    },
-    "nodemailer": {
-      "version": "0.3.44",
-      "from": "nodemailer@0.3.x",
-      "dependencies": {
-        "mailcomposer": {
-          "version": "0.2.9",
-          "from": "mailcomposer@>= 0.1.29",
-          "dependencies": {
-            "mimelib": {
-              "version": "0.2.14",
-              "from": "mimelib@~0.2.14",
-              "dependencies": {
-                "encoding": {
-                  "version": "0.1.7",
-                  "from": "encoding@~0.1",
-                  "dependencies": {
-                    "iconv-lite": {
-                      "version": "0.2.11",
-                      "from": "iconv-lite@~0.2.11"
-                    }
-                  }
-                },
-                "addressparser": {
-                  "version": "0.2.1",
-                  "from": "addressparser@~0.2.0"
-                }
-              }
-            },
-            "mime": {
-              "version": "1.2.11",
-              "from": "mime@~1.2.9",
-              "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
-            },
-            "he": {
-              "version": "0.3.6",
-              "from": "he@~0.3.6"
-            },
-            "punycode": {
-              "version": "1.2.4",
-              "from": "punycode@~1.2.3"
-            },
-            "follow-redirects": {
-              "version": "0.0.3",
-              "from": "follow-redirects@0.0.3",
-              "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.3.tgz"
-            },
-            "dkim-signer": {
-              "version": "0.1.0",
-              "from": "dkim-signer@~0.1.0"
-            }
-          }
-        },
-        "simplesmtp": {
-          "version": "0.3.29",
-          "from": "simplesmtp@>= 0.1.28",
-          "resolved": "https://registry.npmjs.org/simplesmtp/-/simplesmtp-0.3.29.tgz",
-          "dependencies": {
-            "rai": {
-              "version": "0.1.10",
-              "from": "rai@~0.1.10",
-              "resolved": "https://registry.npmjs.org/rai/-/rai-0.1.10.tgz"
-            },
-            "xoauth2": {
-              "version": "0.1.8",
-              "from": "xoauth2@~0.1"
-            }
-          }
-        },
-        "optimist": {
-          "version": "0.6.1",
-          "from": "optimist@*",
-          "dependencies": {
-            "wordwrap": {
-              "version": "0.0.2",
-              "from": "wordwrap@~0.0.2"
-            },
-            "minimist": {
-              "version": "0.0.9",
-              "from": "minimist@~0.0.1",
-              "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.9.tgz"
-            }
-          }
-        }
-      }
-    },
-    "node-forge": {
-      "version": "0.6.2",
-      "from": "node-forge@0.6.x"
-    },
-    "npm": {
-      "version": "1.4.16",
-      "from": "npm@1.4.x",
-      "resolved": "https://registry.npmjs.org/npm/-/npm-1.4.16.tgz",
-      "dependencies": {
-        "abbrev": {
-          "version": "1.0.5",
-          "from": "abbrev@latest",
-          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.5.tgz"
-        },
-        "ansi": {
-          "version": "0.3.0",
-          "from": "ansi@latest",
-          "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz"
-        },
-        "ansicolors": {
-          "version": "0.3.2",
-          "from": "ansicolors@latest"
-        },
-        "ansistyles": {
-          "version": "0.1.3",
-          "from": "ansistyles@0.1.3",
-          "resolved": "https://registry.npmjs.org/ansistyles/-/ansistyles-0.1.3.tgz"
-        },
-        "archy": {
-          "version": "0.0.2",
-          "from": "archy@0.0.2"
-        },
-        "block-stream": {
-          "version": "0.0.7",
-          "from": "block-stream@latest"
-        },
-        "char-spinner": {
-          "version": "1.0.1",
-          "from": "char-spinner@latest",
-          "resolved": "https://registry.npmjs.org/char-spinner/-/char-spinner-1.0.1.tgz"
-        },
-        "child-process-close": {
-          "version": "0.1.1",
-          "from": "child-process-close@",
-          "resolved": "https://registry.npmjs.org/child-process-close/-/child-process-close-0.1.1.tgz"
-        },
-        "chmodr": {
-          "version": "0.1.0",
-          "from": "chmodr@latest"
-        },
-        "chownr": {
-          "version": "0.0.1",
-          "from": "../chownr"
-        },
-        "cmd-shim": {
-          "version": "1.1.1",
-          "from": "cmd-shim@latest",
-          "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.1.tgz"
-        },
-        "columnify": {
-          "version": "1.1.0",
-          "from": "columnify@latest",
-          "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.1.0.tgz",
-          "dependencies": {
-            "strip-ansi": {
-              "version": "0.2.2",
-              "from": "strip-ansi@^0.2.1",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.2.2.tgz",
-              "dependencies": {
-                "ansi-regex": {
-                  "version": "0.1.0",
-                  "from": "ansi-regex@^0.1.0",
-                  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.1.0.tgz"
-                }
-              }
-            },
-            "wcwidth.js": {
-              "version": "0.0.4",
-              "from": "wcwidth.js@~0.0.4",
-              "resolved": "https://registry.npmjs.org/wcwidth.js/-/wcwidth.js-0.0.4.tgz",
-              "dependencies": {
-                "underscore": {
-                  "version": "1.6.0",
-                  "from": "underscore@>= 1.3.0",
-                  "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
-                }
-              }
-            }
-          }
-        },
-        "editor": {
-          "version": "0.1.0",
-          "from": "editor@latest",
-          "resolved": "https://registry.npmjs.org/editor/-/editor-0.1.0.tgz"
-        },
-        "fstream": {
-          "version": "0.1.27",
-          "from": "fstream@~0.1.26"
-        },
-        "fstream-npm": {
-          "version": "0.1.7",
-          "from": "fstream-npm@latest",
-          "dependencies": {
-            "fstream-ignore": {
-              "version": "0.0.8",
-              "from": "fstream-ignore@~0.0",
-              "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.8.tgz"
-            }
-          }
-        },
-        "github-url-from-git": {
-          "version": "1.1.1",
-          "from": "github-url-from-git@1.1.1",
-          "resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.1.1.tgz"
-        },
-        "github-url-from-username-repo": {
-          "version": "0.2.0",
-          "from": "github-url-from-username-repo@latest",
-          "resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-0.2.0.tgz"
-        },
-        "glob": {
-          "version": "4.0.2",
-          "from": "glob@latest",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-4.0.2.tgz"
-        },
-        "graceful-fs": {
-          "version": "3.0.2",
-          "from": "graceful-fs@~3.0.0",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.2.tgz"
-        },
-        "inflight": {
-          "version": "1.0.1",
-          "from": "inflight@~1.0.1",
-          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.1.tgz"
-        },
-        "ini": {
-          "version": "1.2.1",
-          "from": "ini@latest",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.2.1.tgz"
-        },
-        "init-package-json": {
-          "version": "0.1.0",
-          "from": "init-package-json@latest",
-          "dependencies": {
-            "promzard": {
-              "version": "0.2.2",
-              "from": "promzard@~0.2.0",
-              "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz"
-            }
-          }
-        },
-        "lockfile": {
-          "version": "0.4.2",
-          "from": "lockfile@0.4.2",
-          "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-0.4.2.tgz"
-        },
-        "lru-cache": {
-          "version": "2.5.0",
-          "from": "lru-cache@latest"
-        },
-        "minimatch": {
-          "version": "0.3.0",
-          "from": "minimatch@latest",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
-          "dependencies": {
-            "sigmund": {
-              "version": "1.0.0",
-              "from": "sigmund@~1.0.0",
-              "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz"
-            }
-          }
-        },
-        "mkdirp": {
-          "version": "0.3.5",
-          "from": "mkdirp@latest"
-        },
-        "node-gyp": {
-          "version": "0.13.1",
-          "from": "node-gyp@~0.13.0",
-          "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-0.13.1.tgz"
-        },
-        "nopt": {
-          "version": "3.0.0",
-          "from": "nopt@latest"
-        },
-        "npm-cache-filename": {
-          "version": "1.0.1",
-          "from": "npm-cache-filename@latest",
-          "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.1.tgz"
-        },
-        "npm-install-checks": {
-          "version": "1.0.2",
-          "from": "npm-install-checks@latest"
-        },
-        "npm-registry-client": {
-          "version": "2.0.2",
-          "from": "npm-registry-client@latest"
-        },
-        "npm-user-validate": {
-          "version": "0.1.0",
-          "from": "npm-user-validate@latest"
-        },
-        "npmconf": {
-          "version": "1.0.5",
-          "from": "npmconf@latest",
-          "dependencies": {
-            "config-chain": {
-              "version": "1.1.8",
-              "from": "config-chain@~1.1.8",
-              "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.8.tgz",
-              "dependencies": {
-                "proto-list": {
-                  "version": "1.2.3",
-                  "from": "proto-list@~1.2.1",
-                  "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.3.tgz"
-                }
-              }
-            }
-          }
-        },
-        "npmlog": {
-          "version": "0.1.1",
-          "from": "npmlog@latest"
-        },
-        "once": {
-          "version": "1.3.0",
-          "from": "once@latest"
-        },
-        "opener": {
-          "version": "1.3.0",
-          "from": "opener@latest"
-        },
-        "osenv": {
-          "version": "0.1.0",
-          "from": "osenv@~0.1.0"
-        },
-        "path-is-inside": {
-          "version": "1.0.1",
-          "from": "path-is-inside@1.0.1",
-          "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz"
-        },
-        "read": {
-          "version": "1.0.5",
-          "from": "read@latest",
-          "dependencies": {
-            "mute-stream": {
-              "version": "0.0.4",
-              "from": "mute-stream@~0.0.4"
-            }
-          }
-        },
-        "read-installed": {
-          "version": "2.0.5",
-          "from": "read-installed@latest",
-          "dependencies": {
-            "util-extend": {
-              "version": "1.0.1",
-              "from": "util-extend@^1.0.1",
-              "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.1.tgz"
-            }
-          }
-        },
-        "read-package-json": {
-          "version": "1.2.2",
-          "from": "read-package-json@latest",
-          "dependencies": {
-            "normalize-package-data": {
-              "version": "0.3.0",
-              "from": "normalize-package-data@^0.3.0",
-              "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-0.3.0.tgz"
-            }
-          }
-        },
-        "request": {
-          "version": "2.30.0",
-          "from": "request@latest",
-          "dependencies": {
-            "qs": {
-              "version": "0.6.6",
-              "from": "qs@~0.6.0"
-            },
-            "json-stringify-safe": {
-              "version": "5.0.0",
-              "from": "json-stringify-safe@~5.0.0"
-            },
-            "forever-agent": {
-              "version": "0.5.0",
-              "from": "forever-agent@~0.5.0"
-            },
-            "node-uuid": {
-              "version": "1.4.1",
-              "from": "node-uuid@~1.4.0"
-            },
-            "mime": {
-              "version": "1.2.11",
-              "from": "mime@~1.2.9"
-            },
-            "tough-cookie": {
-              "version": "0.9.15",
-              "from": "tough-cookie@~0.9.15",
-              "dependencies": {
-                "punycode": {
-                  "version": "1.2.3",
-                  "from": "punycode@>=0.2.0"
-                }
-              }
-            },
-            "form-data": {
-              "version": "0.1.2",
-              "from": "form-data@~0.1.0",
-              "dependencies": {
-                "combined-stream": {
-                  "version": "0.0.4",
-                  "from": "combined-stream@~0.0.4",
-                  "dependencies": {
-                    "delayed-stream": {
-                      "version": "0.0.5",
-                      "from": "delayed-stream@0.0.5"
-                    }
-                  }
-                },
-                "async": {
-                  "version": "0.2.9",
-                  "from": "async@~0.2.9"
-                }
-              }
-            },
-            "tunnel-agent": {
-              "version": "0.3.0",
-              "from": "tunnel-agent@~0.3.0"
-            },
-            "http-signature": {
-              "version": "0.10.0",
-              "from": "http-signature@~0.10.0",
-              "dependencies": {
-                "assert-plus": {
-                  "version": "0.1.2",
-                  "from": "assert-plus@0.1.2"
-                },
-                "asn1": {
-                  "version": "0.1.11",
-                  "from": "asn1@0.1.11"
-                },
-                "ctype": {
-                  "version": "0.5.2",
-                  "from": "ctype@0.5.2"
-                }
-              }
-            },
-            "oauth-sign": {
-              "version": "0.3.0",
-              "from": "oauth-sign@~0.3.0"
-            },
-            "hawk": {
-              "version": "1.0.0",
-              "from": "hawk@~1.0.0",
-              "dependencies": {
-                "hoek": {
-                  "version": "0.9.1",
-                  "from": "hoek@0.9.x"
-                },
-                "boom": {
-                  "version": "0.4.2",
-                  "from": "boom@0.4.x"
-                },
-                "cryptiles": {
-                  "version": "0.2.2",
-                  "from": "cryptiles@0.2.x"
-                },
-                "sntp": {
-                  "version": "0.2.4",
-                  "from": "sntp@0.2.x"
-                }
-              }
-            },
-            "aws-sign2": {
-              "version": "0.5.0",
-              "from": "aws-sign2@~0.5.0"
-            }
-          }
-        },
-        "retry": {
-          "version": "0.6.0",
-          "from": "retry"
-        },
-        "rimraf": {
-          "version": "2.2.8",
-          "from": "rimraf@latest",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
-        },
-        "semver": {
-          "version": "2.3.0",
-          "from": "semver@latest"
-        },
-        "sha": {
-          "version": "1.2.4",
-          "from": "sha@latest",
-          "resolved": "https://registry.npmjs.org/sha/-/sha-1.2.4.tgz",
-          "dependencies": {
-            "readable-stream": {
-              "version": "1.0.27-1",
-              "from": "readable-stream@1.0",
-              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz",
-              "dependencies": {
-                "core-util-is": {
-                  "version": "1.0.1",
-                  "from": "core-util-is@~1.0.0",
-                  "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
-                },
-                "isarray": {
-                  "version": "0.0.1",
-                  "from": "isarray@0.0.1",
-                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
-                },
-                "string_decoder": {
-                  "version": "0.10.25-1",
-                  "from": "string_decoder@~0.10.x",
-                  "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.25-1.tgz"
-                }
-              }
-            }
-          }
-        },
-        "slide": {
-          "version": "1.1.5",
-          "from": "slide@latest"
-        },
-        "sorted-object": {
-          "version": "1.0.0",
-          "from": "sorted-object@"
-        },
-        "tar": {
-          "version": "0.1.19",
-          "from": "tar@0.1.19",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.19.tgz"
-        },
-        "text-table": {
-          "version": "0.2.0",
-          "from": "text-table@~0.2.0"
-        },
-        "uid-number": {
-          "version": "0.0.5",
-          "from": "uid-number@latest",
-          "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"
-        },
-        "which": {
-          "version": "1.0.5",
-          "from": "which@1"
-        },
-        "inherits": {
-          "version": "2.0.1",
-          "from": "inherits@"
-        }
-      }
-    },
-    "oauth2orize": {
-      "version": "0.1.0",
-      "from": "oauth2orize@0.1.x",
-      "dependencies": {
-        "debug": {
-          "version": "0.7.4",
-          "from": "debug@0.7.x"
-        }
-      }
-    },
-    "oauth2orize-jwt-bearer": {
-      "version": "0.1.0",
-      "from": "oauth2orize-jwt-bearer@0.1.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "passport": {
-      "version": "0.1.18",
-      "from": "passport@0.1.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        },
-        "pause": {
-          "version": "0.0.1",
-          "from": "pause@0.0.1"
-        }
-      }
-    },
-    "passport-http": {
-      "version": "0.2.2",
-      "from": "passport-http@0.2.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "passport-http-bearer": {
-      "version": "0.2.1",
-      "from": "passport-http-bearer@0.2.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "passport-local": {
-      "version": "0.1.6",
-      "from": "passport-local@0.1.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "passport-oauth2-client-password": {
-      "version": "0.1.1",
-      "from": "passport-oauth2-client-password@0.1.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "passport-oauth2-jwt-bearer": {
-      "version": "0.1.1",
-      "from": "passport-oauth2-jwt-bearer@0.1.x",
-      "dependencies": {
-        "pkginfo": {
-          "version": "0.2.3",
-          "from": "pkginfo@0.2.x"
-        }
-      }
-    },
-    "paynode": {
-      "version": "0.3.6",
-      "from": "paynode@0.3.6",
-      "resolved": "https://registry.npmjs.org/paynode/-/paynode-0.3.6.tgz",
-      "dependencies": {
-        "braintree": {
-          "version": "1.14.0",
-          "from": "braintree@*",
-          "dependencies": {
-            "dateformat": {
-              "version": "1.0.1-1.2.3",
-              "from": "dateformat@=1.0.1-1.2.3",
-              "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.1-1.2.3.tgz"
-            },
-            "semver": {
-              "version": "2.2.1",
-              "from": "semver@=2.2.1",
-              "resolved": "https://registry.npmjs.org/semver/-/semver-2.2.1.tgz"
-            },
-            "readable-stream": {
-              "version": "1.1.10",
-              "from": "readable-stream@=1.1.10",
-              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.10.tgz",
-              "dependencies": {
-                "core-util-is": {
-                  "version": "1.0.1",
-                  "from": "core-util-is@~1.0.0"
-                },
-                "string_decoder": {
-                  "version": "0.10.25-1",
-                  "from": "string_decoder@~0.10.x"
-                },
-                "debuglog": {
-                  "version": "0.0.2",
-                  "from": "debuglog@0.0.2",
-                  "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-0.0.2.tgz"
-                }
-              }
-            },
-            "underscore": {
-              "version": "1.3.1",
-              "from": "underscore@=1.3.1",
-              "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.3.1.tgz"
-            },
-            "xml2js": {
-              "version": "0.1.13",
-              "from": "xml2js@=0.1.13",
-              "dependencies": {
-                "sax": {
-                  "version": "0.6.0",
-                  "from": "sax@>=0.1.1"
-                }
-              }
-            },
-            "source-map-support": {
-              "version": "0.1.2",
-              "from": "source-map-support@=0.1.2",
-              "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.1.2.tgz",
-              "dependencies": {
-                "source-map": {
-                  "version": "0.1.8",
-                  "from": "source-map@0.1.8",
-                  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.8.tgz",
-                  "dependencies": {
-                    "amdefine": {
-                      "version": "0.1.0",
-                      "from": "amdefine@>=0.0.4"
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "pg": {
-      "version": "0.14.1",
-      "from": "pg@0.14.x",
-      "dependencies": {
-        "generic-pool": {
-          "version": "2.0.4",
-          "from": "generic-pool@~2.0.2"
-        },
-        "deprecate": {
-          "version": "0.1.0",
-          "from": "deprecate@~0.1.0"
-        }
-      }
-    },
-    "request": {
-      "version": "2.14.0",
-      "from": "request@2.14.x",
-      "dependencies": {
-        "form-data": {
-          "version": "0.0.7",
-          "from": "form-data@~0.0.3",
-          "dependencies": {
-            "combined-stream": {
-              "version": "0.0.4",
-              "from": "combined-stream@~0.0.4",
-              "dependencies": {
-                "delayed-stream": {
-                  "version": "0.0.5",
-                  "from": "delayed-stream@0.0.5"
-                }
-              }
-            },
-            "async": {
-              "version": "0.1.22",
-              "from": "async@~0.1.9"
-            }
-          }
-        },
-        "mime": {
-          "version": "1.2.9",
-          "from": "mime@~1.2.7"
-        }
-      }
-    },
-    "rimraf": {
-      "version": "2.2.8",
-      "from": "rimraf@2.2.x",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
-    },
-    "rjson": {
-      "version": "0.2.4",
-      "from": "rjson@~0.2.4",
-      "dependencies": {
-        "commander": {
-          "version": "1.1.1",
-          "from": "commander@~1.1.1",
-          "dependencies": {
-            "keypress": {
-              "version": "0.1.0",
-              "from": "keypress@0.1.x"
-            }
-          }
-        }
-      }
-    },
-    "socket.io": {
-      "version": "0.9.16",
-      "from": "socket.io@0.9.x",
-      "dependencies": {
-        "socket.io-client": {
-          "version": "0.9.16",
-          "from": "socket.io-client@0.9.16",
-          "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz",
-          "dependencies": {
-            "uglify-js": {
-              "version": "1.2.5",
-              "from": "uglify-js@1.2.5"
-            },
-            "ws": {
-              "version": "0.4.31",
-              "from": "ws@0.4.x",
-              "dependencies": {
-                "commander": {
-                  "version": "0.6.1",
-                  "from": "commander@~0.6.1"
-                },
-                "nan": {
-                  "version": "0.3.2",
-                  "from": "nan@~0.3.0"
-                },
-                "tinycolor": {
-                  "version": "0.0.1",
-                  "from": "tinycolor@0.x"
-                },
-                "options": {
-                  "version": "0.0.5",
-                  "from": "options@>=0.0.5"
-                }
-              }
-            },
-            "xmlhttprequest": {
-              "version": "1.4.2",
-              "from": "xmlhttprequest@1.4.2"
-            },
-            "active-x-obfuscator": {
-              "version": "0.0.1",
-              "from": "active-x-obfuscator@0.0.1",
-              "dependencies": {
-                "zeparser": {
-                  "version": "0.0.5",
-                  "from": "zeparser@0.0.5"
-                }
-              }
-            }
-          }
-        },
-        "policyfile": {
-          "version": "0.0.4",
-          "from": "policyfile@0.0.4",
-          "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz"
-        },
-        "base64id": {
-          "version": "0.1.0",
-          "from": "base64id@0.1.0"
-        },
-        "redis": {
-          "version": "0.7.3",
-          "from": "redis@0.7.3",
-          "resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz"
-        }
-      }
-    },
-    "underscore": {
-      "version": "1.4.4",
-      "from": "underscore@1.4.x"
-    },
-    "winston": {
-      "version": "0.7.3",
-      "from": "winston@0.7.x",
-      "dependencies": {
-        "cycle": {
-          "version": "1.0.3",
-          "from": "cycle@1.0.x"
-        },
-        "eyes": {
-          "version": "0.1.8",
-          "from": "eyes@0.1.x"
-        },
-        "pkginfo": {
-          "version": "0.3.0",
-          "from": "pkginfo@0.3.x"
-        },
-        "request": {
-          "version": "2.16.6",
-          "from": "request@2.16.x",
-          "dependencies": {
-            "form-data": {
-              "version": "0.0.10",
-              "from": "form-data@~0.0.3",
-              "dependencies": {
-                "combined-stream": {
-                  "version": "0.0.4",
-                  "from": "combined-stream@~0.0.4",
-                  "dependencies": {
-                    "delayed-stream": {
-                      "version": "0.0.5",
-                      "from": "delayed-stream@0.0.5"
-                    }
-                  }
-                }
-              }
-            },
-            "mime": {
-              "version": "1.2.11",
-              "from": "mime@~1.2.7"
-            },
-            "hawk": {
-              "version": "0.10.2",
-              "from": "hawk@~0.10.2",
-              "dependencies": {
-                "hoek": {
-                  "version": "0.7.6",
-                  "from": "hoek@0.7.x"
-                },
-                "boom": {
-                  "version": "0.3.8",
-                  "from": "boom@0.3.x"
-                },
-                "cryptiles": {
-                  "version": "0.1.3",
-                  "from": "cryptiles@0.1.x"
-                },
-                "sntp": {
-                  "version": "0.1.4",
-                  "from": "sntp@0.1.x"
-                }
-              }
-            },
-            "node-uuid": {
-              "version": "1.4.1",
-              "from": "node-uuid@~1.4.0"
-            },
-            "cookie-jar": {
-              "version": "0.2.0",
-              "from": "cookie-jar@~0.2.0"
-            },
-            "aws-sign": {
-              "version": "0.2.0",
-              "from": "aws-sign@~0.2.0"
-            },
-            "oauth-sign": {
-              "version": "0.2.0",
-              "from": "oauth-sign@~0.2.0"
-            },
-            "forever-agent": {
-              "version": "0.2.0",
-              "from": "forever-agent@~0.2.0"
-            },
-            "tunnel-agent": {
-              "version": "0.2.0",
-              "from": "tunnel-agent@~0.2.0"
-            },
-            "json-stringify-safe": {
-              "version": "3.0.0",
-              "from": "json-stringify-safe@~3.0.0"
-            },
-            "qs": {
-              "version": "0.5.6",
-              "from": "qs@~0.5.4"
-            }
-          }
-        },
-        "stack-trace": {
-          "version": "0.0.9",
-          "from": "stack-trace@0.0.x"
-        }
-      }
-    },
-    "xmla4js": {
-      "version": "0.0.2",
-      "from": "xmla4js@git://github.com/rpbouman/xmla4js.git",
-      "resolved": "git://github.com/rpbouman/xmla4js.git#40a0be2637c3f18c986d3e5cbe4c32cf8f995531"
-    },
-    "underscore.string": {
-      "version": "2.3.3",
-      "from": "underscore.string@~2.3.3"
-    },
-    "ursa": {
-      "version": "0.8.0",
-      "from": "ursa@0.8.x"
-    },
-    "xtuple-query": {
-      "version": "1.0.0",
-      "from": "xtuple-query@~1.0.0",
-      "dependencies": {
-        "congruence": {
-          "version": "1.2.3",
-          "from": "congruence@1.2.3",
-          "resolved": "https://registry.npmjs.org/congruence/-/congruence-1.2.3.tgz"
-        },
-        "underscore": {
-          "version": "1.5.2",
-          "from": "underscore@~1.5.2"
-        }
-      }
-    },
-    "googleapis": {
-      "version": "0.4.7",
-      "from": "googleapis@~0.4.6",
-      "dependencies": {
-        "request": {
-          "version": "2.25.0",
-          "from": "request@~2.25.0",
-          "dependencies": {
-            "qs": {
-              "version": "0.6.6",
-              "from": "qs@~0.6.0"
-            },
-            "json-stringify-safe": {
-              "version": "5.0.0",
-              "from": "json-stringify-safe@~5.0.0"
-            },
-            "forever-agent": {
-              "version": "0.5.2",
-              "from": "forever-agent@~0.5.0"
-            },
-            "tunnel-agent": {
-              "version": "0.3.0",
-              "from": "tunnel-agent@~0.3.0"
-            },
-            "http-signature": {
-              "version": "0.10.0",
-              "from": "http-signature@~0.10.0",
-              "dependencies": {
-                "assert-plus": {
-                  "version": "0.1.2",
-                  "from": "assert-plus@0.1.2"
-                },
-                "asn1": {
-                  "version": "0.1.11",
-                  "from": "asn1@0.1.11"
-                },
-                "ctype": {
-                  "version": "0.5.2",
-                  "from": "ctype@0.5.2"
-                }
-              }
-            },
-            "hawk": {
-              "version": "1.0.0",
-              "from": "hawk@~1.0.0",
-              "dependencies": {
-                "hoek": {
-                  "version": "0.9.1",
-                  "from": "hoek@0.9.x"
-                },
-                "boom": {
-                  "version": "0.4.2",
-                  "from": "boom@0.4.x"
-                },
-                "cryptiles": {
-                  "version": "0.2.2",
-                  "from": "cryptiles@0.2.x"
-                },
-                "sntp": {
-                  "version": "0.2.4",
-                  "from": "sntp@0.2.x"
-                }
-              }
-            },
-            "aws-sign": {
-              "version": "0.3.0",
-              "from": "aws-sign@~0.3.0"
-            },
-            "oauth-sign": {
-              "version": "0.3.0",
-              "from": "oauth-sign@~0.3.0"
-            },
-            "cookie-jar": {
-              "version": "0.3.0",
-              "from": "cookie-jar@~0.3.0"
-            },
-            "node-uuid": {
-              "version": "1.4.1",
-              "from": "node-uuid@~1.4.0"
-            },
-            "mime": {
-              "version": "1.2.11",
-              "from": "mime@~1.2.9",
-              "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
-            },
-            "form-data": {
-              "version": "0.1.2",
-              "from": "form-data@~0.1.0",
-              "dependencies": {
-                "combined-stream": {
-                  "version": "0.0.4",
-                  "from": "combined-stream@~0.0.4",
-                  "dependencies": {
-                    "delayed-stream": {
-                      "version": "0.0.5",
-                      "from": "delayed-stream@0.0.5"
-                    }
-                  }
-                },
-                "async": {
-                  "version": "0.2.10",
-                  "from": "async@~0.2.9"
-                }
-              }
-            }
-          }
-        },
-        "async": {
-          "version": "0.2.6",
-          "from": "async@0.2.6",
-          "resolved": "https://registry.npmjs.org/async/-/async-0.2.6.tgz"
-        },
-        "gapitoken": {
-          "version": "0.1.0",
-          "from": "gapitoken@0.1.0",
-          "resolved": "https://registry.npmjs.org/gapitoken/-/gapitoken-0.1.0.tgz",
-          "dependencies": {
-            "jws": {
-              "version": "0.0.2",
-              "from": "jws@0.0.2",
-              "dependencies": {
-                "tap": {
-                  "version": "0.3.3",
-                  "from": "tap@~0.3.3",
-                  "dependencies": {
-                    "inherits": {
-                      "version": "1.0.0"
-                    },
-                    "yamlish": {
-                      "version": "0.0.5"
-                    },
-                    "slide": {
-                      "version": "1.1.5",
-                      "from": "slide@*"
-                    },
-                    "runforcover": {
-                      "version": "0.0.2",
-                      "from": "runforcover@~0.0.2",
-                      "dependencies": {
-                        "bunker": {
-                          "version": "0.1.2",
-                          "from": "bunker@0.1.X",
-                          "dependencies": {
-                            "burrito": {
-                              "version": "0.2.12",
-                              "from": "burrito@>=0.2.5 <0.3",
-                              "dependencies": {
-                                "traverse": {
-                                  "version": "0.5.2",
-                                  "from": "traverse@~0.5.1"
-                                },
-                                "uglify-js": {
-                                  "version": "1.1.1",
-                                  "from": "uglify-js@~1.1.1"
-                                }
-                              }
-                            }
-                          }
-                        }
-                      }
-                    },
-                    "nopt": {
-                      "version": "2.2.1",
-                      "from": "nopt@~2",
-                      "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz",
-                      "dependencies": {
-                        "abbrev": {
-                          "version": "1.0.5",
-                          "from": "abbrev@1",
-                          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.5.tgz"
-                        }
-                      }
-                    },
-                    "mkdirp": {
-                      "version": "0.3.5",
-                      "from": "mkdirp@~0.3"
-                    },
-                    "difflet": {
-                      "version": "0.2.6",
-                      "from": "difflet@~0.2.0",
-                      "dependencies": {
-                        "traverse": {
-                          "version": "0.6.6",
-                          "from": "traverse@0.6.x"
-                        },
-                        "charm": {
-                          "version": "0.1.2",
-                          "from": "charm@0.1.x"
-                        },
-                        "deep-is": {
-                          "version": "0.1.2",
-                          "from": "deep-is@0.1.x"
-                        }
-                      }
-                    },
-                    "deep-equal": {
-                      "version": "0.0.0",
-                      "from": "deep-equal@~0.0.0"
-                    },
-                    "buffer-equal": {
-                      "version": "0.0.0",
-                      "from": "buffer-equal@~0.0.0"
-                    }
-                  }
-                },
-                "base64url": {
-                  "version": "0.0.3",
-                  "from": "base64url@0.0.3",
-                  "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.3.tgz"
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "chai": {
-      "version": "1.5.0",
-      "from": "chai@1.5.x"
-    },
-    "require-uncache": {
-      "version": "0.0.2",
-      "from": "require-uncache@0.0.x"
-    },
-    "csslint": {
-      "version": "0.10.0",
-      "from": "csslint@~0.10.0",
-      "dependencies": {
-        "parserlib": {
-          "version": "0.2.5",
-          "from": "parserlib@~0.2.2",
-          "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-0.2.5.tgz"
-        }
-      }
-    },
-    "mocha": {
-      "version": "1.9.0",
-      "from": "mocha@1.9.x",
-      "dependencies": {
-        "commander": {
-          "version": "0.6.1",
-          "from": "commander@0.6.1"
-        },
-        "growl": {
-          "version": "1.7.0",
-          "from": "growl@1.7.x"
-        },
-        "jade": {
-          "version": "0.26.3",
-          "from": "jade@0.26.3",
-          "dependencies": {
-            "mkdirp": {
-              "version": "0.3.0",
-              "from": "mkdirp@0.3.0",
-              "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz"
-            }
-          }
-        },
-        "diff": {
-          "version": "1.0.2",
-          "from": "diff@1.0.2",
-          "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.2.tgz"
-        },
-        "debug": {
-          "version": "0.8.1",
-          "from": "debug@*",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz"
-        },
-        "mkdirp": {
-          "version": "0.3.3",
-          "from": "mkdirp@0.3.3",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz"
-        },
-        "ms": {
-          "version": "0.3.0",
-          "from": "ms@0.3.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.3.0.tgz"
-        }
-      }
-    },
-    "zombie": {
-      "version": "1.4.1",
-      "from": "zombie@1.4.x",
-      "dependencies": {
-        "eventsource": {
-          "version": "0.0.10",
-          "from": "eventsource@~0.0.5"
-        },
-        "jsdom": {
-          "version": "0.2.19",
-          "from": "jsdom@~0.2.15",
-          "dependencies": {
-            "htmlparser": {
-              "version": "1.7.7",
-              "from": "htmlparser@1.x"
-            },
-            "cssom": {
-              "version": "0.2.5",
-              "from": "cssom@0.2.x"
-            },
-            "cssstyle": {
-              "version": "0.2.11",
-              "from": "cssstyle@>=0.2.3",
-              "dependencies": {
-                "cssom": {
-                  "version": "0.3.0",
-                  "from": "cssom@0.3.x"
-                }
-              }
-            },
-            "contextify": {
-              "version": "0.1.7",
-              "from": "contextify@0.1.x",
-              "dependencies": {
-                "bindings": {
-                  "version": "1.2.0",
-                  "from": "bindings@*"
-                },
-                "nan": {
-                  "version": "0.8.0",
-                  "from": "nan@~0.8.0"
-                }
-              }
-            }
-          }
-        },
-        "mime": {
-          "version": "1.2.11",
-          "from": "mime@~1.2.7"
-        },
-        "ms": {
-          "version": "0.1.0",
-          "from": "ms@~0.1.0"
-        },
-        "q": {
-          "version": "0.8.12",
-          "from": "q@~0.8.6"
-        },
-        "request": {
-          "version": "2.10.0",
-          "from": "request@~2.10.0"
-        },
-        "tough-cookie": {
-          "version": "0.9.15",
-          "from": "tough-cookie@~0.9.13",
-          "dependencies": {
-            "punycode": {
-              "version": "1.2.4",
-              "from": "punycode@~1.2.3"
-            }
-          }
-        },
-        "ws": {
-          "version": "0.4.31",
-          "from": "ws@~0.4.21",
-          "dependencies": {
-            "commander": {
-              "version": "0.6.1",
-              "from": "commander@~0.6.1"
-            },
-            "nan": {
-              "version": "0.3.2",
-              "from": "nan@~0.3.0"
-            },
-            "tinycolor": {
-              "version": "0.0.1",
-              "from": "tinycolor@0.x"
-            },
-            "options": {
-              "version": "0.0.5",
-              "from": "options@>=0.0.5"
-            }
-          }
-        }
-      }
-    },
-    "jshint": {
-      "version": "2.4.4",
-      "from": "jshint@2.4.x",
-      "dependencies": {
-        "shelljs": {
-          "version": "0.1.4",
-          "from": "shelljs@0.1.x"
-        },
-        "cli": {
-          "version": "0.4.5",
-          "from": "cli@0.4.x",
-          "dependencies": {
-            "glob": {
-              "version": "3.2.9",
-              "from": "glob@>= 3.1.4",
-              "dependencies": {
-                "inherits": {
-                  "version": "2.0.1",
-                  "from": "inherits@2"
-                }
-              }
-            }
-          }
-        },
-        "minimatch": {
-          "version": "0.2.14",
-          "from": "minimatch@0.x.x",
-          "dependencies": {
-            "lru-cache": {
-              "version": "2.5.0",
-              "from": "lru-cache@2"
-            },
-            "sigmund": {
-              "version": "1.0.0",
-              "from": "sigmund@~1.0.0"
-            }
-          }
-        },
-        "htmlparser2": {
-          "version": "3.3.0",
-          "from": "htmlparser2@3.3.x",
-          "dependencies": {
-            "domhandler": {
-              "version": "2.1.0",
-              "from": "domhandler@2.1"
-            },
-            "domutils": {
-              "version": "1.1.6",
-              "from": "domutils@1.1"
-            },
-            "domelementtype": {
-              "version": "1.1.1",
-              "from": "domelementtype@1"
-            },
-            "readable-stream": {
-              "version": "1.0.27-1",
-              "from": "readable-stream@1.0",
-              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz",
-              "dependencies": {
-                "core-util-is": {
-                  "version": "1.0.1",
-                  "from": "core-util-is@~1.0.0"
-                },
-                "isarray": {
-                  "version": "0.0.1",
-                  "from": "isarray@0.0.1",
-                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
-                },
-                "string_decoder": {
-                  "version": "0.10.25-1",
-                  "from": "string_decoder@~0.10.x"
-                },
-                "inherits": {
-                  "version": "2.0.1",
-                  "from": "inherits@~2.0.1"
-                }
-              }
-            }
-          }
-        },
-        "console-browserify": {
-          "version": "0.1.6",
-          "from": "console-browserify@0.1.x"
-        },
-        "exit": {
-          "version": "0.1.2",
-          "from": "exit@0.1.x"
-        }
-      }
-    },
-    "html5": {
-      "version": "0.3.13",
-      "from": "html5@0.3.13",
-      "dependencies": {
-        "jsdom": {
-          "version": "0.10.5",
-          "from": "jsdom@>= 0.6.0",
-          "dependencies": {
-            "htmlparser2": {
-              "version": "3.7.1",
-              "from": "htmlparser2@>= 3.1.5 <4",
-              "dependencies": {
-                "domhandler": {
-                  "version": "2.2.0",
-                  "from": "domhandler@2.2"
-                },
-                "domutils": {
-                  "version": "1.4.3",
-                  "from": "domutils@1.4"
-                },
-                "domelementtype": {
-                  "version": "1.1.1",
-                  "from": "domelementtype@1"
-                },
-                "readable-stream": {
-                  "version": "1.1.13-1",
-                  "from": "readable-stream@1.1",
-                  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13-1.tgz",
-                  "dependencies": {
-                    "core-util-is": {
-                      "version": "1.0.1",
-                      "from": "core-util-is@~1.0.0"
-                    },
-                    "isarray": {
-                      "version": "0.0.1",
-                      "from": "isarray@0.0.1",
-                      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
-                    },
-                    "string_decoder": {
-                      "version": "0.10.25-1",
-                      "from": "string_decoder@~0.10.x"
-                    },
-                    "inherits": {
-                      "version": "2.0.1",
-                      "from": "inherits@~2.0.1"
-                    }
-                  }
-                },
-                "entities": {
-                  "version": "1.0.0",
-                  "from": "entities@1.0"
-                }
-              }
-            },
-            "nwmatcher": {
-              "version": "1.3.3",
-              "from": "nwmatcher@~1.3.2"
-            },
-            "xmlhttprequest": {
-              "version": "1.6.0",
-              "from": "xmlhttprequest@>=1.5.0"
-            },
-            "cssom": {
-              "version": "0.3.0",
-              "from": "cssom@~0.3.0"
-            },
-            "cssstyle": {
-              "version": "0.2.11",
-              "from": "cssstyle@~0.2.9"
-            },
-            "contextify": {
-              "version": "0.1.7",
-              "from": "contextify@~0.1.5",
-              "dependencies": {
-                "bindings": {
-                  "version": "1.2.0",
-                  "from": "bindings@*"
-                },
-                "nan": {
-                  "version": "0.8.0",
-                  "from": "nan@~0.8.0"
-                }
-              }
-            }
-          }
-        },
-        "opts": {
-          "version": "1.2.2",
-          "from": "opts@~1.2.1"
-        },
-        "html5-entities": {
-          "version": "0.5.1",
-          "from": "html5-entities@~0.5.0"
-        }
-      }
-    },
-    "nodemon": {
-      "version": "1.0.17",
-      "from": "nodemon@~1.0.15",
-      "dependencies": {
-        "update-notifier": {
-          "version": "0.1.8",
-          "from": "update-notifier@~0.1.7",
-          "dependencies": {
-            "request": {
-              "version": "2.27.0",
-              "from": "request@~2.27.0",
-              "dependencies": {
-                "qs": {
-                  "version": "0.6.6",
-                  "from": "qs@~0.6.0"
-                },
-                "json-stringify-safe": {
-                  "version": "5.0.0",
-                  "from": "json-stringify-safe@~5.0.0"
-                },
-                "forever-agent": {
-                  "version": "0.5.2",
-                  "from": "forever-agent@~0.5.0"
-                },
-                "tunnel-agent": {
-                  "version": "0.3.0",
-                  "from": "tunnel-agent@~0.3.0"
-                },
-                "http-signature": {
-                  "version": "0.10.0",
-                  "from": "http-signature@~0.10.0",
-                  "dependencies": {
-                    "assert-plus": {
-                      "version": "0.1.2",
-                      "from": "assert-plus@0.1.2"
-                    },
-                    "asn1": {
-                      "version": "0.1.11",
-                      "from": "asn1@0.1.11"
-                    },
-                    "ctype": {
-                      "version": "0.5.2",
-                      "from": "ctype@0.5.2"
-                    }
-                  }
-                },
-                "hawk": {
-                  "version": "1.0.0",
-                  "from": "hawk@~1.0.0",
-                  "dependencies": {
-                    "hoek": {
-                      "version": "0.9.1",
-                      "from": "hoek@0.9.x"
-                    },
-                    "boom": {
-                      "version": "0.4.2",
-                      "from": "boom@0.4.x"
-                    },
-                    "cryptiles": {
-                      "version": "0.2.2",
-                      "from": "cryptiles@0.2.x"
-                    },
-                    "sntp": {
-                      "version": "0.2.4",
-                      "from": "sntp@0.2.x"
-                    }
-                  }
-                },
-                "aws-sign": {
-                  "version": "0.3.0",
-                  "from": "aws-sign@~0.3.0"
-                },
-                "oauth-sign": {
-                  "version": "0.3.0",
-                  "from": "oauth-sign@~0.3.0"
-                },
-                "cookie-jar": {
-                  "version": "0.3.0",
-                  "from": "cookie-jar@~0.3.0"
-                },
-                "node-uuid": {
-                  "version": "1.4.1",
-                  "from": "node-uuid@~1.4.0"
-                },
-                "mime": {
-                  "version": "1.2.11",
-                  "from": "mime@~1.2.9",
-                  "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
-                },
-                "form-data": {
-                  "version": "0.1.2",
-                  "from": "form-data@~0.1.0",
-                  "dependencies": {
-                    "combined-stream": {
-                      "version": "0.0.4",
-                      "from": "combined-stream@~0.0.4",
-                      "dependencies": {
-                        "delayed-stream": {
-                          "version": "0.0.5",
-                          "from": "delayed-stream@0.0.5"
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            },
-            "configstore": {
-              "version": "0.2.3",
-              "from": "configstore@~0.2.2",
-              "dependencies": {
-                "mkdirp": {
-                  "version": "0.3.5",
-                  "from": "mkdirp@~0.3.5"
-                },
-                "js-yaml": {
-                  "version": "3.0.2",
-                  "from": "js-yaml@~3.0.1",
-                  "dependencies": {
-                    "argparse": {
-                      "version": "0.1.15",
-                      "from": "argparse@~ 0.1.11"
-                    },
-                    "esprima": {
-                      "version": "1.0.4",
-                      "from": "esprima@~ 1.0.2"
-                    }
-                  }
-                },
-                "osenv": {
-                  "version": "0.0.3",
-                  "from": "osenv@0.0.3",
-                  "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz"
-                },
-                "graceful-fs": {
-                  "version": "2.0.3",
-                  "from": "graceful-fs@~2.0.1"
-                },
-                "uuid": {
-                  "version": "1.4.1",
-                  "from": "uuid@~1.4.1"
-                },
-                "object-assign": {
-                  "version": "0.1.2",
-                  "from": "object-assign@~0.1.1"
-                }
-              }
-            },
-            "semver": {
-              "version": "2.1.0",
-              "from": "semver@~2.1.0"
-            },
-            "chalk": {
-              "version": "0.4.0",
-              "from": "chalk@~0.4.0",
-              "dependencies": {
-                "has-color": {
-                  "version": "0.1.7",
-                  "from": "has-color@~0.1.0",
-                  "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz"
-                },
-                "ansi-styles": {
-                  "version": "1.0.0",
-                  "from": "ansi-styles@~1.0.0"
-                },
-                "strip-ansi": {
-                  "version": "0.1.1",
-                  "from": "strip-ansi@~0.1.0"
-                }
-              }
-            }
-          }
-        },
-        "minimatch": {
-          "version": "0.2.14",
-          "from": "minimatch@~0.2.14",
-          "dependencies": {
-            "lru-cache": {
-              "version": "2.5.0",
-              "from": "lru-cache@2"
-            },
-            "sigmund": {
-              "version": "1.0.0",
-              "from": "sigmund@~1.0.0"
-            }
-          }
-        }
-      }
-    }
-  }
-}
index b55fee7..6c96231 100644 (file)
@@ -7,6 +7,14 @@
     "type": "git",
     "url": "https://github.com/xtuple/xtuple.git"
   },
+  "files": [
+    "enyo-client",
+    "foundation-database",
+    "lib",
+    "node-datasource",
+    "scripts",
+    "test"
+  ],
   "dependencies": {
     "async": "0.2.x",
     "backbone": "0.9.10",
     "ejs": "0.8.x",
     "express": "3.1.x",
     "fluentreports": "git://github.com/xtuple/fluentreports.git",
+    "font-onyx": "0.0.2",
+    "globalize": "^0.1.1",
     "ipp": "0.0.5",
     "json-patch": "git://github.com/xtuple/JSON-Patch.git",
     "less": "1.5.0",
     "moment": "2.4.x",
     "nodemailer": "0.3.x",
     "npm":"1.4.x",
+    "nvd3": "^1.1.15",
     "node-forge": "0.6.x",
     "oauth2orize": "0.1.x",
     "oauth2orize-jwt-bearer": "0.1.x",
     "rjson": "~0.2.4",
     "socket.io": "0.9.x",
     "underscore": "1.4.x",
-    "winston": "0.7.x",
     "underscore.string": "~2.3.3",
-    "ursa":"0.8.x"
+    "ursa": "0.8.x",
+    "winston": "0.7.x",
+    "xtuple-query": "~1.0.0"
   },
   "devDependencies": {
     "chai": "1.5.x",
+    "csslint": "~0.10.0",
+    "googleapis": "^0.7.0",
+    "html5": "0.3.13",
     "jshint": "2.4.x",
     "mocha": "1.9.x",
+    "nde": "^0.1.15",
+    "nodemon": "~1.0.15",
+    "nopt": "2.0.0",
     "require-uncache": "0.0.x",
-    "html5": "0.3.13",
-    "zombie": "1.4.x",
-    "csslint": "~0.10.0",
-    "nodemon": "~1.0.15"
-  },
-  "optionalDependencies": {
-    "xtuple-query": "~1.0.0",
-    "googleapis": "~0.4.6"
+    "shelljs": "0.0.8",
+    "uglify-js": "1.3.2",
+    "walker": "https://github.com/xtuple/enyo-tools-walker-npm/tarball/master",
+    "zombie": "1.4.1"
   },
+  "bundledDependencies": [
+    "fluentreports",
+    "json-patch",
+    "walker"
+  ],
   "engines": {
-    "node": "0.8.x"
+    "node": ">= 0.10.28"
   },
   "main": "node-datasource/main.js",
   "scripts": {
     "build-basic-quickstart": "./scripts/build_app.js -d quickstart --databaseonly -e foundation-database -i -s foundation-database/quickstart_data.sql",
     "jshint": "./node_modules/.bin/jshint --exclude node-datasource/lib/query/node_modules lib/backbone-x/source lib/enyo-x/source lib/tools/source enyo-client/application/source/ enyo-client/extensions node-datasource",
     "preinstall": "cd node-datasource/lib/query ; npm install",
-    "start": "node_modules/.bin/nodemon node-datasource/main.js --debug --watch node-datasource",
-    "test-build": "./node_modules/.bin/mocha -R spec test/build/build_app.js",
+    "postinstall": "rm enyo-client/application/lib lib/module ; ln -s ../../lib enyo-client/application/lib ; ln -s ../node_modules lib/module",
+    "start": "node_modules/.bin/nodemon --debug --watch node-datasource",
     "test": "./node_modules/.bin/mocha -R spec test/lib/login.js test/models/* test/database/* test/extensions/* test/lib/test_runner.js",
+    "test-build": "./node_modules/.bin/mocha -R spec test/build/build_app.js",
     "test-datasource": "./node_modules/.bin/mocha -R spec test/routes/*"
   }
 }
index f79377e..b010a07 100644 (file)
@@ -13,7 +13,7 @@ var buildAll = require('../../scripts/lib/build_all'),
   describe('The database build tool', function () {
     this.timeout(100 * 60 * 1000);
 
-    var loginData = require(path.join(__dirname, "../lib/login_data.js")).data,
+    var loginData = require(path.join(__dirname, "../lib/login_data")).data,
       datasource = require('../../../xtuple/node-datasource/lib/ext/datasource').dataSource,
       config = require(path.join(__dirname, "../../node-datasource/config.js")),
       creds = config.databaseServer,
index a7c7767..48abfad 100644 (file)
@@ -12,7 +12,7 @@ var _ = require("underscore"),
 
   describe('The financialReport function', function () {
 
-    var loginData = require("../lib/login_data.js").data,
+    var loginData = require("../lib/login_data").data,
       datasource = require('../../../xtuple/node-datasource/lib/ext/datasource').dataSource,
       config = require(path.join(__dirname, "../../node-datasource/config.js")),
       creds = _.extend({}, config.databaseServer, {database: loginData.org}),
index 45cd47e..370412b 100644 (file)
@@ -13,7 +13,7 @@ var _ = require("underscore"),
   describe('The database', function () {
     this.timeout(10 * 1000);
 
-    var loginData = require(path.join(__dirname, "../lib/login_data.js")).data,
+    var loginData = require(path.join(__dirname, "../lib/login_data")).data,
       datasource = require('../../../xtuple/node-datasource/lib/ext/datasource').dataSource,
       config = require(path.join(__dirname, "../../node-datasource/config.js")),
       creds = config.databaseServer,
index 3643c84..8aefbc9 100644 (file)
@@ -13,7 +13,7 @@ var _ = require("underscore"),
   describe('The database', function () {
     this.timeout(10 * 1000);
 
-    var loginData = require(path.join(__dirname, "../lib/login_data.js")).data,
+    var loginData = require(path.join(__dirname, "../lib/login_data")).data,
       datasource = require('../../../xtuple/node-datasource/lib/ext/datasource').dataSource,
       config = require(path.join(__dirname, "../../node-datasource/config.js")),
       creds = config.databaseServer,
index 2f6a87d..0fb87ab 100644 (file)
@@ -11,7 +11,7 @@ var _ = require("underscore"),
   "use strict";
   describe('The setMetric function', function () {
 
-    var loginData = require(path.join(__dirname, "../lib/login_data.js")).data,
+    var loginData = require(path.join(__dirname, "../lib/login_data")).data,
       datasource = require('../../../xtuple/node-datasource/lib/ext/datasource').dataSource,
       config = require(path.join(__dirname, "../../node-datasource/config.js")),
       creds = _.extend({}, config.databaseServer, {database: loginData.org});
index 0c544d4..08fc371 100644 (file)
@@ -15,7 +15,7 @@
     };
 
   describe('ListRelationsBoxes', function () {
-    this.timeout(20 * 1000);
+    this.timeout(40 * 1000);
     it('should log in first', function (done) {
       zombieAuth.loadApp(done);
     });
index a31a886..37bdf55 100644 (file)
@@ -16,7 +16,7 @@
     assert = require("chai").assert;
 
   describe('Workspaces', function () {
-    this.timeout(20 * 1000);
+    this.timeout(40 * 1000);
     it('should log in first', function (done) {
       zombieAuth.loadApp(done);
     });
@@ -83,7 +83,7 @@
     var workspaceContainer, workspace, model, id, moduleContainer;
 
     beforeEach(function (done) {
-      this.timeout(10 * 1000);
+      this.timeout(20 * 1000);
 
       smoke.navigateToExistingWorkspace(XT.app, "XV.ClassCodeList", function (_workspaceContainer) {
         workspaceContainer = _workspaceContainer;
       });
     });
     afterEach(function (done) {
-      this.timeout(10 * 1000);
+      this.timeout(20 * 1000);
 
       // maybe one of the tests already released the lock
       if (!model.hasLockKey()) {
index 142e45f..96a3221 100644 (file)
@@ -13,7 +13,7 @@
     assert = require("chai").assert;
 
   describe('Quote Workspace', function () {
-    this.timeout(20 * 1000);
+    this.timeout(40 * 1000);
 
     before(function (done) {
       zombieAuth.loadApp(done);
index dc8b261..936f1ca 100644 (file)
@@ -44,7 +44,7 @@
     };
 
   describe('Sales Order Workspace', function () {
-    this.timeout(20 * 1000);
+    this.timeout(60 * 1000);
 
     //
     // We'll want to have TTOYS, BTRUCK1, and WH1 onhand and ready for the test to work.
         smoke.navigateToNewWorkspace(XT.app, "XV.SalesOrderList", function (workspaceContainer) {
           workspace = workspaceContainer.$.workspace;
 
+          workspace.value.once("change:total", function () {
+            done();
+          });
+
           assert.equal(workspace.value.recordType, "XM.SalesOrder");
           //
           // Set the customer from the appropriate workspace quantityWidget
           // know that the workspace is ready to save.
           // It's good practice to set this trigger *before* we change the line
           // item fields, so that we're 100% sure we're ready for the responses.
-          workspace.value.once("change:total", function () {
-            done();
-            /* The following save was moved to the second test
-            smoke.saveWorkspace(workspace, function (err, model) {
-              assert.isNull(err);
-              // TODO: sloppy
-              setTimeout(function () {
-                smoke.deleteFromList(XT.app, model, done);
-              }, 2000);
-            });*/
-          });
 
           //
           // Set the line item fields
index 271eaf3..06a0f9b 100644 (file)
 
   exports.updateFirstModel = function (test) {
     it('should allow a trivial update to the first model of ' + test.kind, function (done) {
-      this.timeout(20 * 1000);
+      this.timeout(40 * 1000);
       navigateToExistingWorkspace(XT.app, test.kind, function (workspaceContainer) {
         var updateObj,
           statusChanged,
     var workspaceContainer,
       workspace;
     it('can get to a new workspace', function (done) {
-      this.timeout(10 * 1000);
+      this.timeout(40 * 1000);
       navigateToNewWorkspace(XT.app, spec.listKind, function (_workspaceContainer) {
         workspaceContainer = _workspaceContainer;
         done();
     });
     _.each(spec.beforeSaveUIActions || [], function (spec) {
       it(spec.it, function (done) {
-        this.timeout(20 * 1000);
+        this.timeout(40 * 1000);
         spec.action(workspace, done);
       });
     });
     it('can save the workspace', function (done) {
-      this.timeout(20 * 1000);
+      this.timeout(40 * 1000);
       if (spec.captureObject) {
         XG = XG || {};
         XG.capturedId = workspace.value.id;
       return;
     }
     it('can delete the item from the list', function (done) {
-      this.timeout(20 * 1000);
+      this.timeout(40 * 1000);
       deleteFromList(XT.app, workspace.value, done);
     });
   };
index a3b3790..8be4008 100644 (file)
@@ -2,6 +2,8 @@
 regexp:true, undef:true, strict:true, trailing:true, white:true */
 /*global XT:true, XM:true, XV:true, XZ:true, enyo:true, XG:true */
 
+process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
+
 // global objects
 enyo = {};
 XT = {};
@@ -10,20 +12,13 @@ XM = {};
 XV = {};
 XZ = {}; // xTuple Zombie. Used to help zombie within the context of these tests.
 
+global.URL = require('url');
+
 var assert = require('assert'),
-  zombie = require('zombie'),
-  URL = require('url'),
+  Browser = require('zombie'),
   _ = require('underscore');
 
-
-/**
-Simplest possible usage:
-
-  var zombieTest = require('./zombie_auth');
-  zombieTest.testLoad();
-*/
 (function () {
-  "use strict";
 
   var secondsToWait = 40;
 
@@ -100,118 +95,80 @@ Simplest possible usage:
       return;
     }
 
-    var parse = URL.parse;
-    URL.parse = function (url) {
-      if (_.isObject(url) && _.isString(url.href)) {
-        return parse(url.href);
+    /**
+     * XXX
+     * horrendous hackery to make zombie 1.4.1 work in node 0.10.x
+     */
+    var resolve = URL.resolve;
+    URL.resolve = function (base, path) {
+      if (_.isObject(base) && !_.isEmpty(base.href)) {
+        return resolve(base.href.toString(), path);
       }
       else {
-        return parse(url);
+        return resolve(base, path);
       }
     };
 
-    zombie.visit(host, {debug: verboseMode}, function (e, browser) {
-      if (e) {
-        //console.log("Zombie visit error: ", e);
-      }
-      //
-      // This is the login screen
-      //
-      browser
-        .fill('id', username)
-        .fill('password', password)
-        .select('database', database)
-        .pressButton('submit', function () {
-
-          // Note: make sure the app is built
-          // XXX this limitation should be fixed, to allow testing off of debug.html
-          // it's possible that Zombie 2.0 will get this right.
-
-          //
-          // Plan to give up after a set time
-          //
-          var timeout = setTimeout(function () {
-              console.log("App did not fully load");
-              process.exit(1);
-            }, secondsToWait * 1000);
-
-          //
-          // Check frequently to see if the app is loaded, and move forward when it is
-          //
-          var interval = setInterval(function () {
-
-            if (browser.window.XT && browser.window.XT.app && browser.window.XT.app.state === 6) {
-
-              // add the global objects to our global namespace
-              enyo = browser.window.enyo;
-              XG = browser.window.XG;
-              XM = browser.window.XM;
-              XT = browser.window.XT;
-              XV = browser.window.XV;
-              XZ.browser = browser;
-              XZ.host = host;
-              XZ.database = database;
-
-              XT.log = function (message, obj) {
-                if (message && message.toLowerCase().indexOf("error") === 0) {
-                  // errors from the datasource should cause the test to fail
-                  assert.fail(message + " " + JSON.stringify(obj));
-                }
-                // log if verbose mode or if the log is a warning
-                if (verboseMode || (message && message.code)) {
-                  console.log(JSON.stringify(arguments));
-                }
-              };
-
-              /*
-              var oldNotify = XT.app.$.postbooks.notify;
-              XT.app.$.postbooks.notify = function (notifySender, notifyObj) {
-                if (notifyObj && notifyObj.type === XM.Model.CRITICAL) {
-                  assert.fail(JSON.stringify(notifyObj));
-                } else {
-                  oldNotify(notifySender, notifyObj);
-                }
-              };
-              */
-              // WIP. Not yet working. Probably need to move it up to earlier app start status.
-              /*
-              var oldLoc = XT.String.loc;
-              XT.String.loc = function (str) {
-                var localized = XT.localizeString(str);
-                if (localized === str) {
-                  assert.fail(str + " has no translation");
-                } else {
-                  oldLoc(str);
-                }
-              };
-              */
-
-              // these are really annoying
-              browser.window.Backbone.Relational.showWarnings = false;
-
-              // clear out both is interval and the I'm-giving-up timeout
-              // we really want neither to be run again.
-              clearInterval(interval);
-              clearTimeout(timeout);
-
-              // give control back to whoever called us
-              callback();
-            }
-          }, 100); // 100 = check to see if the app is loaded every 0.1 seconds
-        });
+    var browser = new Browser({
+      runScripts: false,
+      site: host,
+      maxWait: 30 * 1000
     });
-  };
 
-  /**
-    More of a proof-of-concept than anything else.
-   */
-  var testLoad = exports.testLoad = function () {
-    console.log("Testing loadup of app.");
-
-    loadApp(function () {
-      console.log("App loaded successfully.");
-      process.exit(0);
-    });
+    browser
+      .visit(host)
+      .then(function (e) {
+        if (e) {
+          console.log("Zombie visit error: ", e);
+        }
+        //
+        // This is the login screen
+        //
+        browser.fill('id', username);
+        browser.fill('password', password);
+        browser.select('database', database);
+      })
+      .then(function () {
+        browser.runScripts = true;
+        return browser.pressButton('Sign In');
+      })
+      .then(function () {
+        // Check frequently to see if the app is loaded, and move forward when it is
+        var interval = setInterval(function () {
+          if (browser.window.XT && browser.window.XT.app && browser.window.XT.app.state === 6) {
+
+            // add the global objects to our global namespace
+            enyo = browser.window.enyo;
+            XG = browser.window.XG;
+            XM = browser.window.XM;
+            XT = browser.window.XT;
+            XV = browser.window.XV;
+            XZ.browser = browser;
+            XZ.host = host;
+            XZ.database = database;
+
+            XT.log = function (message, obj) {
+              if (message && _.isFunction(message.toLowerCase) && message.toLowerCase().indexOf("error") === 0) {
+                // errors from the datasource should cause the test to fail
+                assert.fail(message + " " + JSON.stringify(obj));
+              }
+              // log if verbose mode or if the log is a warning
+              if (verboseMode || (message && message.code)) {
+                console.log(JSON.stringify(arguments));
+              }
+            };
+
+            // these are really annoying
+            browser.window.Backbone.Relational.showWarnings = false;
+
+            // clear out both is interval and the I'm-giving-up timeout
+            // we really want neither to be run again.
+            clearInterval(interval);
+
+            // give control back to whoever called us
+            callback();
+          }
+        }, 500); // 100 = check to see if the app is loaded every 0.1 seconds
+      });
   };
-
 }());