🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

functools

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

functools - npm Package Compare versions

Comparing version
3.2.0
to
3.2.1
+11
-3
dist/index.js

@@ -69,8 +69,16 @@ "use strict";

function wait() {
timeout = setTimeout(flush, ms);
timeout = setTimeout(_next, ms);
}
// Invoke the function in "pending" state.
function flush() {
if (!pending)
if (pending)
return _next();
}
// Clear timeout or flush next function call.
function _next() {
// When no pending, remove `timeout`.
if (!pending) {
timeout = undefined;
return;
}
clear(); // Clear existing timeout.

@@ -84,3 +92,3 @@ fn(); // Execute pending function.

if (leading === true)
return flush();
return _next();
return wait();

@@ -87,0 +95,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AASA;;;;GAIG;AACH,SAAgB,OAAO,CAAS,EAAiB,EAAE,QAAqB,IAAI,GAAG,EAAE;IAC/E,OAAO,UAAU,GAAM;QACrB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;QAE1C,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACtB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AARD,0BAQC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAM,EAAW;IACvC,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAkB,SAAS,CAAA;IAErC,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE,EAAE,CAAA;YACb,MAAM,GAAG,IAAI,CAAA;SACd;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAZD,4BAYC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAM,KAAQ;IACpC,OAAO,KAAK,CAAA;AACd,CAAC;AAFD,4BAEC;AAED;;GAEG;AACH,SAAgB,IAAI,CAAuC,GAAM;IAC/D,OAAO,CAAgC,GAAM,EAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC;AAFD,oBAEC;AAID;;;GAGG;AACH,SAAgB,MAAM,CAAwD,GAAM,EAAE,GAAG,IAAO;IAC9F,OAAO,CAA4C,GAAM,EAAyB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACxG,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAE,EAAc,EAAE,EAAU,EAAE,OAAO,GAAG,IAAI;IAClE,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,GAAQ,SAAS,CAAA;IAE5B,iBAAiB;IACjB,SAAS,KAAK;QACZ,OAAO,GAAG,KAAK,CAAA;QACf,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,OAAO,GAAG,SAAS,CAAA;IACrB,CAAC;IAED,8BAA8B;IAC9B,SAAS,IAAI;QACX,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,0CAA0C;IAC1C,SAAS,KAAK;QACZ,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,KAAK,EAAE,CAAA,CAAC,0BAA0B;QAClC,EAAE,EAAE,CAAA,CAAC,4BAA4B;QACjC,IAAI,EAAE,CAAA,CAAC,sBAAsB;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACxB,OAAO,GAAG,IAAI,CAAA;QAEd,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,KAAK,EAAE,CAAA;YACpC,OAAO,IAAI,EAAE,CAAA;SACd;IACH,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AACtB,CAAC;AAhCD,4BAgCC","sourcesContent":["/**\n * Minimum required cache interface.\n */\nexport interface Cache <T, U> {\n get (key: T): U | undefined\n set (key: T, value: U): void\n has (key: T): boolean\n}\n\n/**\n * Optimize a function to speed up consecutive calls by caching the result of\n * calls with identical input arguments. The cache can be overrriden to\n * implement features such as LRU eviction.\n */\nexport function memoize <T, U> (fn: (arg: T) => U, cache: Cache<T, U> = new Map()) {\n return function (arg: T): U {\n if (cache.has(arg)) return cache.get(arg)!\n\n const result = fn(arg)\n cache.set(arg, result)\n return result\n }\n}\n\n/**\n * Memoize a 0-arg function call.\n */\nexport function memoize0 <T> (fn: () => T) {\n let cached = false\n let result: T | undefined = undefined\n\n return () => {\n if (!cached) {\n result = fn()\n cached = true\n }\n\n return result\n }\n}\n\n/**\n * Always returns the same value that was used as the argument.\n */\nexport function identity <T> (value: T) {\n return value\n}\n\n/**\n * Return a function that fetches `key` from its operand.\n */\nexport function prop <K extends string | number | symbol> (key: K) {\n return <T extends { [T in K]?: any }> (obj: T): T[K] => obj[key]\n}\n\nexport type InvokeResult <T extends (...args: A) => any, A extends any[]> = T extends (...args: A) => infer R ? R : never\n\n/**\n * Return a function that calls the method name on its operand. If additional\n * arguments are given, they will be given to the method as well.\n */\nexport function invoke <K extends string | number | symbol, A extends any[]> (key: K, ...args: A) {\n return <T extends Record<K, (...args: A) => any>> (obj: T): InvokeResult<T[K], A> => obj[key](...args)\n}\n\n/**\n * Wrap a function to rate-limit the function executions to once every `ms` milliseconds.\n */\nexport function throttle (fn: () => void, ms: number, leading = true) {\n let pending = false\n let timeout: any = undefined\n\n // Clear timeout.\n function clear () {\n pending = false\n clearTimeout(timeout)\n timeout = undefined\n }\n\n // Wait for the next interval.\n function wait () {\n timeout = setTimeout(flush, ms)\n }\n\n // Invoke the function in \"pending\" state.\n function flush () {\n if (!pending) return\n clear() // Clear existing timeout.\n fn() // Execute pending function.\n wait() // Start new interval.\n }\n\n return Object.assign(() => {\n pending = true\n\n if (timeout === undefined) {\n if (leading === true) return flush()\n return wait()\n }\n }, { flush, clear })\n}\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AASA;;;;GAIG;AACH,SAAgB,OAAO,CAAS,EAAiB,EAAE,QAAqB,IAAI,GAAG,EAAE;IAC/E,OAAO,UAAU,GAAM;QACrB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;QAE1C,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACtB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AARD,0BAQC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAM,EAAW;IACvC,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAkB,SAAS,CAAA;IAErC,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE,EAAE,CAAA;YACb,MAAM,GAAG,IAAI,CAAA;SACd;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAZD,4BAYC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAM,KAAQ;IACpC,OAAO,KAAK,CAAA;AACd,CAAC;AAFD,4BAEC;AAED;;GAEG;AACH,SAAgB,IAAI,CAAuC,GAAM;IAC/D,OAAO,CAAgC,GAAM,EAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC;AAFD,oBAEC;AAID;;;GAGG;AACH,SAAgB,MAAM,CAAwD,GAAM,EAAE,GAAG,IAAO;IAC9F,OAAO,CAA4C,GAAM,EAAyB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACxG,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAE,EAAc,EAAE,EAAU,EAAE,OAAO,GAAG,IAAI;IAClE,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,GAAQ,SAAS,CAAA;IAE5B,iBAAiB;IACjB,SAAS,KAAK;QACZ,OAAO,GAAG,KAAK,CAAA;QACf,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,OAAO,GAAG,SAAS,CAAA;IACrB,CAAC;IAED,8BAA8B;IAC9B,SAAS,IAAI;QACX,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,0CAA0C;IAC1C,SAAS,KAAK;QACZ,IAAI,OAAO;YAAE,OAAO,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,6CAA6C;IAC7C,SAAS,KAAK;QACZ,qCAAqC;QACrC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,SAAS,CAAA;YACnB,OAAM;SACP;QAED,KAAK,EAAE,CAAA,CAAC,0BAA0B;QAClC,EAAE,EAAE,CAAA,CAAC,4BAA4B;QACjC,IAAI,EAAE,CAAA,CAAC,sBAAsB;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACxB,OAAO,GAAG,IAAI,CAAA;QAEd,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,KAAK,EAAE,CAAA;YACpC,OAAO,IAAI,EAAE,CAAA;SACd;IACH,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AACtB,CAAC;AA1CD,4BA0CC","sourcesContent":["/**\n * Minimum required cache interface.\n */\nexport interface Cache <T, U> {\n get (key: T): U | undefined\n set (key: T, value: U): void\n has (key: T): boolean\n}\n\n/**\n * Optimize a function to speed up consecutive calls by caching the result of\n * calls with identical input arguments. The cache can be overrriden to\n * implement features such as LRU eviction.\n */\nexport function memoize <T, U> (fn: (arg: T) => U, cache: Cache<T, U> = new Map()) {\n return function (arg: T): U {\n if (cache.has(arg)) return cache.get(arg)!\n\n const result = fn(arg)\n cache.set(arg, result)\n return result\n }\n}\n\n/**\n * Memoize a 0-arg function call.\n */\nexport function memoize0 <T> (fn: () => T) {\n let cached = false\n let result: T | undefined = undefined\n\n return () => {\n if (!cached) {\n result = fn()\n cached = true\n }\n\n return result\n }\n}\n\n/**\n * Always returns the same value that was used as the argument.\n */\nexport function identity <T> (value: T) {\n return value\n}\n\n/**\n * Return a function that fetches `key` from its operand.\n */\nexport function prop <K extends string | number | symbol> (key: K) {\n return <T extends { [T in K]?: any }> (obj: T): T[K] => obj[key]\n}\n\nexport type InvokeResult <T extends (...args: A) => any, A extends any[]> = T extends (...args: A) => infer R ? R : never\n\n/**\n * Return a function that calls the method name on its operand. If additional\n * arguments are given, they will be given to the method as well.\n */\nexport function invoke <K extends string | number | symbol, A extends any[]> (key: K, ...args: A) {\n return <T extends Record<K, (...args: A) => any>> (obj: T): InvokeResult<T[K], A> => obj[key](...args)\n}\n\n/**\n * Wrap a function to rate-limit the function executions to once every `ms` milliseconds.\n */\nexport function throttle (fn: () => void, ms: number, leading = true) {\n let pending = false\n let timeout: any = undefined\n\n // Clear timeout.\n function clear () {\n pending = false\n clearTimeout(timeout)\n timeout = undefined\n }\n\n // Wait for the next interval.\n function wait () {\n timeout = setTimeout(_next, ms)\n }\n\n // Invoke the function in \"pending\" state.\n function flush () {\n if (pending) return _next()\n }\n\n // Clear timeout or flush next function call.\n function _next () {\n // When no pending, remove `timeout`.\n if (!pending) {\n timeout = undefined\n return\n }\n\n clear() // Clear existing timeout.\n fn() // Execute pending function.\n wait() // Start new interval.\n }\n\n return Object.assign(() => {\n pending = true\n\n if (timeout === undefined) {\n if (leading === true) return _next()\n return wait()\n }\n }, { flush, clear })\n}\n"]}
{
"name": "functools",
"version": "3.2.0",
"version": "3.2.1",
"description": "Utilities for working with functions in JavaScript, with TypeScript",

@@ -5,0 +5,0 @@ "main": "dist/index.js",