Socket
Socket
Sign inDemoInstall

onetime

Package Overview
Dependencies
1
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.1.0 to 5.1.1

15

index.d.ts

@@ -18,2 +18,17 @@ declare namespace oneTime {

@returns A function that only calls `fn` once.
@example
```
import onetime = require('onetime');
let i = 0;
const foo = onetime(() => ++i);
foo(); //=> 1
foo(); //=> 1
foo(); //=> 1
onetime.callCount(foo); //=> 3
```
*/

@@ -20,0 +35,0 @@ <ArgumentsType extends unknown[], ReturnType>(

38

index.js

@@ -6,31 +6,25 @@ 'use strict';

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);

@@ -45,8 +39,8 @@

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_);
};
{
"name": "onetime",
"version": "5.1.0",
"version": "5.1.1",
"description": "Ensure a function is only called once",
"license": "MIT",
"repository": "sindresorhus/onetime",
"funding": "https://github.com/sponsors/sindresorhus",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"url": "https://sindresorhus.com"
},

@@ -12,0 +13,0 @@ "engines": {

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

# onetime [![Build Status](https://travis-ci.org/sindresorhus/onetime.svg?branch=master)](https://travis-ci.org/sindresorhus/onetime)
# onetime [![Build Status](https://travis-ci.com/sindresorhus/onetime.svg?branch=master)](https://travis-ci.com/github/sindresorhus/onetime)

@@ -9,3 +9,2 @@ > Ensure a function is only called once

## Install

@@ -17,3 +16,2 @@

## Usage

@@ -28,5 +26,5 @@

foo(); //=> 0
foo(); //=> 0
foo(); //=> 0
foo(); //=> 1
foo(); //=> 1
foo(); //=> 1

@@ -47,6 +45,5 @@ onetime.callCount(foo); //=> 3

## API
### onetime(fn, [options])
### onetime(fn, options?)

@@ -63,7 +60,7 @@ Returns a function that only calls `fn` once.

Type: `Object`
Type: `object`
##### throw
Type: `boolean`<br>
Type: `boolean`\
Default: `false`

@@ -80,2 +77,4 @@

```js
const onetime = require('onetime');
const foo = onetime(() => {});

@@ -97,5 +96,6 @@

## onetime for enterprise
## License
Available as part of the Tidelift Subscription.
MIT © [Sindre Sorhus](https://sindresorhus.com)
The maintainers of onetime and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-onetime?utm_source=npm-onetime&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc