Website Structure
This commit is contained in:
parent
62812f2090
commit
71f0676a62
22365 changed files with 4265753 additions and 791 deletions
23
Frontend-Learner/node_modules/ylru/LICENSE
generated
vendored
Normal file
23
Frontend-Learner/node_modules/ylru/LICENSE
generated
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
Copyright (c) 2016-present node-modules
|
||||
Copyright (c) 2016 'Dominic Tarr'
|
||||
|
||||
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.
|
||||
117
Frontend-Learner/node_modules/ylru/README.md
generated
vendored
Normal file
117
Frontend-Learner/node_modules/ylru/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
# ylru
|
||||
|
||||
[![NPM version][npm-image]][npm-url]
|
||||
[](https://github.com/node-modules/ylru/actions/workflows/nodejs.yml)
|
||||
[![Test coverage][codecov-image]][codecov-url]
|
||||
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
||||
[![npm download][download-image]][download-url]
|
||||
|
||||
[npm-image]: https://img.shields.io/npm/v/ylru.svg?style=flat-square
|
||||
[npm-url]: https://npmjs.org/package/ylru
|
||||
[codecov-image]: https://img.shields.io/codecov/c/github/node-modules/ylru.svg?style=flat-square
|
||||
[codecov-url]: https://codecov.io/github/node-modules/ylru?branch=master
|
||||
[snyk-image]: https://snyk.io/test/npm/ylru/badge.svg?style=flat-square
|
||||
[snyk-url]: https://snyk.io/test/npm/ylru
|
||||
[download-image]: https://img.shields.io/npm/dm/ylru.svg?style=flat-square
|
||||
[download-url]: https://npmjs.org/package/ylru
|
||||
|
||||
**hashlru inspired**
|
||||
|
||||
[hashlru](https://github.com/dominictarr/hashlru) is the **Simpler, faster LRU cache algorithm.**
|
||||
Please checkout [algorithm](https://github.com/dominictarr/hashlru#algorithm) and [complexity](https://github.com/dominictarr/hashlru#complexity) on hashlru.
|
||||
|
||||
ylru extends some features base on hashlru:
|
||||
|
||||
- cache value can be **expired**.
|
||||
- cache value can be **empty value**, e.g.: `null`, `undefined`, `''`, `0`
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
const LRU = require('ylru');
|
||||
|
||||
const lru = new LRU(100);
|
||||
lru.set(key, value);
|
||||
lru.get(key);
|
||||
|
||||
// value2 will be expired after 5000ms
|
||||
lru.set(key2, value2, { maxAge: 5000 });
|
||||
// get key and update expired
|
||||
lru.get(key2, { maxAge: 5000 });
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
## LRU(max) => lru
|
||||
|
||||
initialize a lru object.
|
||||
|
||||
### lru.get(key[, options]) => value | null
|
||||
|
||||
- `{Number} options.maxAge`: update expire time when get, value will become `undefined` after `maxAge` pass.
|
||||
|
||||
Returns the value in the cache.
|
||||
|
||||
### lru.set(key, value[, options])
|
||||
|
||||
- `{Number} options.maxAge`: value will become `undefined` after `maxAge` pass.
|
||||
If `maxAge` not set, value will be never expired.
|
||||
|
||||
Set the value for key.
|
||||
|
||||
### lru.keys()
|
||||
|
||||
Get all unexpired cache keys from lru, due to the strategy of ylru, the `keys`' length may greater than `max`.
|
||||
|
||||
```js
|
||||
const lru = new LRU(3);
|
||||
lru.set('key 1', 'value 1');
|
||||
lru.set('key 2', 'value 2');
|
||||
lru.set('key 3', 'value 3');
|
||||
lru.set('key 4', 'value 4');
|
||||
|
||||
lru.keys(); // [ 'key 4', 'key 1', 'key 2', 'key 3']
|
||||
// cache: {
|
||||
// 'key 4': 'value 4',
|
||||
// }
|
||||
// _cache: {
|
||||
// 'key 1': 'value 1',
|
||||
// 'key 2': 'value 2',
|
||||
// 'key 3': 'value 3',
|
||||
// }
|
||||
```
|
||||
|
||||
### lru.reset()
|
||||
|
||||
reset a lru object.
|
||||
|
||||
```js
|
||||
const lru = new LRU(3);
|
||||
lru.set('key 1', 'value 1');
|
||||
lru.set('key 2', 'value 2');
|
||||
lru.set('key 3', 'value 3');
|
||||
lru.set('key 4', 'value 4');
|
||||
|
||||
lru.reset();
|
||||
// cache: {
|
||||
// }
|
||||
// _cache: {
|
||||
// }
|
||||
|
||||
lru.keys().length === 0;
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
<!-- GITCONTRIBUTOR_START -->
|
||||
|
||||
## Contributors
|
||||
|
||||
|[<img src="https://avatars.githubusercontent.com/u/259374?v=4" width="100px;"/><br/><sub><b>dominictarr</b></sub>](https://github.com/dominictarr)<br/>|[<img src="https://avatars.githubusercontent.com/u/156269?v=4" width="100px;"/><br/><sub><b>fengmk2</b></sub>](https://github.com/fengmk2)<br/>|[<img src="https://avatars.githubusercontent.com/u/985607?v=4" width="100px;"/><br/><sub><b>dead-horse</b></sub>](https://github.com/dead-horse)<br/>|[<img src="https://avatars.githubusercontent.com/u/25395?v=4" width="100px;"/><br/><sub><b>mourner</b></sub>](https://github.com/mourner)<br/>|[<img src="https://avatars.githubusercontent.com/u/6828924?v=4" width="100px;"/><br/><sub><b>vagusX</b></sub>](https://github.com/vagusX)<br/>|[<img src="https://avatars.githubusercontent.com/u/566097?v=4" width="100px;"/><br/><sub><b>RaoHai</b></sub>](https://github.com/RaoHai)<br/>|
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
|
||||
|
||||
This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Wed Mar 16 2022 23:57:13 GMT+0800`.
|
||||
|
||||
<!-- GITCONTRIBUTOR_END -->
|
||||
19
Frontend-Learner/node_modules/ylru/index.d.ts
generated
vendored
Normal file
19
Frontend-Learner/node_modules/ylru/index.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
interface YLRUOptions {
|
||||
maxAge?: number;
|
||||
}
|
||||
|
||||
declare namespace YLRU {
|
||||
export interface YLRUOptions {
|
||||
maxAge?: number;
|
||||
}
|
||||
}
|
||||
|
||||
declare class YLRU {
|
||||
constructor(max: number)
|
||||
get: <T = any>(key: any, options?: YLRUOptions) => T | undefined;
|
||||
set: <T = any>(key: any, value: T, options?: YLRUOptions) => void;
|
||||
keys: () => any[];
|
||||
reset: () => void;
|
||||
}
|
||||
|
||||
export = YLRU;
|
||||
112
Frontend-Learner/node_modules/ylru/index.js
generated
vendored
Normal file
112
Frontend-Learner/node_modules/ylru/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
'use strict';
|
||||
|
||||
class LRU {
|
||||
constructor(max) {
|
||||
this.max = max;
|
||||
this.size = 0;
|
||||
this.cache = new Map();
|
||||
this._cache = new Map();
|
||||
}
|
||||
|
||||
get(key, options) {
|
||||
let item = this.cache.get(key);
|
||||
const maxAge = options && options.maxAge;
|
||||
// only call Date.now() when necessary
|
||||
let now;
|
||||
function getNow() {
|
||||
now = now || Date.now();
|
||||
return now;
|
||||
}
|
||||
if (item) {
|
||||
// check expired
|
||||
if (item.expired && getNow() > item.expired) {
|
||||
item.expired = 0;
|
||||
item.value = undefined;
|
||||
} else {
|
||||
// update expired in get
|
||||
if (maxAge !== undefined) {
|
||||
const expired = maxAge ? getNow() + maxAge : 0;
|
||||
item.expired = expired;
|
||||
}
|
||||
}
|
||||
return item.value;
|
||||
}
|
||||
|
||||
// try to read from _cache
|
||||
item = this._cache.get(key);
|
||||
if (item) {
|
||||
// check expired
|
||||
if (item.expired && getNow() > item.expired) {
|
||||
item.expired = 0;
|
||||
item.value = undefined;
|
||||
} else {
|
||||
// not expired, save to cache
|
||||
this._update(key, item);
|
||||
// update expired in get
|
||||
if (maxAge !== undefined) {
|
||||
const expired = maxAge ? getNow() + maxAge : 0;
|
||||
item.expired = expired;
|
||||
}
|
||||
}
|
||||
return item.value;
|
||||
}
|
||||
}
|
||||
|
||||
set(key, value, options) {
|
||||
const maxAge = options && options.maxAge;
|
||||
const expired = maxAge ? Date.now() + maxAge : 0;
|
||||
let item = this.cache.get(key);
|
||||
if (item) {
|
||||
item.expired = expired;
|
||||
item.value = value;
|
||||
} else {
|
||||
item = {
|
||||
value,
|
||||
expired,
|
||||
};
|
||||
this._update(key, item);
|
||||
}
|
||||
}
|
||||
|
||||
keys() {
|
||||
const cacheKeys = new Set();
|
||||
const now = Date.now();
|
||||
|
||||
for (const entry of this.cache.entries()) {
|
||||
checkEntry(entry);
|
||||
}
|
||||
|
||||
for (const entry of this._cache.entries()) {
|
||||
checkEntry(entry);
|
||||
}
|
||||
|
||||
function checkEntry(entry) {
|
||||
const key = entry[0];
|
||||
const item = entry[1];
|
||||
if (entry[1].value && (!entry[1].expired) || item.expired >= now) {
|
||||
cacheKeys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
return Array.from(cacheKeys.keys());
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.size = 0;
|
||||
this.cache.clear();
|
||||
this._cache.clear();
|
||||
}
|
||||
|
||||
_update(key, item) {
|
||||
this.cache.set(key, item);
|
||||
this.size++;
|
||||
if (this.size >= this.max) {
|
||||
this.size = 0;
|
||||
this._cache = this.cache;
|
||||
this.cache = new Map();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = LRU;
|
||||
|
||||
52
Frontend-Learner/node_modules/ylru/package.json
generated
vendored
Normal file
52
Frontend-Learner/node_modules/ylru/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"name": "ylru",
|
||||
"description": "Extends LRU base on hashlru",
|
||||
"version": "1.4.0",
|
||||
"homepage": "https://github.com/node-modules/ylru",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/node-modules/ylru.git"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@types/node": "^12.0.8",
|
||||
"beautify-benchmark": "^0.2.4",
|
||||
"benchmark": "^2.1.3",
|
||||
"egg-bin": "^1.10.0",
|
||||
"egg-ci": "^1.19.0",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-config-egg": "^6.0.0",
|
||||
"git-contributor": "^1.0.10",
|
||||
"hashlru": "^1.0.3",
|
||||
"ko-sleep": "^1.0.2",
|
||||
"lru-cache": "^4.0.2",
|
||||
"runscript": "^1.5.2",
|
||||
"typescript": "^4.6.2"
|
||||
},
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
"index.js",
|
||||
"index.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"contributor": "git-contributor",
|
||||
"lint": "eslint test *.js",
|
||||
"test": "npm run lint -- --fix && npm run test-local",
|
||||
"test-local": "egg-bin test",
|
||||
"cov": "egg-bin cov",
|
||||
"ci": "npm run lint && npm run cov"
|
||||
},
|
||||
"author": "fengmk2",
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
},
|
||||
"ci": {
|
||||
"version": "8, 10, 12, 14, 16",
|
||||
"type": "github",
|
||||
"os": {
|
||||
"github": "linux"
|
||||
},
|
||||
"npminstall": false
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue