lodash.template
Advanced tools
+86
-180
@@ -21,3 +21,2 @@ /** | ||
| genTag = '[object GeneratorFunction]', | ||
| stringTag = '[object String]', | ||
| symbolTag = '[object Symbol]'; | ||
@@ -32,3 +31,3 @@ | ||
| * Used to match | ||
| * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). | ||
| * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). | ||
| */ | ||
@@ -106,15 +105,2 @@ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; | ||
| /** | ||
| * The base implementation of `_.property` without support for deep paths. | ||
| * | ||
| * @private | ||
| * @param {string} key The key of the property to get. | ||
| * @returns {Function} Returns the new accessor function. | ||
| */ | ||
| function baseProperty(key) { | ||
| return function(object) { | ||
| return object == null ? undefined : object[key]; | ||
| }; | ||
| } | ||
| /** | ||
| * The base implementation of `_.times` without support for iteratee shorthands | ||
@@ -166,22 +152,5 @@ * or max array length checks. | ||
| /** | ||
| * Converts `iterator` to an array. | ||
| * Creates a unary function that invokes `func` with its argument transformed. | ||
| * | ||
| * @private | ||
| * @param {Object} iterator The iterator to convert. | ||
| * @returns {Array} Returns the converted array. | ||
| */ | ||
| function iteratorToArray(iterator) { | ||
| var data, | ||
| result = []; | ||
| while (!(data = iterator.next()).done) { | ||
| result.push(data.value); | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * Creates a function that invokes `func` with its first argument transformed. | ||
| * | ||
| * @private | ||
| * @param {Function} func The function to wrap. | ||
@@ -205,3 +174,3 @@ * @param {Function} transform The argument transform. | ||
| * Used to resolve the | ||
| * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) | ||
| * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) | ||
| * of values. | ||
@@ -212,10 +181,7 @@ */ | ||
| /** Built-in value references. */ | ||
| var Reflect = root.Reflect, | ||
| Symbol = root.Symbol, | ||
| enumerate = Reflect ? Reflect.enumerate : undefined, | ||
| var Symbol = root.Symbol, | ||
| propertyIsEnumerable = objectProto.propertyIsEnumerable; | ||
| /* Built-in method references for those with the same name as other `lodash` methods. */ | ||
| var nativeGetPrototype = Object.getPrototypeOf, | ||
| nativeKeys = Object.keys, | ||
| var nativeKeys = overArg(Object.keys, Object), | ||
| nativeMax = Math.max; | ||
@@ -228,2 +194,29 @@ | ||
| /** | ||
| * Creates an array of the enumerable property names of the array-like `value`. | ||
| * | ||
| * @private | ||
| * @param {*} value The value to query. | ||
| * @param {boolean} inherited Specify returning inherited property names. | ||
| * @returns {Array} Returns the array of property names. | ||
| */ | ||
| function arrayLikeKeys(value, inherited) { | ||
| // Safari 8.1 makes `arguments.callee` enumerable in strict mode. | ||
| // Safari 9 makes `arguments.length` enumerable in strict mode. | ||
| var result = (isArray(value) || isArguments(value)) | ||
| ? baseTimes(value.length, String) | ||
| : []; | ||
| var length = result.length, | ||
| skipIndexes = !!length; | ||
| for (var key in value) { | ||
| if ((inherited || hasOwnProperty.call(value, key)) && | ||
| !(skipIndexes && (key == 'length' || isIndex(key, length)))) { | ||
| result.push(key); | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * Used by `_.defaults` to customize its `_.assignIn` use. | ||
@@ -248,3 +241,3 @@ * | ||
| * Assigns `value` to `key` of `object` if the existing value is not equivalent | ||
| * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) | ||
| * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) | ||
| * for equality comparisons. | ||
@@ -266,31 +259,23 @@ * | ||
| /** | ||
| * The base implementation of `_.has` without support for deep paths. | ||
| * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. | ||
| * | ||
| * @private | ||
| * @param {Object} [object] The object to query. | ||
| * @param {Array|string} key The key to check. | ||
| * @returns {boolean} Returns `true` if `key` exists, else `false`. | ||
| */ | ||
| function baseHas(object, key) { | ||
| // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`, | ||
| // that are composed entirely of index properties, return `false` for | ||
| // `hasOwnProperty` checks of them. | ||
| return object != null && | ||
| (hasOwnProperty.call(object, key) || | ||
| (typeof object == 'object' && key in object && getPrototype(object) === null)); | ||
| } | ||
| /** | ||
| * The base implementation of `_.keys` which doesn't skip the constructor | ||
| * property of prototypes or treat sparse arrays as dense. | ||
| * | ||
| * @private | ||
| * @param {Object} object The object to query. | ||
| * @returns {Array} Returns the array of property names. | ||
| */ | ||
| var baseKeys = overArg(nativeKeys, Object); | ||
| function baseKeys(object) { | ||
| if (!isPrototype(object)) { | ||
| return nativeKeys(object); | ||
| } | ||
| var result = []; | ||
| for (var key in Object(object)) { | ||
| if (hasOwnProperty.call(object, key) && key != 'constructor') { | ||
| result.push(key); | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * The base implementation of `_.keysIn` which doesn't skip the constructor | ||
| * property of prototypes or treat sparse arrays as dense. | ||
| * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. | ||
| * | ||
@@ -302,7 +287,12 @@ * @private | ||
| function baseKeysIn(object) { | ||
| object = object == null ? object : Object(object); | ||
| if (!isObject(object)) { | ||
| return nativeKeysIn(object); | ||
| } | ||
| var isProto = isPrototype(object), | ||
| result = []; | ||
| var result = []; | ||
| for (var key in object) { | ||
| result.push(key); | ||
| if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { | ||
| result.push(key); | ||
| } | ||
| } | ||
@@ -312,9 +302,2 @@ return result; | ||
| // Fallback for IE < 9 with es6-shim. | ||
| if (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) { | ||
| baseKeysIn = function(object) { | ||
| return iteratorToArray(enumerate(object)); | ||
| }; | ||
| } | ||
| /** | ||
@@ -431,41 +414,2 @@ * The base implementation of `_.rest` which doesn't validate or coerce arguments. | ||
| /** | ||
| * Gets the "length" property value of `object`. | ||
| * | ||
| * **Note:** This function is used to avoid a | ||
| * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects | ||
| * Safari on at least iOS 8.1-8.3 ARM64. | ||
| * | ||
| * @private | ||
| * @param {Object} object The object to query. | ||
| * @returns {*} Returns the "length" value. | ||
| */ | ||
| var getLength = baseProperty('length'); | ||
| /** | ||
| * Gets the `[[Prototype]]` of `value`. | ||
| * | ||
| * @private | ||
| * @param {*} value The value to query. | ||
| * @returns {null|Object} Returns the `[[Prototype]]`. | ||
| */ | ||
| var getPrototype = overArg(nativeGetPrototype, Object); | ||
| /** | ||
| * Creates an array of index keys for `object` values of arrays, | ||
| * `arguments` objects, and strings, otherwise `null` is returned. | ||
| * | ||
| * @private | ||
| * @param {Object} object The object to query. | ||
| * @returns {Array|null} Returns index keys, else `null`. | ||
| */ | ||
| function indexKeys(object) { | ||
| var length = object ? object.length : undefined; | ||
| if (isLength(length) && | ||
| (isArray(object) || isString(object) || isArguments(object))) { | ||
| return baseTimes(length, String); | ||
| } | ||
| return null; | ||
| } | ||
| /** | ||
| * Checks if `value` is a valid array-like index. | ||
@@ -524,4 +468,23 @@ * | ||
| /** | ||
| * This function is like | ||
| * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) | ||
| * except that it includes inherited enumerable properties. | ||
| * | ||
| * @private | ||
| * @param {Object} object The object to query. | ||
| * @returns {Array} Returns the array of property names. | ||
| */ | ||
| function nativeKeysIn(object) { | ||
| var result = []; | ||
| if (object != null) { | ||
| for (var key in Object(object)) { | ||
| result.push(key); | ||
| } | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * Performs a | ||
| * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) | ||
| * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) | ||
| * comparison between two values to determine if they are equivalent. | ||
@@ -579,3 +542,3 @@ * | ||
| function isArguments(value) { | ||
| // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode. | ||
| // Safari 8.1 makes `arguments.callee` enumerable in strict mode. | ||
| return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && | ||
@@ -636,3 +599,3 @@ (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); | ||
| function isArrayLike(value) { | ||
| return value != null && isLength(getLength(value)) && !isFunction(value); | ||
| return value != null && isLength(value.length) && !isFunction(value); | ||
| } | ||
@@ -678,4 +641,3 @@ | ||
| * @param {*} value The value to check. | ||
| * @returns {boolean} Returns `true` if `value` is an error object, | ||
| * else `false`. | ||
| * @returns {boolean} Returns `true` if `value` is an error object, else `false`. | ||
| * @example | ||
@@ -716,4 +678,3 @@ * | ||
| // The use of `Object#toString` avoids issues with the `typeof` operator | ||
| // in Safari 8 which returns 'object' for typed array and weak map constructors, | ||
| // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. | ||
| // in Safari 8-9 which returns 'object' for typed array and other constructors. | ||
| var tag = isObject(value) ? objectToString.call(value) : ''; | ||
@@ -726,4 +687,4 @@ return tag == funcTag || tag == genTag; | ||
| * | ||
| * **Note:** This function is loosely based on | ||
| * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). | ||
| * **Note:** This method is loosely based on | ||
| * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). | ||
| * | ||
@@ -735,4 +696,3 @@ * @static | ||
| * @param {*} value The value to check. | ||
| * @returns {boolean} Returns `true` if `value` is a valid length, | ||
| * else `false`. | ||
| * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. | ||
| * @example | ||
@@ -759,3 +719,3 @@ * | ||
| * Checks if `value` is the | ||
| * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) | ||
| * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) | ||
| * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) | ||
@@ -817,24 +777,2 @@ * | ||
| /** | ||
| * Checks if `value` is classified as a `String` primitive or object. | ||
| * | ||
| * @static | ||
| * @since 0.1.0 | ||
| * @memberOf _ | ||
| * @category Lang | ||
| * @param {*} value The value to check. | ||
| * @returns {boolean} Returns `true` if `value` is a string, else `false`. | ||
| * @example | ||
| * | ||
| * _.isString('abc'); | ||
| * // => true | ||
| * | ||
| * _.isString(1); | ||
| * // => false | ||
| */ | ||
| function isString(value) { | ||
| return typeof value == 'string' || | ||
| (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); | ||
| } | ||
| /** | ||
| * Checks if `value` is classified as a `Symbol` primitive or object. | ||
@@ -923,3 +861,3 @@ * | ||
| * **Note:** Non-object values are coerced to objects. See the | ||
| * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) | ||
| * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) | ||
| * for more details. | ||
@@ -949,19 +887,3 @@ * | ||
| function keys(object) { | ||
| var isProto = isPrototype(object); | ||
| if (!(isProto || isArrayLike(object))) { | ||
| return baseKeys(object); | ||
| } | ||
| var indexes = indexKeys(object), | ||
| skipIndexes = !!indexes, | ||
| result = indexes || [], | ||
| length = result.length; | ||
| for (var key in object) { | ||
| if (baseHas(object, key) && | ||
| !(skipIndexes && (key == 'length' || isIndex(key, length))) && | ||
| !(isProto && key == 'constructor')) { | ||
| result.push(key); | ||
| } | ||
| } | ||
| return result; | ||
| return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); | ||
| } | ||
@@ -993,19 +915,3 @@ | ||
| function keysIn(object) { | ||
| var index = -1, | ||
| isProto = isPrototype(object), | ||
| props = baseKeysIn(object), | ||
| propsLength = props.length, | ||
| indexes = indexKeys(object), | ||
| skipIndexes = !!indexes, | ||
| result = indexes || [], | ||
| length = result.length; | ||
| while (++index < propsLength) { | ||
| var key = props[index]; | ||
| if (!(skipIndexes && (key == 'length' || isIndex(key, length))) && | ||
| !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { | ||
| result.push(key); | ||
| } | ||
| } | ||
| return result; | ||
| return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); | ||
| } | ||
@@ -1012,0 +918,0 @@ |
+1
-1
| { | ||
| "name": "lodash.template", | ||
| "version": "4.3.0", | ||
| "version": "4.4.0", | ||
| "description": "The lodash method `_.template` exported as a module.", | ||
@@ -5,0 +5,0 @@ "homepage": "https://lodash.com/", |
+2
-2
@@ -1,2 +0,2 @@ | ||
| # lodash.template v4.3.0 | ||
| # lodash.template v4.4.0 | ||
@@ -18,2 +18,2 @@ The [lodash](https://lodash.com/) method `_.template` exported as a [Node.js](https://nodejs.org/) module. | ||
| See the [documentation](https://lodash.com/docs#template) or [package source](https://github.com/lodash/lodash/blob/4.3.0-npm-packages/lodash.template) for more details. | ||
| See the [documentation](https://lodash.com/docs#template) or [package source](https://github.com/lodash/lodash/blob/4.4.0-npm-packages/lodash.template) for more details. |
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
35746
-6.79%1051
-7.64%