mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-25 15:00:58 +01:00
53834d1471
Summary: In particular, this changes the behavior of NodeJS in the following ways: - Any attempt to get or modify the global object will result in an error. - `null` values of `this` will no longer be evaluated to the global object and primitive values of this will not be converted to wrapper objects. - Writing or deleting properties which have there writeable or configurable attributes set to false will now throw an error instead of failing silently. - Adding a property to an object whose extensible attribute is false will also throw an error now. - A functions arguments are not writeable so attempting to change them will now throw an error `arguments = [...]`. - `with(){}` statements are gone. - Use of `eval` is effectively banned. - `eval` and `arguments` are not allowed as variable or function identifiers in any scope. - The identifiers `implements`, `interface`, `let`, `package`, `private`, `protected`, `public`, `static` and `yield` are all now reserved for future use (roll on ES6). Test Plan: Verified that Aphlict was still functional. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Differential Revision: https://secure.phabricator.com/D11430
47 lines
935 B
JavaScript
47 lines
935 B
JavaScript
'use strict';
|
|
|
|
var JX = require('./javelin').JX;
|
|
|
|
var fs = require('fs');
|
|
var util = require('util');
|
|
|
|
JX.install('AphlictLog', {
|
|
construct: function() {
|
|
this._consoles = [];
|
|
this._logs = [];
|
|
},
|
|
|
|
members: {
|
|
_consoles: null,
|
|
_logs: null,
|
|
|
|
addConsole: function(console) {
|
|
this._consoles.push(console);
|
|
return this;
|
|
},
|
|
|
|
addLog: function(path) {
|
|
this._logs.push(fs.createWriteStream(path, {
|
|
flags: 'a',
|
|
encoding: 'utf8',
|
|
mode: '0664',
|
|
}));
|
|
return this;
|
|
},
|
|
|
|
log: function() {
|
|
var str = util.format.apply(null, arguments);
|
|
var date = new Date().toLocaleString();
|
|
str = '[' + date + '] ' + str;
|
|
|
|
var ii;
|
|
for (ii = 0; ii < this._consoles.length; ii++) {
|
|
this._consoles[ii].log(str);
|
|
}
|
|
|
|
for (ii = 0; ii < this._logs.length; ii++) {
|
|
this._logs[ii].write(str + '\n');
|
|
}
|
|
},
|
|
},
|
|
});
|