plan for ssg
This commit is contained in:
1 parent
a8867be72c
commit
fb69b2710f
73 files changed
+921
-718
No files matched your search
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">天地玄黃,宇宙洪荒。</h3>
|
<h3 class="text-center">天地玄黃,宇宙洪荒。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">huang1</figcaption>
|
<figcaption class="text-center">huang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">日月盈昃,辰宿列張。</h3>
|
<h3 class="text-center">日月盈昃,辰宿列張。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">zhang1</figcaption>
|
<figcaption class="text-center">zhang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,7 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">寒來暑往,秋收冬藏。</h3>
|
<h3 class="text-center">寒來暑往,秋收冬藏。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">cang2</figcaption>
|
<figcaption class="text-center">cang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,7 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">閏餘成歲,律呂調陽。</h3>
|
<h3 class="text-center">閏餘成歲,律呂調陽。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">yang2</figcaption>
|
<figcaption class="text-center">yang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">雲騰致雨,露結為霜。</h3>
|
<h3 class="text-center">雲騰致雨,露結為霜。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">shuang1</figcaption>
|
<figcaption class="text-center">shuang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">金生麗水,玉出崑岡。</h3>
|
<h3 class="text-center">金生麗水,玉出崑岡。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">gang1</figcaption>
|
<figcaption class="text-center">gang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">劍號巨闕,珠稱夜光。</h3>
|
<h3 class="text-center">劍號巨闕,珠稱夜光。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">guang1</figcaption>
|
<figcaption class="text-center">guang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">果珍李柰,菜重芥薑。</h3>
|
<h3 class="text-center">果珍李柰,菜重芥薑。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">jiang1</figcaption>
|
<figcaption class="text-center">jiang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">海咸河淡,鱗潛羽翔。</h3>
|
<h3 class="text-center">海咸河淡,鱗潛羽翔。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">xiang2</figcaption>
|
<figcaption class="text-center">xiang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">龍師火帝,鳥官人皇。</h3>
|
<h3 class="text-center">龍師火帝,鳥官人皇。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">huang1</figcaption>
|
<figcaption class="text-center">huang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<!-- excerpt_separator -->
|
<!-- excerpt_separator -->
|
||||||
|
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">始制文字,乃服衣裳。</h3>
|
<h3 class="text-center">始制文字,乃服衣裳。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">chang2</figcaption>
|
<figcaption class="text-center">chang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">推位讓國,有虞陶唐。</h3>
|
<h3 class="text-center">推位讓國,有虞陶唐。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">tang2</figcaption>
|
<figcaption class="text-center">tang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">弔民伐罪,周發殷湯。</h3>
|
<h3 class="text-center">弔民伐罪,周發殷湯。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">tang1</figcaption>
|
<figcaption class="text-center">tang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">坐朝問道,垂拱平章。</h3>
|
<h3 class="text-center">坐朝問道,垂拱平章。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">zhang1</figcaption>
|
<figcaption class="text-center">zhang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">愛育黎首,臣伏戎羌。</h3>
|
<h3 class="text-center">愛育黎首,臣伏戎羌。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">qiang1</figcaption>
|
<figcaption class="text-center">qiang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">遐邇一體,率賓歸王。</h3>
|
<h3 class="text-center">遐邇一體,率賓歸王。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">wang2</figcaption>
|
<figcaption class="text-center">wang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">鳴鳳在竹,白駒食場。</h3>
|
<h3 class="text-center">鳴鳳在竹,白駒食場。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">chang2</figcaption>
|
<figcaption class="text-center">chang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,7 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">化被草木,賴及萬方。</h3>
|
<h3 class="text-center">化被草木,賴及萬方。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">fang1</figcaption>
|
<figcaption class="text-center">fang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">蓋此身髮,四大五常。</h3>
|
<h3 class="text-center">蓋此身髮,四大五常。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">chang2</figcaption>
|
<figcaption class="text-center">chang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">恭惟鞠養,豈敢毀傷。</h3>
|
<h3 class="text-center">恭惟鞠養,豈敢毀傷。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">shang1</figcaption>
|
<figcaption class="text-center">shang1</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -6,6 +6,7 @@ tag:
|
|||||||
- 汉字
|
- 汉字
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<center>
|
||||||
<div class="w-100 mt-3">
|
<div class="w-100 mt-3">
|
||||||
<h3 class="text-center">女慕貞絜,男效才良。</h3>
|
<h3 class="text-center">女慕貞絜,男效才良。</h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,6 +46,7 @@ tag:
|
|||||||
<figcaption class="text-center">liang2</figcaption>
|
<figcaption class="text-center">liang2</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
</center>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
img[height="100"] {
|
img[height="100"] {
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"presets": ["@babel/preset-typescript"],
|
||||||
|
"plugins": [
|
||||||
|
"@babel/plugin-proposal-class-properties",
|
||||||
|
"@babel/plugin-transform-object-assign",
|
||||||
|
"@babel/plugin-proposal-object-rest-spread"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# This file specifies files that are *not* uploaded to Google Cloud Platform
|
|
||||||
# using gcloud. It follows the same syntax as .gitignore, with the addition of
|
|
||||||
# "#!include" directives (which insert the entries of the given .gitignore-style
|
|
||||||
# file at that point).
|
|
||||||
#
|
|
||||||
# For more information, run:
|
|
||||||
# $ gcloud topic gcloudignore
|
|
||||||
#
|
|
||||||
.gcloudignore
|
|
||||||
# If you would like to upload your .git directory, .gitignore file or files
|
|
||||||
# from your .gitignore file, remove the corresponding line
|
|
||||||
# below:
|
|
||||||
.git
|
|
||||||
.gitignore
|
|
||||||
|
|
||||||
# Node.js dependencies:
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
/scripts/
|
|
||||||
@@ -89,5 +89,6 @@ sw.*
|
|||||||
# Vim swap files
|
# Vim swap files
|
||||||
*.swp
|
*.swp
|
||||||
|
|
||||||
/built/
|
/build/
|
||||||
/static/media/
|
/static/media/
|
||||||
|
/*-dist/
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
server/
|
||||||
|
scripts/
|
||||||
|
lambda/
|
||||||
|
lambda-dist/
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
runtime: nodejs12
|
|
||||||
|
|
||||||
instance_class: F2
|
|
||||||
|
|
||||||
handlers:
|
|
||||||
- url: /_nuxt
|
|
||||||
static_dir: .nuxt/dist/client
|
|
||||||
secure: always
|
|
||||||
|
|
||||||
- url: /(.*\.(gif|png|jpg|ico|txt))$
|
|
||||||
static_files: static/\1
|
|
||||||
upload: static/.*\.(gif|png|jpg|ico|txt)$
|
|
||||||
secure: always
|
|
||||||
|
|
||||||
- url: /.*
|
|
||||||
script: auto
|
|
||||||
secure: always
|
|
||||||
|
|
||||||
env_variables:
|
|
||||||
HOST: '0.0.0.0'
|
|
||||||
+1
-1
@@ -2,5 +2,5 @@ interface IPostTeaser {
|
|||||||
title: string
|
title: string
|
||||||
path: string
|
path: string
|
||||||
date?: string
|
date?: string
|
||||||
excerpt: string
|
excerptHtml: string
|
||||||
}
|
}
|
||||||
@@ -51,13 +51,18 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Vue, Component, Prop } from 'nuxt-property-decorator'
|
import { Vue, Component, Prop, Watch } from 'nuxt-property-decorator'
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
export default class PostQuery extends Vue {
|
export default class PostQuery extends Vue {
|
||||||
@Prop({ required: true }) posts!: IPostTeaser[]
|
@Prop({ required: true }) posts!: IPostTeaser[]
|
||||||
@Prop({ required: true }) count!: number
|
@Prop({ required: true }) count!: number
|
||||||
|
|
||||||
|
readonly defaults = {
|
||||||
|
posts: this.posts,
|
||||||
|
count: this.count,
|
||||||
|
}
|
||||||
|
|
||||||
get page() {
|
get page() {
|
||||||
return parseInt((this.$route.query.page as string) || '1')
|
return parseInt((this.$route.query.page as string) || '1')
|
||||||
}
|
}
|
||||||
@@ -66,14 +71,45 @@ export default class PostQuery extends Vue {
|
|||||||
return Math.ceil(this.count / 5)
|
return Math.ceil(this.count / 5)
|
||||||
}
|
}
|
||||||
|
|
||||||
makePageUrl(page: number) {
|
makePageUrl(p: number) {
|
||||||
|
let path = this.$route.path
|
||||||
|
if (!(path.startsWith('/tag') || path.startsWith('/blog'))) {
|
||||||
|
path = '/blog'
|
||||||
|
}
|
||||||
|
|
||||||
|
path = path.replace(/\d+$/, '').replace(/\/$/, '')
|
||||||
|
if (p > 1) {
|
||||||
|
path = path + '/' + p
|
||||||
|
}
|
||||||
|
|
||||||
return this.$router.resolve({
|
return this.$router.resolve({
|
||||||
path: this.$route.path,
|
path,
|
||||||
query: {
|
query: this.$route.query,
|
||||||
...this.$route.query,
|
|
||||||
page: page.toString(),
|
|
||||||
},
|
|
||||||
}).href
|
}).href
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Watch('$route.params.page')
|
||||||
|
@Watch('$route.params.tag')
|
||||||
|
async updatePosts() {
|
||||||
|
if (this.$route.query.q) {
|
||||||
|
const ps = await this.$axios.$post(
|
||||||
|
'/.netlify/functions/search',
|
||||||
|
undefined,
|
||||||
|
{
|
||||||
|
params: {
|
||||||
|
q: this.$route.query.q,
|
||||||
|
page: this.$route.params.page,
|
||||||
|
tag: this.$route.params.tag,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
this.count = ps.count
|
||||||
|
this.$set(this, 'posts', ps.result)
|
||||||
|
} else {
|
||||||
|
this.count = this.defaults.count
|
||||||
|
this.$set(this, 'posts', this.defaults.posts)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<section>
|
||||||
<h2>
|
<h2>
|
||||||
<nuxt-link :to="'post/' + post.path">
|
<nuxt-link :to="'/post/' + post.path">
|
||||||
{{ post.title }}
|
{{ post.title }}
|
||||||
</nuxt-link>
|
</nuxt-link>
|
||||||
</h2>
|
</h2>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
<article v-html="post.excerpt"></article>
|
<article v-html="post.excerptHtml"></article>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
import { Handler } from 'aws-lambda'
|
||||||
|
import lunr, { Index } from 'lunr'
|
||||||
|
|
||||||
|
import idxJson from '../build/idx.json'
|
||||||
|
import { dbPost, initDatabase } from '../server/db'
|
||||||
|
|
||||||
|
let idx: Index
|
||||||
|
|
||||||
|
export const handler: Handler = async (evt) => {
|
||||||
|
const { q = '', tag, page: _page = '1' } = evt.queryStringParameters || {}
|
||||||
|
const perPage = 5
|
||||||
|
const offset = (parseInt(_page) - 1) * perPage
|
||||||
|
|
||||||
|
idx = idx || lunr.Index.load(idxJson)
|
||||||
|
await initDatabase()
|
||||||
|
|
||||||
|
let cond = dbPost.chain()
|
||||||
|
|
||||||
|
if (q) {
|
||||||
|
cond = cond.find({
|
||||||
|
path: { $in: idx.search(q).map(({ ref }) => ref) },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tag) {
|
||||||
|
cond = cond.find({
|
||||||
|
tag: { $contains: tag },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const count = cond.branch().count()
|
||||||
|
const result = cond
|
||||||
|
.offset(offset)
|
||||||
|
.limit(5)
|
||||||
|
.data()
|
||||||
|
.map(({ title, path, date, excerptHtml }) => ({
|
||||||
|
title,
|
||||||
|
path,
|
||||||
|
date,
|
||||||
|
excerptHtml,
|
||||||
|
}))
|
||||||
|
|
||||||
|
return {
|
||||||
|
statusCode: 200,
|
||||||
|
body: JSON.stringify({
|
||||||
|
count,
|
||||||
|
result,
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[build]
|
||||||
|
functions = "lambda-dist"
|
||||||
|
publish = "dist"
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
import { NuxtConfig } from '@nuxt/types'
|
import { NuxtConfig } from '@nuxt/types'
|
||||||
|
|
||||||
|
import { SERVER_PORT, runServer } from './server/cli'
|
||||||
import { getTheme } from './server/theme'
|
import { getTheme } from './server/theme'
|
||||||
|
|
||||||
const config = async (): Promise<NuxtConfig> => {
|
const config = async (): Promise<NuxtConfig> => {
|
||||||
|
await runServer()
|
||||||
const theme = getTheme()
|
const theme = getTheme()
|
||||||
const PORT = process.env.PORT || '3000'
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
// Global page headers (https://go.nuxtjs.dev/config-head)
|
// Global page headers (https://go.nuxtjs.dev/config-head)
|
||||||
@@ -55,11 +56,7 @@ const config = async (): Promise<NuxtConfig> => {
|
|||||||
css: [],
|
css: [],
|
||||||
|
|
||||||
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
|
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
|
||||||
plugins: [
|
plugins: ['~/plugins/axios-fix.ts', '~/plugins/format.ts'],
|
||||||
'~/plugins/axios-fix.ts',
|
|
||||||
'~/plugins/format.ts',
|
|
||||||
'~/plugins/remark42.client.js',
|
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components (https://go.nuxtjs.dev/config-components)
|
// Auto import components (https://go.nuxtjs.dev/config-components)
|
||||||
components: true,
|
components: true,
|
||||||
@@ -73,13 +70,35 @@ const config = async (): Promise<NuxtConfig> => {
|
|||||||
// Modules (https://go.nuxtjs.dev/config-modules)
|
// Modules (https://go.nuxtjs.dev/config-modules)
|
||||||
modules: ['@nuxtjs/axios'],
|
modules: ['@nuxtjs/axios'],
|
||||||
|
|
||||||
|
axios: {
|
||||||
|
proxy: true,
|
||||||
|
},
|
||||||
|
proxy: {
|
||||||
|
'/.netlify/functions': 'http://localhost:9000',
|
||||||
|
'/api': `http://localhost:${SERVER_PORT}`,
|
||||||
|
},
|
||||||
|
|
||||||
// Build Configuration (https://go.nuxtjs.dev/config-build)
|
// Build Configuration (https://go.nuxtjs.dev/config-build)
|
||||||
build: {},
|
build: {},
|
||||||
env: {
|
env: {
|
||||||
THEME: JSON.stringify(theme),
|
THEME: JSON.stringify(theme),
|
||||||
PORT,
|
SERVER_PORT: SERVER_PORT.toString(),
|
||||||
|
},
|
||||||
|
hooks: {
|
||||||
|
generate: {
|
||||||
|
done() {
|
||||||
|
/**
|
||||||
|
* Do not kill
|
||||||
|
*/
|
||||||
|
// try {
|
||||||
|
// execSync(
|
||||||
|
// `lsof -i tcp:${SERVER_PORT} | grep LISTEN | awk '{print $2}' | xargs kill -9`
|
||||||
|
// )
|
||||||
|
// } catch (_) {}
|
||||||
|
process.exit(0)
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
serverMiddleware: [{ path: '/api', handler: '~/server/index.ts' }],
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,42 +3,53 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nuxt-ts",
|
|
||||||
"build": "nuxt-ts build",
|
|
||||||
"start": "nuxt-ts start",
|
"start": "nuxt-ts start",
|
||||||
"generate": "nuxt-ts generate",
|
"generate": "nuxt-ts generate",
|
||||||
"lint:js": "eslint --ext .ts,.js,.vue --ignore-path .gitignore .",
|
"lint": "eslint --ext .ts,.js,.vue --ignore-path .gitignore .",
|
||||||
"lint": "yarn lint:js",
|
|
||||||
"ts": "ts-node -O '{\"module\":\"commonjs\"}'",
|
"ts": "ts-node -O '{\"module\":\"commonjs\"}'",
|
||||||
"ts:prepare": "yarn ts scripts/prepare.ts",
|
"db:make": "yarn ts scripts/make.ts",
|
||||||
"predeploy": "yarn build",
|
"dev": "run-p 'dev:**'",
|
||||||
"deploy": "gcloud app deploy"
|
"dev:nuxt": "nuxt-ts",
|
||||||
|
"dev:lambda": "netlify-lambda serve lambda",
|
||||||
|
"prebuild": "yarn db:make",
|
||||||
|
"build": "run-p 'build:**'",
|
||||||
|
"build:nuxt": "nuxt-ts generate",
|
||||||
|
"build:lambda": "netlify-lambda build lambda",
|
||||||
|
"postinstall": "netlify-lambda install"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nuxt/typescript-runtime": "^2.0.0",
|
"@nuxt/typescript-runtime": "^2.0.0",
|
||||||
"@nuxtjs/axios": "^5.12.4",
|
"@nuxtjs/axios": "^5.12.4",
|
||||||
"@patarapolw/scope-css": "^1.3.0",
|
"@patarapolw/scope-css": "^1.3.0",
|
||||||
|
"@types/aws-lambda": "^8.10.66",
|
||||||
"@types/express": "^4.17.9",
|
"@types/express": "^4.17.9",
|
||||||
"@types/js-yaml": "^3.12.5",
|
"@types/js-yaml": "^3.12.5",
|
||||||
|
"@types/lokijs": "^1.5.3",
|
||||||
|
"@types/lunr": "^2.3.3",
|
||||||
"@types/morgan": "^1.9.2",
|
"@types/morgan": "^1.9.2",
|
||||||
"better-sqlite3": "^7.1.1",
|
|
||||||
"cheerio": "^1.0.0-rc.3",
|
"cheerio": "^1.0.0-rc.3",
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"js-yaml": "^3.14.1",
|
"js-yaml": "^3.14.1",
|
||||||
|
"lokijs": "^1.5.11",
|
||||||
|
"lunr": "^2.3.9",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
|
"netlify-lambda": "^2.0.2",
|
||||||
"nuxt": "^2.14.6",
|
"nuxt": "^2.14.6",
|
||||||
"nuxt-property-decorator": "^2.8.8",
|
"nuxt-property-decorator": "^2.8.8",
|
||||||
"showdown": "^1.9.1",
|
"showdown": "^1.9.1",
|
||||||
"zod": "^1.11.11"
|
"zod": "^1.11.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
||||||
|
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
|
||||||
|
"@babel/plugin-transform-object-assign": "^7.12.1",
|
||||||
|
"@babel/preset-typescript": "^7.12.1",
|
||||||
"@nuxt/types": "^2.14.6",
|
"@nuxt/types": "^2.14.6",
|
||||||
"@nuxt/typescript-build": "^2.0.3",
|
"@nuxt/typescript-build": "^2.0.3",
|
||||||
"@nuxtjs/eslint-config": "^3.1.0",
|
"@nuxtjs/eslint-config": "^3.1.0",
|
||||||
"@nuxtjs/eslint-config-typescript": "^3.0.0",
|
"@nuxtjs/eslint-config-typescript": "^3.0.0",
|
||||||
"@nuxtjs/eslint-module": "^2.0.0",
|
"@nuxtjs/eslint-module": "^2.0.0",
|
||||||
"@types/better-sqlite3": "^5.4.1",
|
|
||||||
"@types/cheerio": "^0.22.23",
|
"@types/cheerio": "^0.22.23",
|
||||||
"@types/ejs": "^3.0.5",
|
"@types/ejs": "^3.0.5",
|
||||||
"@types/fs-extra": "^9.0.5",
|
"@types/fs-extra": "^9.0.5",
|
||||||
@@ -53,6 +64,7 @@
|
|||||||
"eslint-plugin-prettier": "^3.1.4",
|
"eslint-plugin-prettier": "^3.1.4",
|
||||||
"import-sort-parser-typescript": "^6.0.0",
|
"import-sort-parser-typescript": "^6.0.0",
|
||||||
"nodejieba": "^2.5.1",
|
"nodejieba": "^2.5.1",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
"prettier": "^2.1.2",
|
"prettier": "^2.1.2",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^9.1.1",
|
||||||
"typescript": "4.0.5"
|
"typescript": "4.0.5"
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
<template>
|
|
||||||
<p v-if="$fetchState.pending"></p>
|
|
||||||
<p v-else-if="$fetchState.error">
|
|
||||||
An error occurred {{ $fetchState.error.message }}
|
|
||||||
</p>
|
|
||||||
<p v-else-if="!posts.length">No posts found.</p>
|
|
||||||
<post-query v-else :posts="posts" :count="count" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { Vue, Component } from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
@Component<BlogPage>({
|
|
||||||
watch: {
|
|
||||||
'$route.query.q': '$fetch',
|
|
||||||
'$route.query.page': '$fetch',
|
|
||||||
},
|
|
||||||
async fetch() {
|
|
||||||
const { result, count } = await this.$axios.$get('/api/q', {
|
|
||||||
params: {
|
|
||||||
q: this.$route.query.q,
|
|
||||||
page: this.$route.query.page,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
this.posts = result
|
|
||||||
this.count = count
|
|
||||||
},
|
|
||||||
})
|
|
||||||
export default class BlogPage extends Vue {
|
|
||||||
posts: IPostTeaser[] = []
|
|
||||||
count = 0
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<template>
|
||||||
|
<post-query :posts="posts" :count="count" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Vue, Component } from 'nuxt-property-decorator'
|
||||||
|
|
||||||
|
@Component<BlogPagePaged>({
|
||||||
|
async asyncData({ $axios, params }) {
|
||||||
|
const { result, count } = await $axios.$get('/api/q', {
|
||||||
|
params: {
|
||||||
|
page: params.page,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
posts: result,
|
||||||
|
count,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
export default class BlogPagePaged extends Vue {
|
||||||
|
posts: IPostTeaser[] = []
|
||||||
|
count = 0
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<post-query :posts="posts" :count="count" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Vue, Component } from 'nuxt-property-decorator'
|
||||||
|
|
||||||
|
@Component<BlogPage>({
|
||||||
|
async asyncData({ $axios }) {
|
||||||
|
const { result, count } = await $axios.$get('/api/q')
|
||||||
|
|
||||||
|
return {
|
||||||
|
posts: result,
|
||||||
|
count,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
export default class BlogPage extends Vue {
|
||||||
|
posts: IPostTeaser[] = []
|
||||||
|
count = 0
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,9 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<p v-if="$fetchState.pending"></p>
|
<section>
|
||||||
<p v-else-if="$fetchState.error">
|
|
||||||
An error occurred {{ $fetchState.error.message }}
|
|
||||||
</p>
|
|
||||||
<section v-else>
|
|
||||||
<section>
|
<section>
|
||||||
<h2>
|
<h2>
|
||||||
{{ post.title }}
|
{{ post.title }}
|
||||||
@@ -29,7 +25,7 @@
|
|||||||
</small>
|
</small>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section v-html="post.content"></section>
|
<section v-html="post.contentHtml"></section>
|
||||||
|
|
||||||
<section class="tags-container">
|
<section class="tags-container">
|
||||||
<span>Tags:</span>
|
<span>Tags:</span>
|
||||||
@@ -52,14 +48,16 @@ import { THEME } from '~/assets/global'
|
|||||||
import '~/assets/remark42'
|
import '~/assets/remark42'
|
||||||
|
|
||||||
@Component<PostPage>({
|
@Component<PostPage>({
|
||||||
async fetch() {
|
async asyncData({ $axios, params }) {
|
||||||
const r = await this.$axios.$get('/api', {
|
const r = await $axios.$get('/api', {
|
||||||
params: {
|
params: {
|
||||||
path: this.$route.params.pathMatch,
|
path: params.pathMatch,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
this.post = r
|
return {
|
||||||
|
post: r,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initRemark42()
|
this.initRemark42()
|
||||||
@@ -76,7 +74,7 @@ export default class PostPage extends Vue {
|
|||||||
title: string
|
title: string
|
||||||
image?: string
|
image?: string
|
||||||
tag?: string[]
|
tag?: string[]
|
||||||
category?: string
|
category?: string[]
|
||||||
content: string
|
content: string
|
||||||
} | null = null
|
} | null = null
|
||||||
|
|
||||||
@@ -85,7 +83,7 @@ export default class PostPage extends Vue {
|
|||||||
remark42settings = THEME.comment?.remark42 || null
|
remark42settings = THEME.comment?.remark42 || null
|
||||||
remark42Instance: any = null
|
remark42Instance: any = null
|
||||||
|
|
||||||
@Watch('$fetchState.pending')
|
@Watch('$route.params.pathMatch')
|
||||||
initRemark42() {
|
initRemark42() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (
|
if (
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
<template>
|
|
||||||
<p v-if="$fetchState.pending"></p>
|
|
||||||
<p v-else-if="$fetchState.error">An error occurred {{ $fetchState.error }}</p>
|
|
||||||
<post-query v-else :posts="posts" :count="count" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { Vue, Component } from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
@Component<TagPage>({
|
|
||||||
watch: {
|
|
||||||
'$route.query.q': '$fetch',
|
|
||||||
'$route.query.page': '$fetch',
|
|
||||||
},
|
|
||||||
async fetch() {
|
|
||||||
const { result, count } = await this.$axios.$get('/api/q', {
|
|
||||||
params: {
|
|
||||||
q: this.$route.query.q,
|
|
||||||
page: this.$route.query.page,
|
|
||||||
tag: this.$route.params.tag,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
this.posts = result
|
|
||||||
this.count = count
|
|
||||||
},
|
|
||||||
})
|
|
||||||
export default class TagPage extends Vue {
|
|
||||||
posts: IPostTeaser[] = []
|
|
||||||
count = 0
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<post-query :posts="posts" :count="count" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Vue, Component } from 'nuxt-property-decorator'
|
||||||
|
|
||||||
|
@Component<TagPagePaged>({
|
||||||
|
async asyncData({ $axios, params }) {
|
||||||
|
const { result, count } = await $axios.$get('/api/q', {
|
||||||
|
params: {
|
||||||
|
page: params.page,
|
||||||
|
tag: params.tag,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
posts: result,
|
||||||
|
count,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
export default class TagPagePaged extends Vue {
|
||||||
|
posts: IPostTeaser[] = []
|
||||||
|
count = 0
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<template>
|
||||||
|
<post-query :posts="posts" :count="count" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Vue, Component } from 'nuxt-property-decorator'
|
||||||
|
|
||||||
|
@Component<TagPage>({
|
||||||
|
async asyncData({ $axios, params }) {
|
||||||
|
const { result, count } = await $axios.$get('/api/q', {
|
||||||
|
params: {
|
||||||
|
tag: params.tag,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
posts: result,
|
||||||
|
count,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
export default class TagPage extends Vue {
|
||||||
|
posts: IPostTeaser[] = []
|
||||||
|
count = 0
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
Vue.filter('formatDate', (s: string) => {
|
Vue.filter('formatDate', (s?: string | number) => {
|
||||||
return s
|
return s
|
||||||
? new Date(s).toLocaleDateString([], {
|
? new Date(s).toLocaleDateString([], {
|
||||||
year: 'numeric',
|
year: 'numeric',
|
||||||
|
|||||||
Whitespace-only changes.
@@ -10,10 +10,10 @@ dotenv.config()
|
|||||||
|
|
||||||
export const CONTENT_PATH = path.resolve(
|
export const CONTENT_PATH = path.resolve(
|
||||||
process.env.CONTENT_PATH ||
|
process.env.CONTENT_PATH ||
|
||||||
(fs.existsSync('../../_posts') ? '../..' : 'content')
|
(fs.existsSync('../../_post') ? '../..' : 'content')
|
||||||
)
|
)
|
||||||
|
|
||||||
export const srcPath = (
|
export const srcPath = (
|
||||||
root: '_posts' | '_media' | typeof THEME_FILENAME,
|
root: '_post' | '_media' | typeof THEME_FILENAME,
|
||||||
...ps: string[]
|
...ps: string[]
|
||||||
): string => path.join(CONTENT_PATH, root, ...ps)
|
): string => path.join(CONTENT_PATH, root, ...ps)
|
||||||
@@ -3,10 +3,9 @@ import crypto from 'crypto'
|
|||||||
import scopeCss from '@patarapolw/scope-css'
|
import scopeCss from '@patarapolw/scope-css'
|
||||||
import cheerio from 'cheerio'
|
import cheerio from 'cheerio'
|
||||||
import ejs from 'ejs'
|
import ejs from 'ejs'
|
||||||
import jieba from 'nodejieba'
|
|
||||||
import showdown from 'showdown'
|
import showdown from 'showdown'
|
||||||
|
|
||||||
export class MakeHTML {
|
export class MakeHtml {
|
||||||
$ = cheerio.load('')
|
$ = cheerio.load('')
|
||||||
|
|
||||||
mdConverter = new showdown.Converter({
|
mdConverter = new showdown.Converter({
|
||||||
@@ -18,7 +17,7 @@ export class MakeHTML {
|
|||||||
tables: true,
|
tables: true,
|
||||||
tasklists: true,
|
tasklists: true,
|
||||||
// simpleLineBreaks: true,
|
// simpleLineBreaks: true,
|
||||||
openLinksInNewWindow: true,
|
// openLinksInNewWindow: true,
|
||||||
backslashEscapesHTMLTags: true,
|
backslashEscapesHTMLTags: true,
|
||||||
emoji: true,
|
emoji: true,
|
||||||
underline: true,
|
underline: true,
|
||||||
@@ -72,9 +71,8 @@ export class MakeHTML {
|
|||||||
async parse(
|
async parse(
|
||||||
filename: string
|
filename: string
|
||||||
): Promise<{
|
): Promise<{
|
||||||
$: cheerio.Cheerio
|
html: string
|
||||||
html(): string
|
text: string
|
||||||
clean(): string
|
|
||||||
}> {
|
}> {
|
||||||
const id =
|
const id =
|
||||||
'md-' +
|
'md-' +
|
||||||
@@ -87,6 +85,7 @@ export class MakeHTML {
|
|||||||
|
|
||||||
const $div = this.$(`<div id="${id}">`)
|
const $div = this.$(`<div id="${id}">`)
|
||||||
$div.html(await this.getHTML(filename))
|
$div.html(await this.getHTML(filename))
|
||||||
|
|
||||||
$div.find('style').each((_, el) => {
|
$div.find('style').each((_, el) => {
|
||||||
const $el = this.$(el)
|
const $el = this.$(el)
|
||||||
const html = $el.html() || ''
|
const html = $el.html() || ''
|
||||||
@@ -95,14 +94,21 @@ export class MakeHTML {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$div.find('a').each((_, el) => {
|
||||||
|
const $el = this.$(el)
|
||||||
|
const href = $el.attr('href') || ''
|
||||||
|
|
||||||
|
if (/^https?:\/\//.test(href)) {
|
||||||
|
$el.attr({
|
||||||
|
rel: 'noopener',
|
||||||
|
target: '_blank',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
$: $div,
|
html: this.$('<div>').append($div).html() || '',
|
||||||
html: () => {
|
text: $div.text(),
|
||||||
return this.$('<div>').append($div).html() || ''
|
|
||||||
},
|
|
||||||
clean: () => {
|
|
||||||
return jieba.cutForSearch($div.text() || '').join(' ')
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
import fg from 'fast-glob'
|
||||||
|
import fs from 'fs-extra'
|
||||||
|
import yaml from 'js-yaml'
|
||||||
|
import lunr from 'lunr'
|
||||||
|
import jieba from 'nodejieba'
|
||||||
|
import rimraf from 'rimraf'
|
||||||
|
|
||||||
|
import { IPost, db, dbPost, initDatabase, zMatter, zPost } from '../server/db'
|
||||||
|
import { buildPath, dstMediaPath } from '../server/dir'
|
||||||
|
import { THEME_FILENAME } from '../server/theme'
|
||||||
|
import { srcPath } from './dir'
|
||||||
|
import { MakeHtml } from './make-html'
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
rimraf.sync(dstMediaPath())
|
||||||
|
rimraf.sync(buildPath())
|
||||||
|
|
||||||
|
await fs.copy(srcPath('_media'), dstMediaPath()).catch((e) => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.error(e)
|
||||||
|
})
|
||||||
|
await fs.ensureDir(buildPath())
|
||||||
|
|
||||||
|
await fs.copyFile(srcPath(THEME_FILENAME), buildPath(THEME_FILENAME))
|
||||||
|
|
||||||
|
const files = await fg('**/*.md', {
|
||||||
|
cwd: srcPath('_post'),
|
||||||
|
})
|
||||||
|
|
||||||
|
const makeHtml = new MakeHtml()
|
||||||
|
const rawJson: IPost[] = []
|
||||||
|
|
||||||
|
await initDatabase()
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
files.map(async (f) => {
|
||||||
|
const header = zMatter.parse(
|
||||||
|
yaml.safeLoad(
|
||||||
|
fs.readFileSync(srcPath('_post', f), 'utf-8').split(/\n---\n/)[0]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
const { html, text } = await makeHtml.parse(srcPath('_post', f))
|
||||||
|
|
||||||
|
const p: IPost = {
|
||||||
|
...header,
|
||||||
|
date: header.date ? header.date.getTime() : undefined,
|
||||||
|
createdAt: header.createdAt ? header.createdAt.getTime() : undefined,
|
||||||
|
updatedAt: header.updatedAt ? header.updatedAt.getTime() : undefined,
|
||||||
|
path: f.replace(/\.mdx?$/, ''),
|
||||||
|
excerptHtml: html.split(/<!-- excerpt(?:_separator)? -->/)[0],
|
||||||
|
contentHtml: html,
|
||||||
|
content: text,
|
||||||
|
}
|
||||||
|
|
||||||
|
dbPost.insert(zPost.parse(p))
|
||||||
|
rawJson.push({
|
||||||
|
...p,
|
||||||
|
content: jieba.cutForSearch(p.content).join(' '),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
db.save()
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
buildPath('idx.json'),
|
||||||
|
JSON.stringify(
|
||||||
|
lunr(function () {
|
||||||
|
this.ref('path')
|
||||||
|
this.field('title', { boost: 5 })
|
||||||
|
this.field('tag', { boost: 5 })
|
||||||
|
this.field('category', { boost: 5 })
|
||||||
|
this.field('content')
|
||||||
|
|
||||||
|
rawJson.map((doc) => {
|
||||||
|
return this.add(doc)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
main()
|
||||||
|
}
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
import fg from 'fast-glob'
|
|
||||||
import fs from 'fs-extra'
|
|
||||||
import yaml from 'js-yaml'
|
|
||||||
import rimraf from 'rimraf'
|
|
||||||
|
|
||||||
import { Database, IMatter } from '../server/db'
|
|
||||||
import { builtPath, dstMediaPath } from '../server/dir'
|
|
||||||
import { THEME_FILENAME } from '../server/theme'
|
|
||||||
import { srcPath } from './dir'
|
|
||||||
import { MakeHTML } from './make-html'
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
rimraf.sync(dstMediaPath())
|
|
||||||
rimraf.sync(builtPath())
|
|
||||||
|
|
||||||
await fs.copy(srcPath('_media'), dstMediaPath())
|
|
||||||
await fs.ensureDir(builtPath())
|
|
||||||
|
|
||||||
await fs.copyFile(srcPath(THEME_FILENAME), builtPath(THEME_FILENAME))
|
|
||||||
|
|
||||||
const db = new Database()
|
|
||||||
db.init()
|
|
||||||
|
|
||||||
const files = await fg('**/*.md', {
|
|
||||||
cwd: srcPath('_posts'),
|
|
||||||
})
|
|
||||||
|
|
||||||
const makeHtml = new MakeHTML()
|
|
||||||
|
|
||||||
await Promise.all(
|
|
||||||
files.map(async (f) => {
|
|
||||||
const path = f.replace(/\.md$/, '')
|
|
||||||
const markdown = fs.readFileSync(srcPath('_posts', f), 'utf8')
|
|
||||||
|
|
||||||
const [h] = markdown.substr(4).split(/---\n(.*)$/s)
|
|
||||||
const header = yaml.safeLoad(h) as IMatter
|
|
||||||
|
|
||||||
const r = await makeHtml.parse(srcPath('_posts', f))
|
|
||||||
const contentHtml = r.html()
|
|
||||||
const excerptHtml = contentHtml.split(
|
|
||||||
/<!-- excerpt(?:_separator)? -->/
|
|
||||||
)[0]
|
|
||||||
|
|
||||||
db.insert({
|
|
||||||
...header,
|
|
||||||
path,
|
|
||||||
content: r.clean(),
|
|
||||||
excerptHtml,
|
|
||||||
contentHtml,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (require.main === module) {
|
|
||||||
main()
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
import http from 'http'
|
||||||
|
|
||||||
|
import express from 'express'
|
||||||
|
import lunr from 'lunr'
|
||||||
|
import morgan from 'morgan'
|
||||||
|
import * as z from 'zod'
|
||||||
|
|
||||||
|
import idxJson from '../build/idx.json'
|
||||||
|
import { dbPost, initDatabase } from './db'
|
||||||
|
|
||||||
|
export const SERVER_PORT = 5000
|
||||||
|
|
||||||
|
export async function runServer() {
|
||||||
|
await initDatabase()
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
app.use(morgan('common'))
|
||||||
|
|
||||||
|
const router = express.Router()
|
||||||
|
app.use('/api', router)
|
||||||
|
|
||||||
|
const idx = lunr.Index.load(idxJson)
|
||||||
|
|
||||||
|
router.get('/', (req, res) => {
|
||||||
|
const { path } = z
|
||||||
|
.object({
|
||||||
|
path: z.string(),
|
||||||
|
})
|
||||||
|
.parse(req.query)
|
||||||
|
|
||||||
|
const r = dbPost.findOne({ path })
|
||||||
|
if (!r) {
|
||||||
|
res.sendStatus(404)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(r)
|
||||||
|
})
|
||||||
|
|
||||||
|
router.get('/q', (req, res) => {
|
||||||
|
const { q, tag, page: _page = '1' } = z
|
||||||
|
.object({
|
||||||
|
q: z.string().optional(),
|
||||||
|
tag: z.string().optional(),
|
||||||
|
page: z
|
||||||
|
.string()
|
||||||
|
.refine((s) => /^\d+$/.test(s))
|
||||||
|
.optional(),
|
||||||
|
})
|
||||||
|
.parse(req.query)
|
||||||
|
|
||||||
|
const perPage = 5
|
||||||
|
const offset = (parseInt(_page) - 1) * perPage
|
||||||
|
|
||||||
|
let cond = dbPost.chain().find({
|
||||||
|
date: { $exists: true } as any,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (q) {
|
||||||
|
cond = cond.find({
|
||||||
|
path: { $in: idx.search(q).map(({ ref }) => ref) },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tag) {
|
||||||
|
cond = cond.find({
|
||||||
|
tag: { $contains: tag },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
cond = cond.simplesort('date', { desc: true })
|
||||||
|
|
||||||
|
const count = cond.branch().count()
|
||||||
|
const result = cond.offset(offset).limit(5).data()
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
count,
|
||||||
|
result,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
app.use((err: Error, _: express.Request, res: express.Response) => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.error(err.stack)
|
||||||
|
res.status(500).send(err)
|
||||||
|
})
|
||||||
|
|
||||||
|
await new Promise<http.Server | Error>((resolve) => {
|
||||||
|
const srv = app
|
||||||
|
.listen(SERVER_PORT, () => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.info(
|
||||||
|
`serverMiddleware is running at http://localhost:${SERVER_PORT}`
|
||||||
|
)
|
||||||
|
resolve(srv)
|
||||||
|
})
|
||||||
|
.once('error', (e) => {
|
||||||
|
/**
|
||||||
|
* Nuxt generate will try to spawn two process on the same SERVER_PORT.
|
||||||
|
*
|
||||||
|
* One of which will inevitably fail.
|
||||||
|
*
|
||||||
|
* ! DO NOT reject()
|
||||||
|
*/
|
||||||
|
resolve(e)
|
||||||
|
})
|
||||||
|
.once('close', () => {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.info('serverMiddleware is closing')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
runServer().catch(console.error)
|
||||||
|
}
|
||||||
+58
-251
@@ -1,280 +1,87 @@
|
|||||||
import sqlite3 from 'better-sqlite3'
|
/* eslint-disable import/no-mutable-exports */
|
||||||
|
import Loki, { Collection } from 'lokijs'
|
||||||
import * as z from 'zod'
|
import * as z from 'zod'
|
||||||
|
|
||||||
import { builtPath } from './dir'
|
import { buildPath } from './dir'
|
||||||
|
|
||||||
const zMatter = z.object({
|
const _zMatter = {
|
||||||
date: z.date().optional(),
|
|
||||||
createdAt: z.date().optional(),
|
|
||||||
updatedAt: z.date().optional(),
|
|
||||||
priority: z.number().optional(),
|
priority: z.number().optional(),
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
image: z.string().optional(),
|
image: z.string().optional(),
|
||||||
tag: z.array(z.string()).optional(),
|
tag: z.array(z.string()).optional(),
|
||||||
category: z.string().optional(),
|
category: z.array(z.string()).optional(),
|
||||||
|
}
|
||||||
|
|
||||||
|
export const zMatter = z.object({
|
||||||
|
..._zMatter,
|
||||||
|
date: z.date().optional(),
|
||||||
|
createdAt: z.date().optional(),
|
||||||
|
updatedAt: z.date().optional(),
|
||||||
})
|
})
|
||||||
|
|
||||||
export type IMatter = z.infer<typeof zMatter>
|
export type IMatter = z.infer<typeof zMatter>
|
||||||
|
|
||||||
|
const zMatterSerialized = z.object({
|
||||||
|
..._zMatter,
|
||||||
|
date: z.number().optional(),
|
||||||
|
createdAt: z.number().optional(),
|
||||||
|
updatedAt: z.number().optional(),
|
||||||
|
})
|
||||||
|
|
||||||
|
export type IMatterSerialized = z.infer<typeof zMatterSerialized>
|
||||||
|
|
||||||
export const zPost = z
|
export const zPost = z
|
||||||
.object({
|
.object({
|
||||||
path: z.string(),
|
path: z.string(),
|
||||||
/**
|
|
||||||
* Cleaned and jieba-separated markdown
|
|
||||||
*/
|
|
||||||
content: z.string(),
|
content: z.string(),
|
||||||
excerptHtml: z.string(),
|
excerptHtml: z.string(),
|
||||||
contentHtml: z.string(),
|
contentHtml: z.string(),
|
||||||
})
|
})
|
||||||
.merge(zMatter.nonstrict())
|
.merge(zMatterSerialized)
|
||||||
|
|
||||||
export type IPost = z.infer<typeof zPost>
|
export type IPost = z.infer<typeof zPost>
|
||||||
|
|
||||||
export class Database {
|
export interface IPostSearch {
|
||||||
db: sqlite3.Database
|
path: string
|
||||||
|
title: string
|
||||||
|
tag?: string[]
|
||||||
|
category?: string[]
|
||||||
|
/**
|
||||||
|
* Cleaned and jieba-separated markdown
|
||||||
|
*/
|
||||||
|
content: string
|
||||||
|
}
|
||||||
|
|
||||||
constructor(opts?: sqlite3.Options) {
|
export let db: Loki
|
||||||
this.db = sqlite3(builtPath('data.db'), opts)
|
|
||||||
|
export let dbPost: Collection<IPost>
|
||||||
|
|
||||||
|
export async function initDatabase() {
|
||||||
|
if (db) {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(): void {
|
return new Promise<void>((resolve) => {
|
||||||
this.db.exec(/* sql */ `
|
db = new Loki(buildPath('data.loki'), {
|
||||||
CREATE TABLE IF NOT EXISTS files (
|
autoload: true,
|
||||||
[path] TEXT PRIMARY KEY,
|
autoloadCallback: () => {
|
||||||
[date] INT, -- epoch milli
|
dbPost = db.getCollection('post')
|
||||||
createdAt INT, -- epoch milli
|
if (!dbPost) {
|
||||||
updatedAt INT, -- epoch milli
|
dbPost = db.addCollection('post', {
|
||||||
priority INT,
|
unique: ['path'],
|
||||||
-- q.title
|
indices: [
|
||||||
[image] TEXT,
|
'date',
|
||||||
-- m2o files_tag
|
'createdAt',
|
||||||
-- q.category
|
'updatedAt',
|
||||||
-- q.content
|
'priority',
|
||||||
excerptHtml TEXT NOT NULL,
|
'tag',
|
||||||
contentHtml TEXT NOT NULL
|
'category',
|
||||||
);
|
],
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS files_date ON files([date]);
|
|
||||||
CREATE INDEX IF NOT EXISTS files_createdAt ON files(createdAt);
|
|
||||||
CREATE INDEX IF NOT EXISTS files_updatedAt ON files(updatedAt);
|
|
||||||
CREATE INDEX IF NOT EXISTS files_priority ON files(priority);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS files_tag (
|
|
||||||
[path] TEXT NOT NULL,
|
|
||||||
tag TEXT NOT NULL,
|
|
||||||
PRIMARY KEY ([path], tag)
|
|
||||||
);
|
|
||||||
`)
|
|
||||||
|
|
||||||
this.db.exec(/* sql */ `
|
|
||||||
CREATE VIRTUAL TABLE IF NOT EXISTS q USING fts5 (
|
|
||||||
[path], -- REFERENCES files([path])
|
|
||||||
title,
|
|
||||||
tag, -- space separated
|
|
||||||
category, -- can compare via equal
|
|
||||||
content -- cleaned markdown
|
|
||||||
);
|
|
||||||
`)
|
|
||||||
}
|
|
||||||
|
|
||||||
public insert(...ps: IPost[]): void {
|
|
||||||
const fStmt = this.db.prepare(/* sql */ `
|
|
||||||
INSERT INTO files ([path], [date], [createdAt], [updatedAt], priority, [image], excerptHtml, contentHtml)
|
|
||||||
VALUES (@path, @date, @createdAt, @updatedAt, @priority, @image, @excerptHtml, @contentHtml)
|
|
||||||
`)
|
|
||||||
|
|
||||||
const ftStmt = this.db.prepare(/* sql */ `
|
|
||||||
INSERT INTO files_tag ([path], tag)
|
|
||||||
VALUES (@path, @tag)
|
|
||||||
`)
|
|
||||||
|
|
||||||
const qStmt = this.db.prepare(/* sql */ `
|
|
||||||
INSERT INTO q ([path], title, tag, category, content)
|
|
||||||
VALUES (@path, @title, @tag, @category, @content)
|
|
||||||
`)
|
|
||||||
|
|
||||||
this.db.transaction(() => {
|
|
||||||
// eslint-disable-next-line array-callback-return
|
|
||||||
ps.map((p) => {
|
|
||||||
const {
|
|
||||||
path,
|
|
||||||
date,
|
|
||||||
createdAt,
|
|
||||||
updatedAt,
|
|
||||||
priority,
|
|
||||||
image,
|
|
||||||
excerptHtml,
|
|
||||||
contentHtml,
|
|
||||||
title,
|
|
||||||
tag,
|
|
||||||
category,
|
|
||||||
content,
|
|
||||||
} = zPost.parse(p)
|
|
||||||
|
|
||||||
fStmt.run({
|
|
||||||
path,
|
|
||||||
priority,
|
|
||||||
image,
|
|
||||||
excerptHtml,
|
|
||||||
contentHtml,
|
|
||||||
date: date ? date.getTime() : null,
|
|
||||||
createdAt: createdAt ? createdAt.getTime() : null,
|
|
||||||
updatedAt: updatedAt ? updatedAt.getTime() : null,
|
|
||||||
})
|
|
||||||
|
|
||||||
qStmt.run({
|
|
||||||
path,
|
|
||||||
title,
|
|
||||||
category,
|
|
||||||
content,
|
|
||||||
tag: tag ? tag.join(' ') : undefined,
|
|
||||||
})
|
|
||||||
|
|
||||||
if (tag) {
|
|
||||||
Array.from(new Set(tag)).map((t) => {
|
|
||||||
ftStmt.run({
|
|
||||||
path,
|
|
||||||
tag: t,
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
|
||||||
})()
|
|
||||||
}
|
|
||||||
|
|
||||||
public get(id: string) {
|
resolve()
|
||||||
const r = this.db
|
},
|
||||||
.prepare(
|
|
||||||
/* sql */ `
|
|
||||||
SELECT
|
|
||||||
[date],
|
|
||||||
title,
|
|
||||||
[image],
|
|
||||||
GROUP_CONCAT(ft.tag, ' ') tag,
|
|
||||||
category,
|
|
||||||
contentHtml content
|
|
||||||
FROM files f
|
|
||||||
JOIN q ON q.path = f.path
|
|
||||||
LEFT JOIN files_tag ft ON ft.path = f.path
|
|
||||||
WHERE f.path = @id
|
|
||||||
GROUP BY f.path
|
|
||||||
`
|
|
||||||
)
|
|
||||||
.get({ id })
|
|
||||||
|
|
||||||
if (!r) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
...r,
|
|
||||||
date: r.date ? new Date(r.date) : undefined,
|
|
||||||
tag: r.tag ? r.tag.split(/ /g) : undefined,
|
|
||||||
} as {
|
|
||||||
date?: Date
|
|
||||||
title: string
|
|
||||||
image?: string
|
|
||||||
tag?: string[]
|
|
||||||
category?: string
|
|
||||||
content: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public q(
|
|
||||||
q: string,
|
|
||||||
opts: {
|
|
||||||
offset: number
|
|
||||||
limit: number
|
|
||||||
tag?: string
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
return this._search(q, {
|
|
||||||
...opts,
|
|
||||||
orderedBy: 'RANK',
|
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
|
|
||||||
public by(opts: { tag?: string; offset: number; limit: number }) {
|
|
||||||
return this._search('', {
|
|
||||||
...opts,
|
|
||||||
orderedBy: 'priority DESC, [date] DESC, createdAt DESC, updatedAt DESC',
|
|
||||||
where: ['[date] IS NOT NULL'],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
private _search(
|
|
||||||
q: string,
|
|
||||||
opts: {
|
|
||||||
offset: number
|
|
||||||
limit: number
|
|
||||||
orderedBy: string
|
|
||||||
tag?: string
|
|
||||||
where?: string[]
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
const $where: string[] = []
|
|
||||||
if (q) {
|
|
||||||
$where.push('q = @q')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.tag) {
|
|
||||||
$where.push('ft.tag = @tag')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opts.where) {
|
|
||||||
$where.push(...opts.where)
|
|
||||||
}
|
|
||||||
|
|
||||||
const fromSegment = /* sql */ `
|
|
||||||
FROM files f
|
|
||||||
JOIN q ON q.path = f.path
|
|
||||||
${opts.tag ? `LEFT JOIN files_tag ft ON ft.path = f.path` : ''}
|
|
||||||
WHERE ${$where.join(' AND ') || 'TRUE'}
|
|
||||||
${opts.tag ? 'GROUP BY f.path' : ''}
|
|
||||||
`
|
|
||||||
|
|
||||||
const cond = {
|
|
||||||
q,
|
|
||||||
tag: opts.tag,
|
|
||||||
}
|
|
||||||
|
|
||||||
const count =
|
|
||||||
this.db
|
|
||||||
.prepare(
|
|
||||||
/* sql */ `
|
|
||||||
SELECT COUNT(f.path) [count]
|
|
||||||
${fromSegment}
|
|
||||||
`
|
|
||||||
)
|
|
||||||
.get(cond)?.count || 0
|
|
||||||
|
|
||||||
const result = this.db
|
|
||||||
.prepare(
|
|
||||||
/* sql */ `
|
|
||||||
SELECT
|
|
||||||
f.path [path],
|
|
||||||
[date],
|
|
||||||
title,
|
|
||||||
[image],
|
|
||||||
category,
|
|
||||||
excerptHtml excerpt
|
|
||||||
${fromSegment}
|
|
||||||
ORDER BY ${opts.orderedBy}
|
|
||||||
LIMIT ${opts.limit} OFFSET ${opts.offset}
|
|
||||||
`
|
|
||||||
)
|
|
||||||
.all(cond) as {
|
|
||||||
path: string
|
|
||||||
date?: Date
|
|
||||||
title: string
|
|
||||||
image?: string
|
|
||||||
category?: string
|
|
||||||
excerpt: string
|
|
||||||
}[]
|
|
||||||
|
|
||||||
return {
|
|
||||||
result,
|
|
||||||
count,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
|
||||||
export const builtPath = (...ps: string[]): string =>
|
export const buildPath = (...ps: string[]): string =>
|
||||||
path.join(__dirname, '../built', ...ps)
|
path.join(__dirname, '../build', ...ps)
|
||||||
|
|
||||||
export const dstMediaPath = (...ps: string[]): string =>
|
export const dstMediaPath = (...ps: string[]): string =>
|
||||||
path.join(__dirname, '../static/media', ...ps)
|
path.join(__dirname, '../static/media', ...ps)
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
import express from 'express'
|
|
||||||
import morgan from 'morgan'
|
|
||||||
import * as z from 'zod'
|
|
||||||
|
|
||||||
import { Database } from './db'
|
|
||||||
|
|
||||||
const app = express()
|
|
||||||
app.use(morgan('dev'))
|
|
||||||
|
|
||||||
const db = new Database({ readonly: true })
|
|
||||||
|
|
||||||
app.get('/', (req, res) => {
|
|
||||||
const { path } = z
|
|
||||||
.object({
|
|
||||||
path: z.string(),
|
|
||||||
})
|
|
||||||
.parse(req.query)
|
|
||||||
|
|
||||||
const r = db.get(path)
|
|
||||||
if (!r) {
|
|
||||||
res.sendStatus(404)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res.json(r)
|
|
||||||
})
|
|
||||||
|
|
||||||
app.get('/q', (req, res) => {
|
|
||||||
const { q, tag, page: _page = '1' } = z
|
|
||||||
.object({
|
|
||||||
q: z.string().optional(),
|
|
||||||
tag: z.string().optional(),
|
|
||||||
page: z
|
|
||||||
.string()
|
|
||||||
.refine((s) => /^\d+$/.test(s))
|
|
||||||
.optional(),
|
|
||||||
})
|
|
||||||
.parse(req.query)
|
|
||||||
|
|
||||||
const perPage = 5
|
|
||||||
const offset = (parseInt(_page) - 1) * perPage
|
|
||||||
|
|
||||||
if (q) {
|
|
||||||
res.json(
|
|
||||||
db.q(q, {
|
|
||||||
offset,
|
|
||||||
limit: perPage,
|
|
||||||
tag,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res.json(
|
|
||||||
db.by({
|
|
||||||
offset,
|
|
||||||
limit: perPage,
|
|
||||||
tag,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
app.use((err: Error, _: express.Request, res: express.Response) => {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.error(err.stack)
|
|
||||||
res.status(500).send(err)
|
|
||||||
})
|
|
||||||
|
|
||||||
export default app
|
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import path from 'path'
|
|
||||||
|
|
||||||
import yaml from 'js-yaml'
|
import yaml from 'js-yaml'
|
||||||
import * as z from 'zod'
|
import * as z from 'zod'
|
||||||
|
|
||||||
|
import { buildPath } from './dir'
|
||||||
|
|
||||||
export const THEME_FILENAME = 'theme.yml'
|
export const THEME_FILENAME = 'theme.yml'
|
||||||
|
|
||||||
export const zTheme = z
|
export const zTheme = z
|
||||||
@@ -56,6 +57,6 @@ export type ITheme = z.infer<typeof zTheme>
|
|||||||
|
|
||||||
export function getTheme() {
|
export function getTheme() {
|
||||||
return zTheme.parse(
|
return zTheme.parse(
|
||||||
yaml.safeLoad(fs.readFileSync(path.join('built', THEME_FILENAME), 'utf-8'))
|
yaml.safeLoad(fs.readFileSync(buildPath(THEME_FILENAME), 'utf-8'))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,8 @@
|
|||||||
"~/*": ["./*"],
|
"~/*": ["./*"],
|
||||||
"@/*": ["./*"]
|
"@/*": ["./*"]
|
||||||
},
|
},
|
||||||
"types": ["@types/node", "@nuxt/types", "@nuxtjs/axios"]
|
"types": ["@types/node", "@nuxt/types", "@nuxtjs/axios"],
|
||||||
|
"resolveJsonModule": true
|
||||||
},
|
},
|
||||||
"exclude": ["node_modules", ".nuxt", "dist"]
|
"exclude": ["node_modules", ".nuxt", "dist"]
|
||||||
}
|
}
|
||||||
+317
-172
@@ -14,7 +14,7 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
|
||||||
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
|
integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
|
||||||
|
|
||||||
"@babel/core@^7.12.9":
|
"@babel/core@^7.10.4", "@babel/core@^7.12.9":
|
||||||
version "7.12.10"
|
version "7.12.10"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
||||||
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
||||||
@@ -213,11 +213,21 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
|
||||||
integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
|
integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.12.11":
|
||||||
|
version "7.12.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
||||||
|
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
|
||||||
|
|
||||||
"@babel/helper-validator-option@^7.12.1":
|
"@babel/helper-validator-option@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
|
||||||
integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==
|
integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==
|
||||||
|
|
||||||
|
"@babel/helper-validator-option@^7.12.11":
|
||||||
|
version "7.12.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
|
||||||
|
integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
|
||||||
|
|
||||||
"@babel/helper-wrap-function@^7.10.4":
|
"@babel/helper-wrap-function@^7.10.4":
|
||||||
version "7.12.3"
|
version "7.12.3"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
|
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
|
||||||
@@ -260,7 +270,7 @@
|
|||||||
"@babel/helper-remap-async-to-generator" "^7.12.1"
|
"@babel/helper-remap-async-to-generator" "^7.12.1"
|
||||||
"@babel/plugin-syntax-async-generators" "^7.8.0"
|
"@babel/plugin-syntax-async-generators" "^7.8.0"
|
||||||
|
|
||||||
"@babel/plugin-proposal-class-properties@^7.12.1":
|
"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
|
||||||
integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
|
integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
|
||||||
@@ -325,7 +335,7 @@
|
|||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
|
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
|
||||||
|
|
||||||
"@babel/plugin-proposal-object-rest-spread@^7.12.1":
|
"@babel/plugin-proposal-object-rest-spread@^7.10.4", "@babel/plugin-proposal-object-rest-spread@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
|
||||||
integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
|
integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
|
||||||
@@ -465,6 +475,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
|
"@babel/plugin-syntax-typescript@^7.12.1":
|
||||||
|
version "7.12.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5"
|
||||||
|
integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
"@babel/plugin-transform-arrow-functions@^7.12.1":
|
"@babel/plugin-transform-arrow-functions@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
|
||||||
@@ -495,6 +512,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
|
"@babel/plugin-transform-block-scoping@^7.12.11":
|
||||||
|
version "7.12.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.11.tgz#83ae92a104dbb93a7d6c6dd1844f351083c46b4f"
|
||||||
|
integrity sha512-atR1Rxc3hM+VPg/NvNvfYw0npQEAcHuJ+MGZnFn6h3bo+1U3BWXMdFMlvVRApBTWKQMX7SOwRJZA5FBF/JQbvA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
"@babel/plugin-transform-classes@^7.12.1":
|
"@babel/plugin-transform-classes@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
|
||||||
@@ -627,6 +651,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
|
"@babel/plugin-transform-object-assign@^7.10.4", "@babel/plugin-transform-object-assign@^7.12.1":
|
||||||
|
version "7.12.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz#9102b06625f60a5443cc292d32b565373665e1e4"
|
||||||
|
integrity sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
"@babel/plugin-transform-object-super@^7.12.1":
|
"@babel/plugin-transform-object-super@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
|
||||||
@@ -708,6 +739,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
|
"@babel/plugin-transform-typescript@^7.12.1":
|
||||||
|
version "7.12.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4"
|
||||||
|
integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-create-class-features-plugin" "^7.12.1"
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
"@babel/plugin-syntax-typescript" "^7.12.1"
|
||||||
|
|
||||||
"@babel/plugin-transform-unicode-escapes@^7.12.1":
|
"@babel/plugin-transform-unicode-escapes@^7.12.1":
|
||||||
version "7.12.1"
|
version "7.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
|
||||||
@@ -723,6 +763,78 @@
|
|||||||
"@babel/helper-create-regexp-features-plugin" "^7.12.1"
|
"@babel/helper-create-regexp-features-plugin" "^7.12.1"
|
||||||
"@babel/helper-plugin-utils" "^7.10.4"
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
|
||||||
|
"@babel/preset-env@^7.10.4":
|
||||||
|
version "7.12.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
|
||||||
|
integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/compat-data" "^7.12.7"
|
||||||
|
"@babel/helper-compilation-targets" "^7.12.5"
|
||||||
|
"@babel/helper-module-imports" "^7.12.5"
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
"@babel/helper-validator-option" "^7.12.11"
|
||||||
|
"@babel/plugin-proposal-async-generator-functions" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-class-properties" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-dynamic-import" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-export-namespace-from" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-json-strings" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-numeric-separator" "^7.12.7"
|
||||||
|
"@babel/plugin-proposal-object-rest-spread" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-optional-chaining" "^7.12.7"
|
||||||
|
"@babel/plugin-proposal-private-methods" "^7.12.1"
|
||||||
|
"@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
|
||||||
|
"@babel/plugin-syntax-async-generators" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-class-properties" "^7.12.1"
|
||||||
|
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
|
||||||
|
"@babel/plugin-syntax-json-strings" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
|
||||||
|
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
|
||||||
|
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-optional-chaining" "^7.8.0"
|
||||||
|
"@babel/plugin-syntax-top-level-await" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-arrow-functions" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-async-to-generator" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-block-scoped-functions" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-block-scoping" "^7.12.11"
|
||||||
|
"@babel/plugin-transform-classes" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-computed-properties" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-destructuring" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-dotall-regex" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-duplicate-keys" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-exponentiation-operator" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-for-of" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-function-name" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-literals" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-member-expression-literals" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-modules-amd" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-modules-commonjs" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-modules-systemjs" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-modules-umd" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-new-target" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-object-super" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-parameters" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-property-literals" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-regenerator" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-reserved-words" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-shorthand-properties" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-spread" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-sticky-regex" "^7.12.7"
|
||||||
|
"@babel/plugin-transform-template-literals" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-typeof-symbol" "^7.12.10"
|
||||||
|
"@babel/plugin-transform-unicode-escapes" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-unicode-regex" "^7.12.1"
|
||||||
|
"@babel/preset-modules" "^0.1.3"
|
||||||
|
"@babel/types" "^7.12.11"
|
||||||
|
core-js-compat "^3.8.0"
|
||||||
|
semver "^5.5.0"
|
||||||
|
|
||||||
"@babel/preset-env@^7.12.7":
|
"@babel/preset-env@^7.12.7":
|
||||||
version "7.12.10"
|
version "7.12.10"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab"
|
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab"
|
||||||
@@ -806,6 +918,15 @@
|
|||||||
"@babel/types" "^7.4.4"
|
"@babel/types" "^7.4.4"
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
|
"@babel/preset-typescript@^7.12.1":
|
||||||
|
version "7.12.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3"
|
||||||
|
integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils" "^7.10.4"
|
||||||
|
"@babel/helper-validator-option" "^7.12.1"
|
||||||
|
"@babel/plugin-transform-typescript" "^7.12.1"
|
||||||
|
|
||||||
"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
|
"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
|
||||||
version "7.12.5"
|
version "7.12.5"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||||
@@ -846,6 +967,15 @@
|
|||||||
lodash "^4.17.19"
|
lodash "^4.17.19"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@babel/types@^7.12.11":
|
||||||
|
version "7.12.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce"
|
||||||
|
integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-validator-identifier" "^7.12.11"
|
||||||
|
lodash "^4.17.19"
|
||||||
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@csstools/convert-colors@^1.4.0":
|
"@csstools/convert-colors@^1.4.0":
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
|
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
|
||||||
@@ -1322,6 +1452,11 @@
|
|||||||
"@types/browserslist" "*"
|
"@types/browserslist" "*"
|
||||||
postcss "7.x.x"
|
postcss "7.x.x"
|
||||||
|
|
||||||
|
"@types/aws-lambda@^8.10.66":
|
||||||
|
version "8.10.66"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.66.tgz#195ae8ff7226a4f580a0cab570d683f5b9a215d0"
|
||||||
|
integrity sha512-gwWIKwN3IVxRQTIZUNtjKo7w2LoB5RMzbP1PAFHsBq64dOKIhTv8y5RYRIjniLTewrBSBrV2EXxgQ1zZeGU4LA==
|
||||||
|
|
||||||
"@types/babel__core@^7.1.12":
|
"@types/babel__core@^7.1.12":
|
||||||
version "7.1.12"
|
version "7.1.12"
|
||||||
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
|
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
|
||||||
@@ -1355,13 +1490,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.3.0"
|
"@babel/types" "^7.3.0"
|
||||||
|
|
||||||
"@types/better-sqlite3@^5.4.1":
|
|
||||||
version "5.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-5.4.1.tgz#d45600bc19f8f41397263d037ca9b0d05df85e58"
|
|
||||||
integrity sha512-8hje3Rhsg/9veTkALfCwiWn7VMrP1QDwHhBSgerttYPABEvrHsMQnU9dlqoM6QX3x4uw3Y06dDVz8uDQo1J4Ng==
|
|
||||||
dependencies:
|
|
||||||
"@types/integer" "*"
|
|
||||||
|
|
||||||
"@types/body-parser@*":
|
"@types/body-parser@*":
|
||||||
version "1.19.0"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
|
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
|
||||||
@@ -1483,11 +1611,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/integer@*":
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/integer/-/integer-1.0.1.tgz#025d87e30d97f539fcc6087372af7d3672ffbbe6"
|
|
||||||
integrity sha512-DmZDpSVnsuBrOhtHwE1oKmUJ3qVjHhhNQ7WnZy9/RhH3A24Ar+9o4SoaCWcTzQhalpRDIAMsfdoZLWNJtdBR7A==
|
|
||||||
|
|
||||||
"@types/js-yaml@^3.12.5":
|
"@types/js-yaml@^3.12.5":
|
||||||
version "3.12.5"
|
version "3.12.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb"
|
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb"
|
||||||
@@ -1508,6 +1631,16 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/less/-/less-3.0.2.tgz#2761d477678c8374cb9897666871662eb1d1115e"
|
resolved "https://registry.yarnpkg.com/@types/less/-/less-3.0.2.tgz#2761d477678c8374cb9897666871662eb1d1115e"
|
||||||
integrity sha512-62vfe65cMSzYaWmpmhqCMMNl0khen89w57mByPi1OseGfcV/LV03fO8YVrNj7rFQsRWNJo650WWyh6m7p8vZmA==
|
integrity sha512-62vfe65cMSzYaWmpmhqCMMNl0khen89w57mByPi1OseGfcV/LV03fO8YVrNj7rFQsRWNJo650WWyh6m7p8vZmA==
|
||||||
|
|
||||||
|
"@types/lokijs@^1.5.3":
|
||||||
|
version "1.5.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/lokijs/-/lokijs-1.5.3.tgz#e45db0b35e53ec09a4c2ff4f253037abd56be151"
|
||||||
|
integrity sha512-ssiP6F7rpDqlaOzo+0Y/0dkVH2JiAjc+o7n6M4pFnfAMscf+7FthqS0cobvGJEJvxmzp4PWfMOfe0q3VETtrgQ==
|
||||||
|
|
||||||
|
"@types/lunr@^2.3.3":
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583"
|
||||||
|
integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw==
|
||||||
|
|
||||||
"@types/memory-fs@*":
|
"@types/memory-fs@*":
|
||||||
version "0.3.2"
|
version "0.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/memory-fs/-/memory-fs-0.3.2.tgz#5d4753f9b390cb077c8c8af97bc96463399ceccd"
|
resolved "https://registry.yarnpkg.com/@types/memory-fs/-/memory-fs-0.3.2.tgz#5d4753f9b390cb077c8c8af97bc96463399ceccd"
|
||||||
@@ -2339,7 +2472,7 @@ babel-eslint@^10.1.0:
|
|||||||
eslint-visitor-keys "^1.0.0"
|
eslint-visitor-keys "^1.0.0"
|
||||||
resolve "^1.12.0"
|
resolve "^1.12.0"
|
||||||
|
|
||||||
babel-loader@^8.2.2:
|
babel-loader@^8.1.0, babel-loader@^8.2.2:
|
||||||
version "8.2.2"
|
version "8.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
|
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
|
||||||
integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
|
integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
|
||||||
@@ -2386,15 +2519,6 @@ basic-auth@~2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "5.1.2"
|
safe-buffer "5.1.2"
|
||||||
|
|
||||||
better-sqlite3@^7.1.1:
|
|
||||||
version "7.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-7.1.1.tgz#107457a8b770cfb16be646e347c17b42bc204dd3"
|
|
||||||
integrity sha512-AkvGGyhAVZhRBOul2WT+5CB2EuveM3ZkebEKe1wxMqDZUy1XB/1RBgM66t0ybHC4DIni8+pr7NaLqEX87NUTwg==
|
|
||||||
dependencies:
|
|
||||||
bindings "^1.5.0"
|
|
||||||
prebuild-install "^5.3.3"
|
|
||||||
tar "4.4.10"
|
|
||||||
|
|
||||||
bfj@^6.1.1:
|
bfj@^6.1.1:
|
||||||
version "6.1.2"
|
version "6.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
|
resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
|
||||||
@@ -2427,15 +2551,6 @@ bindings@^1.5.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
file-uri-to-path "1.0.0"
|
file-uri-to-path "1.0.0"
|
||||||
|
|
||||||
bl@^4.0.3:
|
|
||||||
version "4.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489"
|
|
||||||
integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==
|
|
||||||
dependencies:
|
|
||||||
buffer "^5.5.0"
|
|
||||||
inherits "^2.0.4"
|
|
||||||
readable-stream "^3.4.0"
|
|
||||||
|
|
||||||
bluebird@^3.1.1, bluebird@^3.5.5:
|
bluebird@^3.1.1, bluebird@^3.5.5:
|
||||||
version "3.7.2"
|
version "3.7.2"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||||
@@ -2451,7 +2566,7 @@ bn.js@^5.0.0, bn.js@^5.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
|
||||||
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
|
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
|
||||||
|
|
||||||
body-parser@1.19.0:
|
body-parser@1.19.0, body-parser@^1.19.0:
|
||||||
version "1.19.0"
|
version "1.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
|
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
|
||||||
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
|
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
|
||||||
@@ -2618,7 +2733,7 @@ buffer@^4.3.0:
|
|||||||
ieee754 "^1.1.4"
|
ieee754 "^1.1.4"
|
||||||
isarray "^1.0.0"
|
isarray "^1.0.0"
|
||||||
|
|
||||||
buffer@^5.1.0, buffer@^5.5.0:
|
buffer@^5.1.0:
|
||||||
version "5.7.1"
|
version "5.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||||
@@ -3035,6 +3150,11 @@ commander@^4.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||||
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
||||||
|
|
||||||
|
commander@^5.1.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
|
||||||
|
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
|
||||||
|
|
||||||
commondir@^1.0.1:
|
commondir@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||||
@@ -3260,6 +3380,17 @@ create-require@^1.1.0, create-require@^1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||||
|
|
||||||
|
cross-spawn@^6.0.5:
|
||||||
|
version "6.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||||
|
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
||||||
|
dependencies:
|
||||||
|
nice-try "^1.0.4"
|
||||||
|
path-key "^2.0.1"
|
||||||
|
semver "^5.5.0"
|
||||||
|
shebang-command "^1.2.0"
|
||||||
|
which "^1.2.9"
|
||||||
|
|
||||||
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
||||||
version "7.0.3"
|
version "7.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||||
@@ -3527,13 +3658,6 @@ decode-uri-component@^0.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||||
|
|
||||||
decompress-response@^4.2.0:
|
|
||||||
version "4.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
|
|
||||||
integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==
|
|
||||||
dependencies:
|
|
||||||
mimic-response "^2.0.0"
|
|
||||||
|
|
||||||
deep-extend@^0.6.0:
|
deep-extend@^0.6.0:
|
||||||
version "0.6.0"
|
version "0.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||||
@@ -3626,7 +3750,7 @@ detect-indent@^5.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
|
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
|
||||||
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
|
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
|
||||||
|
|
||||||
detect-libc@^1.0.2, detect-libc@^1.0.3:
|
detect-libc@^1.0.2:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||||
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
||||||
@@ -3823,7 +3947,7 @@ encodeurl@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
||||||
|
|
||||||
end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
|
||||||
version "1.4.4"
|
version "1.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||||
@@ -4293,10 +4417,12 @@ expand-brackets@^2.1.4:
|
|||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
expand-template@^2.0.3:
|
express-logging@^1.1.1:
|
||||||
version "2.0.3"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
resolved "https://registry.yarnpkg.com/express-logging/-/express-logging-1.1.1.tgz#62839618cbab5bb3610f1a1c1485352fe9d26c2a"
|
||||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
integrity sha1-YoOWGMurW7NhDxocFIU1L+nSbCo=
|
||||||
|
dependencies:
|
||||||
|
on-headers "^1.0.0"
|
||||||
|
|
||||||
express@^4.16.3, express@^4.17.1:
|
express@^4.16.3, express@^4.17.1:
|
||||||
version "4.17.1"
|
version "4.17.1"
|
||||||
@@ -4618,11 +4744,6 @@ from2@^2.1.0:
|
|||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
readable-stream "^2.0.0"
|
readable-stream "^2.0.0"
|
||||||
|
|
||||||
fs-constants@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
|
||||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
|
||||||
|
|
||||||
fs-extra@^8.1.0:
|
fs-extra@^8.1.0:
|
||||||
version "8.1.0"
|
version "8.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
||||||
@@ -4781,11 +4902,6 @@ git-url-parse@^11.4.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
git-up "^4.0.0"
|
git-up "^4.0.0"
|
||||||
|
|
||||||
github-from-package@0.0.0:
|
|
||||||
version "0.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
|
||||||
integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
|
|
||||||
|
|
||||||
glob-parent@^3.1.0:
|
glob-parent@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
|
||||||
@@ -5667,6 +5783,11 @@ jsonfile@^6.0.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
graceful-fs "^4.1.6"
|
graceful-fs "^4.1.6"
|
||||||
|
|
||||||
|
jwt-decode@^3.0.0:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59"
|
||||||
|
integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==
|
||||||
|
|
||||||
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
||||||
version "3.2.2"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
||||||
@@ -5737,6 +5858,16 @@ load-json-file@^2.0.0:
|
|||||||
pify "^2.0.0"
|
pify "^2.0.0"
|
||||||
strip-bom "^3.0.0"
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
|
load-json-file@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
|
||||||
|
integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
parse-json "^4.0.0"
|
||||||
|
pify "^3.0.0"
|
||||||
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
loader-runner@^2.3.1, loader-runner@^2.4.0:
|
loader-runner@^2.3.1, loader-runner@^2.4.0:
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
|
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
|
||||||
@@ -5838,6 +5969,11 @@ loglevel@^1.6.2:
|
|||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
||||||
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
|
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
|
||||||
|
|
||||||
|
lokijs@^1.5.11:
|
||||||
|
version "1.5.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.11.tgz#2b2ea82ec66050e4b112c6cfc588dac22d362b13"
|
||||||
|
integrity sha512-YYyuBPxMn/oS0tFznQDbIX5XL1ltMcwFqCboDr8voYE4VCDzR5vAsrvQDhlnua4lBeqMqHmLvUXRTmRUzUKH1Q==
|
||||||
|
|
||||||
lower-case@^1.1.1:
|
lower-case@^1.1.1:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||||
@@ -5872,6 +6008,11 @@ lru-cache@^6.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist "^4.0.0"
|
yallist "^4.0.0"
|
||||||
|
|
||||||
|
lunr@^2.3.9:
|
||||||
|
version "2.3.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
|
||||||
|
integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
|
||||||
|
|
||||||
make-dir@^1.0.0:
|
make-dir@^1.0.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||||
@@ -5958,6 +6099,11 @@ memory-fs@^0.5.0:
|
|||||||
errno "^0.1.3"
|
errno "^0.1.3"
|
||||||
readable-stream "^2.0.1"
|
readable-stream "^2.0.1"
|
||||||
|
|
||||||
|
memorystream@^0.3.1:
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
||||||
|
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
|
||||||
|
|
||||||
merge-descriptors@1.0.1:
|
merge-descriptors@1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||||
@@ -6052,11 +6198,6 @@ mimic-fn@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||||
|
|
||||||
mimic-response@^2.0.0:
|
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
|
|
||||||
integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
|
|
||||||
|
|
||||||
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||||
@@ -6074,7 +6215,7 @@ minimatch@^3.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
|
minimist@^1.2.0, minimist@^1.2.5:
|
||||||
version "1.2.5"
|
version "1.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||||
@@ -6100,7 +6241,7 @@ minipass-pipeline@^1.2.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minipass "^3.0.0"
|
minipass "^3.0.0"
|
||||||
|
|
||||||
minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
||||||
version "2.9.0"
|
version "2.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||||
@@ -6146,11 +6287,6 @@ mixin-deep@^1.2.0:
|
|||||||
for-in "^1.0.2"
|
for-in "^1.0.2"
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
|
||||||
version "0.5.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
|
||||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
|
||||||
|
|
||||||
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
|
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
|
||||||
version "0.5.5"
|
version "0.5.5"
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||||
@@ -6243,11 +6379,6 @@ nanomatch@^1.2.9:
|
|||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
napi-build-utils@^1.0.1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
|
|
||||||
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
|
|
||||||
|
|
||||||
natural-compare@^1.4.0:
|
natural-compare@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
@@ -6272,6 +6403,32 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
|
|||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||||
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||||
|
|
||||||
|
netlify-lambda@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/netlify-lambda/-/netlify-lambda-2.0.2.tgz#1a64286d9094ca9e5fd9088315dd54cf42ddfa43"
|
||||||
|
integrity sha512-Pf9M+vRsAgSLQ7ZaHajqgIGWYDXYEHGhzM2f8BwYbc3+SL/PjPXR1hdtnl9dgwzrFbPQYEOjHU5LqficUenhYw==
|
||||||
|
dependencies:
|
||||||
|
"@babel/core" "^7.10.4"
|
||||||
|
"@babel/plugin-proposal-class-properties" "^7.10.4"
|
||||||
|
"@babel/plugin-proposal-object-rest-spread" "^7.10.4"
|
||||||
|
"@babel/plugin-transform-object-assign" "^7.10.4"
|
||||||
|
"@babel/preset-env" "^7.10.4"
|
||||||
|
babel-loader "^8.1.0"
|
||||||
|
body-parser "^1.19.0"
|
||||||
|
commander "^5.1.0"
|
||||||
|
express "^4.17.1"
|
||||||
|
express-logging "^1.1.1"
|
||||||
|
globby "^11.0.1"
|
||||||
|
jwt-decode "^3.0.0"
|
||||||
|
toml "^3.0.0"
|
||||||
|
webpack "^4.43.0"
|
||||||
|
webpack-merge "^4.2.2"
|
||||||
|
|
||||||
|
nice-try@^1.0.4:
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||||
|
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||||
|
|
||||||
no-case@^2.2.0:
|
no-case@^2.2.0:
|
||||||
version "2.3.2"
|
version "2.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
|
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
|
||||||
@@ -6287,13 +6444,6 @@ no-case@^3.0.4:
|
|||||||
lower-case "^2.0.2"
|
lower-case "^2.0.2"
|
||||||
tslib "^2.0.3"
|
tslib "^2.0.3"
|
||||||
|
|
||||||
node-abi@^2.7.0:
|
|
||||||
version "2.19.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d"
|
|
||||||
integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==
|
|
||||||
dependencies:
|
|
||||||
semver "^5.4.1"
|
|
||||||
|
|
||||||
node-addon-api@^3.0.2:
|
node-addon-api@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681"
|
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681"
|
||||||
@@ -6385,11 +6535,6 @@ nodejieba@^2.5.1:
|
|||||||
node-addon-api "^3.0.2"
|
node-addon-api "^3.0.2"
|
||||||
node-pre-gyp "^0.14.0"
|
node-pre-gyp "^0.14.0"
|
||||||
|
|
||||||
noop-logger@^0.1.1:
|
|
||||||
version "0.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
|
|
||||||
integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
|
|
||||||
|
|
||||||
nopt@^4.0.1:
|
nopt@^4.0.1:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||||
@@ -6461,6 +6606,21 @@ npm-packlist@^1.1.6:
|
|||||||
npm-bundled "^1.0.1"
|
npm-bundled "^1.0.1"
|
||||||
npm-normalize-package-bin "^1.0.1"
|
npm-normalize-package-bin "^1.0.1"
|
||||||
|
|
||||||
|
npm-run-all@^4.1.5:
|
||||||
|
version "4.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
|
||||||
|
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
|
||||||
|
dependencies:
|
||||||
|
ansi-styles "^3.2.1"
|
||||||
|
chalk "^2.4.1"
|
||||||
|
cross-spawn "^6.0.5"
|
||||||
|
memorystream "^0.3.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
pidtree "^0.3.0"
|
||||||
|
read-pkg "^3.0.0"
|
||||||
|
shell-quote "^1.6.1"
|
||||||
|
string.prototype.padend "^3.0.0"
|
||||||
|
|
||||||
npm-run-path@^4.0.0:
|
npm-run-path@^4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
|
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
|
||||||
@@ -6468,7 +6628,7 @@ npm-run-path@^4.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-key "^3.0.0"
|
path-key "^3.0.0"
|
||||||
|
|
||||||
npmlog@^4.0.1, npmlog@^4.0.2:
|
npmlog@^4.0.2:
|
||||||
version "4.1.2"
|
version "4.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
||||||
@@ -6599,7 +6759,7 @@ on-finished@^2.3.0, on-finished@~2.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ee-first "1.1.1"
|
ee-first "1.1.1"
|
||||||
|
|
||||||
on-headers@^1.0.2, on-headers@~1.0.2:
|
on-headers@^1.0.0, on-headers@^1.0.2, on-headers@~1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
|
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
|
||||||
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
|
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
|
||||||
@@ -6871,6 +7031,11 @@ path-is-absolute@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||||
|
|
||||||
|
path-key@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||||
|
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
||||||
|
|
||||||
path-key@^3.0.0, path-key@^3.1.0:
|
path-key@^3.0.0, path-key@^3.1.0:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
|
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
|
||||||
@@ -6893,6 +7058,13 @@ path-type@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
pify "^2.0.0"
|
pify "^2.0.0"
|
||||||
|
|
||||||
|
path-type@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
|
||||||
|
integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
|
||||||
|
dependencies:
|
||||||
|
pify "^3.0.0"
|
||||||
|
|
||||||
path-type@^4.0.0:
|
path-type@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||||
@@ -6914,6 +7086,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
|
|||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||||
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||||
|
|
||||||
|
pidtree@^0.3.0:
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
|
||||||
|
integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
|
||||||
|
|
||||||
pify@^2.0.0, pify@^2.3.0:
|
pify@^2.0.0, pify@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||||
@@ -7609,27 +7786,6 @@ postcss@7.x.x, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17,
|
|||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
supports-color "^6.1.0"
|
supports-color "^6.1.0"
|
||||||
|
|
||||||
prebuild-install@^5.3.3:
|
|
||||||
version "5.3.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291"
|
|
||||||
integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==
|
|
||||||
dependencies:
|
|
||||||
detect-libc "^1.0.3"
|
|
||||||
expand-template "^2.0.3"
|
|
||||||
github-from-package "0.0.0"
|
|
||||||
minimist "^1.2.3"
|
|
||||||
mkdirp-classic "^0.5.3"
|
|
||||||
napi-build-utils "^1.0.1"
|
|
||||||
node-abi "^2.7.0"
|
|
||||||
noop-logger "^0.1.1"
|
|
||||||
npmlog "^4.0.1"
|
|
||||||
pump "^3.0.0"
|
|
||||||
rc "^1.2.7"
|
|
||||||
simple-get "^3.0.3"
|
|
||||||
tar-fs "^2.0.0"
|
|
||||||
tunnel-agent "^0.6.0"
|
|
||||||
which-pm-runs "^1.0.0"
|
|
||||||
|
|
||||||
prelude-ls@^1.2.1:
|
prelude-ls@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||||
@@ -7889,6 +8045,15 @@ read-pkg@^2.0.0:
|
|||||||
normalize-package-data "^2.3.2"
|
normalize-package-data "^2.3.2"
|
||||||
path-type "^2.0.0"
|
path-type "^2.0.0"
|
||||||
|
|
||||||
|
read-pkg@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
|
||||||
|
integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
|
||||||
|
dependencies:
|
||||||
|
load-json-file "^4.0.0"
|
||||||
|
normalize-package-data "^2.3.2"
|
||||||
|
path-type "^3.0.0"
|
||||||
|
|
||||||
read-pkg@^5.2.0:
|
read-pkg@^5.2.0:
|
||||||
version "5.2.0"
|
version "5.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
|
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
|
||||||
@@ -7912,7 +8077,7 @@ read-pkg@^5.2.0:
|
|||||||
string_decoder "~1.1.1"
|
string_decoder "~1.1.1"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
|
readable-stream@^3.1.1, readable-stream@^3.6.0:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||||
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||||
@@ -8343,6 +8508,13 @@ sha.js@^2.4.0, sha.js@^2.4.8:
|
|||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
|
shebang-command@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
||||||
|
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
|
||||||
|
dependencies:
|
||||||
|
shebang-regex "^1.0.0"
|
||||||
|
|
||||||
shebang-command@^2.0.0:
|
shebang-command@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
|
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
|
||||||
@@ -8350,6 +8522,11 @@ shebang-command@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
shebang-regex "^3.0.0"
|
shebang-regex "^3.0.0"
|
||||||
|
|
||||||
|
shebang-regex@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||||
|
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
|
||||||
|
|
||||||
shebang-regex@^3.0.0:
|
shebang-regex@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||||
@@ -8372,20 +8549,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||||
|
|
||||||
simple-concat@^1.0.0:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
|
||||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
|
||||||
|
|
||||||
simple-get@^3.0.3:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
|
|
||||||
integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==
|
|
||||||
dependencies:
|
|
||||||
decompress-response "^4.2.0"
|
|
||||||
once "^1.3.1"
|
|
||||||
simple-concat "^1.0.0"
|
|
||||||
|
|
||||||
simple-swizzle@^0.2.2:
|
simple-swizzle@^0.2.2:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
@@ -8665,6 +8828,15 @@ string-width@^4.0.0, string-width@^4.1.0:
|
|||||||
is-fullwidth-code-point "^3.0.0"
|
is-fullwidth-code-point "^3.0.0"
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
|
string.prototype.padend@^3.0.0:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz#824c84265dbac46cade2b957b38b6a5d8d1683c5"
|
||||||
|
integrity sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg==
|
||||||
|
dependencies:
|
||||||
|
call-bind "^1.0.0"
|
||||||
|
define-properties "^1.1.3"
|
||||||
|
es-abstract "^1.18.0-next.1"
|
||||||
|
|
||||||
string.prototype.trimend@^1.0.1:
|
string.prototype.trimend@^1.0.1:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
|
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
|
||||||
@@ -8833,40 +9005,6 @@ tapable@^1.0.0, tapable@^1.0.0-beta.5, tapable@^1.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
|
||||||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||||
|
|
||||||
tar-fs@^2.0.0:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
|
||||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
|
||||||
dependencies:
|
|
||||||
chownr "^1.1.1"
|
|
||||||
mkdirp-classic "^0.5.2"
|
|
||||||
pump "^3.0.0"
|
|
||||||
tar-stream "^2.1.4"
|
|
||||||
|
|
||||||
tar-stream@^2.1.4:
|
|
||||||
version "2.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa"
|
|
||||||
integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==
|
|
||||||
dependencies:
|
|
||||||
bl "^4.0.3"
|
|
||||||
end-of-stream "^1.4.1"
|
|
||||||
fs-constants "^1.0.0"
|
|
||||||
inherits "^2.0.3"
|
|
||||||
readable-stream "^3.1.1"
|
|
||||||
|
|
||||||
tar@4.4.10:
|
|
||||||
version "4.4.10"
|
|
||||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
|
|
||||||
integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
|
|
||||||
dependencies:
|
|
||||||
chownr "^1.1.1"
|
|
||||||
fs-minipass "^1.2.5"
|
|
||||||
minipass "^2.3.5"
|
|
||||||
minizlib "^1.2.1"
|
|
||||||
mkdirp "^0.5.0"
|
|
||||||
safe-buffer "^5.1.2"
|
|
||||||
yallist "^3.0.3"
|
|
||||||
|
|
||||||
tar@^4.4.2:
|
tar@^4.4.2:
|
||||||
version "4.4.13"
|
version "4.4.13"
|
||||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||||
@@ -9022,6 +9160,11 @@ toidentifier@1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||||
|
|
||||||
|
toml@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
|
||||||
|
integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
|
||||||
|
|
||||||
tryer@^1.0.1:
|
tryer@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
||||||
@@ -9082,13 +9225,6 @@ tty-browserify@0.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||||
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
|
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
|
||||||
|
|
||||||
tunnel-agent@^0.6.0:
|
|
||||||
version "0.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
|
||||||
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
|
|
||||||
dependencies:
|
|
||||||
safe-buffer "^5.0.1"
|
|
||||||
|
|
||||||
type-check@^0.4.0, type-check@~0.4.0:
|
type-check@^0.4.0, type-check@~0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
||||||
@@ -9554,6 +9690,13 @@ webpack-log@^2.0.0:
|
|||||||
ansi-colors "^3.0.0"
|
ansi-colors "^3.0.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
|
webpack-merge@^4.2.2:
|
||||||
|
version "4.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d"
|
||||||
|
integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
webpack-node-externals@^2.5.2:
|
webpack-node-externals@^2.5.2:
|
||||||
version "2.5.2"
|
version "2.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-2.5.2.tgz#178e017a24fec6015bc9e672c77958a6afac861d"
|
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-2.5.2.tgz#178e017a24fec6015bc9e672c77958a6afac861d"
|
||||||
@@ -9567,7 +9710,7 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-
|
|||||||
source-list-map "^2.0.0"
|
source-list-map "^2.0.0"
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
webpack@^4.44.2:
|
webpack@^4.43.0, webpack@^4.44.2:
|
||||||
version "4.44.2"
|
version "4.44.2"
|
||||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72"
|
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72"
|
||||||
integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==
|
integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==
|
||||||
@@ -9615,10 +9758,12 @@ which-module@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||||
|
|
||||||
which-pm-runs@^1.0.0:
|
which@^1.2.9:
|
||||||
version "1.0.0"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
|
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||||
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
|
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||||
|
dependencies:
|
||||||
|
isexe "^2.0.0"
|
||||||
|
|
||||||
which@^2.0.1:
|
which@^2.0.1:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
|
|||||||
Reference in new issue
Block a user