6 changed files with 0 additions and 322 deletions
@ -1,80 +0,0 @@ |
|||||||
/* |
|
||||||
Copyright (c) 2014, Yahoo! Inc. All rights reserved. |
|
||||||
Copyrights licensed under the New BSD License. |
|
||||||
See the accompanying LICENSE file for terms. |
|
||||||
*/ |
|
||||||
|
|
||||||
/* jslint esnext: true */ |
|
||||||
|
|
||||||
// Function.prototype.bind implementation from Mozilla Developer Network:
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill
|
|
||||||
|
|
||||||
"use strict"; |
|
||||||
|
|
||||||
var bind = Function.prototype.bind || function (oThis) { |
|
||||||
if (typeof this !== 'function') { |
|
||||||
// closest thing possible to the ECMAScript 5
|
|
||||||
// internal IsCallable function
|
|
||||||
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); |
|
||||||
} |
|
||||||
|
|
||||||
var aArgs = Array.prototype.slice.call(arguments, 1), |
|
||||||
fToBind = this, |
|
||||||
fNOP = function() {}, |
|
||||||
fBound = function() { |
|
||||||
return fToBind.apply(this instanceof fNOP |
|
||||||
? this |
|
||||||
: oThis, |
|
||||||
aArgs.concat(Array.prototype.slice.call(arguments))); |
|
||||||
}; |
|
||||||
|
|
||||||
if (this.prototype) { |
|
||||||
// native functions don't have a prototype
|
|
||||||
fNOP.prototype = this.prototype; |
|
||||||
} |
|
||||||
fBound.prototype = new fNOP(); |
|
||||||
|
|
||||||
return fBound; |
|
||||||
}; |
|
||||||
|
|
||||||
// Purposely using the same implementation as the Intl.js `Intl` polyfill.
|
|
||||||
// Copyright 2013 Andy Earnshaw, MIT License
|
|
||||||
|
|
||||||
var hop = Object.prototype.hasOwnProperty; |
|
||||||
|
|
||||||
var realDefineProp = (function () { |
|
||||||
try { return !!Object.defineProperty({}, 'a', {}); } |
|
||||||
catch (e) { return false; } |
|
||||||
})(); |
|
||||||
|
|
||||||
var es3 = !realDefineProp && !Object.prototype.__defineGetter__; |
|
||||||
|
|
||||||
var defineProperty = realDefineProp ? Object.defineProperty : |
|
||||||
function (obj, name, desc) { |
|
||||||
|
|
||||||
if ('get' in desc && obj.__defineGetter__) { |
|
||||||
obj.__defineGetter__(name, desc.get); |
|
||||||
} else if (!hop.call(obj, name) || 'value' in desc) { |
|
||||||
obj[name] = desc.value; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
var objCreate = Object.create || function (proto, props) { |
|
||||||
var obj, k; |
|
||||||
|
|
||||||
function F() {} |
|
||||||
F.prototype = proto; |
|
||||||
obj = new F(); |
|
||||||
|
|
||||||
for (k in props) { |
|
||||||
if (hop.call(props, k)) { |
|
||||||
defineProperty(obj, k, props[k]); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return obj; |
|
||||||
}; |
|
||||||
|
|
||||||
exports.bind = bind, exports.defineProperty = defineProperty, exports.objCreate = objCreate; |
|
||||||
|
|
||||||
//# sourceMappingURL=es5.js.map
|
|
||||||
File diff suppressed because one or more lines are too long
@ -1,83 +0,0 @@ |
|||||||
/* |
|
||||||
Copyright (c) 2014, Yahoo! Inc. All rights reserved. |
|
||||||
Copyrights licensed under the New BSD License. |
|
||||||
See the accompanying LICENSE file for terms. |
|
||||||
*/ |
|
||||||
|
|
||||||
/* jshint esnext: true */ |
|
||||||
|
|
||||||
"use strict"; |
|
||||||
var src$es5$$ = require("./es5"); |
|
||||||
exports["default"] = createFormatCache; |
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function createFormatCache(FormatConstructor) { |
|
||||||
var cache = src$es5$$.objCreate(null); |
|
||||||
|
|
||||||
return function () { |
|
||||||
var args = Array.prototype.slice.call(arguments); |
|
||||||
var cacheId = getCacheId(args); |
|
||||||
var format = cacheId && cache[cacheId]; |
|
||||||
|
|
||||||
if (!format) { |
|
||||||
format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))(); |
|
||||||
|
|
||||||
if (cacheId) { |
|
||||||
cache[cacheId] = format; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return format; |
|
||||||
}; |
|
||||||
} |
|
||||||
|
|
||||||
// -- Utilities ----------------------------------------------------------------
|
|
||||||
|
|
||||||
function getCacheId(inputs) { |
|
||||||
// When JSON is not available in the runtime, we will not create a cache id.
|
|
||||||
if (typeof JSON === 'undefined') { return; } |
|
||||||
|
|
||||||
var cacheId = []; |
|
||||||
|
|
||||||
var i, len, input; |
|
||||||
|
|
||||||
for (i = 0, len = inputs.length; i < len; i += 1) { |
|
||||||
input = inputs[i]; |
|
||||||
|
|
||||||
if (input && typeof input === 'object') { |
|
||||||
cacheId.push(orderedProps(input)); |
|
||||||
} else { |
|
||||||
cacheId.push(input); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return JSON.stringify(cacheId); |
|
||||||
} |
|
||||||
|
|
||||||
function orderedProps(obj) { |
|
||||||
var props = [], |
|
||||||
keys = []; |
|
||||||
|
|
||||||
var key, i, len, prop; |
|
||||||
|
|
||||||
for (key in obj) { |
|
||||||
if (obj.hasOwnProperty(key)) { |
|
||||||
keys.push(key); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
var orderedKeys = keys.sort(); |
|
||||||
|
|
||||||
for (i = 0, len = orderedKeys.length; i < len; i += 1) { |
|
||||||
key = orderedKeys[i]; |
|
||||||
prop = {}; |
|
||||||
|
|
||||||
prop[key] = obj[key]; |
|
||||||
props[i] = prop; |
|
||||||
} |
|
||||||
|
|
||||||
return props; |
|
||||||
} |
|
||||||
|
|
||||||
//# sourceMappingURL=memoizer.js.map
|
|
||||||
File diff suppressed because one or more lines are too long
@ -1,76 +0,0 @@ |
|||||||
/* |
|
||||||
Copyright (c) 2014, Yahoo! Inc. All rights reserved. |
|
||||||
Copyrights licensed under the New BSD License. |
|
||||||
See the accompanying LICENSE file for terms. |
|
||||||
*/ |
|
||||||
|
|
||||||
/* jslint esnext: true */ |
|
||||||
|
|
||||||
// Function.prototype.bind implementation from Mozilla Developer Network:
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill
|
|
||||||
|
|
||||||
var bind = Function.prototype.bind || function (oThis) { |
|
||||||
if (typeof this !== 'function') { |
|
||||||
// closest thing possible to the ECMAScript 5
|
|
||||||
// internal IsCallable function
|
|
||||||
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); |
|
||||||
} |
|
||||||
|
|
||||||
var aArgs = Array.prototype.slice.call(arguments, 1), |
|
||||||
fToBind = this, |
|
||||||
fNOP = function() {}, |
|
||||||
fBound = function() { |
|
||||||
return fToBind.apply(this instanceof fNOP |
|
||||||
? this |
|
||||||
: oThis, |
|
||||||
aArgs.concat(Array.prototype.slice.call(arguments))); |
|
||||||
}; |
|
||||||
|
|
||||||
if (this.prototype) { |
|
||||||
// native functions don't have a prototype
|
|
||||||
fNOP.prototype = this.prototype; |
|
||||||
} |
|
||||||
fBound.prototype = new fNOP(); |
|
||||||
|
|
||||||
return fBound; |
|
||||||
}; |
|
||||||
|
|
||||||
// Purposely using the same implementation as the Intl.js `Intl` polyfill.
|
|
||||||
// Copyright 2013 Andy Earnshaw, MIT License
|
|
||||||
|
|
||||||
var hop = Object.prototype.hasOwnProperty; |
|
||||||
|
|
||||||
var realDefineProp = (function () { |
|
||||||
try { return !!Object.defineProperty({}, 'a', {}); } |
|
||||||
catch (e) { return false; } |
|
||||||
})(); |
|
||||||
|
|
||||||
var es3 = !realDefineProp && !Object.prototype.__defineGetter__; |
|
||||||
|
|
||||||
var defineProperty = realDefineProp ? Object.defineProperty : |
|
||||||
function (obj, name, desc) { |
|
||||||
|
|
||||||
if ('get' in desc && obj.__defineGetter__) { |
|
||||||
obj.__defineGetter__(name, desc.get); |
|
||||||
} else if (!hop.call(obj, name) || 'value' in desc) { |
|
||||||
obj[name] = desc.value; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
var objCreate = Object.create || function (proto, props) { |
|
||||||
var obj, k; |
|
||||||
|
|
||||||
function F() {} |
|
||||||
F.prototype = proto; |
|
||||||
obj = new F(); |
|
||||||
|
|
||||||
for (k in props) { |
|
||||||
if (hop.call(props, k)) { |
|
||||||
defineProperty(obj, k, props[k]); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return obj; |
|
||||||
}; |
|
||||||
|
|
||||||
export {bind, defineProperty, objCreate}; |
|
||||||
@ -1,81 +0,0 @@ |
|||||||
/* |
|
||||||
Copyright (c) 2014, Yahoo! Inc. All rights reserved. |
|
||||||
Copyrights licensed under the New BSD License. |
|
||||||
See the accompanying LICENSE file for terms. |
|
||||||
*/ |
|
||||||
|
|
||||||
/* jshint esnext: true */ |
|
||||||
|
|
||||||
import {bind, objCreate} from './es5'; |
|
||||||
|
|
||||||
export default createFormatCache; |
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function createFormatCache(FormatConstructor) { |
|
||||||
var cache = objCreate(null); |
|
||||||
|
|
||||||
return function () { |
|
||||||
var args = Array.prototype.slice.call(arguments); |
|
||||||
var cacheId = getCacheId(args); |
|
||||||
var format = cacheId && cache[cacheId]; |
|
||||||
|
|
||||||
if (!format) { |
|
||||||
format = new (bind.apply(FormatConstructor, [null].concat(args)))(); |
|
||||||
|
|
||||||
if (cacheId) { |
|
||||||
cache[cacheId] = format; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return format; |
|
||||||
}; |
|
||||||
} |
|
||||||
|
|
||||||
// -- Utilities ----------------------------------------------------------------
|
|
||||||
|
|
||||||
function getCacheId(inputs) { |
|
||||||
// When JSON is not available in the runtime, we will not create a cache id.
|
|
||||||
if (typeof JSON === 'undefined') { return; } |
|
||||||
|
|
||||||
var cacheId = []; |
|
||||||
|
|
||||||
var i, len, input; |
|
||||||
|
|
||||||
for (i = 0, len = inputs.length; i < len; i += 1) { |
|
||||||
input = inputs[i]; |
|
||||||
|
|
||||||
if (input && typeof input === 'object') { |
|
||||||
cacheId.push(orderedProps(input)); |
|
||||||
} else { |
|
||||||
cacheId.push(input); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return JSON.stringify(cacheId); |
|
||||||
} |
|
||||||
|
|
||||||
function orderedProps(obj) { |
|
||||||
var props = [], |
|
||||||
keys = []; |
|
||||||
|
|
||||||
var key, i, len, prop; |
|
||||||
|
|
||||||
for (key in obj) { |
|
||||||
if (obj.hasOwnProperty(key)) { |
|
||||||
keys.push(key); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
var orderedKeys = keys.sort(); |
|
||||||
|
|
||||||
for (i = 0, len = orderedKeys.length; i < len; i += 1) { |
|
||||||
key = orderedKeys[i]; |
|
||||||
prop = {}; |
|
||||||
|
|
||||||
prop[key] = obj[key]; |
|
||||||
props[i] = prop; |
|
||||||
} |
|
||||||
|
|
||||||
return props; |
|
||||||
} |
|
||||||
Loading…
Reference in new issue