feat(memo): added memo base
This commit is contained in:
		
							parent
							
								
									a40aae44ce
								
							
						
					
					
						commit
						a5953a3c42
					
				
							
								
								
									
										23
									
								
								buildModules/memo/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								buildModules/memo/index.ts
									
									
									
									
									
										Normal 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 | ||||
							
								
								
									
										11
									
								
								buildModules/memo/loader.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								buildModules/memo/loader.js
									
									
									
									
									
										Normal 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 | ||||
| @ -1,37 +1,24 @@ | ||||
| <template> | ||||
|   <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-row> | ||||
|       <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> | ||||
|           <v-card-text class="pa-10"> | ||||
|             <div class="memo-content" v-html="content" /> | ||||
|           </v-card-text> | ||||
|         </v-card> | ||||
|       </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> | ||||
|   </div> | ||||
| </template> | ||||
| @ -41,66 +28,108 @@ import {Component} from 'nuxt-property-decorator' | ||||
| import Tool from './Tool.vue' | ||||
| import {CopyableMixin} from '~/mixins/copyable.mixin' | ||||
| import ToolHeader from '~/components/ToolHeader.vue' | ||||
| 
 | ||||
| type MemoItems = { section: string, items: { text: string, code?: string, subtitle?: string }[] }[]; | ||||
| import {toc} from '~/utils/md-toc' | ||||
| 
 | ||||
| @Component({ | ||||
|   mixins: [CopyableMixin], | ||||
|   components: {ToolHeader} | ||||
| }) | ||||
| 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> | ||||
| 
 | ||||
