mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-10 21:01:41 +00:00
update
This commit is contained in:
22
node_modules/yeast/LICENSE
generated
vendored
Normal file
22
node_modules/yeast/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
82
node_modules/yeast/README.md
generated
vendored
Normal file
82
node_modules/yeast/README.md
generated
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
# yeast
|
||||
|
||||
[](http://unshift.io)[](http://browsenpm.org/package/yeast)[](https://travis-ci.org/unshiftio/yeast)[](https://david-dm.org/unshiftio/yeast)[](https://coveralls.io/r/unshiftio/yeast?branch=master)[](https://webchat.freenode.net/?channels=unshift)
|
||||
|
||||
[](https://saucelabs.com/u/yeast)
|
||||
|
||||
Yeast is a unique id generator. It has been primarily designed to generate a
|
||||
unique id which can be used for cache busting. A common practice for this is
|
||||
to use a timestamp, but there are couple of downsides when using timestamps.
|
||||
|
||||
1. The timestamp is already 13 chars long. This might not matter for 1 request
|
||||
but if you make hundreds of them this quickly adds up in bandwidth and
|
||||
processing time.
|
||||
2. It's not unique enough. If you generate two stamps right after each other,
|
||||
they would be identical because the timing accuracy is limited to
|
||||
milliseconds.
|
||||
|
||||
Yeast solves both of these issues by:
|
||||
|
||||
1. Compressing the generated timestamp using a custom `encode()` function that
|
||||
returns a string representation of the number.
|
||||
2. Seeding the id in case of collision (when the id is identical to the previous
|
||||
one).
|
||||
|
||||
To keep the strings unique it will use the `.` char to separate the generated
|
||||
stamp from the seed.
|
||||
|
||||
## Installation
|
||||
|
||||
The module is intended to be used in browsers as well as in Node.js and is
|
||||
therefore released in the npm registry and can be installed using:
|
||||
|
||||
```
|
||||
npm install --save yeast
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
All the examples assume that this library is initialized as follow:
|
||||
|
||||
```js
|
||||
'use strict';
|
||||
|
||||
var yeast = require('yeast');
|
||||
```
|
||||
|
||||
To generate an id just call the `yeast` function.
|
||||
|
||||
```js
|
||||
console.log(yeast(), yeast(), yeast()); // outputs: KyxidwN KyxidwN.0 KyxidwN.1
|
||||
|
||||
setTimeout(function () {
|
||||
console.log(yeast()); // outputs: KyxidwO
|
||||
});
|
||||
```
|
||||
|
||||
### yeast.encode(num)
|
||||
|
||||
An helper function that returns a string representing the specified number. The
|
||||
returned string contains only URL safe characters.
|
||||
|
||||
```js
|
||||
yeast.encode(+new Date()); // outputs: Kyxjuo1
|
||||
```
|
||||
|
||||
### yeast.decode(str)
|
||||
|
||||
An helper function that returns the integer value specified by the given string.
|
||||
This function can be used to retrieve the timestamp from a `yeast` id.
|
||||
|
||||
```js
|
||||
var id = yeast(); // holds the value: Kyxl1OU
|
||||
|
||||
yeast.decode(id); // outputs: 1439816226334
|
||||
```
|
||||
|
||||
That's all folks. If you have ideas on how we can further compress the ids
|
||||
please open an issue!
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
68
node_modules/yeast/index.js
generated
vendored
Normal file
68
node_modules/yeast/index.js
generated
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
'use strict';
|
||||
|
||||
var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')
|
||||
, length = 64
|
||||
, map = {}
|
||||
, seed = 0
|
||||
, i = 0
|
||||
, prev;
|
||||
|
||||
/**
|
||||
* Return a string representing the specified number.
|
||||
*
|
||||
* @param {Number} num The number to convert.
|
||||
* @returns {String} The string representation of the number.
|
||||
* @api public
|
||||
*/
|
||||
function encode(num) {
|
||||
var encoded = '';
|
||||
|
||||
do {
|
||||
encoded = alphabet[num % length] + encoded;
|
||||
num = Math.floor(num / length);
|
||||
} while (num > 0);
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the integer value specified by the given string.
|
||||
*
|
||||
* @param {String} str The string to convert.
|
||||
* @returns {Number} The integer value represented by the string.
|
||||
* @api public
|
||||
*/
|
||||
function decode(str) {
|
||||
var decoded = 0;
|
||||
|
||||
for (i = 0; i < str.length; i++) {
|
||||
decoded = decoded * length + map[str.charAt(i)];
|
||||
}
|
||||
|
||||
return decoded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Yeast: A tiny growing id generator.
|
||||
*
|
||||
* @returns {String} A unique id.
|
||||
* @api public
|
||||
*/
|
||||
function yeast() {
|
||||
var now = encode(+new Date());
|
||||
|
||||
if (now !== prev) return seed = 0, prev = now;
|
||||
return now +'.'+ encode(seed++);
|
||||
}
|
||||
|
||||
//
|
||||
// Map each character to its index.
|
||||
//
|
||||
for (; i < length; i++) map[alphabet[i]] = i;
|
||||
|
||||
//
|
||||
// Expose the `yeast`, `encode` and `decode` functions.
|
||||
//
|
||||
yeast.encode = encode;
|
||||
yeast.decode = decode;
|
||||
module.exports = yeast;
|
68
node_modules/yeast/package.json
generated
vendored
Normal file
68
node_modules/yeast/package.json
generated
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"yeast@0.1.2",
|
||||
"/Users/tatiana/selfdefined"
|
||||
]
|
||||
],
|
||||
"_from": "yeast@0.1.2",
|
||||
"_id": "yeast@0.1.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
|
||||
"_location": "/yeast",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "yeast@0.1.2",
|
||||
"name": "yeast",
|
||||
"escapedName": "yeast",
|
||||
"rawSpec": "0.1.2",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "0.1.2"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/engine.io-client",
|
||||
"/socket.io/engine.io-client"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
|
||||
"_spec": "0.1.2",
|
||||
"_where": "/Users/tatiana/selfdefined",
|
||||
"author": {
|
||||
"name": "Arnout Kazemier"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/unshiftio/yeast/issues"
|
||||
},
|
||||
"description": "Tiny but linear growing unique id generator",
|
||||
"devDependencies": {
|
||||
"assume": "1.3.x",
|
||||
"istanbul": "0.3.x",
|
||||
"mocha": "2.3.x",
|
||||
"pre-commit": "1.1.x",
|
||||
"zuul": "3.4.x"
|
||||
},
|
||||
"homepage": "https://github.com/unshiftio/yeast",
|
||||
"keywords": [
|
||||
"yeast",
|
||||
"id",
|
||||
"generator",
|
||||
"unique"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "yeast",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/unshiftio/yeast.git"
|
||||
},
|
||||
"scripts": {
|
||||
"100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
|
||||
"coverage": "istanbul cover _mocha -- test.js",
|
||||
"test": "mocha test.js",
|
||||
"test-browser": "zuul -- test.js",
|
||||
"test-node": "istanbul cover _mocha --report lcovonly -- test.js",
|
||||
"watch": "mocha --watch test.js"
|
||||
},
|
||||
"version": "0.1.2"
|
||||
}
|
Reference in New Issue
Block a user