From bc427252c2d4bcf343b76ba2f1c3ef45bcf396b0 Mon Sep 17 00:00:00 2001 From: Volkan Ozcelik Date: Sat, 26 Jul 2014 20:25:38 -0700 Subject: [PATCH] implemented a very basic async logger. And also did dome minor refactoring. --- .gitignore | 3 +- .travis.yml | 1 - CHANGELOG.md | 5 +++ amd/o2/ajax/package.json | 2 +- amd/o2/debug/CHANGELOG.md | 4 +++ amd/o2/debug/core.js | 66 ++++++++++++++++++++++++++++++---- amd/o2/debug/package.json | 2 +- amd/o2/functional/package.json | 2 +- amd/o2/io/package.json | 2 +- amd/o2/object/package.json | 2 +- amd/o2/string/package.json | 2 +- amd/o2/then/package.json | 2 +- amd/o2/timer/package.json | 2 +- amd/o2/validation/package.json | 2 +- package.json | 2 +- src/o2/debug/CHANGELOG.md | 4 +++ src/o2/debug/core.js | 66 ++++++++++++++++++++++++++++++---- src/o2/debug/package.json | 2 +- 18 files changed, 146 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 45a6ea7f..72856a93 100755 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ src/**/node_modules ehthumbs.db Icon? Thumbs.db -.README.md.swp \ No newline at end of file +.README.md.swp +.CHANGELOG.md.swp \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index df63076b..6e5919de 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ language: node_js node_js: - "0.10" - - "0.8" diff --git a/CHANGELOG.md b/CHANGELOG.md index e2f4c633..761457a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# o2.js v.2.1.0 + +* Created a debugger that does async logging on the server, and logs to the console on the client. +* Slightly changed the dependency mechanism between modules. + # o2.js v.2.0.7 * Added minimally working **timer**, **object**, and **validate** modules. diff --git a/amd/o2/ajax/package.json b/amd/o2/ajax/package.json index bf7f8bed..6a6519e3 100644 --- a/amd/o2/ajax/package.json +++ b/amd/o2/ajax/package.json @@ -1,6 +1,6 @@ { "name": "o2.ajax", - "version": "0.0.9", + "version": "0.0.11", "description": "o2.js AJAX Helpers", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/debug/CHANGELOG.md b/amd/o2/debug/CHANGELOG.md index 6b377d50..f180abee 100644 --- a/amd/o2/debug/CHANGELOG.md +++ b/amd/o2/debug/CHANGELOG.md @@ -1,3 +1,7 @@ +# o2.debug@0.1.0 + +* Created a very basic async logger. + # o2.debug@0.0.0 * Initial commit. diff --git a/amd/o2/debug/core.js b/amd/o2/debug/core.js index 169fbe12..73031fe5 100644 --- a/amd/o2/debug/core.js +++ b/amd/o2/debug/core.js @@ -7,19 +7,73 @@ define(function (require, exports, module) {'use strict'; * Please see the LICENSE.md file for details. */ -var isConsoleAvailable = (typeof console !== 'undefined'); +var isNode = (typeof module !== 'undefined' && !!module.exports), + isConsoleAvailable = (typeof console !== 'undefined'), + + kFs = 'fs', + + stream; + +function print(label, args) { + var buffer = [], + i, len; + + for (i = 0, len = args.length; i < len; i++) { + buffer.push(args[i]); + } + + stream.write(label + ': ' + buffer.join(',')); +} + +if (isNode) { + exports.initialize = function(file) { + + // To trick grunt-contrib-jasmine. + var fs = require(kFs); + + if (typeof file === 'string') { + stream = fs.createFileStream( + file, {flags: 'a+', encoding: 'utf8'} + ); + + return; + } + + stream = file; + }; -if (isConsoleAvailable) { exports.log = function() { - console.log.apply(console, arguments); + if (!stream) { + throw new Error( + 'o2.debug: Please call `o2.debug.initialize` first.' + ); + } + + print('[LOG ]', arguments); }; exports.warn = function() { - console.warn.apply(console, arguments); + if (!stream) { + throw new Error( + 'o2.debug: Please call `o2.debug.initialize` first.' + ); + } + + print('[WARN]', arguments); }; } else { - exports.log = function() {}; - exports.warn = function() {}; + if (isConsoleAvailable) { + exports.log = function() { + console.log.apply(console, arguments); + }; + + exports.warn = function() { + console.warn.apply(console, arguments); + }; + } else { + exports.log = function() {}; + exports.warn = function() {}; + } } }); diff --git a/amd/o2/debug/package.json b/amd/o2/debug/package.json index eb96404c..8d71eca2 100644 --- a/amd/o2/debug/package.json +++ b/amd/o2/debug/package.json @@ -1,6 +1,6 @@ { "name": "o2.debug", - "version": "0.0.3", + "version": "0.1.0", "description": "o2.js console helper", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/functional/package.json b/amd/o2/functional/package.json index 4430148f..26a6ccd7 100644 --- a/amd/o2/functional/package.json +++ b/amd/o2/functional/package.json @@ -1,6 +1,6 @@ { "name": "o2.functional", - "version": "0.0.0", + "version": "0.0.2", "description": "o2.js Functional Programming Utility Methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/io/package.json b/amd/o2/io/package.json index 30f3e522..ba9192af 100644 --- a/amd/o2/io/package.json +++ b/amd/o2/io/package.json @@ -1,6 +1,6 @@ { "name": "o2.io", - "version": "0.0.1", + "version": "0.0.3", "description": "o2.js FileSystem-related methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/object/package.json b/amd/o2/object/package.json index fe7d3faa..719352f1 100644 --- a/amd/o2/object/package.json +++ b/amd/o2/object/package.json @@ -1,6 +1,6 @@ { "name": "o2.object", - "version": "0.0.7", + "version": "0.0.9", "description": "o2.js object-related methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/string/package.json b/amd/o2/string/package.json index e6639372..ea2eac90 100644 --- a/amd/o2/string/package.json +++ b/amd/o2/string/package.json @@ -1,6 +1,6 @@ { "name": "o2.string", - "version": "0.0.9", + "version": "0.0.11", "description": "o2.js String utility methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/then/package.json b/amd/o2/then/package.json index 24419e0c..9cf0d608 100644 --- a/amd/o2/then/package.json +++ b/amd/o2/then/package.json @@ -1,6 +1,6 @@ { "name": "o2.then", - "version": "0.2.0", + "version": "0.2.4", "description": "o2.js Deferred Helpers - A Promises/A+ Compliant Deferred Library", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/timer/package.json b/amd/o2/timer/package.json index 43f7f78f..08be6b2e 100644 --- a/amd/o2/timer/package.json +++ b/amd/o2/timer/package.json @@ -1,6 +1,6 @@ { "name": "o2.timer", - "version": "0.0.8", + "version": "0.0.9", "description": "o2.js timer utility methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/amd/o2/validation/package.json b/amd/o2/validation/package.json index 25c940a2..d86f3008 100644 --- a/amd/o2/validation/package.json +++ b/amd/o2/validation/package.json @@ -1,6 +1,6 @@ { "name": "o2.validation", - "version": "0.2.0", + "version": "0.2.2", "description": "o2.js validation-related methods", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/package.json b/package.json index a6acf572..1de0cc19 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "o2", - "version": "2.0.12", + "version": "2.1.0", "author": "Volkan Özçelik ", "description": "o2.js JavaScript Framework", "homepage": "http://o2js.com/", diff --git a/src/o2/debug/CHANGELOG.md b/src/o2/debug/CHANGELOG.md index 6b377d50..f180abee 100644 --- a/src/o2/debug/CHANGELOG.md +++ b/src/o2/debug/CHANGELOG.md @@ -1,3 +1,7 @@ +# o2.debug@0.1.0 + +* Created a very basic async logger. + # o2.debug@0.0.0 * Initial commit. diff --git a/src/o2/debug/core.js b/src/o2/debug/core.js index 9845190d..7a59791a 100644 --- a/src/o2/debug/core.js +++ b/src/o2/debug/core.js @@ -7,17 +7,71 @@ * Please see the LICENSE.md file for details. */ -var isConsoleAvailable = (typeof console !== 'undefined'); +var isNode = (typeof module !== 'undefined' && !!module.exports), + isConsoleAvailable = (typeof console !== 'undefined'), + + kFs = 'fs', + + stream; + +function print(label, args) { + var buffer = [], + i, len; + + for (i = 0, len = args.length; i < len; i++) { + buffer.push(args[i]); + } + + stream.write(label + ': ' + buffer.join(',')); +} + +if (isNode) { + exports.initialize = function(file) { + + // To trick grunt-contrib-jasmine. + var fs = require(kFs); + + if (typeof file === 'string') { + stream = fs.createFileStream( + file, {flags: 'a+', encoding: 'utf8'} + ); + + return; + } + + stream = file; + }; -if (isConsoleAvailable) { exports.log = function() { - console.log.apply(console, arguments); + if (!stream) { + throw new Error( + 'o2.debug: Please call `o2.debug.initialize` first.' + ); + } + + print('[LOG ]', arguments); }; exports.warn = function() { - console.warn.apply(console, arguments); + if (!stream) { + throw new Error( + 'o2.debug: Please call `o2.debug.initialize` first.' + ); + } + + print('[WARN]', arguments); }; } else { - exports.log = function() {}; - exports.warn = function() {}; + if (isConsoleAvailable) { + exports.log = function() { + console.log.apply(console, arguments); + }; + + exports.warn = function() { + console.warn.apply(console, arguments); + }; + } else { + exports.log = function() {}; + exports.warn = function() {}; + } } diff --git a/src/o2/debug/package.json b/src/o2/debug/package.json index e31af8eb..8d71eca2 100644 --- a/src/o2/debug/package.json +++ b/src/o2/debug/package.json @@ -1,6 +1,6 @@ { "name": "o2.debug", - "version": "0.0.5", + "version": "0.1.0", "description": "o2.js console helper", "scripts": { "test": "echo \"Error: no test specified\" && exit 1"