Merge branch 'master' of github.com:mikegerwitz/easejs
commit
3ef2a28e24
77
lib/util.js
77
lib/util.js
|
@ -80,6 +80,8 @@ exports.secureFallback = function( val )
|
|||
}
|
||||
|
||||
secure_fallback = !!val;
|
||||
exports.defineSecureProp = getDefineSecureProp();
|
||||
|
||||
return exports;
|
||||
};
|
||||
|
||||
|
@ -96,32 +98,7 @@ exports.secureFallback = function( val )
|
|||
*
|
||||
* @return {undefined}
|
||||
*/
|
||||
exports.defineSecureProp = function( obj, prop, value )
|
||||
{
|
||||
if ( secure_fallback )
|
||||
{
|
||||
obj[ prop ] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
Object.defineProperty( obj, prop,
|
||||
{
|
||||
value: value,
|
||||
|
||||
enumerable: false,
|
||||
writable: false,
|
||||
configurable: false,
|
||||
});
|
||||
}
|
||||
catch ( e )
|
||||
{
|
||||
// if there's an error (ehem, IE8), fall back
|
||||
obj[ prop ] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.defineSecureProp = getDefineSecureProp();
|
||||
|
||||
|
||||
/**
|
||||
|
@ -479,3 +456,51 @@ exports.arrayShrink = function( items )
|
|||
return arr_new;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Appropriately returns defineSecureProp implementation to avoid check on each
|
||||
* invocation
|
||||
*
|
||||
* @return {function( Object, string, * )}
|
||||
*/
|
||||
function getDefineSecureProp()
|
||||
{
|
||||
// falls back to simply defining a normal property
|
||||
var fallback = function( obj, prop, value )
|
||||
{
|
||||
obj[ prop ] = value;
|
||||
};
|
||||
|
||||
if ( secure_fallback )
|
||||
{
|
||||
return fallback;
|
||||
}
|
||||
else
|
||||
{
|
||||
// uses ECMAScript 5's Object.defineProperty() method
|
||||
return function( obj, prop, value )
|
||||
{
|
||||
try
|
||||
{
|
||||
Object.defineProperty( obj, prop,
|
||||
{
|
||||
value: value,
|
||||
|
||||
enumerable: false,
|
||||
writable: false,
|
||||
configurable: false,
|
||||
});
|
||||
}
|
||||
catch ( e )
|
||||
{
|
||||
// let's not have this happen again, as repeatedly throwing
|
||||
// exceptions will do nothing but slow down the system
|
||||
exports.secureFallback( true );
|
||||
|
||||
// if there's an error (ehem, IE8), fall back
|
||||
fallback( obj, prop, value );
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,5 +22,25 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require.paths.unshift( __dirname + '/../lib' );
|
||||
/**
|
||||
* Library path
|
||||
* @type {string}
|
||||
*/
|
||||
exports.PATH_LIB = require( 'path' ).normalize( __dirname + '/../lib' );
|
||||
|
||||
|
||||
/**
|
||||
* Returns requested module from the library path
|
||||
*
|
||||
* This method abstracts require() implementation so that the tests may be more
|
||||
* easily implemented elsewhere (e.g. client-side)
|
||||
*
|
||||
* @param {string} module module id
|
||||
*
|
||||
* @return {Object} module exports
|
||||
*/
|
||||
exports.require = function( module )
|
||||
{
|
||||
return require( exports.PATH_LIB + '/' + module );
|
||||
}
|
||||
|
||||
|
|
|
@ -22,12 +22,11 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( '../lib/class' ),
|
||||
abstractMethod = require( '../lib/class' ).abstractMethod,
|
||||
util = require( '../lib/util' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' ),
|
||||
abstractMethod = common.require( 'class' ).abstractMethod,
|
||||
util = common.require( 'util' );
|
||||
|
||||
// not abstract
|
||||
var Foo = Class.extend( {} );
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' );
|
||||
|
||||
// these two variables are declared outside of the class to ensure that they
|
||||
// will still be set even if the context of the constructor is wrong
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' );
|
||||
|
||||
var foo_props = {
|
||||
one: 1,
|
||||
|
|
|
@ -28,10 +28,9 @@ if ( Object.prototype.__defineGetter__ === undefined )
|
|||
return;
|
||||
}
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' );
|
||||
|
||||
|
||||
var Foo = Class.extend(
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' );
|
||||
|
||||
var Foo = Class.extend(
|
||||
{
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' );
|
||||
|
||||
|
||||
assert.ok(
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' ),
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' ),
|
||||
Script = process.binding( 'evals' ).Script,
|
||||
sandbox = {};
|
||||
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Class = require( 'class' ),
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Class = common.require( 'class' ),
|
||||
index = require( '../' );
|
||||
|
||||
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Interface = require( 'interface' ),
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Interface = common.require( 'interface' ),
|
||||
abstractMethod = Interface.abstractMethod;
|
||||
|
||||
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
Interface = require( 'interface' ),
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
Interface = common.require( 'interface' ),
|
||||
abstractMethod = Interface.abstractMethod;
|
||||
|
||||
var FooType = Interface.extend();
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
util = require( '../lib/util' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
util = common.require( 'util' );
|
||||
|
||||
var arr = [ 1, 2, 3 ],
|
||||
obj = { a: 1, b: 2 };
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
util = require( '../lib/util' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
util = common.require( 'util' );
|
||||
|
||||
var obj = {},
|
||||
val = 'bar';
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
propCopy = require( '../lib/util' ).propCopy;
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
propCopy = common.require( 'util' ).propCopy;
|
||||
|
||||
var props = {
|
||||
one: 1,
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
* @package test
|
||||
*/
|
||||
|
||||
require( './common' );
|
||||
|
||||
var assert = require( 'assert' ),
|
||||
util = require( '../lib/util' );
|
||||
var common = require( './common' ),
|
||||
assert = require( 'assert' ),
|
||||
util = common.require( 'util' );
|
||||
|
||||
var data = {
|
||||
// scalars (properties)
|
||||
|
|
Loading…
Reference in New Issue