Browse Source

chore: add docs

master
Kiko Beats 3 years ago
parent
commit
e628984e27
No known key found for this signature in database GPG Key ID: 8FA93B22CCF04B96
  1. 0
      .nojekyll
  2. 1
      CNAME
  3. 59
      README.md
  4. 562
      docs/css/style.css
  5. 16
      docs/js/main.js
  6. 48
      gulpfile.js
  7. 55
      index.html
  8. 16
      media/logo-sunset.svg
  9. 13
      package.json
  10. BIN
      static/banner.jpg
  11. BIN
      static/banner.png
  12. BIN
      static/favicon-16x16.png
  13. BIN
      static/favicon-32x32.png
  14. BIN
      static/favicon.ico
  15. BIN
      static/logo.jpg
  16. BIN
      static/logo.png
  17. 1
      static/main.min.js
  18. 1
      static/style.min.css

0
.nojekyll

1
CNAME

@ -0,0 +1 @@
keyv.js.org

59
README.md

@ -1,31 +1,28 @@
<h1 align="center">
<img width="250" src="media/logo.svg" alt="keyv">
<br>
<br>
<img width="250" src="/media/logo-sunset.svg" alt="keyv logo">
<br/>
<br/>
</h1>
> Simple key-value storage with support for multiple backends.
![Last version](https://img.shields.io/github/tag/keyvhq/keyv.svg?style=flat-square)
[![Coverage Status](https://img.shields.io/coveralls/keyvhq/keyv.svg?style=flat-square)](https://coveralls.io/github/keyvhq/keyv)
[![NPM Status](https://img.shields.io/npm/dm/@keyvhq/keyv.svg?style=flat-square)](https://www.npmjs.org/package/@keyvhq/keyv)
Keyv provides a consistent interface for key-value storage across multiple backends via storage adapters. It supports TTL based expiry, making it suitable as a cache or a persistent key-value store.
> **Keyv** is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).
## Features
There are a few existing modules similar to Keyv, however Keyv is different because it:
- Isn't bloated.
- Has a simple Promise based API.
- Suitable as a TTL based cache or persistent key-value store.
- [Easily embeddable](#add-cache-support-to-your-module) inside another module.
- Works with any storage that implements the [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) API.
- Handles all JSON types plus `Buffer`.
- Supports namespaces.
- Wide range of [**efficient, well tested**](#official-storage-adapters) storage adapters.
- Connection errors are passed through (db failures won't kill your app).
- Supports the current active LTS version of Node.js or higher.
- It isn't bloated.
- It supports namespaces.
- It supports TTL based expiry.
- It has a simple Promise based API.
- It handles all JSON types plus `Buffer`.
- It's support a [vary of storages](#official-storage-adapters) adapters.
- It can be [easily embed](#add-cache-support-to-your-module) inside another module.
- It works with any storage that implements the [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) API.
- it handles database errors (db failures won't kill your app).
- It supports the current active LTS version of Node.js or higher.
- It's suitable as a TTL based cache or persistent key-value store.
## Installation
@ -45,7 +42,7 @@ npm install @keyvhq/keyv-mysql --save
If you don't provide a specific storage adapter, a in-memory storage adapter is used by default.
## Usage
## Getting Started
Just create a new Keyv instance, passing your storage adapter:
@ -94,13 +91,15 @@ You can optionally provide your own serialization functions to support extra dat
const keyv = new Keyv({ serialize: JSON.stringify, deserialize: JSON.parse });
```
**Warning:** Using custom serializers means you lose any guarantee of data consistency. You should do extensive testing with your serialisation functions and chosen storage engine.
!> Using custom serializers means you lose any guarantee of data consistency. You should do extensive testing with your serialisation functions and chosen storage engine.
## Storage Adapters
## Official Storage Adapters
### Official
The official storage adapters are covered by [over 150 integration tests](https://github.com/microlinkhq/keyv/actions/runs/949262324) to guarantee consistent behaviour. They are lightweight, efficient wrappers over the DB clients making use of indexes and native TTLs where available.
## Third-party Storage Adapters
### Community
You can also use third-party storage adapters or build your own. Keyv will wrap these storage adapters in TTL functionality and handle complex types internally.
@ -187,42 +186,42 @@ The options object is also passed through to the storage adapter. Check your sto
#### options.namespace
Type: `String`<br>
Type: `String`<br/>
Default: `'keyv'`
Namespace for the current instance.
#### options.ttl
Type: `Number`<br>
Type: `Number`<br/>
Default: `undefined`
Default TTL. Can be overridden by specififying a TTL on `.set()`.
#### options.serialize
Type: `Function`<br>
Type: `Function`<br/>
Default: `JSONB.stringify`
A custom serialization function.
#### options.deserialize
Type: `Function`<br>
Type: `Function`<br/>
Default: `JSONB.parse`
A custom deserialization function.
#### options.store
Type: `Storage adapter instance`<br>
Type: `Storage adapter instance`<br/>
Default: `new Map()`
The storage adapter instance to be used by Keyv.
#### options.adapter
Type: `String`<br>
Type: `String`<br/>
Default: `undefined`
Specify an adapter to use. e.g `'redis'` or `'mongodb'`.
@ -245,7 +244,7 @@ Returns a promise which resolves to the retrieved value.
##### options.raw
Type: `Boolean`<br>
Type: `Boolean`<br/>
Default: `false`
If set to true the raw DB object Keyv stores internally will be returned instead of just the value.
@ -278,7 +277,7 @@ Returns an [Async Iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScr
## License
**keyv** © [Microlink](https://microlink.io), Released under the [MIT](https://github.com/microlinkhq/keyv/blob/master/LICENSE.md) License.<br>
**keyv** © [Microlink](https://microlink.io), Released under the [MIT](https://github.com/microlinkhq/keyv/blob/master/LICENSE.md) License.<br/>
Authored and maintained by [Microlink](https://microlink.io) with help from [contributors](https://github.com/microlinkhq/keyv/contributors).
> [microlink.io](https://microlink.io) · GitHub [@MicrolinkHQ](https://github.com/microlinkhq) · Twitter [@microlinkhq](https://twitter.com/microlinkhq)

562
docs/css/style.css

@ -0,0 +1,562 @@
@import url("https://rsms.me/inter/inter-ui.css");
:root {
/* colors */
--base: #f5f4f4;
--black: rgba(18, 16, 12, 0.70196);
--gray0: #f9f9f9;
--gray1: #ededee;
--gray2: #e0e1e1;
--gray3: #d2d3d4;
--gray4: #c3c4c5;
--gray5: #b2b3b5;
--gray6: #9fa0a2;
--gray7: #88898c;
--gray8: #6b6c70;
--gray9: #3d3f44;
--gray10: #000;
/* theme */
--primary-color: var(--gray9);
--secondary-color: var(--gray10);
--accent-color: #fc6568;
--text-color: #121102;
--text-bold-color: var(--gray10);
--sidebar-color: var(--primary-color);
--sidebar-active-color: var(--secondary-color);
--sidebar-border-color: #5f6368;
--bg-color: var(--base);
--serif-font: "IBM Plex Sans", sans-serif;
--sans-serif-font: "IBM Plex Sans", sans-serif;
--code-font: Nitti, "Microsoft YaHei", "Roboto Mono", 微软雅黑, monospace;
--codebox-border-color: var(--text-color);
--codebox-color: var(--text-color);
--codebox-token-var-color: var(--text-color);
--codebox-bg: var(--bg-color);
}
::selection {
background: #f9e4ac;
}
::-moz-selection {
background: #f9e4ac;
}
* {
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-text-size-adjust: none;
-webkit-touch-callout: none;
box-sizing: border-box;
}
.progress {
background-color: var(--primary-color);
height: 2px;
left: 0;
position: fixed;
right: 0;
top: 0;
transition: width 0.2s, opacity 0.4s;
width: 0;
z-index: 5;
}
body,
html {
height: 100%;
}
body {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
color: var(--text-color);
font-family: var(--sans-serif-font);
font-size: 16px;
letter-spacing: 0;
margin: 0;
overflow-x: hidden;
}
img {
max-width: 100%;
}
.github-corner {
border-bottom: 0;
position: fixed;
right: 0;
text-decoration: none;
top: 0;
z-index: 1;
}
.github-corner svg {
color: #fff;
fill: var(--accent-color);
height: 80px;
width: 80px;
}
.github-corner:hover .octo-arm {
animation: a 0.56s ease-in-out;
}
main {
display: block;
position: relative;
width: 100vw;
height: 100%;
z-index: 0;
}
.anchor {
display: inline-block;
text-decoration: none;
transition: all 0.3s;
}
.anchor span {
color: var(--secondary-color);
}
.anchor:hover {
text-decoration: underline;
}
.sidebar {
font-family: var(--serif-font);
overflow-y: auto;
padding: 40px 0 0;
top: 0;
bottom: 0;
left: 0;
position: absolute;
transition: transform 0.25s ease-out;
width: 300px;
z-index: 3;
}
.sidebar .sidebar-nav {
line-height: 2em;
padding-bottom: 40px;
}
.sidebar ul {
margin: 0;
padding: 0;
}
.sidebar ul,
.sidebar ul li {
list-style: none;
}
.sidebar ul li a {
border-bottom: none;
display: block;
}
.sidebar::-webkit-scrollbar {
width: 4px;
}
.sidebar::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 4px;
}
.sidebar:hover::-webkit-scrollbar-thumb {
background: hsla(0, 0%, 53%, 0.4);
}
.sidebar:hover::-webkit-scrollbar-track {
background: hsla(0, 0%, 53%, 0.1);
}
.sidebar-toggle {
background-color: transparent;
background-color: var(--bg-color);
border: 0;
outline: none;
padding: 10px;
bottom: 0;
left: 0;
position: absolute;
text-align: center;
transition: opacity 0.3s;
width: 30px;
width: 284px;
z-index: 4;
}
.sidebar-toggle .sidebar-toggle-button:hover {
opacity: 0.4;
}
.sidebar-toggle span {
background-color: var(--primary-color);
display: block;
margin-bottom: 4px;
width: 16px;
height: 2px;
}
body.sticky .sidebar,
body.sticky .sidebar-toggle {
position: fixed;
}
.content {
padding-top: 60px;
top: 0;
right: 0;
bottom: 0;
left: 300px;
position: absolute;
transition: left 0.25s ease;
}
.markdown-section {
margin: 0 auto;
max-width: 800px;
padding: 30px 15px 40px;
position: relative;
}
.markdown-section>* {
box-sizing: border-box;
font-size: inherit;
}
.markdown-section> :first-child {
margin-top: 0 !important;
}
.markdown-section p.tip {
background-color: #f8f8f8;
border-bottom-right-radius: 2px;
border-left: 4px solid var(--accent-color);
border-top-right-radius: 2px;
margin: 2em 0;
padding: 12px 24px 12px 30px;
position: relative;
}
.markdown-section p.tip:before {
background-color: var(--accent-color);
border-radius: 100%;
color: #fff;
content: "!";
font-family: Dosis, Source Sans Pro, Helvetica Neue, Arial, sans-serif;
font-size: 14px;
font-weight: 700;
left: -12px;
line-height: 20px;
position: absolute;
width: 20px;
height: 20px;
text-align: center;
top: 14px;
}
@media print {
.github-corner,
.sidebar,
.sidebar-toggle {
display: none;
}
}
@media screen and (max-width: 768px) {
.github-corner,
.sidebar,
.sidebar-toggle {
position: fixed;
}
main {
height: auto;
overflow-x: hidden;
}
.sidebar {
left: -300px;
transition: transform 0.25s ease-out;
}
.content {
left: 0;
max-width: 100vw;
position: static;
padding-top: 20px;
transition: transform 0.25s ease;
}
.github-corner {
transition: transform 0.25s ease-out;
}
.sidebar-toggle {
background-color: transparent;
width: auto;
}
.github-corner .octo-arm {
animation: a 0.56s ease-in-out;
}
.github-corner:hover .octo-arm {
animation: none;
}
}
@keyframes a {
0%,
to {
transform: rotate(0);
}
20%,
60% {
transform: rotate(-25deg);
}
40%,
80% {
transform: rotate(10deg);
}
}
.sidebar,
body {
background-color: var(--bg-color);
color: var(--primary-color);
}
.sidebar {
color: #364149;
}
.sidebar li {
margin: 6px 0 6px 15px;
}
.sidebar ul li a {
color: var(--sidebar-color);
font-size: 14px;
font-weight: 400;
overflow: hidden;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.sidebar ul li a:hover {
text-decoration: underline;
}
.sidebar ul li.active>a {
border-right: 2px solid;
color: var(--sidebar-active-color);
font-weight: 700;
}
.markdown-section h1,
.markdown-section h2,
.markdown-section h3,
.markdown-section h4,
.markdown-section h5 {
font-family: var(--serif-font);
}
.markdown-section strong {
font-family: var(--sans-serif-font);
color: var(--text-bold-color);
}
.markdown-section a {
color: var(--primary-color);
text-decoration: none;
font-weight: 600;
}
.markdown-section li a,
.markdown-section p a {
color: var(--accent-color);
text-decoration: underline;
text-underline-offset: 1px;
}
.markdown-section li a:hover,
.markdown-section p a:hover {
opacity: 0.8;
}
.markdown-section h1 {
font-size: 2rem;
margin: 4rem 0 1rem;
}
.markdown-section h2 {
font-size: 1.75rem;
margin: 3.5rem 0 1rem;
}
.markdown-section h3 {
font-size: 1.5rem;
margin: 3rem 0 1rem;
}
.markdown-section h4 {
font-size: 1.25rem;
margin: 2.5rem 0 1rem;
}
.markdown-section h5 {
font-size: 1rem;
}
.markdown-section p {
margin: 1.2em 0;
}
.markdown-section p,
.markdown-section ul {
line-height: 1.8rem;
word-spacing: 0.05rem;
}
.markdown-section ul li {
margin-bottom: 10px;
}
.markdown-section ul {
padding-left: 2rem;
}
.markdown-section blockquote {
border-left: 4px solid var(--primary-color);
margin: 2em 0;
padding-left: 20px;
}
.markdown-section blockquote p {
font-weight: 400;
margin-left: 0;
padding: 12px 0;
}
.markdown-section li code,
.markdown-section p code {
color: var(--codebox-token-var-color);
border: 1px solid var(--codebox-border-color);
background: var(--codebox-bg);
font-size: 0.75rem;
padding: 3px 10px;
border-radius: 3px;
white-space: nowrap;
}
.markdown-section code {
border-radius: 2px;
color: var(--codebox-token-var-color);
font-size: 0.8rem;
margin: 0 2px;
padding: 3px 5px;
white-space: pre-wrap;
}
.markdown-section pre {
border-radius: 5px;
background-color: var(--codebox-bg);
border: 1px solid var(--codebox-border-color);
}
.markdown-section code,
.markdown-section pre {
font-family: var(--code-font);
}
.markdown-section pre {
line-height: 1.5rem;
margin: 1.2em 0;
overflow: auto;
padding: 0 0.7rem;
position: relative;
word-wrap: normal;
}
.markdown-section pre,
.markdown-section pre>code {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
}
.markdown-section pre>code {
background-color: var(--codebox-bg);
border-radius: 2px;
color: var(--codebox-token-var-color);
display: block;
font-family: var(--code-font);
font-size: 0.8rem;
line-height: inherit;
margin: 0 2px;
max-width: inherit;
overflow: inherit;
padding: 1.25em 5px;
white-space: inherit;
}
.markdown-section code:after,
.markdown-section code:before {
letter-spacing: 0.8px;
letter-spacing: 0.05rem;
}
.token.class-name,
.token.function,
.token.number {
color: #d46e00;
}
.token.string {
color: #d40066;
}
.token.constant,
.token.keyword {
color: #e00400;
}
.token.comment {
color: var(--gray7);
}
pre:after {
color: #ccc;
content: attr(data-lang);
font-size: 0.6rem;
font-weight: 600;
height: 15px;
line-height: 15px;
padding: 5px 10px 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
.sidebar ul ul {
margin-left: 15px;
}

16
docs/js/main.js

@ -0,0 +1,16 @@
/* global codecopy */
window.$docsify = {
repo: 'microlinkhq/keyv',
maxLevel: 3,
executeScript: true,
auto2top: true,
noEmoji: true,
plugins: [
function (hook, vm) {
hook.ready(function () {
codecopy('pre')
})
}
]
}

48
gulpfile.js

@ -0,0 +1,48 @@
'use strict'
const strip = require('gulp-strip-css-comments')
const prefix = require('gulp-autoprefixer')
const cssnano = require('gulp-cssnano')
const uglify = require('gulp-uglify')
const concat = require('gulp-concat')
const gulp = require('gulp')
const src = {
css: ['docs/css/style.css'],
js: ['docs/js/main.js']
}
const dist = {
path: 'static',
name: {
css: 'style',
js: 'main'
}
}
const styles = () =>
gulp
.src(src.css)
.pipe(concat(`${dist.name.css}.min.css`))
.pipe(prefix())
.pipe(strip({ all: true }))
.pipe(cssnano())
.pipe(gulp.dest(dist.path))
const scripts = () =>
gulp
.src(src.js)
.pipe(concat(`${dist.name.js}.min.js`))
.pipe(uglify())
.pipe(gulp.dest(dist.path))
const build = gulp.parallel(styles, scripts)
function watch () {
gulp.watch(src.css, styles)
gulp.watch(src.js, scripts)
}
module.exports.default = gulp.series(build, watch)
module.exports.build = build
module.exports.watch = watch

55
index.html

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Basic -->
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Search Engine -->
<meta name="description" content="Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).">
<meta name="image" content="https://keyv.js.org/static/banner.png">
<link rel="canonical" href="https://keyv.js.org" />
<title>Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<!-- Schema.org for Google -->
<meta itemprop="name" content="Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).">
<meta itemprop="description" content="Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).">
<meta itemprop="image" content="https://keyv.js.org/static/banner.png">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="keyv">
<meta name="twitter:description" content="Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).">
<meta name="twitter:image" content="https://keyv.js.org/static/banner.png">
<meta name="twitter:label1" value="Installation" />
<meta name="twitter:data1" value="npm install @keyvhq/keyv --save" />
<!-- Open Graph general (Facebook, Pinterest & Google+) -->
<meta property="og:title" content="keyv">
<meta property="og:logo" content="https://keyv.js.org/static/logo.jpg">
<meta property="og:description" content="Keyv is a simple key-value storage with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more).">
<meta property="og:image" content="https://keyv.js.org/static/banner.png">
<meta property="og:url" content="https://keyv.js.org">
<meta property="og:site_name" content="keyv.js.org">
<meta property="og:type" content="website">
<!-- Favicon -->
<link rel="icon" type="image/png" href="https://keyv.js.org/static/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="https://keyv.js.org/static/favicon-16x16.png" sizes="16x16" />
<!-- Stylesheet -->
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans" rel="stylesheet">
<link rel="stylesheet" href="/static/style.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/codecopy/umd/codecopy.min.css">
</head>
<body>
<div id="app"></div>
</body>
<script src="/static/main.min.js"></script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/external-script.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/codecopy/umd/codecopy.min.js"></script>
</html>

16
media/logo-sunset.svg

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo</title>
<defs>
<linearGradient x1="14.5873302%" y1="85.5145606%" x2="85.2829103%" y2="14.8559921%" id="linearGradient-1">
<stop stop-color="#EC008C" offset="0%"></stop>
<stop stop-color="#FC6966" offset="55.3360946%"></stop>
<stop stop-color="#FFD319" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="logo" fill="url(#linearGradient-1)" fill-rule="nonzero">
<path d="M189,196 L189,178.6 C202.7,188.8 229.2,193.6 255.5,193.6 C281.8,193.6 308.3,188.8 322,178.6 L322,196 C322,208 292,217.8 255.5,217.8 C218.9,217.8 189,208 189,196 Z M322,212.6 L322,232.4 C318.3,243.4 289.7,251.8 255.5,251.8 C221.3,251.8 192.7,243.3 189,232.4 L189,212.4 C202.7,222.8 229.2,227.4 255.5,227.4 C281.8,227.4 308.3,222.8 322,212.6 Z M189,162 L189,144.6 C202.7,154.8 229.2,159.6 255.5,159.6 C281.8,159.6 308.3,154.8 322,144.6 L322,162 C322,174 292,184 255.5,184 C218.9,184 189,174 189,162 Z M255.5,150 C218.8,150 189,140 189,128 C189,116 218.8,106.2 255.5,106.2 C292.2,106.2 322,116 322,128 C322,140 292.2,150 255.5,150 Z M256,512 C114.6,512 0,397.4 0,256 C0,114.6 114.6,0 256,0 C397.4,0 512,114.6 512,256 C512,397.4 397.4,512 256,512 Z M256,509 C395.7,509 509,395.7 509,256 C509,116.3 395.6,3 256,3 C116.4,3 3,116.4 3,256 C3,395.6 116.3,509 256,509 Z M122,351.2 L178,300.2 L183,300.2 L126.5,351.2 L185.8,411.2 L180.8,411.2 L122.1,351.5 L122.1,411.3 L118.6,411.3 L118.6,300.3 L122,300.3 L122,351.3 L122,351.2 Z M199,374.5 C199,378.9 199.7,383.2 201,387.5 C202.3,391.8 204.3,395.5 207,399 C209.6,402.5 213,405.3 217,407.4 C221,409.4 226,410.4 231.5,410.4 C237.2,410.4 242.2,409.4 246.5,407.1 C251,405.1 254.8,401.7 258,397.4 L260.5,399.6 C257,404.2 252.8,407.6 248.1,410.1 C243.4,412.5 237.9,413.7 231.6,413.7 C226.3,413.7 221.4,412.7 217,410.7 C212.5,408.9 208.7,406.2 205.5,402.7 C202.3,399.3 199.9,395.2 198.1,390.4 C196.5,385.4 195.6,380.4 195.6,374.7 C195.6,369.2 196.6,364.2 198.3,359.7 C200.1,355 202.5,351 205.6,347.7 C208.6,344.3 212.3,341.7 216.6,339.9 C220.6,337.9 225.2,337.1 230,337.1 C235.6,337.1 240.5,338.1 244.7,340.1 C248.9,342.1 252.4,344.7 255.1,348.1 C258.1,351.1 260.1,354.9 261.4,359.1 C262.8,363.1 263.4,367.4 263.4,371.7 L263.4,374.7 L199,374.7 L199,374.5 Z M260,371.5 C260,366.8 259.2,362.5 257.6,358.5 C256.1,354.7 254.1,351.5 251.4,348.5 C248.8,345.9 245.7,343.7 242,342.2 C238.4,340.7 234.3,339.9 229.8,339.9 C224.3,339.9 219.8,340.9 215.8,343.3 C211.8,345.5 208.8,348.3 206.3,351.6 C203.8,354.9 202,358.4 200.9,362 C199.6,365.7 199.1,369 199.1,371.6 L260.1,371.6 L260,371.5 Z M300.7,435.2 C299.1,439.7 296.7,443.2 294.1,445.7 C291.4,448.1 287.8,449.3 283.4,449.3 C282.4,449.3 281.4,449.3 280.1,449 C278.9,449 277.8,448.7 277.1,448.3 L277.9,445.3 C278.5,445.6 279.4,445.8 280.5,446 C281.5,446.2 282.7,446.3 283.7,446.3 C285.9,446.3 287.7,445.9 289.5,445 C291.1,444.2 292.5,443 293.5,441.8 C294.8,440.5 295.7,439 296.5,437.4 C297.3,435.7 298,434 298.5,432.4 L305.5,413.4 L277,339.2 L280.6,339.2 L307.2,409.6 L332.8,339.2 L336.5,339.2 L300.7,435.2 L300.7,435.2 Z M377,411.2 L372.5,411.2 L344.1,339.2 L347.9,339.2 L374.9,407.9 L375.1,407.9 L401.1,339.1 L404.8,339.1 L377,411.4 L377,411.2 Z" id="Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

13
package.json

@ -109,7 +109,15 @@
"lerna": "latest",
"lint-staged": "latest",
"simple-git-hooks": "latest",
"standard": "latest"
"standard": "latest",
"gulp": "latest",
"gulp-autoprefixer": "latest",
"gulp-concat": "latest",
"gulp-cssnano": "latest",
"gulp-strip-css-comments": "latest",
"gulp-uglify": "latest",
"browser-sync": "latest",
"concurrently": "latest"
},
"engines": {
"node": ">= 12"
@ -118,6 +126,9 @@
"packages/**"
],
"scripts": {
"build": "gulp build",
"dev": "concurrently \"gulp\" \"npm run dev:server\"",
"dev:server": "browser-sync start --server --files \"index.html, README.md, static/**/*.(css|js)\"",
"clean": "lerna clean --yes && rm -rf node_modules",
"contributors": "(lerna exec finepack --parallel && git-authors-cli && finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true",
"install": "lerna bootstrap --no-ci --force-local",

BIN
static/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
static/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
static/favicon-16x16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

BIN
static/favicon-32x32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
static/logo.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
static/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

1
static/main.min.js

@ -0,0 +1 @@
window.$docsify={repo:"microlinkhq/keyv",maxLevel:3,executeScript:!0,auto2top:!0,noEmoji:!0,plugins:[function(o,e){o.ready(function(){codecopy("pre")})}]};

1
static/style.min.css

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save