diff --git a/client/src/pages/question/index.module.less b/client/src/pages/question/index.module.less
index 61a1626..3cd76af 100644
--- a/client/src/pages/question/index.module.less
+++ b/client/src/pages/question/index.module.less
@@ -24,7 +24,7 @@
height: 240px;
background-color: white;
bottom: 60px;
- padding: 10px;
+ padding: 15px;
overflow-y: scroll;
overflow-x: scroll;
}
diff --git a/client/src/pages/question/index.tsx b/client/src/pages/question/index.tsx
index a7d338e..20407fd 100644
--- a/client/src/pages/question/index.tsx
+++ b/client/src/pages/question/index.tsx
@@ -121,7 +121,7 @@ function Question() {
setShowOutput(!showOutput);
}}
>
- show
+ {showOutput ? 'hide' : 'show'}
diff --git a/client/src/pages/questions/index.module.less b/client/src/pages/questions/index.module.less
index 00d0c3d..50d66f3 100644
--- a/client/src/pages/questions/index.module.less
+++ b/client/src/pages/questions/index.module.less
@@ -44,7 +44,7 @@
font-weight: 700;
font-size: 18px;
}
- .introduce {
+ .desc {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
diff --git a/client/src/pages/questions/index.tsx b/client/src/pages/questions/index.tsx
index 58c2e55..2ff4e74 100644
--- a/client/src/pages/questions/index.tsx
+++ b/client/src/pages/questions/index.tsx
@@ -31,9 +31,7 @@ function Questions() {
}}
>
{item.name}
-
- {item.introduce}
-
+
{item.desc}
);
};
diff --git a/client/src/services/question.ts b/client/src/services/question.ts
index ca3ad5d..86f8e4a 100644
--- a/client/src/services/question.ts
+++ b/client/src/services/question.ts
@@ -11,6 +11,7 @@ export interface IQuestion {
type?: string;
index?: string;
introduce?: string;
+ desc: string;
}
export function getQuestions(params: GetQuestionsRequest) {
diff --git a/package.json b/package.json
index e6b049f..4b5e648 100644
--- a/package.json
+++ b/package.json
@@ -5,8 +5,7 @@
"main": "index.js",
"scripts": {
"release": "standard-version",
- "generate-qs": "node qs.mjs",
- "test": "ava"
+ "generate-qs": "node qs.mjs"
},
"repository": {
"type": "git",
@@ -17,8 +16,5 @@
"bugs": {
"url": "https://github.com/xjq7/runcode/issues"
},
- "homepage": "https://github.com/xjq7/runcode#readme",
- "dependencies": {
- "ava": "^5.0.1"
- }
+ "homepage": "https://github.com/xjq7/runcode#readme"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index b04f279..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,1000 +0,0 @@
-lockfileVersion: 5.4
-
-specifiers:
- ava: ^5.0.1
-
-dependencies:
- ava: 5.0.1
-
-packages:
-
- /@nodelib/fs.scandir/2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
- dev: false
-
- /@nodelib/fs.stat/2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
- dev: false
-
- /@nodelib/fs.walk/1.2.8:
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.13.0
- dev: false
-
- /acorn-walk/8.2.0:
- resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
- engines: {node: '>=0.4.0'}
- dev: false
-
- /acorn/8.8.1:
- resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: false
-
- /aggregate-error/4.0.1:
- resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
- engines: {node: '>=12'}
- dependencies:
- clean-stack: 4.2.0
- indent-string: 5.0.0
- dev: false
-
- /ansi-regex/5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
- dev: false
-
- /ansi-regex/6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
- engines: {node: '>=12'}
- dev: false
-
- /ansi-styles/4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
- dependencies:
- color-convert: 2.0.1
- dev: false
-
- /ansi-styles/6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
- dev: false
-
- /anymatch/3.1.2:
- resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
- engines: {node: '>= 8'}
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
- dev: false
-
- /argparse/1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- dependencies:
- sprintf-js: 1.0.3
- dev: false
-
- /array-find-index/1.0.2:
- resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /arrgv/1.0.2:
- resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==}
- engines: {node: '>=8.0.0'}
- dev: false
-
- /arrify/3.0.0:
- resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==}
- engines: {node: '>=12'}
- dev: false
-
- /ava/5.0.1:
- resolution: {integrity: sha512-nS1eK3HhWaC+eGHtteF5j4yZMjaIE+q2o+oyqD75xsmS87R5sGlxADYWkFIGyB28jrDmAATZAAx+s3JhYsnhNw==}
- engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'}
- hasBin: true
- peerDependencies:
- '@ava/typescript': '*'
- peerDependenciesMeta:
- '@ava/typescript':
- optional: true
- dependencies:
- acorn: 8.8.1
- acorn-walk: 8.2.0
- ansi-styles: 6.2.1
- arrgv: 1.0.2
- arrify: 3.0.0
- callsites: 4.0.0
- cbor: 8.1.0
- chalk: 5.1.2
- chokidar: 3.5.3
- chunkd: 2.0.1
- ci-info: 3.5.0
- ci-parallel-vars: 1.0.1
- clean-yaml-object: 0.1.0
- cli-truncate: 3.1.0
- code-excerpt: 4.0.0
- common-path-prefix: 3.0.0
- concordance: 5.0.4
- currently-unhandled: 0.4.1
- debug: 4.3.4
- del: 7.0.0
- emittery: 1.0.1
- figures: 5.0.0
- globby: 13.1.2
- ignore-by-default: 2.1.0
- indent-string: 5.0.0
- is-error: 2.2.2
- is-plain-object: 5.0.0
- is-promise: 4.0.0
- matcher: 5.0.0
- mem: 9.0.2
- ms: 2.1.3
- p-event: 5.0.1
- p-map: 5.5.0
- picomatch: 2.3.1
- pkg-conf: 4.0.0
- plur: 5.1.0
- pretty-ms: 8.0.0
- resolve-cwd: 3.0.0
- slash: 3.0.0
- stack-utils: 2.0.6
- strip-ansi: 7.0.1
- supertap: 3.0.1
- temp-dir: 2.0.0
- write-file-atomic: 4.0.2
- yargs: 17.6.2
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /balanced-match/1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- dev: false
-
- /binary-extensions/2.2.0:
- resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
- engines: {node: '>=8'}
- dev: false
-
- /blueimp-md5/2.19.0:
- resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==}
- dev: false
-
- /brace-expansion/1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
- dev: false
-
- /braces/3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
- dependencies:
- fill-range: 7.0.1
- dev: false
-
- /callsites/4.0.0:
- resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==}
- engines: {node: '>=12.20'}
- dev: false
-
- /cbor/8.1.0:
- resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==}
- engines: {node: '>=12.19'}
- dependencies:
- nofilter: 3.1.0
- dev: false
-
- /chalk/5.1.2:
- resolution: {integrity: sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
- dev: false
-
- /chokidar/3.5.3:
- resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
- engines: {node: '>= 8.10.0'}
- dependencies:
- anymatch: 3.1.2
- braces: 3.0.2
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.2
- dev: false
-
- /chunkd/2.0.1:
- resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==}
- dev: false
-
- /ci-info/3.5.0:
- resolution: {integrity: sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==}
- dev: false
-
- /ci-parallel-vars/1.0.1:
- resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==}
- dev: false
-
- /clean-stack/4.2.0:
- resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
- engines: {node: '>=12'}
- dependencies:
- escape-string-regexp: 5.0.0
- dev: false
-
- /clean-yaml-object/0.1.0:
- resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /cli-truncate/3.1.0:
- resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- slice-ansi: 5.0.0
- string-width: 5.1.2
- dev: false
-
- /cliui/8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
- dev: false
-
- /code-excerpt/4.0.0:
- resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- convert-to-spaces: 2.0.1
- dev: false
-
- /color-convert/2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
- dependencies:
- color-name: 1.1.4
- dev: false
-
- /color-name/1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: false
-
- /common-path-prefix/3.0.0:
- resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
- dev: false
-
- /concat-map/0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- dev: false
-
- /concordance/5.0.4:
- resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==}
- engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'}
- dependencies:
- date-time: 3.1.0
- esutils: 2.0.3
- fast-diff: 1.2.0
- js-string-escape: 1.0.1
- lodash: 4.17.21
- md5-hex: 3.0.1
- semver: 7.3.8
- well-known-symbols: 2.0.0
- dev: false
-
- /convert-to-spaces/2.0.1:
- resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
- /currently-unhandled/0.4.1:
- resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==}
- engines: {node: '>=0.10.0'}
- dependencies:
- array-find-index: 1.0.2
- dev: false
-
- /date-time/3.1.0:
- resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==}
- engines: {node: '>=6'}
- dependencies:
- time-zone: 1.0.0
- dev: false
-
- /debug/4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
- dev: false
-
- /del/7.0.0:
- resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==}
- engines: {node: '>=14.16'}
- dependencies:
- globby: 13.1.2
- graceful-fs: 4.2.10
- is-glob: 4.0.3
- is-path-cwd: 3.0.0
- is-path-inside: 4.0.0
- p-map: 5.5.0
- rimraf: 3.0.2
- slash: 4.0.0
- dev: false
-
- /dir-glob/3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
- dependencies:
- path-type: 4.0.0
- dev: false
-
- /eastasianwidth/0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- dev: false
-
- /emittery/1.0.1:
- resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==}
- engines: {node: '>=14.16'}
- dev: false
-
- /emoji-regex/8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: false
-
- /emoji-regex/9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- dev: false
-
- /escalade/3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
- dev: false
-
- /escape-string-regexp/2.0.0:
- resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
- engines: {node: '>=8'}
- dev: false
-
- /escape-string-regexp/5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
- dev: false
-
- /esprima/4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
- dev: false
-
- /esutils/2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /fast-diff/1.2.0:
- resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
- dev: false
-
- /fast-glob/3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
- engines: {node: '>=8.6.0'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.5
- dev: false
-
- /fastq/1.13.0:
- resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
- dependencies:
- reusify: 1.0.4
- dev: false
-
- /figures/5.0.0:
- resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==}
- engines: {node: '>=14'}
- dependencies:
- escape-string-regexp: 5.0.0
- is-unicode-supported: 1.3.0
- dev: false
-
- /fill-range/7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
- engines: {node: '>=8'}
- dependencies:
- to-regex-range: 5.0.1
- dev: false
-
- /find-up/6.3.0:
- resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- locate-path: 7.1.1
- path-exists: 5.0.0
- dev: false
-
- /fs.realpath/1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- dev: false
-
- /fsevents/2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
-
- /get-caller-file/2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
- dev: false
-
- /glob-parent/5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
- dependencies:
- is-glob: 4.0.3
- dev: false
-
- /glob/7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
- dev: false
-
- /globby/13.1.2:
- resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.0
- merge2: 1.4.1
- slash: 4.0.0
- dev: false
-
- /graceful-fs/4.2.10:
- resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
- dev: false
-
- /ignore-by-default/2.1.0:
- resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==}
- engines: {node: '>=10 <11 || >=12 <13 || >=14'}
- dev: false
-
- /ignore/5.2.0:
- resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
- engines: {node: '>= 4'}
- dev: false
-
- /imurmurhash/0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
- dev: false
-
- /indent-string/5.0.0:
- resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
- engines: {node: '>=12'}
- dev: false
-
- /inflight/1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
- dev: false
-
- /inherits/2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: false
-
- /irregular-plurals/3.3.0:
- resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==}
- engines: {node: '>=8'}
- dev: false
-
- /is-binary-path/2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
- dependencies:
- binary-extensions: 2.2.0
- dev: false
-
- /is-error/2.2.2:
- resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==}
- dev: false
-
- /is-extglob/2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /is-fullwidth-code-point/3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
- dev: false
-
- /is-fullwidth-code-point/4.0.0:
- resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
- engines: {node: '>=12'}
- dev: false
-
- /is-glob/4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extglob: 2.1.1
- dev: false
-
- /is-number/7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
- dev: false
-
- /is-path-cwd/3.0.0:
- resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
- /is-path-inside/4.0.0:
- resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
- engines: {node: '>=12'}
- dev: false
-
- /is-plain-object/5.0.0:
- resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /is-promise/4.0.0:
- resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
- dev: false
-
- /is-unicode-supported/1.3.0:
- resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
- engines: {node: '>=12'}
- dev: false
-
- /js-string-escape/1.0.1:
- resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==}
- engines: {node: '>= 0.8'}
- dev: false
-
- /js-yaml/3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
- dev: false
-
- /load-json-file/7.0.1:
- resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
- /locate-path/7.1.1:
- resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- p-locate: 6.0.0
- dev: false
-
- /lodash/4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: false
-
- /lru-cache/6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: false
-
- /map-age-cleaner/0.1.3:
- resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==}
- engines: {node: '>=6'}
- dependencies:
- p-defer: 1.0.0
- dev: false
-
- /matcher/5.0.0:
- resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- escape-string-regexp: 5.0.0
- dev: false
-
- /md5-hex/3.0.1:
- resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==}
- engines: {node: '>=8'}
- dependencies:
- blueimp-md5: 2.19.0
- dev: false
-
- /mem/9.0.2:
- resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==}
- engines: {node: '>=12.20'}
- dependencies:
- map-age-cleaner: 0.1.3
- mimic-fn: 4.0.0
- dev: false
-
- /merge2/1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
- dev: false
-
- /micromatch/4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
- engines: {node: '>=8.6'}
- dependencies:
- braces: 3.0.2
- picomatch: 2.3.1
- dev: false
-
- /mimic-fn/4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
- dev: false
-
- /minimatch/3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
- dependencies:
- brace-expansion: 1.1.11
- dev: false
-
- /ms/2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: false
-
- /ms/2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- dev: false
-
- /nofilter/3.1.0:
- resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==}
- engines: {node: '>=12.19'}
- dev: false
-
- /normalize-path/3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /once/1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- dependencies:
- wrappy: 1.0.2
- dev: false
-
- /p-defer/1.0.0:
- resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==}
- engines: {node: '>=4'}
- dev: false
-
- /p-event/5.0.1:
- resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- p-timeout: 5.1.0
- dev: false
-
- /p-limit/4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- yocto-queue: 1.0.0
- dev: false
-
- /p-locate/6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- p-limit: 4.0.0
- dev: false
-
- /p-map/5.5.0:
- resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==}
- engines: {node: '>=12'}
- dependencies:
- aggregate-error: 4.0.1
- dev: false
-
- /p-timeout/5.1.0:
- resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==}
- engines: {node: '>=12'}
- dev: false
-
- /parse-ms/3.0.0:
- resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==}
- engines: {node: '>=12'}
- dev: false
-
- /path-exists/5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dev: false
-
- /path-is-absolute/1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /path-type/4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
- dev: false
-
- /picomatch/2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
- dev: false
-
- /pkg-conf/4.0.0:
- resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- find-up: 6.3.0
- load-json-file: 7.0.1
- dev: false
-
- /plur/5.1.0:
- resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- irregular-plurals: 3.3.0
- dev: false
-
- /pretty-ms/8.0.0:
- resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==}
- engines: {node: '>=14.16'}
- dependencies:
- parse-ms: 3.0.0
- dev: false
-
- /queue-microtask/1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- dev: false
-
- /readdirp/3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
- dependencies:
- picomatch: 2.3.1
- dev: false
-
- /require-directory/2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
- dev: false
-
- /resolve-cwd/3.0.0:
- resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
- engines: {node: '>=8'}
- dependencies:
- resolve-from: 5.0.0
- dev: false
-
- /resolve-from/5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
- dev: false
-
- /reusify/1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- dev: false
-
- /rimraf/3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
- dependencies:
- glob: 7.2.3
- dev: false
-
- /run-parallel/1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- dependencies:
- queue-microtask: 1.2.3
- dev: false
-
- /semver/7.3.8:
- resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
- dev: false
-
- /serialize-error/7.0.1:
- resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
- engines: {node: '>=10'}
- dependencies:
- type-fest: 0.13.1
- dev: false
-
- /signal-exit/3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- dev: false
-
- /slash/3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
- dev: false
-
- /slash/4.0.0:
- resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
- engines: {node: '>=12'}
- dev: false
-
- /slice-ansi/5.0.0:
- resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
- engines: {node: '>=12'}
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 4.0.0
- dev: false
-
- /sprintf-js/1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
- dev: false
-
- /stack-utils/2.0.6:
- resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
- engines: {node: '>=10'}
- dependencies:
- escape-string-regexp: 2.0.0
- dev: false
-
- /string-width/4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
- dev: false
-
- /string-width/5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.0.1
- dev: false
-
- /strip-ansi/6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
- dependencies:
- ansi-regex: 5.0.1
- dev: false
-
- /strip-ansi/7.0.1:
- resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
- engines: {node: '>=12'}
- dependencies:
- ansi-regex: 6.0.1
- dev: false
-
- /supertap/3.0.1:
- resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- indent-string: 5.0.0
- js-yaml: 3.14.1
- serialize-error: 7.0.1
- strip-ansi: 7.0.1
- dev: false
-
- /temp-dir/2.0.0:
- resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
- engines: {node: '>=8'}
- dev: false
-
- /time-zone/1.0.0:
- resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==}
- engines: {node: '>=4'}
- dev: false
-
- /to-regex-range/5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
- dependencies:
- is-number: 7.0.0
- dev: false
-
- /type-fest/0.13.1:
- resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
- engines: {node: '>=10'}
- dev: false
-
- /well-known-symbols/2.0.0:
- resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==}
- engines: {node: '>=6'}
- dev: false
-
- /wrap-ansi/7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- dev: false
-
- /wrappy/1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- dev: false
-
- /write-file-atomic/4.0.2:
- resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 3.0.7
- dev: false
-
- /y18n/5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
- dev: false
-
- /yallist/4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: false
-
- /yargs-parser/21.1.1:
- resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
- engines: {node: '>=12'}
- dev: false
-
- /yargs/17.6.2:
- resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==}
- engines: {node: '>=12'}
- dependencies:
- cliui: 8.0.1
- escalade: 3.1.1
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
- y18n: 5.0.8
- yargs-parser: 21.1.1
- dev: false
-
- /yocto-queue/1.0.0:
- resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
- engines: {node: '>=12.20'}
- dev: false
diff --git a/qs.mjs b/qs.mjs
index 8cf4eca..f94418d 100644
--- a/qs.mjs
+++ b/qs.mjs
@@ -13,16 +13,17 @@ const root = path.resolve(process.cwd(), 'question/FrontEnd');
const files = await fs.readdir(path.resolve(root, dir));
json[dir] = {};
for (const file of files) {
- const content = await fs.readFile(
- path.resolve(root, dir, file),
- 'utf8'
- );
+ let content = await fs.readFile(path.resolve(root, dir, file), 'utf8');
+ content = content.replace(/\r\n/, '\n');
+
if (/answer/.test(file)) {
json[dir]['answer'] = content;
} else if (/index.mjs/.test(file)) {
json[dir]['index'] = content;
} else if (/index.md/.test(file)) {
json[dir]['introduce'] = content;
+ const desc = (content.match(/\n\n(.+)\n\n/) || [])[1];
+ json[dir]['desc'] = desc;
} else if (/test/.test(file)) {
json[dir]['test'] = content;
}
diff --git a/server/src/questions.json b/server/src/questions.json
index 4dadece..cf5f777 100644
--- a/server/src/questions.json
+++ b/server/src/questions.json
@@ -1 +1,16 @@
-{"deepClone":{"answer":"export default function deepClone(obj, weakMap = new WeakMap()) {\r\n const type = Object.prototype.toString.call(obj);\r\n if (!(type === '[object Object]' || type === '[object Array]')) return obj;\r\n const o = type === '[object Object]' ? {} : [];\r\n if (weakMap.get(obj)) return o;\r\n weakMap.set(obj, true);\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n o[key] = deepClone(obj[key], weakMap);\r\n }\r\n }\r\n return o;\r\n}\r\n","introduce":"## DeepClone\r\n\r\n实现对象深拷贝, 修改深拷贝对象不影响原对象\r\n\r\n用例 1:\r\n\r\n```js\r\nconst userList = { user: [{ name: 'xjq' }] };\r\nconst cloneUserList = deepClone(userList);\r\n\r\nconsole.log(cloneUserList); // { user: [{ name: 'xjq' }] }\r\ncloneUserList.user.push({ name: 'xjq1' });\r\nconsole.log(cloneUserList.user); // [{ name:'xjq' }]\r\n```\r\n\r\n用例 2:\r\n\r\n```js\r\n\r\nconst user = { name: 'xjq', height: 180 };\r\nconst cloneUser = deepClone(user);\r\n\r\nconsole.log(user); // { name: 'xjq', height: 180 }\r\n\r\ndelete cloneUser.height;\r\nconsole.log(cloneUser); // { name: 'xjq' }\r\nconsole.log(user; // { name: 'xjq', height: 180 }\r\n```\r\n","index":"/**\r\n * 深拷贝\r\n *\r\n * @param {*} obj\r\n * @return {*}\r\n */\r\nexport default function deepClone(obj) {\r\n return {};\r\n}\r\n","test":"import assert from 'assert';\r\nimport _deepClone from './answer.mjs';\r\nimport deepClone from './index.mjs';\r\n\r\nconst cases = [\r\n {\r\n Input: [1, 2, { a: 1 }],\r\n Expected: [1, 2, { a: 1 }],\r\n Message: '两层对象',\r\n },\r\n {\r\n Input: [{ f: 1 }],\r\n Expected: [{ f: 1 }],\r\n Message: '一层对象',\r\n },\r\n {\r\n Input: { b: [{ c: 1, d: [{ d: 1, f: 2 }] }] },\r\n Expected: { b: [{ c: 1, d: [{ d: 1, f: 2 }] }] },\r\n Message: '两层对象, 修改返回值',\r\n },\r\n];\r\n\r\n(function () {\r\n for (let i = 0; i < cases.length; i++) {\r\n const { Input, Expected, Message } = cases[i];\r\n let output;\r\n try {\r\n output = deepClone(Input);\r\n assert.deepEqual(output, Expected);\r\n } catch (error) {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('Input:', JSON.stringify(Input));\r\n console.log('Expected:', JSON.stringify(error.expected));\r\n console.log('Received:', JSON.stringify(output));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n const originInput = _deepClone(Input);\r\n try {\r\n output['1'] = Math.random();\r\n assert.deepEqual(Input, originInput);\r\n } catch (error) {\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n console.log(\r\n 'Mutate Output Expected Input: ',\r\n JSON.stringify(originInput)\r\n );\r\n console.log('Input: ', JSON.stringify(Input));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 通过');\r\n }\r\n})();\r\n"},"unique":{"answer":"export default function unique(arr) {\r\n return [...new Set(arr)];\r\n}\r\n","introduce":"## Unique\r\n\r\n数组去重\r\n\r\n用例 1:\r\n\r\n```js\r\nconst arr = [1, 2, 3];\r\nconst uniqueArr = unique(arr1);\r\n\r\nconsole.log(uniqueArr); // [1, 2, 3]\r\n```\r\n\r\n用例 2:\r\n\r\n```js\r\nconst arr = [1, 2, 3, 3, 3];\r\nconst uniqueArr = unique(arr);\r\n\r\nconsole.log(uniqueArr); // [1, 2, 3]\r\n```\r\n","index":"export default function unique(arr) {\r\n return [];\r\n}\r\n","test":"import assert from 'assert';\r\nimport unique from './index.mjs';\r\n\r\nconst cases = [\r\n {\r\n Input: [1, 2, 3],\r\n Expected: [1, 2, 3],\r\n Message: '无重复数字',\r\n },\r\n {\r\n Input: [1, 2, 3, 3],\r\n Expected: [1, 2, 3],\r\n Message: '单个重复数字',\r\n },\r\n {\r\n Input: [1, 1, 2, 2, 2, 3, 3],\r\n Expected: [1, 2, 3],\r\n Message: '多个重复数字',\r\n },\r\n];\r\n\r\n(function () {\r\n for (let i = 0; i < cases.length; i++) {\r\n const { Input, Expected, Message } = cases[i];\r\n let output;\r\n try {\r\n output = unique(Input);\r\n assert.deepEqual(output, Expected);\r\n } catch (error) {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('Input:', JSON.stringify(Input));\r\n console.log('Expected:', JSON.stringify(error.expected));\r\n console.log('Received:', JSON.stringify(output));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 通过');\r\n }\r\n})();\r\n"}}
\ No newline at end of file
+{
+ "deepClone": {
+ "answer": "export default function deepClone(obj, weakMap = new WeakMap()) {\n const type = Object.prototype.toString.call(obj);\n if (!(type === '[object Object]' || type === '[object Array]')) return obj;\n const o = type === '[object Object]' ? {} : [];\n if (weakMap.get(obj)) return o;\n weakMap.set(obj, true);\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n o[key] = deepClone(obj[key], weakMap);\n }\n }\n return o;\n}\n",
+ "introduce": "## DeepClone\n\n实现对象深拷贝, 修改深拷贝对象不影响原对象\n\n用例 1:\n\n```js\nconst userList = { user: [{ name: 'xjq' }] };\nconst cloneUserList = deepClone(userList);\n\nconsole.log(cloneUserList); // { user: [{ name: 'xjq' }] }\ncloneUserList.user.push({ name: 'xjq1' });\nconsole.log(cloneUserList.user); // [{ name:'xjq' }]\n```\n\n用例 2:\n\n```js\n\nconst user = { name: 'xjq', height: 180 };\nconst cloneUser = deepClone(user);\n\nconsole.log(user); // { name: 'xjq', height: 180 }\n\ndelete cloneUser.height;\nconsole.log(cloneUser); // { name: 'xjq' }\nconsole.log(user; // { name: 'xjq', height: 180 }\n```\n",
+ "desc": "实现对象深拷贝, 修改深拷贝对象不影响原对象",
+ "index": "/**\n * 深拷贝\r\n *\r\n * @param {*} obj\r\n * @return {*}\r\n */\r\nexport default function deepClone(obj) {\r\n return {};\r\n}\r\n",
+ "test": "import assert from 'assert';\nimport _deepClone from './answer.mjs';\r\nimport deepClone from './index.mjs';\r\n\r\nconst cases = [\r\n {\r\n Input: [1, 2, { a: 1 }],\r\n Expected: [1, 2, { a: 1 }],\r\n Message: '两层对象',\r\n },\r\n {\r\n Input: [{ f: 1 }],\r\n Expected: [{ f: 1 }],\r\n Message: '一层对象',\r\n },\r\n {\r\n Input: { b: [{ c: 1, d: [{ d: 1, f: 2 }] }] },\r\n Expected: { b: [{ c: 1, d: [{ d: 1, f: 2 }] }] },\r\n Message: '两层对象, 修改返回值',\r\n },\r\n];\r\n\r\n(function () {\r\n for (let i = 0; i < cases.length; i++) {\r\n const { Input, Expected, Message } = cases[i];\r\n let output;\r\n try {\r\n output = deepClone(Input);\r\n assert.deepEqual(output, Expected);\r\n } catch (error) {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('Input:', JSON.stringify(Input));\r\n console.log('Expected:', JSON.stringify(error.expected));\r\n console.log('Received:', JSON.stringify(output));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n const originInput = _deepClone(Input);\r\n try {\r\n output['1'] = Math.random();\r\n assert.deepEqual(Input, originInput);\r\n } catch (error) {\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n console.log(\r\n 'Mutate Output Expected Input: ',\r\n JSON.stringify(originInput)\r\n );\r\n console.log('Input: ', JSON.stringify(Input));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 通过');\r\n }\r\n})();\r\n"
+ },
+ "unique": {
+ "answer": "export default function unique(arr) {\n return [...new Set(arr)];\r\n}\r\n",
+ "introduce": "## Unique\n\n数组去重\n\n用例 1:\n\n```js\nconst arr = [1, 2, 3];\nconst uniqueArr = unique(arr1);\n\nconsole.log(uniqueArr); // [1, 2, 3]\n```\n\n用例 2:\n\n```js\nconst arr = [1, 2, 3, 3, 3];\nconst uniqueArr = unique(arr);\n\nconsole.log(uniqueArr); // [1, 2, 3]\n```\n",
+ "desc": "数组去重",
+ "index": "export default function unique(arr) {\n return [];\r\n}\r\n",
+ "test": "import assert from 'assert';\nimport unique from './index.mjs';\r\n\r\nconst cases = [\r\n {\r\n Input: [1, 2, 3],\r\n Expected: [1, 2, 3],\r\n Message: '无重复数字',\r\n },\r\n {\r\n Input: [1, 2, 3, 3],\r\n Expected: [1, 2, 3],\r\n Message: '单个重复数字',\r\n },\r\n {\r\n Input: [1, 1, 2, 2, 2, 3, 3],\r\n Expected: [1, 2, 3],\r\n Message: '多个重复数字',\r\n },\r\n];\r\n\r\n(function () {\r\n for (let i = 0; i < cases.length; i++) {\r\n const { Input, Expected, Message } = cases[i];\r\n let output;\r\n try {\r\n output = unique(Input);\r\n assert.deepEqual(output, Expected);\r\n } catch (error) {\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 未通过');\r\n if (error.code === 'ERR_ASSERTION') {\r\n console.log('Input:', JSON.stringify(Input));\r\n console.log('Expected:', JSON.stringify(error.expected));\r\n console.log('Received:', JSON.stringify(output));\r\n } else {\r\n console.log(error);\r\n }\r\n break;\r\n }\r\n console.log('用例 ' + String(i + 1) + ': ' + Message + ' 通过');\r\n }\r\n})();\r\n"
+ }
+}
diff --git a/server/src/service/question.ts b/server/src/service/question.ts
index 5670496..0a539ea 100644
--- a/server/src/service/question.ts
+++ b/server/src/service/question.ts
@@ -22,6 +22,7 @@ interface Question {
answer: string;
test: string;
name?: string;
+ desc: string;
}
function formatOutput(outputString: string): string {