Sha256: 6d05f0827a9ba883d6e4bfcadedc453422180fed8e2e42b0c1a3fb495b3668d9

Contents?: true

Size: 1.28 KB

Versions: 46

Compression:

Stored size: 1.28 KB

Contents

"use strict";

var toPosInt = require("../number/to-pos-integer");

var test = function (arg1, arg2) {
	return arg2;
};

var desc, defineProperty, generate, mixin;

try {
	Object.defineProperty(test, "length", {
		configurable: true,
		writable: false,
		enumerable: false,
		value: 1
	});
} catch (ignore) {}

if (test.length === 1) {
	// ES6
	desc = { configurable: true, writable: false, enumerable: false };
	defineProperty = Object.defineProperty;
	module.exports = function (fn, length) {
		length = toPosInt(length);
		if (fn.length === length) return fn;
		desc.value = length;
		return defineProperty(fn, "length", desc);
	};
} else {
	mixin = require("../object/mixin");
	generate = (function () {
		var cache = [];
		return function (length) {
			var args, i = 0;
			if (cache[length]) return cache[length];
			args = [];
			while (length--) args.push("a" + (++i).toString(36));
			// eslint-disable-next-line no-new-func
			return new Function(
				"fn",
				"return function (" + args.join(", ") + ") { return fn.apply(this, arguments); };"
			);
		};
	}());
	module.exports = function (src, length) {
		var target;
		length = toPosInt(length);
		if (src.length === length) return src;
		target = generate(length)(src);
		try {
			mixin(target, src);
		} catch (ignore) {}
		return target;
	};
}

Version data entries

46 entries across 46 versions & 3 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.21.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.20.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.19.1 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.19.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.18.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.17.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.16.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.15.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.14.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.13.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.12.2 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.12.1 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.12.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.11.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.10.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.9.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.8.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.7.0 node_modules/es5-ext/function/_define-length.js
govuk_publishing_components-17.6.1 node_modules/es5-ext/function/_define-length.js