Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / onetime / index.js
index a3f412af1b4869a35538455d1fb8c3e2bcd144fc..99c5fc1cb4fe973270709368c480997e0b739a00 100644 (file)
@@ -3,48 +3,42 @@ const mimicFn = require('mimic-fn');
 
 const calledFunctions = new WeakMap();
 
-const oneTime = (fn, options = {}) => {
-       if (typeof fn !== 'function') {
+const onetime = (function_, options = {}) => {
+       if (typeof function_ !== 'function') {
                throw new TypeError('Expected a function');
        }
 
-       let ret;
-       let isCalled = false;
+       let returnValue;
        let callCount = 0;
-       const functionName = fn.displayName || fn.name || '<anonymous>';
+       const functionName = function_.displayName || function_.name || '<anonymous>';
 
-       const onetime = function (...args) {
+       const onetime = function (...arguments_) {
                calledFunctions.set(onetime, ++callCount);
 
-               if (isCalled) {
-                       if (options.throw === true) {
-                               throw new Error(`Function \`${functionName}\` can only be called once`);
-                       }
-
-                       return ret;
+               if (callCount === 1) {
+                       returnValue = function_.apply(this, arguments_);
+                       function_ = null;
+               } else if (options.throw === true) {
+                       throw new Error(`Function \`${functionName}\` can only be called once`);
                }
 
-               isCalled = true;
-               ret = fn.apply(this, args);
-               fn = null;
-
-               return ret;
+               return returnValue;
        };
 
-       mimicFn(onetime, fn);
+       mimicFn(onetime, function_);
        calledFunctions.set(onetime, callCount);
 
        return onetime;
 };
 
-module.exports = oneTime;
+module.exports = onetime;
 // TODO: Remove this for the next major release
-module.exports.default = oneTime;
+module.exports.default = onetime;
 
-module.exports.callCount = fn => {
-       if (!calledFunctions.has(fn)) {
-               throw new Error(`The given function \`${fn.name}\` is not wrapped by the \`onetime\` package`);
+module.exports.callCount = function_ => {
+       if (!calledFunctions.has(function_)) {
+               throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
        }
 
-       return calledFunctions.get(fn);
+       return calledFunctions.get(function_);
 };