feat(memo): added memo base

This commit is contained in:
Corentin Thomasset 2021-08-02 21:35:12 +02:00
parent a40aae44ce
commit a5953a3c42
No known key found for this signature in database
GPG key ID: DBD997E935996158
11 changed files with 864 additions and 157 deletions

View file

@ -0,0 +1,23 @@
import {Module} from '@nuxt/types'
interface MemoModuleOptions {
}
const toolConfigModule: Module<MemoModuleOptions> = function () {
const {extendBuild} = this
extendBuild((config) => {
if (!config.module) {
// eslint-disable-next-line no-console
console.warn('Failed to register the memo module.')
return
}
config.module.rules.push({
resourceQuery: /blockType=memo/,
loader: require.resolve('./loader.js')
})
})
}
export default toolConfigModule

View file

@ -0,0 +1,11 @@
const loader = function (source, map) {
this.callback(
null,
`export default function (Component) {
Component.options.__memo = ${JSON.stringify(source)}
}`,
map
)
}
module.exports = loader

View file

@ -1,37 +1,24 @@
<template> <template>
<div class="memo"> <div class="memo">
<ToolHeader :config="$toolConfig" /> <v-row justify="center">
<v-col lg="6" md="9" sm="9" cols="12" class="mb-16">
<ToolHeader :config="$toolConfig" />
Warning: le style/aspect est toujours en wip, so focus on content <br><br> <v-card>
<v-card-text class="pa-10">
<v-row> <div class="memo-content" v-html="content" />
<v-col
v-for="item in items"
:key="item.section"
cols="12"
sm="12"
md="6"
lg="4"
class="memo-section"
>
<v-card class="mb-5">
<v-card-title>{{ item.section }}</v-card-title>
<v-card-text>
<div v-for="tip in item.items" :key="tip.text" class="memo-item">
<div class="memo-item-title">
{{ tip.text }}
</div>
<div v-if="tip.subtitle" class="memo-item-subtitle">
{{ tip.subtitle }}
</div>
<div v-if="tip.code" class="memo-item-code" @click="copy(tip.code)">
<pre>{{ tip.code }}</pre>
<v-icon>mdi-content-copy</v-icon>
</div>
</div>
</v-card-text> </v-card-text>
</v-card> </v-card>
</v-col> </v-col>
<v-col lg="2" md="3" sm="3" cols="12">
<div class="toc">
<div class="toc-title">
On this page
</div>
<div class="toc-content" v-html="toc" />
</div>
</v-col>
</v-row> </v-row>
</div> </div>
</template> </template>
@ -41,66 +28,108 @@ import {Component} from 'nuxt-property-decorator'
import Tool from './Tool.vue' import Tool from './Tool.vue'
import {CopyableMixin} from '~/mixins/copyable.mixin' import {CopyableMixin} from '~/mixins/copyable.mixin'
import ToolHeader from '~/components/ToolHeader.vue' import ToolHeader from '~/components/ToolHeader.vue'
import {toc} from '~/utils/md-toc'
type MemoItems = { section: string, items: { text: string, code?: string, subtitle?: string }[] }[];
@Component({ @Component({
mixins: [CopyableMixin], mixins: [CopyableMixin],
components: {ToolHeader} components: {ToolHeader}
}) })
export default class Memo extends Tool { export default class Memo extends Tool {
private items: MemoItems = this.$t('memo') as unknown as MemoItems fetchOnServer = true
content: string = ''
toc: string = ''
fetch() {
// @ts-ignore
const content: string = this.$options.__memo.trim()
this.toc = this.$md.render(toc(content).join('\n'))
this.content = this.$md.render(content)
}
} }
</script> </script>
<style lang="less"> <style lang="less" scoped>
.memo { .memo {
h1 {
font-weight: 300;
font-size: 50px;
margin: 0;
padding: 0;
}
h2 { ::v-deep {
font-weight: 400; .memo-content {
} text-align: justify;
.memo-item { h2 {
margin-bottom: 20px; font-weight: 400;
font-size: 25px;
margin: 0 0 20px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.26);
color: #ffffff;
.memo-item-title { &:not(:first-child){
font-weight: bold; margin-top: 50px;
font-size: 16px; }
color: var(--v-primary-base); }
}
.memo-item-subtitle { h3 {
padding-bottom: 5px; font-weight: 400;
} margin-top: 20px;
margin-bottom: 10px;
.memo-item-code { }
cursor: pointer;
background-color: rgba(0, 0, 0, 0.1);
border-radius: 4px;
padding: 8px 15px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
pre { pre {
flex: 1; width: 100%;
overflow-x: auto; overflow-x: auto;
}
.v-icon { code {
opacity: 0; display: block;
padding: 15px;
}
} }
}
}
&:hover { .toc {
.v-icon { margin-top: 140px;
opacity: 1;
.toc-title {
font-weight: 600;
margin-bottom: 10px;
}
::v-deep {
.toc-content {
a {
color: #ffffff;
text-decoration: none;
opacity: 0.7;
transition: all 0.3s ease;
font-weight: 400;
&:hover {
opacity: 1;
color: var(--v-primary-base);
}
}
ul {
list-style-type: none;
padding-left: 10px;
li {
padding: 5px 0;
}
}
&>ul {
padding-left: 0;
&>li {
border-top: 1px dashed rgba(238, 238, 238, 0.38);
padding: 5px 0 5px 10px;
&>a {
font-weight: 600 !important;
}
}
} }
} }
} }

View file

@ -44,6 +44,7 @@ export default {
'@nuxtjs/vuetify', '@nuxtjs/vuetify',
// '@nuxtjs/router-extras' // '@nuxtjs/router-extras'
'~/buildModules/tool-config', '~/buildModules/tool-config',
'~/buildModules/memo',
'@nuxtjs/google-fonts' '@nuxtjs/google-fonts'
], ],
@ -134,5 +135,18 @@ export default {
sitemap: { sitemap: {
hostname: 'https://it-tools.tech', hostname: 'https://it-tools.tech',
gzip: true gzip: true
},
markdownit: {
preset: 'default',
linkify: true,
breaks: true,
runtime: true,
typographer: true,
html: false,
use: [
'markdown-it-anchor',
'markdown-it-highlightjs'
]
} }
} }

644
package-lock.json generated
View file

@ -21,6 +21,8 @@
"cron-validator": "^1.2.1", "cron-validator": "^1.2.1",
"cronstrue": "^1.114.0", "cronstrue": "^1.114.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"markdown-it-anchor": "^8.1.2",
"markdown-it-highlightjs": "^3.5.0",
"nuxt": "^2.15.7", "nuxt": "^2.15.7",
"nuxt-i18n": "^6.28.0", "nuxt-i18n": "^6.28.0",
"qrcode.vue": "^3.2.2", "qrcode.vue": "^3.2.2",
@ -56,6 +58,7 @@
"jest": "^27.0.6", "jest": "^27.0.6",
"less": "^4.0.0", "less": "^4.0.0",
"less-loader": "^7.1.0", "less-loader": "^7.1.0",
"markdown-toc": "^1.2.0",
"nuxt-property-decorator": "^2.9.1", "nuxt-property-decorator": "^2.9.1",
"standard-version": "^9.3.1", "standard-version": "^9.3.1",
"ts-jest": "^27.0.4", "ts-jest": "^27.0.4",
@ -8721,6 +8724,18 @@
"ansi-html": "bin/ansi-html" "ansi-html": "bin/ansi-html"
} }
}, },
"node_modules/ansi-red": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
"integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
"dev": true,
"dependencies": {
"ansi-wrap": "0.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ansi-regex": { "node_modules/ansi-regex": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
@ -8753,6 +8768,15 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
}, },
"node_modules/ansi-wrap": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
"integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/anymatch": { "node_modules/anymatch": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
@ -8982,6 +9006,15 @@
"node": ">= 4.5.0" "node": ">= 4.5.0"
} }
}, },
"node_modules/autolinker": {
"version": "0.28.1",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz",
"integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=",
"dev": true,
"dependencies": {
"gulp-header": "^1.7.1"
}
},
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "9.8.6", "version": "9.8.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
@ -10480,6 +10513,20 @@
"node": ">= 4.0" "node": ">= 4.0"
} }
}, },
"node_modules/coffee-script": {
"version": "1.12.7",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
"integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
"deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)",
"dev": true,
"bin": {
"cake": "bin/cake",
"coffee": "bin/coffee"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/collect-v8-coverage": { "node_modules/collect-v8-coverage": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
@ -10637,6 +10684,15 @@
"typedarray": "^0.0.6" "typedarray": "^0.0.6"
} }
}, },
"node_modules/concat-with-sourcemaps": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz",
"integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==",
"dev": true,
"dependencies": {
"source-map": "^0.6.1"
}
},
"node_modules/condense-newlines": { "node_modules/condense-newlines": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz",
@ -12060,6 +12116,15 @@
"resolved": "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz", "resolved": "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz",
"integrity": "sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q==" "integrity": "sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q=="
}, },
"node_modules/diacritics-map": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz",
"integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=",
"dev": true,
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/diff-sequences": { "node_modules/diff-sequences": {
"version": "27.0.6", "version": "27.0.6",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
@ -13720,6 +13785,70 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/expand-range": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"dependencies": {
"fill-range": "^2.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expand-range/node_modules/fill-range": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
"dev": true,
"dependencies": {
"is-number": "^2.1.0",
"isobject": "^2.0.0",
"randomatic": "^3.0.0",
"repeat-element": "^1.1.2",
"repeat-string": "^1.5.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expand-range/node_modules/is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"dependencies": {
"kind-of": "^3.0.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expand-range/node_modules/isobject": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"dependencies": {
"isarray": "1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expand-range/node_modules/kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"dependencies": {
"is-buffer": "^1.1.5"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expect": { "node_modules/expect": {
"version": "27.0.6", "version": "27.0.6",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz",
@ -14845,6 +14974,46 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
}, },
"node_modules/gray-matter": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz",
"integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=",
"dev": true,
"dependencies": {
"ansi-red": "^0.1.1",
"coffee-script": "^1.12.4",
"extend-shallow": "^2.0.1",
"js-yaml": "^3.8.1",
"toml": "^2.3.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/gray-matter/node_modules/extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"dependencies": {
"is-extendable": "^0.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/gulp-header": {
"version": "1.8.12",
"resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz",
"integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==",
"deprecated": "Removed event-stream from gulp-header",
"dev": true,
"dependencies": {
"concat-with-sourcemaps": "*",
"lodash.template": "^4.4.0",
"through2": "^2.0.0"
}
},
"node_modules/gzip-size": { "node_modules/gzip-size": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
@ -18217,6 +18386,18 @@
"launch-editor": "^2.2.1" "launch-editor": "^2.2.1"
} }
}, },
"node_modules/lazy-cache": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
"integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
"dev": true,
"dependencies": {
"set-getter": "^0.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/less": { "node_modules/less": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
@ -18359,6 +18540,57 @@
"uc.micro": "^1.0.1" "uc.micro": "^1.0.1"
} }
}, },
"node_modules/list-item": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz",
"integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=",
"dev": true,
"dependencies": {
"expand-range": "^1.8.1",
"extend-shallow": "^2.0.1",
"is-number": "^2.1.0",
"repeat-string": "^1.5.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/list-item/node_modules/extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"dependencies": {
"is-extendable": "^0.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/list-item/node_modules/is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"dependencies": {
"kind-of": "^3.0.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/list-item/node_modules/kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"dependencies": {
"is-buffer": "^1.1.5"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/load-json-file": { "node_modules/load-json-file": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
@ -18543,6 +18775,11 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
}, },
"node_modules/lodash.flow": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
"integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o="
},
"node_modules/lodash.foreach": { "node_modules/lodash.foreach": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz",
@ -18783,11 +19020,69 @@
"markdown-it": "bin/markdown-it.js" "markdown-it": "bin/markdown-it.js"
} }
}, },
"node_modules/markdown-it-anchor": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.1.2.tgz",
"integrity": "sha512-9D58TKK4dakqmjcmVuqHoB3ntKBpQJ0Ld38B83aiHJcBD72IZIyPjNtihPA6ayRI5WD33e1W68mArliNLHCprg==",
"peerDependencies": {
"markdown-it": "*"
}
},
"node_modules/markdown-it-highlightjs": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/markdown-it-highlightjs/-/markdown-it-highlightjs-3.5.0.tgz",
"integrity": "sha512-ENlFiNFSKwnXD0umIzyhpFe5JtetdQnSYhwTdC72VU3C69uVpk1Mn3sPv1Ov8opVE2nv7SaS97QbY/aEH7PUzw==",
"dependencies": {
"highlight.js": "^10.7.2",
"lodash.flow": "^3.5.0"
}
},
"node_modules/markdown-it/node_modules/entities": { "node_modules/markdown-it/node_modules/entities": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
}, },
"node_modules/markdown-link": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz",
"integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/markdown-toc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz",
"integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==",
"dev": true,
"dependencies": {
"concat-stream": "^1.5.2",
"diacritics-map": "^0.1.0",
"gray-matter": "^2.1.0",
"lazy-cache": "^2.0.2",
"list-item": "^1.1.1",
"markdown-link": "^0.1.1",
"minimist": "^1.2.0",
"mixin-deep": "^1.1.3",
"object.pick": "^1.2.0",
"remarkable": "^1.7.1",
"repeat-string": "^1.6.1",
"strip-color": "^0.1.0"
},
"bin": {
"markdown-toc": "cli.js"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/math-random": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
"integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
"dev": true
},
"node_modules/md5.js": { "node_modules/md5.js": {
"version": "1.3.5", "version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@ -22159,6 +22454,29 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/randomatic": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
"integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
"dev": true,
"dependencies": {
"is-number": "^4.0.0",
"kind-of": "^6.0.0",
"math-random": "^1.0.1"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/randomatic/node_modules/is-number": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
"integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/randombytes": { "node_modules/randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -22520,6 +22838,22 @@
"node": ">= 0.10" "node": ">= 0.10"
} }
}, },
"node_modules/remarkable": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz",
"integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==",
"dev": true,
"dependencies": {
"argparse": "^1.0.10",
"autolinker": "~0.28.0"
},
"bin": {
"remarkable": "bin/remarkable.js"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/remove-trailing-separator": { "node_modules/remove-trailing-separator": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
@ -23083,6 +23417,18 @@
"resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
"integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0="
}, },
"node_modules/set-getter": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz",
"integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==",
"dev": true,
"dependencies": {
"to-object-path": "^0.3.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/set-value": { "node_modules/set-value": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@ -23910,6 +24256,15 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/strip-color": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz",
"integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/strip-final-newline": { "node_modules/strip-final-newline": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@ -24488,6 +24843,12 @@
"node": ">=0.6" "node": ">=0.6"
} }
}, },
"node_modules/toml": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz",
"integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==",
"dev": true
},
"node_modules/totalist": { "node_modules/totalist": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
@ -33530,6 +33891,15 @@
"resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
"integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
}, },
"ansi-red": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
"integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
"dev": true,
"requires": {
"ansi-wrap": "0.1.0"
}
},
"ansi-regex": { "ansi-regex": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
@ -33558,6 +33928,12 @@
} }
} }
}, },
"ansi-wrap": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
"integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
"dev": true
},
"anymatch": { "anymatch": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
@ -33745,6 +34121,15 @@
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
}, },
"autolinker": {
"version": "0.28.1",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz",
"integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=",
"dev": true,
"requires": {
"gulp-header": "^1.7.1"
}
},
"autoprefixer": { "autoprefixer": {
"version": "9.8.6", "version": "9.8.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
@ -34921,6 +35306,12 @@
"q": "^1.1.2" "q": "^1.1.2"
} }
}, },
"coffee-script": {
"version": "1.12.7",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
"integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
"dev": true
},
"collect-v8-coverage": { "collect-v8-coverage": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
@ -35059,6 +35450,15 @@
"typedarray": "^0.0.6" "typedarray": "^0.0.6"
} }
}, },
"concat-with-sourcemaps": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz",
"integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==",
"dev": true,
"requires": {
"source-map": "^0.6.1"
}
},
"condense-newlines": { "condense-newlines": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz",
@ -36196,6 +36596,12 @@
"resolved": "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz", "resolved": "https://registry.npmjs.org/devalue/-/devalue-2.0.1.tgz",
"integrity": "sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q==" "integrity": "sha512-I2TiqT5iWBEyB8GRfTDP0hiLZ0YeDJZ+upDxjBfOC2lebO5LezQMv7QvIUTzdb64jQyAKLf1AHADtGN+jw6v8Q=="
}, },
"diacritics-map": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz",
"integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=",
"dev": true
},
"diff-sequences": { "diff-sequences": {
"version": "27.0.6", "version": "27.0.6",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
@ -37420,6 +37826,57 @@
} }
} }
}, },
"expand-range": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
"fill-range": "^2.1.0"
},
"dependencies": {
"fill-range": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
"dev": true,
"requires": {
"is-number": "^2.1.0",
"isobject": "^2.0.0",
"randomatic": "^3.0.0",
"repeat-element": "^1.1.2",
"repeat-string": "^1.5.2"
}
},
"is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"isobject": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"requires": {
"isarray": "1.0.0"
}
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"expect": { "expect": {
"version": "27.0.6", "version": "27.0.6",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz",
@ -38273,6 +38730,41 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
}, },
"gray-matter": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz",
"integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=",
"dev": true,
"requires": {
"ansi-red": "^0.1.1",
"coffee-script": "^1.12.4",
"extend-shallow": "^2.0.1",
"js-yaml": "^3.8.1",
"toml": "^2.3.2"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"gulp-header": {
"version": "1.8.12",
"resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz",
"integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==",
"dev": true,
"requires": {
"concat-with-sourcemaps": "*",
"lodash.template": "^4.4.0",
"through2": "^2.0.0"
}
},
"gzip-size": { "gzip-size": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
@ -40761,6 +41253,15 @@
"launch-editor": "^2.2.1" "launch-editor": "^2.2.1"
} }
}, },
"lazy-cache": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
"integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
"dev": true,
"requires": {
"set-getter": "^0.1.0"
}
},
"less": { "less": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
@ -40866,6 +41367,47 @@
"uc.micro": "^1.0.1" "uc.micro": "^1.0.1"
} }
}, },
"list-item": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz",
"integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=",
"dev": true,
"requires": {
"expand-range": "^1.8.1",
"extend-shallow": "^2.0.1",
"is-number": "^2.1.0",
"repeat-string": "^1.5.2"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
},
"is-number": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"load-json-file": { "load-json-file": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
@ -41034,6 +41576,11 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
}, },
"lodash.flow": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
"integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o="
},
"lodash.foreach": { "lodash.foreach": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz",
@ -41248,6 +41795,53 @@
} }
} }
}, },
"markdown-it-anchor": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.1.2.tgz",
"integrity": "sha512-9D58TKK4dakqmjcmVuqHoB3ntKBpQJ0Ld38B83aiHJcBD72IZIyPjNtihPA6ayRI5WD33e1W68mArliNLHCprg==",
"requires": {}
},
"markdown-it-highlightjs": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/markdown-it-highlightjs/-/markdown-it-highlightjs-3.5.0.tgz",
"integrity": "sha512-ENlFiNFSKwnXD0umIzyhpFe5JtetdQnSYhwTdC72VU3C69uVpk1Mn3sPv1Ov8opVE2nv7SaS97QbY/aEH7PUzw==",
"requires": {
"highlight.js": "^10.7.2",
"lodash.flow": "^3.5.0"
}
},
"markdown-link": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz",
"integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=",
"dev": true
},
"markdown-toc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz",
"integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==",
"dev": true,
"requires": {
"concat-stream": "^1.5.2",
"diacritics-map": "^0.1.0",
"gray-matter": "^2.1.0",
"lazy-cache": "^2.0.2",
"list-item": "^1.1.1",
"markdown-link": "^0.1.1",
"minimist": "^1.2.0",
"mixin-deep": "^1.1.3",
"object.pick": "^1.2.0",
"remarkable": "^1.7.1",
"repeat-string": "^1.6.1",
"strip-color": "^0.1.0"
}
},
"math-random": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
"integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
"dev": true
},
"md5.js": { "md5.js": {
"version": "1.3.5", "version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@ -43910,6 +44504,25 @@
"integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
"dev": true "dev": true
}, },
"randomatic": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
"integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
"dev": true,
"requires": {
"is-number": "^4.0.0",
"kind-of": "^6.0.0",
"math-random": "^1.0.1"
},
"dependencies": {
"is-number": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
"integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
"dev": true
}
}
},
"randombytes": { "randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -44197,6 +44810,16 @@
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk="
}, },
"remarkable": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.4.tgz",
"integrity": "sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==",
"dev": true,
"requires": {
"argparse": "^1.0.10",
"autolinker": "~0.28.0"
}
},
"remove-trailing-separator": { "remove-trailing-separator": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
@ -44609,6 +45232,15 @@
"resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
"integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0="
}, },
"set-getter": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz",
"integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==",
"dev": true,
"requires": {
"to-object-path": "^0.3.0"
}
},
"set-value": { "set-value": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@ -45273,6 +45905,12 @@
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true "dev": true
}, },
"strip-color": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz",
"integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=",
"dev": true
},
"strip-final-newline": { "strip-final-newline": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@ -45707,6 +46345,12 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
}, },
"toml": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz",
"integrity": "sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==",
"dev": true
},
"totalist": { "totalist": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",

View file

@ -49,6 +49,8 @@
"cron-validator": "^1.2.1", "cron-validator": "^1.2.1",
"cronstrue": "^1.114.0", "cronstrue": "^1.114.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"markdown-it-anchor": "^8.1.2",
"markdown-it-highlightjs": "^3.5.0",
"nuxt": "^2.15.7", "nuxt": "^2.15.7",
"nuxt-i18n": "^6.28.0", "nuxt-i18n": "^6.28.0",
"qrcode.vue": "^3.2.2", "qrcode.vue": "^3.2.2",
@ -84,6 +86,7 @@
"jest": "^27.0.6", "jest": "^27.0.6",
"less": "^4.0.0", "less": "^4.0.0",
"less-loader": "^7.1.0", "less-loader": "^7.1.0",
"markdown-toc": "^1.2.0",
"nuxt-property-decorator": "^2.9.1", "nuxt-property-decorator": "^2.9.1",
"standard-version": "^9.3.1", "standard-version": "^9.3.1",
"ts-jest": "^27.0.4", "ts-jest": "^27.0.4",

View file

@ -0,0 +1,57 @@
<tool>
title: 'Git memo'
description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Delectus distinctio dolor dolorum eaque eligendi, facilis impedit laboriosam odit placeat.'
icon: 'mdi-git'
keywords: ['git', 'memo', 'cheat', 'sheet']
path: '/git-memo'
</tool>
<memo>
## Configuration
### Set the global username
```shell
git config --global user.name "[name]"
```
### Set the global email
```shell
git config --global user.email "[email]"
```
## I've made a mistake
### Change last commit message
```shell
git commit --amend
```
### Undo most recent commit and keep changes
```shell
git reset HEAD~1
```
### Undo most recent commit and get rid of changes
```shell
git reset HEAD~1 --hard
```
### Reset branch to remote state
```shell
git fetch origin
git reset --hard origin/[branch-name]
```
</memo>
<script lang="ts">
import {Component} from 'nuxt-property-decorator'
import Memo from '~/components/Memo.vue'
@Component
export default class GitMemo extends Memo {
}
</script>

View file

@ -1,27 +0,0 @@
<tool>
title: 'Git memo old'
description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Delectus distinctio dolor dolorum eaque eligendi, facilis impedit laboriosam odit placeat.'
icon: 'mdi-git'
keywords: ['git', 'memo', 'cheat', 'sheet']
path: '/git-memo-test'
</tool>
<template lang="md">
<ToolWrapper :config="$toolConfig">
## test
```js
yolo
```
</ToolWrapper>
</template>
<script lang="ts">
import {Component} from 'nuxt-property-decorator'
import Tool from '~/components/Tool.vue'
@Component
export default class GitMemo extends Tool {
}
</script>

View file

@ -1,62 +0,0 @@
<tool>
title: 'Git memo'
description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Delectus distinctio dolor dolorum eaque eligendi, facilis impedit laboriosam odit placeat.'
icon: 'mdi-git'
keywords: ['git', 'memo', 'cheat', 'sheet']
path: '/git-memo'
</tool>
<script lang="ts">
import {Component} from 'nuxt-property-decorator'
import Memo from '~/components/Memo.vue'
@Component
export default class GitMemo extends Memo {
}
</script>
<i18n lang="yaml">
en:
memo:
- section: Titre de la section 1
items:
- text: Tip n°1
- text: Tip n°2 (avec sous titre
subtitle: Un super sous titre
- text: Tip n°3 (avec du code !)
code: rm -rf / --no-preserve-root
- text: Tip n°4 (avec du code et un sous titre !)
code: rm -rf / --no-preserve-root
subtitle: Un super sous titre, yeah
- section: Titre de la section 2
items:
- text: Tip n°1
- text: Tip n°2
- text: Tip n°3 (avec du code !)
code: rm -rf / --no-preserve-root
- text: Tip n°4
code: "multiline\ncode sample"
- section: Titre de la section 3
items:
- text: Tip n°1
- text: Tip n°2 (avec sous titre
subtitle: Un super sous titre
- text: Tip n°3 (avec du code !)
code: rm -rf / --no-preserve-root
- text: Tip n°4 (avec du code et un sous titre !)
code: rm -rf / --no-preserve-root
subtitle: Un super sous titre, yeah
- section: Titre de la section 4
items:
- text: Tip n°1
- text: Tip n°2 (avec sous titre
subtitle: Un super sous titre
- text: Tip n°3 (avec du code !)
code: rm -rf / --no-preserve-root
- text: Tip n°4 (avec du code et un sous titre !)
code: rm -rf / --no-preserve-root
subtitle: Un super sous titre, yeah
</i18n>

View file

@ -29,6 +29,7 @@
"@types/node", "@types/node",
"@nuxtjs/toast", "@nuxtjs/toast",
"@nuxt/types", "@nuxt/types",
"@nuxtjs/markdownit",
"~/types/custom.d.ts", "~/types/custom.d.ts",
"vuetify", "vuetify",
"nuxt-i18n" "nuxt-i18n"

14
utils/md-toc.ts Normal file
View file

@ -0,0 +1,14 @@
const slugify = (e: string) => encodeURIComponent(String(e).trim().toLowerCase().replace(/\s+/g, '-'))
function toc(content: string) {
return content.split('\n').filter(s => s.startsWith('#')).map((s) => {
const [_, hashtags, title] = s.match(/^(#+) (.*)/) ?? [undefined, 0, '']
const level = Math.max((hashtags as string).length - 2, 0)
return `${' '.repeat(level)}- [${title}](#${slugify(title as string)})`
})
}
export {
toc
}