Sample code of Widgets
authorSeshu-Kumar-M <seshu.kumar.m@huawei.com>
Wed, 1 Feb 2017 16:07:15 +0000 (21:37 +0530)
committerSeshu-Kumar-M <seshu.kumar.m@huawei.com>
Wed, 1 Feb 2017 16:07:15 +0000 (21:37 +0530)
Code with the sample usage of the OPEN-O GUI Framework for widgets

Issue-Id : CLIENT-11

Change-Id: If8c16829a048221e213d44c8e752bbd4a4622632
Signed-off-by: Seshu-Kumar-M <seshu.kumar.m@huawei.com>
29 files changed:
common/src/main/webapp/usage guide/appserver/api.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/buttonsData.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/checkboxData.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/dropdownData.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/functionalData.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/input.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/list.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/radioData.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/data/shortNote.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/index.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/read.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/json.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/raw.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/index.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/package.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/index.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/package.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.jshintrc [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.npmignore [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/History.md [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Makefile [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Readme.md [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/bower.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/browser.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/component.json [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/debug.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node.js [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/.npmignore [new file with mode: 0644]
common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/History.md [new file with mode: 0644]

diff --git a/common/src/main/webapp/usage guide/appserver/api.js b/common/src/main/webapp/usage guide/appserver/api.js
new file mode 100644 (file)
index 0000000..d6517f1
--- /dev/null
@@ -0,0 +1,311 @@
+/*\r
+\r
+    Copyright 2016-2017, Huawei Technologies Co., Ltd.\r
+\r
+    Licensed under the Apache License, Version 2.0 (the "License");\r
+    you may not use this file except in compliance with the License.\r
+    You may obtain a copy of the License at\r
+\r
+            http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+    Unless required by applicable law or agreed to in writing, software\r
+    distributed under the License is distributed on an "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+    See the License for the specific language governing permissions and\r
+    limitations under the License.\r
+\r
+*/\r
+\r
+var express = require('express');\r
+var router = express.Router();\r
+/*var js2xmlparser = require("js2xmlparser");\r
+var xml2js = require('xml2js');*/\r
+var fs = require('fs');\r
+var http = require('http');\r
+var bodyParser = require('body-parser');\r
+var path=require('path');\r
+\r
+var MongoClient = require('mongodb').MongoClient;\r
+var ObjectId = require('mongodb').ObjectId;\r
+\r
+var url = 'mongodb://localhost/rest_test';\r
+\r
+/*var exists = require('file-exists');*/\r
+\r
+// ############################################  Sign In code #################################################\r
+// Routes\r
+router.post('/signin', function (req, res) {\r
+       console.log("signin");\r
+       var obj = {\r
+               "name": req.body.name,\r
+               "pswd": req.body.pswd\r
+       };\r
+\r
+       var ObjLst =[] ;\r
+       var nameExist =0;\r
+       console.log(obj);\r
+       ObjLst = JSON.parse(fs.readFileSync('./data/input.json', 'utf8'));\r
+       for(var index = 0; index < ObjLst.length; index++) {\r
+               if (ObjLst[index].name === req.body.name && ObjLst[index].pswd === req.body.pswd) {\r
+                       console.log("success");\r
+                       nameExist++;\r
+                       res.statusCode=200;\r
+                       res.statusMessage="Sucessfully loged in";\r
+                       break;\r
+               }\r
+       }\r
+       if (nameExist != 1) {\r
+               console.log("failed");\r
+               res.statusCode=404;\r
+               res.statusMessage="failed to login";\r
+       }\r
+       res.send();\r
+});\r
+\r
+// ############################################  Sign Up Code #################################################\r
+\r
+router.post('/signup', function (req, res) {\r
+\r
+       console.log("in api.js");\r
+\r
+       var ObjLst =[] ;\r
+       var nameNotExist =0;\r
+       var obj = {\r
+               "name": req.body.name,\r
+               "pswd": req.body.pswd,\r
+               "email": req.body.email\r
+       };\r
+       if(fs.existsSync("./data/input.json")) {\r
+               console.log("File Exist");\r
+               ObjLst = JSON.parse(fs.readFileSync('./data/input.json', 'utf8'));\r
+       }\r
+\r
+       for(var index = 0; index < ObjLst.length; index++) {\r
+               if (ObjLst[index].name === req.body.name && ObjLst[index].email === req.body.email) {\r
+                       console.log("success");\r
+                       nameNotExist++;\r
+                       break;\r
+               }\r
+       }\r
+       if (nameNotExist == 0) {\r
+               ObjLst.push(obj);\r
+               console.log(ObjLst);\r
+               fs.writeFile('./data/input.json', JSON.stringify(ObjLst),  function(err) {\r
+                       if (err) {\r
+                               return console.error(err);\r
+                       }\r
+                       console.log("Data written successfully!");\r
+                       console.log("Let's read newly written data");\r
+                       res.statusCode=200;\r
+                       res.statusMessage="Sucessfully signed up";\r
+               });\r
+       }\r
+       res.send();\r
+});\r
+\r
+function getDataFrmProvince() {\r
+    var provinceData =[] ;\r
+    if(fs.existsSync("./data/provinceData.json")) {\r
+        console.log("File Exist");\r
+        provinceData = JSON.parse(fs.readFileSync('./data/provinceData.json', 'utf8'));\r
+    }\r
+    return provinceData;\r
+}\r
+\r
+function saveDataToProvince(provinceData) {\r
+    fs.writeFile('./data/provinceData.json', JSON.stringify(provinceData),  function(err) {\r
+        var statueCode = 0;\r
+        if (err) {\r
+            console.error(err);\r
+            return statueCode = 404;\r
+        }\r
+        console.log("Data written successfully!");\r
+        console.log("Let's read newly written data");\r
+        return statueCode = 200;\r
+    });\r
+}\r
+\r
+function getIndexOfIdProvince(id) {\r
+    var provinceData = getDataFrmProvince();\r
+    var returnIndx = -1;\r
+    for (var index = 0; index < provinceData.length; index++) {\r
+        if(provinceData[index].id == id) {\r
+            returnIndx = index;\r
+            break;\r
+        }\r
+    }\r
+    return returnIndx;\r
+}\r
+\r
+function deleteIdFromProvince(idList) {\r
+    var provinceData = getDataFrmProvince();\r
+    /*for (var index = 0; index < provinceData.length; index++) {\r
+        if(provinceData[index].id == id) {\r
+            console.log("Deleting id : " + index);\r
+            provinceData.splice(index, 1);\r
+            break;\r
+        }\r
+    }*/\r
+    for(var i = 0; i < idList.length; i++) {\r
+        for (var index = 0; index < provinceData.length; index++) {\r
+            if(provinceData[index].id == idList[i]) {\r
+                console.log("Deleting id : " + index);\r
+                provinceData.splice(index, 1);\r
+                break;\r
+            }\r
+        }\r
+    }\r
+    return provinceData;\r
+}\r
+\r
+router.get('/getAllProvinceData', function (req, res) {\r
+    var provinceData = getDataFrmProvince();\r
+    if(provinceData) {\r
+        output = '{"provinceData" : ' + JSON.stringify(provinceData) + '}';\r
+\r
+        res.setHeader("Content-Type", "application/json");\r
+        console.log("output : " + JSON.stringify(output));\r
+        res.end(output);\r
+    }\r
+    /*MongoClient.connect(url, function(err, db) {\r
+        console.log("Connected... :-)");\r
+        var cursor = db.collection('ProvinceData').find({},function(err, cursor) {\r
+            cursor.toArray(function (err, items) {\r
+                output = '{"provinceData" : ' + JSON.stringify(items) + '}';\r
+\r
+                res.setHeader("Content-Type", "application/json");\r
+                //console.log("output : " + JSON.stringify(output));\r
+                res.end(output);\r
+            });\r
+        });\r
+        db.close(function(){\r
+            console.log("Connection Closed... :-)");\r
+        });\r
+    });*/\r
+});\r
+\r
+\r
+router.post('/addProvinceData', function(req, res) {\r
+    var provinceData = getDataFrmProvince();\r
+    var gen_id = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;\r
+    provinceData.push({\r
+        "id": gen_id,\r
+        "province_name": req.body.province_name,\r
+        "ip": req.body.ip,\r
+        "port": req.body.port\r
+    });\r
+    var statusCode = saveDataToProvince(provinceData);\r
+    res.statusCode=statusCode;\r
+\r
+    if(statusCode == 200) {\r
+        res.statusMessage="Sucessfully signed up";\r
+    }\r
+    else {\r
+        res.statusMessage="Error";\r
+    }\r
+\r
+    /*MongoClient.connect(url, function(err, db) {\r
+        db.collection('ProvinceData').insertOne({\r
+            province_name: req.body.province_name,\r
+            ip: req.body.ip,\r
+            port: req.body.port\r
+        });\r
+        db.close();\r
+    });*/\r
+    res.statusCode=200;\r
+    res.statusMessage="Sucessfully signed up";\r
+    res.send();\r
+});\r
+\r
+router.post('/deleteProvinceData', function (req, res) {\r
+    //var provinceData = getDataFrmProvince();\r
+    console.log("IdList: "+ req.body.idList);\r
+    /*for(var i = req.body.idList.length - 1; i >= 0; i--) {\r
+        var index = getIndexOfIdProvince(req.body.idList[i]);\r
+        console.log("Deleting id : " + index);\r
+        if(index != -1) {\r
+            provinceData.splice(index, 1);\r
+        }\r
+        //deleteIdFromProvince(req.body.idList[i]);\r
+    };*/\r
+\r
+    var provinceData = deleteIdFromProvince(req.body.idList);\r
+\r
+    saveDataToProvince(provinceData);\r
+\r
+    /*MongoClient.connect(url, function(err, db) {\r
+\r
+        console.log("Deleting Province Data... " + req.body.idList);\r
+        for(var i = 0; i < req.body.idList.length; i++) {\r
+            db.collection('ProvinceData').deleteOne({ "_id": ObjectId(req.body.idList[i])});\r
+        }\r
+        /!*db.collection('ProvinceData').deleteOne({ "_id": ObjectId(req.body.idList)});*!/\r
+\r
+        db.close(function(){\r
+            console.log("Connection Closed... :-)");\r
+        });\r
+        res.send();\r
+    });*/\r
+    res.statusCode=200;\r
+    res.statusMessage="Sucessfully signed up";\r
+    res.send();\r
+});\r
+\r
+router.post('/editProvinceData', function (req, res) {\r
+    var provinceData = getDataFrmProvince();\r
+    var index = getIndexOfIdProvince(req.body.id);\r
+    console.log("Editing id : " + index);\r
+    if(index != -1) {\r
+        provinceData[index].province_name = req.body.province_name;\r
+        provinceData[index].ip = req.body.ip;\r
+        provinceData[index].port = req.body.port;\r
+    }\r
+    saveDataToProvince(provinceData);\r
+\r
+    res.statusCode=200;\r
+    res.statusMessage="Sucessfully signed up";\r
+    res.send();\r
+    /*MongoClient.connect(url, function(err, db) {\r
+\r
+        console.log("Editing Province Data... " + req.body._id);\r
+        db.collection('ProvinceData').updateOne(\r
+            { "_id": ObjectId(req.body._id)},\r
+            {\r
+                $set: {'province_name': req.body.province_name, 'ip': req.body.ip, 'port': req.body.port}\r
+            }\r
+        );\r
+\r
+        db.close(function(){\r
+            console.log("Connection Closed... :-)");\r
+        });\r
+        res.send();\r
+    });*/\r
+});\r
+\r
+\r
+/////////////////////////////////////////////////  To Read JSON data for all widgets  //////////////////////////////////////////\r
+\r
+function getDataFrmJSON(wdgtType) {\r
+    var jsonData =[] ;\r
+    if(fs.existsSync("./data/"+wdgtType+".json")) {\r
+        console.log("File Exist");\r
+        jsonData = JSON.parse(fs.readFileSync('./data/'+wdgtType+'.json', 'utf8'));\r
+    }\r
+    return jsonData;\r
+}\r
+\r
+router.post('/getAllJSONData', function (req, res) {\r
+    var jsonData = getDataFrmJSON(req.body.wdgtType);\r
+    if(jsonData) {\r
+        output = '{"data" : ' + JSON.stringify(jsonData) + '}';\r
+        res.setHeader("Content-Type", "application/json");\r
+        console.log("output : " + JSON.stringify(output));\r
+        res.end(output);\r
+    }\r
+});\r
+\r
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Return router\r
+module.exports = router; \r
+\r
diff --git a/common/src/main/webapp/usage guide/appserver/data/buttonsData.json b/common/src/main/webapp/usage guide/appserver/data/buttonsData.json
new file mode 100644 (file)
index 0000000..0176461
--- /dev/null
@@ -0,0 +1,30 @@
+{\r
+  "default_btn_data" : {\r
+    "def_button" : {"title":"Default"},\r
+    "def_print_button" : {"title":"Print", "type":"btn btn-default", "gType": "glyphicon-print", "iconPosition":"left"},\r
+    "def_print_button_right" : {"title":"Search", "type":"btn btn-default", "gType": "glyphicon-search", "iconPosition":"right"}\r
+  },\r
+\r
+  "visual_btn_data" : {\r
+    "vis_pri_btn_data" : {"title":"Primary", "type":"primary"},\r
+    "vis_sec_btn_data" : {"title":"Secondary", "type":"secondary"},\r
+    "vis_succ_btn_data" : {"title":"Success", "type":"success"},\r
+    "vis_inf_btn_data" : {"title":"Info", "type":"info"},\r
+    "vis_warn_btn_data" : {"title":"Warning", "type":"warning"},\r
+    "vis_dang_btn_data" : {"title":"Danger", "type":"danger"},\r
+    "vis_link_btn_data" : {"title":"Link", "type":"link"}\r
+  },\r
+\r
+  "diffSize_btn_data" : {\r
+    "size_small_btn_data" : {"title": "Small Button", "type": "primary", "size": "btn-sm"},\r
+    "size_large_btn_data" : {"title": "Large Button", "type": "primary", "size": "btn-lg"},\r
+    "size_block_btn_data" : {"title": "Large Block Button", "type": "primary", "size": "btn-lg btn-block"}\r
+  },\r
+\r
+  "icon_btn_data" : {\r
+    "search_icon_btn_data" : {"title": "Search Icon", "type": "btn-default", "gType": "glyphicon-search"},\r
+    "search_icon_styled_btn_data" : {"title": "Styled Search Icon", "type": "primary", "gType": "glyphicon-search"},\r
+    "print_icon_btn_data" : {"title": "Print", "type": "primary btn-lg", "gType": "glyphicon-print"}\r
+  }\r
+\r
+}\r
diff --git a/common/src/main/webapp/usage guide/appserver/data/checkboxData.json b/common/src/main/webapp/usage guide/appserver/data/checkboxData.json
new file mode 100644 (file)
index 0000000..f86d319
--- /dev/null
@@ -0,0 +1,8 @@
+{\r
+  "checkbox_default_data" : {"id":1, "label":"Default check box", "type":"default", "checked":true},\r
+  "checkbox_primary_data" : {"id":2, "label":"Primary check box", "type":"primary", "checked":false},\r
+  "checkbox_success_data" : {"id":3, "label":"Success check box", "type":"success", "checked":true},\r
+  "checkbox_danger_data" : {"id":4, "label":"Danger check box", "type":"danger", "checked":true},\r
+  "checkbox_warn_data" : {"id":5, "label":"Warn check box", "type":"warning", "checked":false},\r
+  "checkbox_info_data" : {"id":6, "label":"Info check box", "type":"info", "checked":true}\r
+}
\ No newline at end of file
diff --git a/common/src/main/webapp/usage guide/appserver/data/dropdownData.json b/common/src/main/webapp/usage guide/appserver/data/dropdownData.json
new file mode 100644 (file)
index 0000000..a02e31c
--- /dev/null
@@ -0,0 +1,18 @@
+{\r
+  "dropped_down_data" :{"title":"DropDown","position":"down", "items":[{"itemLabel": "Node JS"},{"itemLabel": "JS"}]},\r
+  "dropped_up_data" : {"title":"DropUp","position":"up", "items":[{"itemLabel": "PHP"},{"itemLabel": "ASP"}]},\r
+  "dropHeader_data" :{"title":"DropHeader","position":"down",\r
+    "items":[{"itemLabel": "Web UI", "isheader":true},\r
+      {"itemLabel": "HTML", "isheader":false},\r
+      {"itemLabel": "CSS", "isheader":false},\r
+      {"itemLabel": "JS", "isheader":false},\r
+      {"itemLabel": "Programming", "isheader":true},\r
+      {"itemLabel": "C", "isheader":false},\r
+      {"itemLabel": "C++", "isheader":false}]\r
+  },\r
+  "dropSimple_data" : {"title":"Gadgets",\r
+    "items":[\r
+      {"itemLabel": "Cameras"},{"itemLabel": "Mobile Phones"},{"itemLabel": "Computers"},{"itemLabel": "Monitors"},{"itemLabel": "Tablets"},{"itemLabel": "Others"}\r
+    ]\r
+  }\r
+}
\ No newline at end of file
diff --git a/common/src/main/webapp/usage guide/appserver/data/functionalData.json b/common/src/main/webapp/usage guide/appserver/data/functionalData.json
new file mode 100644 (file)
index 0000000..35b66f4
--- /dev/null
@@ -0,0 +1,6 @@
+{\r
+  "create_data" : {"title":"Create", "labels":[{"text": "Username", "input_id":"username", "type":"text"},{"text": "Password", "input_id":"username", "type":"password"}], "showClose":"true","closeBtnTxt":"Cancel","msg":"This is Create dialog box", "buttons":[{"text": "Ok"}]},\r
+  "modify_data" : {"title":"Modify", "labels":[{"text": "Username", "input_id":"username", "type":"text"},{"text": "Password", "input_id":"username", "type":"password"}], "showClose":"true","closeBtnTxt":"Cancel","msg":"This is Modify dialog box", "buttons":[{"text": "Ok"}]},\r
+  "delete_data" : {"title":"Delete", "showClose":"true","closeBtnTxt":"Cancel","msg":"This is Delete dialog box", "buttons":[{"text": "Ok"}]},\r
+  "workflow_data" : {"title":"Workflow","showClose":"true","closeBtnTxt":"Cancel","msg":"This is Workflow dialog box", "buttons":[{"text": "Ok"}]}\r
+}\r
diff --git a/common/src/main/webapp/usage guide/appserver/data/input.json b/common/src/main/webapp/usage guide/appserver/data/input.json
new file mode 100644 (file)
index 0000000..7126e78
--- /dev/null
@@ -0,0 +1 @@
+[{"name":"shahid","pswd":"shahid","email":"shahid@gmail.com"},{"name":"noor","pswd":"noor","email":"noor@lnt.com"}]
\ No newline at end of file
diff --git a/common/src/main/webapp/usage guide/appserver/data/list.json b/common/src/main/webapp/usage guide/appserver/data/list.json
new file mode 100644 (file)
index 0000000..505bbcc
--- /dev/null
@@ -0,0 +1,76 @@
+[\r
+  {\r
+    "id": "113",\r
+    "title": "Movies",\r
+     "subMenu": [\r
+       {\r
+         "title":"Sci-fi",\r
+         "subsubMenu":[\r
+           {"title":"Intersteller"},\r
+           {"title":"Inception"},\r
+           {"title":"The Arrival"},\r
+           {"title":"The Paycheck"}\r
+         ]\r
+       },\r
+       {\r
+         "title":"Animation",\r
+         "subsubMenu":[\r
+           {"title":"Big Hero"},\r
+           {"title":"Monster University"},\r
+           {"title":"Frozen"},\r
+           {"title":"Car"}\r
+         ]\r
+       },\r
+       {\r
+         "title":"Action",\r
+         "subsubMenu":[\r
+           {"title":"Mission Impossible"},\r
+           {"title":"The Expendables"}\r
+         ]\r
+       },\r
+       {\r
+         "title":"Horror",\r
+         "subsubMenu":[\r
+           {"title":"Evil Dead"},\r
+           {"title":"Anebelle"}\r
+         ]\r
+       },\r
+       {\r
+         "title":"Comedy",\r
+         "subsubMenu":[\r
+           {"title":"Superbad"},\r
+           {"title":"Airplane"},\r
+           {"title":"Clueless"}\r
+         ]\r
+       }\r
+     ]\r
+  },\r
+  {\r
+    "id": "211",\r
+    "title": "Games",\r
+    "subMenu": [{"title":"Outdoor Games", "subsubMenu":[{"title":"Cricket"},{"title":"Football"}, {"title":"Volleyball"}, {"title":"Hockey"}]}, {"title":"Indoor Games", "subsubMenu":[{"title":"Carroms"},{"title":"Table Tennis"}]}, {"title":"Puzzles", "subsubMenu":[{"title":"Sudoku"},{"title":"Chess"}]}, {"title":"Card Games", "subsubMenu":[{"title":"UNO"},{"title":"RUMMY"}]}]\r
+  },\r
+  {\r
+    "id": "037",\r
+    "title": "Animals",\r
+    "subMenu": [{"title":"Mammals", "subsubMenu":[{"title":"Monkey"},{"title":"Elephant"}]}, {"title":"Birds", "subsubMenu":[{"title":"Parrot"},{"title":"Ostrich"},{"title":"Eagle"}]}, {"title":"Reptiles", "subsubMenu":[{"title":"Snake"},{"title":"Lizard"},{"title":"Cameleon"}]}]\r
+  },\r
+  {\r
+    "id": "127",\r
+    "title": "Vehicles",\r
+    "subMenu": [{"title":"Cars", "subsubMenu":[{"title":"Audi"},{"title":"Range Rover"}]}, {"title":"Bikes", "subsubMenu":[{"title":"Apache"},{"title":"Pulsar"},{"title":"FZ"},{"title":"Jupiter"},{"title":"Victor"},{"title":"Avengers"}]}, {"title":"Cycles", "subsubMenu":[{"title":"Hero"},{"title":"Lady Bird"},{"title":"Firefox"}]}]\r
+  },\r
+  {\r
+    "id": "181",\r
+    "title": "Languages",\r
+    "subMenu": [{"title":"English"}, {"title":"French"}, {"title":"Chinese"}, {"title":"Hindi"}]\r
+  },\r
+  {\r
+    "id": "210",\r
+    "title": "Continents",\r
+    "subMenu": [{"title":"Asia", "subsubMenu":[{"title":"India"},{"title":"China"}]}, {"title":"Africa", "subsubMenu":[{"title":"South Africa"},{"title":"Kenya"},{"title":"Zimbabwe"}]}]\r
+  }\r
+]\r
+\r
+\r
+\r
diff --git a/common/src/main/webapp/usage guide/appserver/data/radioData.json b/common/src/main/webapp/usage guide/appserver/data/radioData.json
new file mode 100644 (file)
index 0000000..da0daa4
--- /dev/null
@@ -0,0 +1,14 @@
+{\r
+  "radio_btn_default_data" : {"id":1, "label":"Default Radio Btn", "type":"default", "checked":false},\r
+  "radio_btn_primary_data" : {"id":2, "label":"Primary Radio Btn", "type":"primary", "checked":false},\r
+  "radio_btn_success_data" : {"id":3, "label":"Success Radio Btn", "type":"success", "checked":true},\r
+  "radio_btn_danger_data" : {"id":4, "label":"Danger Radio Btn", "type":"danger", "checked":false},\r
+  "radio_btn_Warn_data" : {"id":5, "label":"Warn Radio Btn", "type":"warning", "checked":false},\r
+  "radio_btn_info_data" : {"id":6, "label":"Info Radio Btn", "type":"info", "checked":false}\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/common/src/main/webapp/usage guide/appserver/data/shortNote.json b/common/src/main/webapp/usage guide/appserver/data/shortNote.json
new file mode 100644 (file)
index 0000000..6b2942a
--- /dev/null
@@ -0,0 +1,17 @@
+{\r
+  "treeTip":"Ztree",\r
+  "accordionTip":"Use the data-parent attribute to make sure that all collapsible elements under the specified parent will be closed when one of the collapsible item is shown.", \r
+  "tabTip":"Tabs are created with <ul class=nav nav-tabs> Tip: Also mark the current page with <li class=active>",\r
+  "vtabTip":"Pills can also be displayed vertically. Just add the .nav-stacked class",\r
+  "tableTip":"The .table class adds basic styling to a table, The .table-hover class adds a hover effect (grey background color) on table rows,The .table-striped class adds zebra-stripes to a table,Loop through all table rows, and hide those who don't match the search query",\r
+  "buttonTip":"Default Buttons-To achieve the button styles above, Bootstrap has the following classes like .btn-default, Visual Buttons- To achieve the button styles above, Bootstrap has the following classes like .btn-primary .btn-success .btn-info .btn-warning .btn-danger .btn-link,Different Sized Buttons-To achieve the button styles above, Bootstrap has the following classes like .btn-lg .btn-md .btn-sm .btn-xs,Icon Buttons- Bootstrap provides 260 glyphicons from the Glyphicons Halflings set. Glyphicons can be used in text, buttons, toolbars, navigation, forms, etc.",  \r
+  "dropdownTip":"Dropdown- A dropdown menu is a toggleable menu that allows the user to choose one value from a predefined list,The .dropdown class indicates a dropdown menu,To open the dropdown menu, use a button or a link with a class of .dropdown-toggle and the data-toggle=dropdown attribute. The .caret class creates a caret arrow icon (), which indicates that the button is a dropdown. Add the .dropdown-menu class to a <ul> element to actually build the dropdown menu. Dropdown Header-The .dropdown-header class is used to add headers inside the dropdown menu. Dropup Header-If you want the dropdown menu to expand upwards instead of downwards, change the <div> element with class=dropdown to dropup",\r
+  "radioTip":"Use the type as Radio to use radio buttons",\r
+  "checkboxTip":"use the following classes funkyradio-default funkyradio-primary funkyradio-success funkyradio-info funkyradio-danger funkyradio-warning",\r
+  "toolTip":"Tooltip",\r
+  "listTip":"Listtip",\r
+   "provinceTip":"provinceTip",\r
+    "notificationTip":"notificationTip",\r
+     "functionalTip":"functionalTip"\r
+\r
+}
\ No newline at end of file
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/index.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/index.js
new file mode 100644 (file)
index 0000000..93c3a1f
--- /dev/null
@@ -0,0 +1,157 @@
+/*!
+ * body-parser
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var deprecate = require('depd')('body-parser')
+
+/**
+ * Cache of loaded parsers.
+ * @private
+ */
+
+var parsers = Object.create(null)
+
+/**
+ * @typedef Parsers
+ * @type {function}
+ * @property {function} json
+ * @property {function} raw
+ * @property {function} text
+ * @property {function} urlencoded
+ */
+
+/**
+ * Module exports.
+ * @type {Parsers}
+ */
+
+exports = module.exports = deprecate.function(bodyParser,
+  'bodyParser: use individual json/urlencoded middlewares')
+
+/**
+ * JSON parser.
+ * @public
+ */
+
+Object.defineProperty(exports, 'json', {
+  configurable: true,
+  enumerable: true,
+  get: createParserGetter('json')
+})
+
+/**
+ * Raw parser.
+ * @public
+ */
+
+Object.defineProperty(exports, 'raw', {
+  configurable: true,
+  enumerable: true,
+  get: createParserGetter('raw')
+})
+
+/**
+ * Text parser.
+ * @public
+ */
+
+Object.defineProperty(exports, 'text', {
+  configurable: true,
+  enumerable: true,
+  get: createParserGetter('text')
+})
+
+/**
+ * URL-encoded parser.
+ * @public
+ */
+
+Object.defineProperty(exports, 'urlencoded', {
+  configurable: true,
+  enumerable: true,
+  get: createParserGetter('urlencoded')
+})
+
+/**
+ * Create a middleware to parse json and urlencoded bodies.
+ *
+ * @param {object} [options]
+ * @return {function}
+ * @deprecated
+ * @public
+ */
+
+function bodyParser (options) {
+  var opts = {}
+
+  // exclude type option
+  if (options) {
+    for (var prop in options) {
+      if (prop !== 'type') {
+        opts[prop] = options[prop]
+      }
+    }
+  }
+
+  var _urlencoded = exports.urlencoded(opts)
+  var _json = exports.json(opts)
+
+  return function bodyParser (req, res, next) {
+    _json(req, res, function (err) {
+      if (err) return next(err)
+      _urlencoded(req, res, next)
+    })
+  }
+}
+
+/**
+ * Create a getter for loading a parser.
+ * @private
+ */
+
+function createParserGetter (name) {
+  return function get () {
+    return loadParser(name)
+  }
+}
+
+/**
+ * Load a parser module.
+ * @private
+ */
+
+function loadParser (parserName) {
+  var parser = parsers[parserName]
+
+  if (parser !== undefined) {
+    return parser
+  }
+
+  // this uses a switch for static require analysis
+  switch (parserName) {
+    case 'json':
+      parser = require('./lib/types/json')
+      break
+    case 'raw':
+      parser = require('./lib/types/raw')
+      break
+    case 'text':
+      parser = require('./lib/types/text')
+      break
+    case 'urlencoded':
+      parser = require('./lib/types/urlencoded')
+      break
+  }
+
+  // store to prevent invoking require()
+  return (parsers[parserName] = parser)
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/read.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/read.js
new file mode 100644 (file)
index 0000000..3c0fe93
--- /dev/null
@@ -0,0 +1,188 @@
+/*!
+ * body-parser
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var createError = require('http-errors')
+var getBody = require('raw-body')
+var iconv = require('iconv-lite')
+var onFinished = require('on-finished')
+var zlib = require('zlib')
+
+/**
+ * Module exports.
+ */
+
+module.exports = read
+
+/**
+ * Read a request into a buffer and parse.
+ *
+ * @param {object} req
+ * @param {object} res
+ * @param {function} next
+ * @param {function} parse
+ * @param {function} debug
+ * @param {object} [options]
+ * @api private
+ */
+
+function read (req, res, next, parse, debug, options) {
+  var length
+  var opts = options || {}
+  var stream
+
+  // flag as parsed
+  req._body = true
+
+  // read options
+  var encoding = opts.encoding !== null
+    ? opts.encoding || 'utf-8'
+    : null
+  var verify = opts.verify
+
+  try {
+    // get the content stream
+    stream = contentstream(req, debug, opts.inflate)
+    length = stream.length
+    stream.length = undefined
+  } catch (err) {
+    return next(err)
+  }
+
+  // set raw-body options
+  opts.length = length
+  opts.encoding = verify
+    ? null
+    : encoding
+
+  // assert charset is supported
+  if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {
+    return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
+      charset: encoding.toLowerCase()
+    }))
+  }
+
+  // read body
+  debug('read body')
+  getBody(stream, opts, function (err, body) {
+    if (err) {
+      // default to 400
+      setErrorStatus(err, 400)
+
+      // echo back charset
+      if (err.type === 'encoding.unsupported') {
+        err = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
+          charset: encoding.toLowerCase()
+        })
+      }
+
+      // read off entire request
+      stream.resume()
+      onFinished(req, function onfinished () {
+        next(err)
+      })
+      return
+    }
+
+    // verify
+    if (verify) {
+      try {
+        debug('verify body')
+        verify(req, res, body, encoding)
+      } catch (err) {
+        // default to 403
+        setErrorStatus(err, 403)
+        next(err)
+        return
+      }
+    }
+
+    // parse
+    var str
+    try {
+      debug('parse body')
+      str = typeof body !== 'string' && encoding !== null
+        ? iconv.decode(body, encoding)
+        : body
+      req.body = parse(str)
+    } catch (err) {
+      err.body = str === undefined
+        ? body
+        : str
+
+      // default to 400
+      setErrorStatus(err, 400)
+
+      next(err)
+      return
+    }
+
+    next()
+  })
+}
+
+/**
+ * Get the content stream of the request.
+ *
+ * @param {object} req
+ * @param {function} debug
+ * @param {boolean} [inflate=true]
+ * @return {object}
+ * @api private
+ */
+
+function contentstream (req, debug, inflate) {
+  var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()
+  var length = req.headers['content-length']
+  var stream
+
+  debug('content-encoding "%s"', encoding)
+
+  if (inflate === false && encoding !== 'identity') {
+    throw createError(415, 'content encoding unsupported')
+  }
+
+  switch (encoding) {
+    case 'deflate':
+      stream = zlib.createInflate()
+      debug('inflate body')
+      req.pipe(stream)
+      break
+    case 'gzip':
+      stream = zlib.createGunzip()
+      debug('gunzip body')
+      req.pipe(stream)
+      break
+    case 'identity':
+      stream = req
+      stream.length = length
+      break
+    default:
+      throw createError(415, 'unsupported content encoding "' + encoding + '"', {
+        encoding: encoding
+      })
+  }
+
+  return stream
+}
+
+/**
+ * Set a status on an error object, if ones does not exist
+ * @private
+ */
+
+function setErrorStatus (error, status) {
+  if (!error.status && !error.statusCode) {
+    error.status = status
+    error.statusCode = status
+  }
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/json.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/json.js
new file mode 100644 (file)
index 0000000..d0023c7
--- /dev/null
@@ -0,0 +1,175 @@
+/*!
+ * body-parser
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var bytes = require('bytes')
+var contentType = require('content-type')
+var createError = require('http-errors')
+var debug = require('debug')('body-parser:json')
+var read = require('../read')
+var typeis = require('type-is')
+
+/**
+ * Module exports.
+ */
+
+module.exports = json
+
+/**
+ * RegExp to match the first non-space in a string.
+ *
+ * Allowed whitespace is defined in RFC 7159:
+ *
+ *    ws = *(
+ *            %x20 /              ; Space
+ *            %x09 /              ; Horizontal tab
+ *            %x0A /              ; Line feed or New line
+ *            %x0D )              ; Carriage return
+ */
+
+var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*(.)/ // eslint-disable-line no-control-regex
+
+/**
+ * Create a middleware to parse JSON bodies.
+ *
+ * @param {object} [options]
+ * @return {function}
+ * @public
+ */
+
+function json (options) {
+  var opts = options || {}
+
+  var limit = typeof opts.limit !== 'number'
+    ? bytes.parse(opts.limit || '100kb')
+    : opts.limit
+  var inflate = opts.inflate !== false
+  var reviver = opts.reviver
+  var strict = opts.strict !== false
+  var type = opts.type || 'application/json'
+  var verify = opts.verify || false
+
+  if (verify !== false && typeof verify !== 'function') {
+    throw new TypeError('option verify must be function')
+  }
+
+  // create the appropriate type checking function
+  var shouldParse = typeof type !== 'function'
+    ? typeChecker(type)
+    : type
+
+  function parse (body) {
+    if (body.length === 0) {
+      // special-case empty json body, as it's a common client-side mistake
+      // TODO: maybe make this configurable or part of "strict" option
+      return {}
+    }
+
+    if (strict) {
+      var first = firstchar(body)
+
+      if (first !== '{' && first !== '[') {
+        debug('strict violation')
+        throw new SyntaxError('Unexpected token ' + first)
+      }
+    }
+
+    debug('parse json')
+    return JSON.parse(body, reviver)
+  }
+
+  return function jsonParser (req, res, next) {
+    if (req._body) {
+      debug('body already parsed')
+      next()
+      return
+    }
+
+    req.body = req.body || {}
+
+    // skip requests without bodies
+    if (!typeis.hasBody(req)) {
+      debug('skip empty body')
+      next()
+      return
+    }
+
+    debug('content-type %j', req.headers['content-type'])
+
+    // determine if request should be parsed
+    if (!shouldParse(req)) {
+      debug('skip parsing')
+      next()
+      return
+    }
+
+    // assert charset per RFC 7159 sec 8.1
+    var charset = getCharset(req) || 'utf-8'
+    if (charset.substr(0, 4) !== 'utf-') {
+      debug('invalid charset')
+      next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
+        charset: charset
+      }))
+      return
+    }
+
+    // read
+    read(req, res, next, parse, debug, {
+      encoding: charset,
+      inflate: inflate,
+      limit: limit,
+      verify: verify
+    })
+  }
+}
+
+/**
+ * Get the first non-whitespace character in a string.
+ *
+ * @param {string} str
+ * @return {function}
+ * @api public
+ */
+
+function firstchar (str) {
+  var match = FIRST_CHAR_REGEXP.exec(str)
+  return match ? match[1] : ''
+}
+
+/**
+ * Get the charset of a request.
+ *
+ * @param {object} req
+ * @api private
+ */
+
+function getCharset (req) {
+  try {
+    return contentType.parse(req).parameters.charset.toLowerCase()
+  } catch (e) {
+    return undefined
+  }
+}
+
+/**
+ * Get the simple type checker.
+ *
+ * @param {string} type
+ * @return {function}
+ */
+
+function typeChecker (type) {
+  return function checkType (req) {
+    return Boolean(typeis(req, type))
+  }
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/raw.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/lib/types/raw.js
new file mode 100644 (file)
index 0000000..f5d1b67
--- /dev/null
@@ -0,0 +1,101 @@
+/*!
+ * body-parser
+ * Copyright(c) 2014-2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * Module dependencies.
+ */
+
+var bytes = require('bytes')
+var debug = require('debug')('body-parser:raw')
+var read = require('../read')
+var typeis = require('type-is')
+
+/**
+ * Module exports.
+ */
+
+module.exports = raw
+
+/**
+ * Create a middleware to parse raw bodies.
+ *
+ * @param {object} [options]
+ * @return {function}
+ * @api public
+ */
+
+function raw (options) {
+  var opts = options || {}
+
+  var inflate = opts.inflate !== false
+  var limit = typeof opts.limit !== 'number'
+    ? bytes.parse(opts.limit || '100kb')
+    : opts.limit
+  var type = opts.type || 'application/octet-stream'
+  var verify = opts.verify || false
+
+  if (verify !== false && typeof verify !== 'function') {
+    throw new TypeError('option verify must be function')
+  }
+
+  // create the appropriate type checking function
+  var shouldParse = typeof type !== 'function'
+    ? typeChecker(type)
+    : type
+
+  function parse (buf) {
+    return buf
+  }
+
+  return function rawParser (req, res, next) {
+    if (req._body) {
+      debug('body already parsed')
+      next()
+      return
+    }
+
+    req.body = req.body || {}
+
+    // skip requests without bodies
+    if (!typeis.hasBody(req)) {
+      debug('skip empty body')
+      next()
+      return
+    }
+
+    debug('content-type %j', req.headers['content-type'])
+
+    // determine if request should be parsed
+    if (!shouldParse(req)) {
+      debug('skip parsing')
+      next()
+      return
+    }
+
+    // read
+    read(req, res, next, parse, debug, {
+      encoding: null,
+      inflate: inflate,
+      limit: limit,
+      verify: verify
+    })
+  }
+}
+
+/**
+ * Get the simple type checker.
+ *
+ * @param {string} type
+ * @return {function}
+ */
+
+function typeChecker (type) {
+  return function checkType (req) {
+    return Boolean(typeis(req, type))
+  }
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/index.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/index.js
new file mode 100644 (file)
index 0000000..aa24231
--- /dev/null
@@ -0,0 +1,157 @@
+/*!
+ * bytes
+ * Copyright(c) 2012-2014 TJ Holowaychuk
+ * Copyright(c) 2015 Jed Watson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = bytes;
+module.exports.format = format;
+module.exports.parse = parse;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;
+
+var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;
+
+var map = {
+  b:  1,
+  kb: 1 << 10,
+  mb: 1 << 20,
+  gb: 1 << 30,
+  tb: ((1 << 30) * 1024)
+};
+
+// TODO: use is-finite module?
+var numberIsFinite = Number.isFinite || function (v) { return typeof v === 'number' && isFinite(v); };
+
+var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i;
+
+/**
+ * Convert the given value in bytes into a string or parse to string to an integer in bytes.
+ *
+ * @param {string|number} value
+ * @param {{
+ *  case: [string],
+ *  decimalPlaces: [number]
+ *  fixedDecimals: [boolean]
+ *  thousandsSeparator: [string]
+ *  unitSeparator: [string]
+ *  }} [options] bytes options.
+ *
+ * @returns {string|number|null}
+ */
+
+function bytes(value, options) {
+  if (typeof value === 'string') {
+    return parse(value);
+  }
+
+  if (typeof value === 'number') {
+    return format(value, options);
+  }
+
+  return null;
+}
+
+/**
+ * Format the given value in bytes into a string.
+ *
+ * If the value is negative, it is kept as such. If it is a float,
+ * it is rounded.
+ *
+ * @param {number} value
+ * @param {object} [options]
+ * @param {number} [options.decimalPlaces=2]
+ * @param {number} [options.fixedDecimals=false]
+ * @param {string} [options.thousandsSeparator=]
+ * @param {string} [options.unitSeparator=]
+ *
+ * @returns {string|null}
+ * @public
+ */
+
+function format(value, options) {
+  if (!numberIsFinite(value)) {
+    return null;
+  }
+
+  var mag = Math.abs(value);
+  var thousandsSeparator = (options && options.thousandsSeparator) || '';
+  var unitSeparator = (options && options.unitSeparator) || '';
+  var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
+  var fixedDecimals = Boolean(options && options.fixedDecimals);
+  var unit = 'B';
+
+  if (mag >= map.tb) {
+    unit = 'TB';
+  } else if (mag >= map.gb) {
+    unit = 'GB';
+  } else if (mag >= map.mb) {
+    unit = 'MB';
+  } else if (mag >= map.kb) {
+    unit = 'kB';
+  }
+
+  var val = value / map[unit.toLowerCase()];
+  var str = val.toFixed(decimalPlaces);
+
+  if (!fixedDecimals) {
+    str = str.replace(formatDecimalsRegExp, '$1');
+  }
+
+  if (thousandsSeparator) {
+    str = str.replace(formatThousandsRegExp, thousandsSeparator);
+  }
+
+  return str + unitSeparator + unit;
+}
+
+/**
+ * Parse the string value into an integer in bytes.
+ *
+ * If no unit is given, it is assumed the value is in bytes.
+ *
+ * @param {number|string} val
+ *
+ * @returns {number|null}
+ * @public
+ */
+
+function parse(val) {
+  if (typeof val === 'number' && !isNaN(val)) {
+    return val;
+  }
+
+  if (typeof val !== 'string') {
+    return null;
+  }
+
+  // Test if the string passed is valid
+  var results = parseRegExp.exec(val);
+  var floatValue;
+  var unit = 'b';
+
+  if (!results) {
+    // Nothing could be extracted from the given string
+    floatValue = parseInt(val, 10);
+    unit = 'b'
+  } else {
+    // Retrieve the value and the unit
+    floatValue = parseFloat(results[1]);
+    unit = results[4].toLowerCase();
+  }
+
+  return Math.floor(map[unit] * floatValue);
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/package.json b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/bytes/package.json
new file mode 100644 (file)
index 0000000..bb34928
--- /dev/null
@@ -0,0 +1,84 @@
+{
+  "name": "bytes",
+  "description": "Utility to parse a string bytes to bytes and vice-versa",
+  "version": "2.4.0",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca",
+    "url": "http://tjholowaychuk.com"
+  },
+  "contributors": [
+    {
+      "name": "Jed Watson",
+      "email": "jed.watson@me.com"
+    },
+    {
+      "name": "Théo FIDRY",
+      "email": "theo.fidry@gmail.com"
+    }
+  ],
+  "license": "MIT",
+  "keywords": [
+    "byte",
+    "bytes",
+    "utility",
+    "parse",
+    "parser",
+    "convert",
+    "converter"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/visionmedia/bytes.js"
+  },
+  "component": {
+    "scripts": {
+      "bytes/index.js": "index.js"
+    }
+  },
+  "devDependencies": {
+    "mocha": "1.21.5"
+  },
+  "files": [
+    "History.md",
+    "LICENSE",
+    "Readme.md",
+    "index.js"
+  ],
+  "scripts": {
+    "test": "mocha --check-leaks --reporter spec"
+  },
+  "gitHead": "2a598442bdfa796df8d01a96cc54495cda550e70",
+  "bugs": {
+    "url": "https://github.com/visionmedia/bytes.js/issues"
+  },
+  "homepage": "https://github.com/visionmedia/bytes.js",
+  "_id": "bytes@2.4.0",
+  "_shasum": "7d97196f9d5baf7f6935e25985549edd2a6c2339",
+  "_from": "bytes@2.4.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "maintainers": [
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "tjholowaychuk",
+      "email": "tj@vision-media.ca"
+    }
+  ],
+  "dist": {
+    "shasum": "7d97196f9d5baf7f6935e25985549edd2a6c2339",
+    "tarball": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz"
+  },
+  "_npmOperationalInternal": {
+    "host": "packages-16-east.internal.npmjs.com",
+    "tmp": "tmp/bytes-2.4.0.tgz_1464812473023_0.6271433881483972"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz"
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/index.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/index.js
new file mode 100644 (file)
index 0000000..61ba6b5
--- /dev/null
@@ -0,0 +1,216 @@
+/*!
+ * content-type
+ * Copyright(c) 2015 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+'use strict'
+
+/**
+ * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1
+ *
+ * parameter     = token "=" ( token / quoted-string )
+ * token         = 1*tchar
+ * tchar         = "!" / "#" / "$" / "%" / "&" / "'" / "*"
+ *               / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
+ *               / DIGIT / ALPHA
+ *               ; any VCHAR, except delimiters
+ * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
+ * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text
+ * obs-text      = %x80-FF
+ * quoted-pair   = "\" ( HTAB / SP / VCHAR / obs-text )
+ */
+var paramRegExp = /; *([!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+) */g
+var textRegExp = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/
+var tokenRegExp = /^[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+$/
+
+/**
+ * RegExp to match quoted-pair in RFC 7230 sec 3.2.6
+ *
+ * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text )
+ * obs-text    = %x80-FF
+ */
+var qescRegExp = /\\([\u000b\u0020-\u00ff])/g
+
+/**
+ * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6
+ */
+var quoteRegExp = /([\\"])/g
+
+/**
+ * RegExp to match type in RFC 6838
+ *
+ * media-type = type "/" subtype
+ * type       = token
+ * subtype    = token
+ */
+var typeRegExp = /^[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+\/[!#$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+$/
+
+/**
+ * Module exports.
+ * @public
+ */
+
+exports.format = format
+exports.parse = parse
+
+/**
+ * Format object to media type.
+ *
+ * @param {object} obj
+ * @return {string}
+ * @public
+ */
+
+function format(obj) {
+  if (!obj || typeof obj !== 'object') {
+    throw new TypeError('argument obj is required')
+  }
+
+  var parameters = obj.parameters
+  var type = obj.type
+
+  if (!type || !typeRegExp.test(type)) {
+    throw new TypeError('invalid type')
+  }
+
+  var string = type
+
+  // append parameters
+  if (parameters && typeof parameters === 'object') {
+    var param
+    var params = Object.keys(parameters).sort()
+
+    for (var i = 0; i < params.length; i++) {
+      param = params[i]
+
+      if (!tokenRegExp.test(param)) {
+        throw new TypeError('invalid parameter name')
+      }
+
+      string += '; ' + param + '=' + qstring(parameters[param])
+    }
+  }
+
+  return string
+}
+
+/**
+ * Parse media type to object.
+ *
+ * @param {string|object} string
+ * @return {Object}
+ * @public
+ */
+
+function parse(string) {
+  if (!string) {
+    throw new TypeError('argument string is required')
+  }
+
+  if (typeof string === 'object') {
+    // support req/res-like objects as argument
+    string = getcontenttype(string)
+
+    if (typeof string !== 'string') {
+      throw new TypeError('content-type header is missing from object');
+    }
+  }
+
+  if (typeof string !== 'string') {
+    throw new TypeError('argument string is required to be a string')
+  }
+
+  var index = string.indexOf(';')
+  var type = index !== -1
+    ? string.substr(0, index).trim()
+    : string.trim()
+
+  if (!typeRegExp.test(type)) {
+    throw new TypeError('invalid media type')
+  }
+
+  var key
+  var match
+  var obj = new ContentType(type.toLowerCase())
+  var value
+
+  paramRegExp.lastIndex = index
+
+  while (match = paramRegExp.exec(string)) {
+    if (match.index !== index) {
+      throw new TypeError('invalid parameter format')
+    }
+
+    index += match[0].length
+    key = match[1].toLowerCase()
+    value = match[2]
+
+    if (value[0] === '"') {
+      // remove quotes and escapes
+      value = value
+        .substr(1, value.length - 2)
+        .replace(qescRegExp, '$1')
+    }
+
+    obj.parameters[key] = value
+  }
+
+  if (index !== -1 && index !== string.length) {
+    throw new TypeError('invalid parameter format')
+  }
+
+  return obj
+}
+
+/**
+ * Get content-type from req/res objects.
+ *
+ * @param {object}
+ * @return {Object}
+ * @private
+ */
+
+function getcontenttype(obj) {
+  if (typeof obj.getHeader === 'function') {
+    // res-like
+    return obj.getHeader('content-type')
+  }
+
+  if (typeof obj.headers === 'object') {
+    // req-like
+    return obj.headers && obj.headers['content-type']
+  }
+}
+
+/**
+ * Quote a string if necessary.
+ *
+ * @param {string} val
+ * @return {string}
+ * @private
+ */
+
+function qstring(val) {
+  var str = String(val)
+
+  // no need to quote tokens
+  if (tokenRegExp.test(str)) {
+    return str
+  }
+
+  if (str.length > 0 && !textRegExp.test(str)) {
+    throw new TypeError('invalid parameter value')
+  }
+
+  return '"' + str.replace(quoteRegExp, '\\$1') + '"'
+}
+
+/**
+ * Class to represent a content type.
+ * @private
+ */
+function ContentType(type) {
+  this.parameters = Object.create(null)
+  this.type = type
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/package.json b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/content-type/package.json
new file mode 100644 (file)
index 0000000..9f11091
--- /dev/null
@@ -0,0 +1,70 @@
+{
+  "name": "content-type",
+  "description": "Create and parse HTTP Content-Type header",
+  "version": "1.0.2",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "license": "MIT",
+  "keywords": [
+    "content-type",
+    "http",
+    "req",
+    "res",
+    "rfc7231"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/content-type.git"
+  },
+  "devDependencies": {
+    "istanbul": "0.4.3",
+    "mocha": "~1.21.5"
+  },
+  "files": [
+    "LICENSE",
+    "HISTORY.md",
+    "README.md",
+    "index.js"
+  ],
+  "engines": {
+    "node": ">= 0.6"
+  },
+  "scripts": {
+    "test": "mocha --reporter spec --check-leaks --bail test/",
+    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
+    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
+  },
+  "gitHead": "8118763adfbbac80cf1254191889330aec8b8be7",
+  "bugs": {
+    "url": "https://github.com/jshttp/content-type/issues"
+  },
+  "homepage": "https://github.com/jshttp/content-type#readme",
+  "_id": "content-type@1.0.2",
+  "_shasum": "b7d113aee7a8dd27bd21133c4dc2529df1721eed",
+  "_from": "content-type@>=1.0.2 <1.1.0",
+  "_npmVersion": "2.15.1",
+  "_nodeVersion": "4.4.3",
+  "_npmUser": {
+    "name": "dougwilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "dist": {
+    "shasum": "b7d113aee7a8dd27bd21133c4dc2529df1721eed",
+    "tarball": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz"
+  },
+  "maintainers": [
+    {
+      "name": "dougwilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/content-type-1.0.2.tgz_1462852785748_0.5491233412176371"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.jshintrc b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.jshintrc
new file mode 100644 (file)
index 0000000..299877f
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "laxbreak": true
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.npmignore b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/.npmignore
new file mode 100644 (file)
index 0000000..7e6163d
--- /dev/null
@@ -0,0 +1,6 @@
+support
+test
+examples
+example
+*.sock
+dist
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/History.md b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/History.md
new file mode 100644 (file)
index 0000000..854c971
--- /dev/null
@@ -0,0 +1,195 @@
+
+2.2.0 / 2015-05-09
+==================
+
+  * package: update "ms" to v0.7.1 (#202, @dougwilson)
+  * README: add logging to file example (#193, @DanielOchoa)
+  * README: fixed a typo (#191, @amir-s)
+  * browser: expose `storage` (#190, @stephenmathieson)
+  * Makefile: add a `distclean` target (#189, @stephenmathieson)
+
+2.1.3 / 2015-03-13
+==================
+
+  * Updated stdout/stderr example (#186)
+  * Updated example/stdout.js to match debug current behaviour
+  * Renamed example/stderr.js to stdout.js
+  * Update Readme.md (#184)
+  * replace high intensity foreground color for bold (#182, #183)
+
+2.1.2 / 2015-03-01
+==================
+
+  * dist: recompile
+  * update "ms" to v0.7.0
+  * package: update "browserify" to v9.0.3
+  * component: fix "ms.js" repo location
+  * changed bower package name
+  * updated documentation about using debug in a browser
+  * fix: security error on safari (#167, #168, @yields)
+
+2.1.1 / 2014-12-29
+==================
+
+  * browser: use `typeof` to check for `console` existence
+  * browser: check for `console.log` truthiness (fix IE 8/9)
+  * browser: add support for Chrome apps
+  * Readme: added Windows usage remarks
+  * Add `bower.json` to properly support bower install
+
+2.1.0 / 2014-10-15
+==================
+
+  * node: implement `DEBUG_FD` env variable support
+  * package: update "browserify" to v6.1.0
+  * package: add "license" field to package.json (#135, @panuhorsmalahti)
+
+2.0.0 / 2014-09-01
+==================
+
+  * package: update "browserify" to v5.11.0
+  * node: use stderr rather than stdout for logging (#29, @stephenmathieson)
+
+1.0.4 / 2014-07-15
+==================
+
+  * dist: recompile
+  * example: remove `console.info()` log usage
+  * example: add "Content-Type" UTF-8 header to browser example
+  * browser: place %c marker after the space character
+  * browser: reset the "content" color via `color: inherit`
+  * browser: add colors support for Firefox >= v31
+  * debug: prefer an instance `log()` function over the global one (#119)
+  * Readme: update documentation about styled console logs for FF v31 (#116, @wryk)
+
+1.0.3 / 2014-07-09
+==================
+
+  * Add support for multiple wildcards in namespaces (#122, @seegno)
+  * browser: fix lint
+
+1.0.2 / 2014-06-10
+==================
+
+  * browser: update color palette (#113, @gscottolson)
+  * common: make console logging function configurable (#108, @timoxley)
+  * node: fix %o colors on old node <= 0.8.x
+  * Makefile: find node path using shell/which (#109, @timoxley)
+
+1.0.1 / 2014-06-06
+==================
+
+  * browser: use `removeItem()` to clear localStorage
+  * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777)
+  * package: add "contributors" section
+  * node: fix comment typo
+  * README: list authors
+
+1.0.0 / 2014-06-04
+==================
+
+  * make ms diff be global, not be scope
+  * debug: ignore empty strings in enable()
+  * node: make DEBUG_COLORS able to disable coloring
+  * *: export the `colors` array
+  * npmignore: don't publish the `dist` dir
+  * Makefile: refactor to use browserify
+  * package: add "browserify" as a dev dependency
+  * Readme: add Web Inspector Colors section
+  * node: reset terminal color for the debug content
+  * node: map "%o" to `util.inspect()`
+  * browser: map "%j" to `JSON.stringify()`
+  * debug: add custom "formatters"
+  * debug: use "ms" module for humanizing the diff
+  * Readme: add "bash" syntax highlighting
+  * browser: add Firebug color support
+  * browser: add colors for WebKit browsers
+  * node: apply log to `console`
+  * rewrite: abstract common logic for Node & browsers
+  * add .jshintrc file
+
+0.8.1 / 2014-04-14
+==================
+
+  * package: re-add the "component" section
+
+0.8.0 / 2014-03-30
+==================
+
+  * add `enable()` method for nodejs. Closes #27
+  * change from stderr to stdout
+  * remove unnecessary index.js file
+
+0.7.4 / 2013-11-13
+==================
+
+  * remove "browserify" key from package.json (fixes something in browserify)
+
+0.7.3 / 2013-10-30
+==================
+
+  * fix: catch localStorage security error when cookies are blocked (Chrome)
+  * add debug(err) support. Closes #46
+  * add .browser prop to package.json. Closes #42
+
+0.7.2 / 2013-02-06
+==================
+
+  * fix package.json
+  * fix: Mobile Safari (private mode) is broken with debug
+  * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript
+
+0.7.1 / 2013-02-05
+==================
+
+  * add repository URL to package.json
+  * add DEBUG_COLORED to force colored output
+  * add browserify support
+  * fix component. Closes #24
+
+0.7.0 / 2012-05-04
+==================
+
+  * Added .component to package.json
+  * Added debug.component.js build
+
+0.6.0 / 2012-03-16
+==================
+
+  * Added support for "-" prefix in DEBUG [Vinay Pulim]
+  * Added `.enabled` flag to the node version [TooTallNate]
+
+0.5.0 / 2012-02-02
+==================
+
+  * Added: humanize diffs. Closes #8
+  * Added `debug.disable()` to the CS variant
+  * Removed padding. Closes #10
+  * Fixed: persist client-side variant again. Closes #9
+
+0.4.0 / 2012-02-01
+==================
+
+  * Added browser variant support for older browsers [TooTallNate]
+  * Added `debug.enable('project:*')` to browser variant [TooTallNate]
+  * Added padding to diff (moved it to the right)
+
+0.3.0 / 2012-01-26
+==================
+
+  * Added millisecond diff when isatty, otherwise UTC string
+
+0.2.0 / 2012-01-22
+==================
+
+  * Added wildcard support
+
+0.1.0 / 2011-12-02
+==================
+
+  * Added: remove colors unless stderr isatty [TooTallNate]
+
+0.0.1 / 2010-01-03
+==================
+
+  * Initial release
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Makefile b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Makefile
new file mode 100644 (file)
index 0000000..5cf4a59
--- /dev/null
@@ -0,0 +1,36 @@
+
+# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
+THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
+
+# BIN directory
+BIN := $(THIS_DIR)/node_modules/.bin
+
+# applications
+NODE ?= $(shell which node)
+NPM ?= $(NODE) $(shell which npm)
+BROWSERIFY ?= $(NODE) $(BIN)/browserify
+
+all: dist/debug.js
+
+install: node_modules
+
+clean:
+       @rm -rf dist
+
+dist:
+       @mkdir -p $@
+
+dist/debug.js: node_modules browser.js debug.js dist
+       @$(BROWSERIFY) \
+               --standalone debug \
+               . > $@
+
+distclean: clean
+       @rm -rf node_modules
+
+node_modules: package.json
+       @NODE_ENV= $(NPM) install
+       @touch node_modules
+
+.PHONY: all install clean distclean
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Readme.md b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/Readme.md
new file mode 100644 (file)
index 0000000..b4f45e3
--- /dev/null
@@ -0,0 +1,188 @@
+# debug
+
+  tiny node.js debugging utility modelled after node core's debugging technique.
+
+## Installation
+
+```bash
+$ npm install debug
+```
+
+## Usage
+
+ With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.
+
+Example _app.js_:
+
+```js
+var debug = require('debug')('http')
+  , http = require('http')
+  , name = 'My App';
+
+// fake app
+
+debug('booting %s', name);
+
+http.createServer(function(req, res){
+  debug(req.method + ' ' + req.url);
+  res.end('hello\n');
+}).listen(3000, function(){
+  debug('listening');
+});
+
+// fake worker of some kind
+
+require('./worker');
+```
+
+Example _worker.js_:
+
+```js
+var debug = require('debug')('worker');
+
+setInterval(function(){
+  debug('doing some work');
+}, 1000);
+```
+
+ The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
+
+  ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
+
+  ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
+
+#### Windows note
+
+ On Windows the environment variable is set using the `set` command.
+
+ ```cmd
+ set DEBUG=*,-not_this
+ ```
+
+Then, run the program to be debugged as usual.
+
+## Millisecond diff
+
+  When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
+
+  ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
+
+  When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
+
+  ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
+
+## Conventions
+
+ If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".
+
+## Wildcards
+
+  The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
+
+  You can also exclude specific debuggers by prefixing them with a "-" character.  For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:".
+
+## Browser support
+
+  Debug works in the browser as well, currently persisted by `localStorage`. Consider the situation shown below where you have `worker:a` and `worker:b`, and wish to debug both. Somewhere in the code on your page, include:
+
+```js
+window.myDebug = require("debug");
+```
+
+  ("debug" is a global object in the browser so we give this object a different name.) When your page is open in the browser, type the following in the console:
+
+```js
+myDebug.enable("worker:*")
+```
+
+  Refresh the page. Debug output will continue to be sent to the console until it is disabled by typing `myDebug.disable()` in the console.
+
+```js
+a = debug('worker:a');
+b = debug('worker:b');
+
+setInterval(function(){
+  a('doing some work');
+}, 1000);
+
+setInterval(function(){
+  b('doing some work');
+}, 1200);
+```
+
+#### Web Inspector Colors
+
+  Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
+  option. These are WebKit web inspectors, Firefox ([since version
+  31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
+  and the Firebug plugin for Firefox (any version).
+
+  Colored output looks something like:
+
+  ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png)
+
+### stderr vs stdout
+
+You can set an alternative logging method per-namespace by overriding the `log` method on a per-namespace or globally:
+
+Example _stdout.js_:
+
+```js
+var debug = require('debug');
+var error = debug('app:error');
+
+// by default stderr is used
+error('goes to stderr!');
+
+var log = debug('app:log');
+// set this namespace to log via console.log
+log.log = console.log.bind(console); // don't forget to bind to console!
+log('goes to stdout');
+error('still goes to stderr!');
+
+// set all output to go via console.info
+// overrides all per-namespace log settings
+debug.log = console.info.bind(console);
+error('now goes to stdout via console.info');
+log('still goes to stdout, but via console.info now');
+```
+
+### Save debug output to a file
+
+You can save all debug statements to a file by piping them.
+
+Example:
+
+```bash
+$ DEBUG_FD=3 node your-app.js 3> whatever.log
+```
+
+## Authors
+
+ - TJ Holowaychuk
+ - Nathan Rajlich
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2014 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/bower.json b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/bower.json
new file mode 100644 (file)
index 0000000..6af573f
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "name": "visionmedia-debug",
+  "main": "dist/debug.js",
+  "version": "2.2.0",
+  "homepage": "https://github.com/visionmedia/debug",
+  "authors": [
+    "TJ Holowaychuk <tj@vision-media.ca>"
+  ],
+  "description": "visionmedia-debug",
+  "moduleType": [
+    "amd",
+    "es6",
+    "globals",
+    "node"
+  ],
+  "keywords": [
+    "visionmedia",
+    "debug"
+  ],
+  "license": "MIT",
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ]
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/browser.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/browser.js
new file mode 100644 (file)
index 0000000..7c76452
--- /dev/null
@@ -0,0 +1,168 @@
+
+/**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = require('./debug');
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+exports.storage = 'undefined' != typeof chrome
+               && 'undefined' != typeof chrome.storage
+                  ? chrome.storage.local
+                  : localstorage();
+
+/**
+ * Colors.
+ */
+
+exports.colors = [
+  'lightseagreen',
+  'forestgreen',
+  'goldenrod',
+  'dodgerblue',
+  'darkorchid',
+  'crimson'
+];
+
+/**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+function useColors() {
+  // is webkit? http://stackoverflow.com/a/16459606/376773
+  return ('WebkitAppearance' in document.documentElement.style) ||
+    // is firebug? http://stackoverflow.com/a/398120/376773
+    (window.console && (console.firebug || (console.exception && console.table))) ||
+    // is firefox >= v31?
+    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+    (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31);
+}
+
+/**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+exports.formatters.j = function(v) {
+  return JSON.stringify(v);
+};
+
+
+/**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs() {
+  var args = arguments;
+  var useColors = this.useColors;
+
+  args[0] = (useColors ? '%c' : '')
+    + this.namespace
+    + (useColors ? ' %c' : ' ')
+    + args[0]
+    + (useColors ? '%c ' : ' ')
+    + '+' + exports.humanize(this.diff);
+
+  if (!useColors) return args;
+
+  var c = 'color: ' + this.color;
+  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));
+
+  // the final "%c" is somewhat tricky, because there could be other
+  // arguments passed either before or after the %c, so we need to
+  // figure out the correct index to insert the CSS into
+  var index = 0;
+  var lastC = 0;
+  args[0].replace(/%[a-z%]/g, function(match) {
+    if ('%%' === match) return;
+    index++;
+    if ('%c' === match) {
+      // we only are interested in the *last* %c
+      // (the user may have provided their own)
+      lastC = index;
+    }
+  });
+
+  args.splice(lastC, 0, c);
+  return args;
+}
+
+/**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
+ */
+
+function log() {
+  // this hackery is required for IE8/9, where
+  // the `console.log` function doesn't have 'apply'
+  return 'object' === typeof console
+    && console.log
+    && Function.prototype.apply.call(console.log, console, arguments);
+}
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+function save(namespaces) {
+  try {
+    if (null == namespaces) {
+      exports.storage.removeItem('debug');
+    } else {
+      exports.storage.debug = namespaces;
+    }
+  } catch(e) {}
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+function load() {
+  var r;
+  try {
+    r = exports.storage.debug;
+  } catch(e) {}
+  return r;
+}
+
+/**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
+
+exports.enable(load());
+
+/**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+function localstorage(){
+  try {
+    return window.localStorage;
+  } catch (e) {}
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/component.json b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/component.json
new file mode 100644 (file)
index 0000000..ca10637
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "name": "debug",
+  "repo": "visionmedia/debug",
+  "description": "small debugging utility",
+  "version": "2.2.0",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "main": "browser.js",
+  "scripts": [
+    "browser.js",
+    "debug.js"
+  ],
+  "dependencies": {
+    "rauchg/ms.js": "0.7.1"
+  }
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/debug.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/debug.js
new file mode 100644 (file)
index 0000000..7571a86
--- /dev/null
@@ -0,0 +1,197 @@
+
+/**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = debug;
+exports.coerce = coerce;
+exports.disable = disable;
+exports.enable = enable;
+exports.enabled = enabled;
+exports.humanize = require('ms');
+
+/**
+ * The currently active debug mode names, and names to skip.
+ */
+
+exports.names = [];
+exports.skips = [];
+
+/**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lowercased letter, i.e. "n".
+ */
+
+exports.formatters = {};
+
+/**
+ * Previously assigned color.
+ */
+
+var prevColor = 0;
+
+/**
+ * Previous log timestamp.
+ */
+
+var prevTime;
+
+/**
+ * Select a color.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+function selectColor() {
+  return exports.colors[prevColor++ % exports.colors.length];
+}
+
+/**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+
+function debug(namespace) {
+
+  // define the `disabled` version
+  function disabled() {
+  }
+  disabled.enabled = false;
+
+  // define the `enabled` version
+  function enabled() {
+
+    var self = enabled;
+
+    // set `diff` timestamp
+    var curr = +new Date();
+    var ms = curr - (prevTime || curr);
+    self.diff = ms;
+    self.prev = prevTime;
+    self.curr = curr;
+    prevTime = curr;
+
+    // add the `color` if not set
+    if (null == self.useColors) self.useColors = exports.useColors();
+    if (null == self.color && self.useColors) self.color = selectColor();
+
+    var args = Array.prototype.slice.call(arguments);
+
+    args[0] = exports.coerce(args[0]);
+
+    if ('string' !== typeof args[0]) {
+      // anything else let's inspect with %o
+      args = ['%o'].concat(args);
+    }
+
+    // apply any `formatters` transformations
+    var index = 0;
+    args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {
+      // if we encounter an escaped % then don't increase the array index
+      if (match === '%%') return match;
+      index++;
+      var formatter = exports.formatters[format];
+      if ('function' === typeof formatter) {
+        var val = args[index];
+        match = formatter.call(self, val);
+
+        // now we need to remove `args[index]` since it's inlined in the `format`
+        args.splice(index, 1);
+        index--;
+      }
+      return match;
+    });
+
+    if ('function' === typeof exports.formatArgs) {
+      args = exports.formatArgs.apply(self, args);
+    }
+    var logFn = enabled.log || exports.log || console.log.bind(console);
+    logFn.apply(self, args);
+  }
+  enabled.enabled = true;
+
+  var fn = exports.enabled(namespace) ? enabled : disabled;
+
+  fn.namespace = namespace;
+
+  return fn;
+}
+
+/**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+
+function enable(namespaces) {
+  exports.save(namespaces);
+
+  var split = (namespaces || '').split(/[\s,]+/);
+  var len = split.length;
+
+  for (var i = 0; i < len; i++) {
+    if (!split[i]) continue; // ignore empty strings
+    namespaces = split[i].replace(/\*/g, '.*?');
+    if (namespaces[0] === '-') {
+      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
+    } else {
+      exports.names.push(new RegExp('^' + namespaces + '$'));
+    }
+  }
+}
+
+/**
+ * Disable debug output.
+ *
+ * @api public
+ */
+
+function disable() {
+  exports.enable('');
+}
+
+/**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+
+function enabled(name) {
+  var i, len;
+  for (i = 0, len = exports.skips.length; i < len; i++) {
+    if (exports.skips[i].test(name)) {
+      return false;
+    }
+  }
+  for (i = 0, len = exports.names.length; i < len; i++) {
+    if (exports.names[i].test(name)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+/**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+
+function coerce(val) {
+  if (val instanceof Error) return val.stack || val.message;
+  return val;
+}
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node.js b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node.js
new file mode 100644 (file)
index 0000000..1d392a8
--- /dev/null
@@ -0,0 +1,209 @@
+
+/**
+ * Module dependencies.
+ */
+
+var tty = require('tty');
+var util = require('util');
+
+/**
+ * This is the Node.js implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+exports = module.exports = require('./debug');
+exports.log = log;
+exports.formatArgs = formatArgs;
+exports.save = save;
+exports.load = load;
+exports.useColors = useColors;
+
+/**
+ * Colors.
+ */
+
+exports.colors = [6, 2, 3, 4, 5, 1];
+
+/**
+ * The file descriptor to write the `debug()` calls to.
+ * Set the `DEBUG_FD` env variable to override with another value. i.e.:
+ *
+ *   $ DEBUG_FD=3 node script.js 3>debug.log
+ */
+
+var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
+var stream = 1 === fd ? process.stdout :
+             2 === fd ? process.stderr :
+             createWritableStdioStream(fd);
+
+/**
+ * Is stdout a TTY? Colored output is enabled when `true`.
+ */
+
+function useColors() {
+  var debugColors = (process.env.DEBUG_COLORS || '').trim().toLowerCase();
+  if (0 === debugColors.length) {
+    return tty.isatty(fd);
+  } else {
+    return '0' !== debugColors
+        && 'no' !== debugColors
+        && 'false' !== debugColors
+        && 'disabled' !== debugColors;
+  }
+}
+
+/**
+ * Map %o to `util.inspect()`, since Node doesn't do that out of the box.
+ */
+
+var inspect = (4 === util.inspect.length ?
+  // node <= 0.8.x
+  function (v, colors) {
+    return util.inspect(v, void 0, void 0, colors);
+  } :
+  // node > 0.8.x
+  function (v, colors) {
+    return util.inspect(v, { colors: colors });
+  }
+);
+
+exports.formatters.o = function(v) {
+  return inspect(v, this.useColors)
+    .replace(/\s*\n\s*/g, ' ');
+};
+
+/**
+ * Adds ANSI color escape codes if enabled.
+ *
+ * @api public
+ */
+
+function formatArgs() {
+  var args = arguments;
+  var useColors = this.useColors;
+  var name = this.namespace;
+
+  if (useColors) {
+    var c = this.color;
+
+    args[0] = '  \u001b[3' + c + ';1m' + name + ' '
+      + '\u001b[0m'
+      + args[0] + '\u001b[3' + c + 'm'
+      + ' +' + exports.humanize(this.diff) + '\u001b[0m';
+  } else {
+    args[0] = new Date().toUTCString()
+      + ' ' + name + ' ' + args[0];
+  }
+  return args;
+}
+
+/**
+ * Invokes `console.error()` with the specified arguments.
+ */
+
+function log() {
+  return stream.write(util.format.apply(this, arguments) + '\n');
+}
+
+/**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+function save(namespaces) {
+  if (null == namespaces) {
+    // If you set a process.env field to null or undefined, it gets cast to the
+    // string 'null' or 'undefined'. Just delete instead.
+    delete process.env.DEBUG;
+  } else {
+    process.env.DEBUG = namespaces;
+  }
+}
+
+/**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+function load() {
+  return process.env.DEBUG;
+}
+
+/**
+ * Copied from `node/src/node.js`.
+ *
+ * XXX: It's lame that node doesn't expose this API out-of-the-box. It also
+ * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.
+ */
+
+function createWritableStdioStream (fd) {
+  var stream;
+  var tty_wrap = process.binding('tty_wrap');
+
+  // Note stream._type is used for test-module-load-list.js
+
+  switch (tty_wrap.guessHandleType(fd)) {
+    case 'TTY':
+      stream = new tty.WriteStream(fd);
+      stream._type = 'tty';
+
+      // Hack to have stream not keep the event loop alive.
+      // See https://github.com/joyent/node/issues/1726
+      if (stream._handle && stream._handle.unref) {
+        stream._handle.unref();
+      }
+      break;
+
+    case 'FILE':
+      var fs = require('fs');
+      stream = new fs.SyncWriteStream(fd, { autoClose: false });
+      stream._type = 'fs';
+      break;
+
+    case 'PIPE':
+    case 'TCP':
+      var net = require('net');
+      stream = new net.Socket({
+        fd: fd,
+        readable: false,
+        writable: true
+      });
+
+      // FIXME Should probably have an option in net.Socket to create a
+      // stream from an existing fd which is writable only. But for now
+      // we'll just add this hack and set the `readable` member to false.
+      // Test: ./node test/fixtures/echo.js < /etc/passwd
+      stream.readable = false;
+      stream.read = null;
+      stream._type = 'pipe';
+
+      // FIXME Hack to have stream not keep the event loop alive.
+      // See https://github.com/joyent/node/issues/1726
+      if (stream._handle && stream._handle.unref) {
+        stream._handle.unref();
+      }
+      break;
+
+    default:
+      // Probably an error on in uv_guess_handle()
+      throw new Error('Implement me. Unknown stream file type!');
+  }
+
+  // For supporting legacy API we put the FD here.
+  stream.fd = fd;
+
+  stream._isStdio = true;
+
+  return stream;
+}
+
+/**
+ * Enable namespaces listed in `process.env.DEBUG` initially.
+ */
+
+exports.enable(load());
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/.npmignore b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/.npmignore
new file mode 100644 (file)
index 0000000..d1aa0ce
--- /dev/null
@@ -0,0 +1,5 @@
+node_modules
+test
+History.md
+Makefile
+component.json
diff --git a/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/History.md b/common/src/main/webapp/usage guide/appserver/node_modules/body-parser/node_modules/debug/node_modules/ms/History.md
new file mode 100644 (file)
index 0000000..32fdfc1
--- /dev/null
@@ -0,0 +1,66 @@
+
+0.7.1 / 2015-04-20
+==================
+
+  * prevent extraordinary long inputs (@evilpacket)
+  * Fixed broken readme link
+
+0.7.0 / 2014-11-24
+==================
+
+ * add time abbreviations, updated tests and readme for the new units
+ * fix example in the readme.
+ * add LICENSE file
+
+0.6.2 / 2013-12-05
+==================
+
+ * Adding repository section to package.json to suppress warning from NPM.
+
+0.6.1 / 2013-05-10
+==================
+
+  * fix singularization [visionmedia]
+
+0.6.0 / 2013-03-15
+==================
+
+  * fix minutes
+
+0.5.1 / 2013-02-24
+==================
+
+  * add component namespace
+
+0.5.0 / 2012-11-09
+==================
+
+  * add short formatting as default and .long option
+  * add .license property to component.json
+  * add version to component.json
+
+0.4.0 / 2012-10-22
+==================
+
+  * add rounding to fix crazy decimals
+
+0.3.0 / 2012-09-07
+==================
+
+  * fix `ms(<String>)` [visionmedia]
+
+0.2.0 / 2012-09-03
+==================
+
+  * add component.json [visionmedia]
+  * add days support [visionmedia]
+  * add hours support [visionmedia]
+  * add minutes support [visionmedia]
+  * add seconds support [visionmedia]
+  * add ms string support [visionmedia]
+  * refactor tests to facilitate ms(number) [visionmedia]
+
+0.1.0 / 2012-03-07
+==================
+
+  * Initial release