| <style lang="less"> | ||||
| <style lang="less" scoped> | ||||
| .memo { | ||||
|   h1 { | ||||
|     font-weight: 300; | ||||
|     font-size: 50px; | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|   } | ||||
| 
 | ||||
|   h2 { | ||||
|     font-weight: 400; | ||||
|   } | ||||
|   ::v-deep { | ||||
|     .memo-content { | ||||
|       text-align: justify; | ||||
| 
 | ||||
|   .memo-item { | ||||
|     margin-bottom: 20px; | ||||
|       h2 { | ||||
|         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 { | ||||
|       font-weight: bold; | ||||
|       font-size: 16px; | ||||
|       color: var(--v-primary-base); | ||||
|     } | ||||
|         &:not(:first-child){ | ||||
|           margin-top: 50px; | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|     .memo-item-subtitle { | ||||
|       padding-bottom: 5px; | ||||
|     } | ||||
| 
 | ||||
|     .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; | ||||
|       h3 { | ||||
|         font-weight: 400; | ||||
|         margin-top: 20px; | ||||
|         margin-bottom: 10px; | ||||
|       } | ||||
| 
 | ||||
|       pre { | ||||
|         flex: 1; | ||||
|         width: 100%; | ||||
|         overflow-x: auto; | ||||
|       } | ||||
| 
 | ||||
|       .v-icon { | ||||
|         opacity: 0; | ||||
|         code { | ||||
|           display: block; | ||||
|           padding: 15px; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|       &:hover { | ||||
|         .v-icon { | ||||
|           opacity: 1; | ||||
|   .toc { | ||||
|     margin-top: 140px; | ||||
| 
 | ||||
|     .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; | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @ -44,6 +44,7 @@ export default { | ||||
|     '@nuxtjs/vuetify', | ||||
|     // '@nuxtjs/router-extras'
 | ||||
|     '~/buildModules/tool-config', | ||||
|     '~/buildModules/memo', | ||||
|     '@nuxtjs/google-fonts' | ||||
|   ], | ||||
| 
 | ||||
| @ -134,5 +135,18 @@ export default { | ||||
|   sitemap: { | ||||
|     hostname: 'https://it-tools.tech', | ||||
|     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
									
									
									
								
							
							
						
						
									
										644
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -21,6 +21,8 @@ | ||||
|         "cron-validator": "^1.2.1", | ||||
|         "cronstrue": "^1.114.0", | ||||
|         "crypto-js": "^4.1.1", | ||||
|         "markdown-it-anchor": "^8.1.2", | ||||
|         "markdown-it-highlightjs": "^3.5.0", | ||||
|         "nuxt": "^2.15.7", | ||||
|         "nuxt-i18n": "^6.28.0", | ||||
|         "qrcode.vue": "^3.2.2", | ||||
| @ -56,6 +58,7 @@ | ||||
|         "jest": "^27.0.6", | ||||
|         "less": "^4.0.0", | ||||
|         "less-loader": "^7.1.0", | ||||
|         "markdown-toc": "^1.2.0", | ||||
|         "nuxt-property-decorator": "^2.9.1", | ||||
|         "standard-version": "^9.3.1", | ||||
|         "ts-jest": "^27.0.4", | ||||
| @ -8721,6 +8724,18 @@ | ||||
|         "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": { | ||||
|       "version": "5.0.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", | ||||
| @ -8982,6 +9006,15 @@ | ||||
|         "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": { | ||||
|       "version": "9.8.6", | ||||
|       "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", | ||||
| @ -10480,6 +10513,20 @@ | ||||
|         "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": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", | ||||
| @ -10637,6 +10684,15 @@ | ||||
|         "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": { | ||||
|       "version": "0.2.1", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "27.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", | ||||
| @ -13720,6 +13785,70 @@ | ||||
|         "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": { | ||||
|       "version": "27.0.6", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "6.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", | ||||
| @ -18217,6 +18386,18 @@ | ||||
|         "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": { | ||||
|       "version": "4.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", | ||||
| @ -18359,6 +18540,57 @@ | ||||
|         "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": { | ||||
|       "version": "4.0.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "2.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.3.0.tgz", | ||||
| @ -18783,11 +19020,69 @@ | ||||
|         "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": { | ||||
|       "version": "1.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", | ||||
|       "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": { | ||||
|       "version": "1.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", | ||||
| @ -22159,6 +22454,29 @@ | ||||
|         "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": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", | ||||
| @ -22520,6 +22838,22 @@ | ||||
|         "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": { | ||||
|       "version": "1.1.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", | ||||
| @ -23910,6 +24256,15 @@ | ||||
|         "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": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", | ||||
| @ -24488,6 +24843,12 @@ | ||||
|         "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": { | ||||
|       "version": "1.1.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "5.0.0", | ||||
|       "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": { | ||||
|       "version": "3.1.1", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "9.8.6", | ||||
|       "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", | ||||
| @ -34921,6 +35306,12 @@ | ||||
|         "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": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", | ||||
| @ -35059,6 +35450,15 @@ | ||||
|         "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": { | ||||
|       "version": "0.2.1", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "27.0.6", | ||||
|       "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": { | ||||
|       "version": "27.0.6", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "6.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", | ||||
| @ -40761,6 +41253,15 @@ | ||||
|         "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": { | ||||
|       "version": "4.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", | ||||
| @ -40866,6 +41367,47 @@ | ||||
|         "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": { | ||||
|       "version": "4.0.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "2.3.0", | ||||
|       "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": { | ||||
|       "version": "1.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", | ||||
| @ -43910,6 +44504,25 @@ | ||||
|       "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", | ||||
|       "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": { | ||||
|       "version": "2.1.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.1.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", | ||||
| @ -45273,6 +45905,12 @@ | ||||
|       "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", | ||||
|       "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": { | ||||
|       "version": "2.0.0", | ||||
|       "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", | ||||
|       "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": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", | ||||
|  | ||||
| @ -49,6 +49,8 @@ | ||||
|     "cron-validator": "^1.2.1", | ||||
|     "cronstrue": "^1.114.0", | ||||
|     "crypto-js": "^4.1.1", | ||||
|     "markdown-it-anchor": "^8.1.2", | ||||
|     "markdown-it-highlightjs": "^3.5.0", | ||||
|     "nuxt": "^2.15.7", | ||||
|     "nuxt-i18n": "^6.28.0", | ||||
|     "qrcode.vue": "^3.2.2", | ||||
| @ -84,6 +86,7 @@ | ||||
|     "jest": "^27.0.6", | ||||
|     "less": "^4.0.0", | ||||
|     "less-loader": "^7.1.0", | ||||
|     "markdown-toc": "^1.2.0", | ||||
|     "nuxt-property-decorator": "^2.9.1", | ||||
|     "standard-version": "^9.3.1", | ||||
|     "ts-jest": "^27.0.4", | ||||
|  | ||||
							
								
								
									
										57
									
								
								tools/development/git-memo.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								tools/development/git-memo.vue
									
									
									
									
									
										Normal 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> | ||||
| @ -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> | ||||
| @ -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> | ||||
| @ -29,6 +29,7 @@ | ||||
|       "@types/node", | ||||
|       "@nuxtjs/toast", | ||||
|       "@nuxt/types", | ||||
|       "@nuxtjs/markdownit", | ||||
|       "~/types/custom.d.ts", | ||||
|       "vuetify", | ||||
|       "nuxt-i18n" | ||||
|  | ||||
							
								
								
									
										14
									
								
								utils/md-toc.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								utils/md-toc.ts
									
									
									
									
									
										Normal 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 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user