unique-number
Advanced tools
Comparing version 1.0.0 to 2.0.0
28
index.js
(function() | ||
{ | ||
"use strict"; | ||
var previous = 0; | ||
function uniqueNumber() | ||
function UniqueNumber() | ||
{ | ||
this.reset(); | ||
} | ||
UniqueNumber.prototype.generate = function() | ||
{ | ||
var date = Date.now(); | ||
// If created at same millisecond as previous | ||
if (date <= previous) | ||
if (date <= this.previous) | ||
{ | ||
date = ++previous; | ||
date = ++this.previous; | ||
} | ||
else | ||
{ | ||
previous = date; | ||
this.previous = date; | ||
} | ||
return date; | ||
} | ||
}; | ||
uniqueNumber.reset = function() | ||
UniqueNumber.prototype.reset = function() | ||
{ | ||
previous = 0; | ||
this.previous = 0; | ||
}; | ||
@@ -36,12 +42,12 @@ | ||
{ | ||
module.exports = uniqueNumber; | ||
module.exports = UniqueNumber; | ||
} | ||
else if (typeof define==="function" && define.amd) | ||
{ | ||
define("jquery", [], function(){ return uniqueNumber }); | ||
define("unique-number", [], function(){ return UniqueNumber }); | ||
} | ||
else | ||
{ | ||
window.uniqueNumber = uniqueNumber; | ||
window.UniqueNumber = UniqueNumber; | ||
} | ||
})(); |
{ | ||
"name": "unique-number", | ||
"description": "Generate a unique number.", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"homepage": "https://github.com/stevenvachon/unique-number", | ||
@@ -6,0 +6,0 @@ "author": { |
@@ -1,13 +0,16 @@ | ||
# unique-number [![NPM Version](https://badge.fury.io/js/unique-number.svg)](https://badge.fury.io/js/unique-number) [![Bower Version](https://badge.fury.io/bo/unique-number.svg)](https://badge.fury.io/bo/canjs.svg) [![Build Status](https://secure.travis-ci.org/stevenvachon/unique-number.svg)](https://travis-ci.org/stevenvachon/unique-number) | ||
# unique-number [![NPM Version](https://badge.fury.io/js/unique-number.svg)](https://badge.fury.io/js/unique-number) [![Bower Version](https://badge.fury.io/bo/unique-number.svg)](https://badge.fury.io/bo/unique-number) [![Build Status](https://secure.travis-ci.org/stevenvachon/unique-number.svg)](https://travis-ci.org/stevenvachon/unique-number) | ||
> Generate a unique number. | ||
```js | ||
var uniqueNumber = require("unique-number"); | ||
var UniqueNumber = require("unique-number"); | ||
var uniqueNumber; | ||
// Timestamp | ||
console.log( uniqueNumber() ); | ||
console.log( uniqueNumber.generate() ); | ||
``` | ||
// Iterated timestamps | ||
When multiple requests are made per millisecond, the timestamp is simply iterated. After a few billion runs—typically when your operations are complete—you should run `uniqueNumber.reset()` to avoid going beyond [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER). | ||
```js | ||
for (var i=0; i<1000; i++) { | ||
console.log( uniqueNumber() ); | ||
console.log( uniqueNumber.generate() ); | ||
} | ||
@@ -19,8 +22,6 @@ | ||
setTimeout( function() { | ||
console.log( uniqueNumber() ); | ||
console.log( uniqueNumber.generate() ); | ||
}, 100); | ||
``` | ||
When multiple requests are made per millisecond, the timestamp is simply iterated. After a few billion runs—typically when your operations are complete—you should run `uniqueNumber.reset()` to avoid passing [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER). | ||
Because this library is so small and simple, it requires this one extra step. If you disapprove, you may prefer [cuid](https://npmjs.com/cuid), [puid](https://npmjs.com/puid) or [shortid](https://npmjs.com/shortid). |
3094
38
27