mirror of
https://github.com/ipfs/ipfs-blog.git
synced 2026-08-08 01:42:55 +02:00
Merge pull request #179 from ipfs/main
Sync recent updates on main back down to staging
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
name: Check for scheduled posts to publish
|
||||
on:
|
||||
schedule:
|
||||
- cron: '* 4,16 * * *'
|
||||
- cron: '0 4,16 * * *'
|
||||
jobs:
|
||||
check-n-publish:
|
||||
name: Check for scheduled posts and publish if any found
|
||||
|
||||
@@ -43,7 +43,7 @@ A few tips:
|
||||
|
||||
Changes you _save_ in Forestry are written directly to the `staging` branch and automatically generate a staging preview at https://ipfs-blog-staging.on.fleek.co/.
|
||||
|
||||
**Once a staged post is ready to go live, please PR `staging` to `main` using [this handy shortcut](https://github.com/ipfs/ipfs-blog/compare/main...staging?expand=1).** _Note that if multiple posts are in-flight in staging and only one is approved to go live, your PR may need some massaging by a reviewer._
|
||||
**Once a staged post is ready to go live, please PR `staging` to `main` using [this handy shortcut](https://github.com/ipfs/ipfs-blog/compare/main...staging?expand=1).** Give your PR a title explaining what changes are inside (the default just says "Staging", which isn't helpful.) _Note that if multiple posts are in-flight in staging and only one is approved to go live, your PR may need some massaging by a reviewer._
|
||||
|
||||
_Note for PR reviewers: While we continue to dogfood Forestry, please leave your edits in comments rather than making additional commits._ As our overall workflow continues to solidify, this direction may change.
|
||||
|
||||
|
||||
Generated
+245
-126
@@ -8,12 +8,12 @@
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"dayjs": "^1.10.4",
|
||||
"markdown-it-image-lazy-loading": "^1.0.2",
|
||||
"markdown-it-image-lazy-loading": "^1.1.0",
|
||||
"markdown-it-imsize": "^2.0.1",
|
||||
"tailwindcss-typography": "^3.1.0",
|
||||
"v-lazy-image": "^1.4.0",
|
||||
"v-scroll-lock": "^1.3.1",
|
||||
"vue-advanced-cropper": "^1.5.0",
|
||||
"vue-advanced-cropper": "^1.5.1",
|
||||
"vue-mq": "^1.0.1",
|
||||
"vue-multiselect": "^2.1.6",
|
||||
"vue-social-sharing": "^3.0.7",
|
||||
@@ -25,15 +25,15 @@
|
||||
"@vuepress/plugin-html-redirect": "^0.1.2",
|
||||
"@vuepress/plugin-last-updated": "^1.8.2",
|
||||
"autoprefixer": "^9.8.6",
|
||||
"eslint": "^7.24.0",
|
||||
"eslint-config-prettier": "^8.2.0",
|
||||
"eslint": "^7.25.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-config-standard": "^16.0.2",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-prettier": "^3.4.0",
|
||||
"eslint-plugin-promise": "^5.1.0",
|
||||
"eslint-plugin-vue": "^7.9.0",
|
||||
"gray-matter": "^4.0.2",
|
||||
"gray-matter": "^4.0.3",
|
||||
"husky": "^6.0.0",
|
||||
"lint-staged": "^10.5.4",
|
||||
"lodash": "^4.17.21",
|
||||
@@ -47,10 +47,10 @@
|
||||
"prettier": "^2.2.1",
|
||||
"slug": "^4.0.4",
|
||||
"standard-version": "^9.2.0",
|
||||
"stylelint": "^13.12.0",
|
||||
"stylelint": "^13.13.0",
|
||||
"stylelint-config-prettier": "^8.0.2",
|
||||
"stylelint-prettier": "^1.2.0",
|
||||
"svg-sprite-loader": "^6.0.5",
|
||||
"svg-sprite-loader": "^6.0.6",
|
||||
"svgo": "^2.3.0",
|
||||
"svgo-loader": "^3.0.0",
|
||||
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.1.0",
|
||||
@@ -9706,9 +9706,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "7.24.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.24.0.tgz",
|
||||
"integrity": "sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==",
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz",
|
||||
"integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "7.12.11",
|
||||
@@ -9760,9 +9760,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-prettier": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz",
|
||||
"integrity": "sha512-dWV9EVeSo2qodOPi1iBYU/x6F6diHv8uujxbxr77xExs3zTAlNXvVZKiyLsQGNz7yPV2K49JY5WjPzNIuDc2Bw==",
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
|
||||
"integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"eslint-config-prettier": "bin/cli.js"
|
||||
@@ -12057,9 +12057,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/globby": {
|
||||
"version": "11.0.2",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz",
|
||||
"integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==",
|
||||
"version": "11.0.3",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
|
||||
"integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"array-union": "^2.1.0",
|
||||
@@ -12071,6 +12071,9 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/globby/node_modules/ignore": {
|
||||
@@ -12154,12 +12157,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/gray-matter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz",
|
||||
"integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
|
||||
"integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"js-yaml": "^3.11.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"kind-of": "^6.0.2",
|
||||
"section-matter": "^1.0.0",
|
||||
"strip-bom-string": "^1.0.0"
|
||||
@@ -13120,8 +13123,7 @@
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ini": {
|
||||
"version": "1.3.5",
|
||||
@@ -13646,6 +13648,18 @@
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-unicode-supported": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
|
||||
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-utf8": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
|
||||
@@ -14123,6 +14137,12 @@
|
||||
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.flatten": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.isempty": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
|
||||
@@ -14202,6 +14222,12 @@
|
||||
"integrity": "sha1-j/TexTLYJIavWVc8OURZFOlEp/E=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||
"integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||
@@ -14209,15 +14235,19 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/log-symbols": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
|
||||
"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chalk": "^4.0.0"
|
||||
"chalk": "^4.1.0",
|
||||
"is-unicode-supported": "^0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/log-update": {
|
||||
@@ -14489,9 +14519,26 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/markdown-it-image-lazy-loading": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-image-lazy-loading/-/markdown-it-image-lazy-loading-1.0.2.tgz",
|
||||
"integrity": "sha512-FBGKcF+zDSE7HEN9rGar6+36RtO3ozakqNLpbl2uL91DZQEIkXxN8uUZXJGCjvQL4O5f9IxeP5lagxX3FZ2SgA=="
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-image-lazy-loading/-/markdown-it-image-lazy-loading-1.1.0.tgz",
|
||||
"integrity": "sha512-3Mk/UjzNdYvhWyslIti9YUFSzQkmnaGsI3HC4jkw19VcIbnmp5Sofi18p1sIAHIvrQUGTAx8oW8tSDKSZEL49Q==",
|
||||
"dependencies": {
|
||||
"image-size": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-image-lazy-loading/node_modules/image-size": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz",
|
||||
"integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
|
||||
"dependencies": {
|
||||
"queue": "6.0.2"
|
||||
},
|
||||
"bin": {
|
||||
"image-size": "bin/image-size.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-img-lazy": {
|
||||
"version": "1.0.2",
|
||||
@@ -14965,16 +15012,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.0.5"
|
||||
"picomatch": "^2.2.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/miller-rabin": {
|
||||
@@ -16359,12 +16406,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
|
||||
"integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/pidtree": {
|
||||
@@ -17262,14 +17312,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
|
||||
"integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz",
|
||||
"integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"indexes-of": "^1.0.1",
|
||||
"uniq": "^1.0.1",
|
||||
"util-deprecate": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -17864,6 +17912,14 @@
|
||||
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/queue": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
|
||||
"integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
|
||||
"dependencies": {
|
||||
"inherits": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz",
|
||||
@@ -20299,15 +20355,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint": {
|
||||
"version": "13.12.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.12.0.tgz",
|
||||
"integrity": "sha512-P8O1xDy41B7O7iXaSlW+UuFbE5+ZWQDb61ndGDxKIt36fMH50DtlQTbwLpFLf8DikceTAb3r6nPrRv30wBlzXw==",
|
||||
"version": "13.13.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.0.tgz",
|
||||
"integrity": "sha512-jvkM1iuH88vAvjdKPwPm6abiMP2/D/1chbfb+4GVONddOOskHuCXc0loyrLdxO1AwwH6jdnjYskkTKHQD7cXwQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@stylelint/postcss-css-in-js": "^0.37.2",
|
||||
"@stylelint/postcss-markdown": "^0.36.2",
|
||||
"autoprefixer": "^9.8.6",
|
||||
"balanced-match": "^1.0.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cosmiconfig": "^7.0.0",
|
||||
"debug": "^4.3.1",
|
||||
@@ -20317,7 +20373,7 @@
|
||||
"file-entry-cache": "^6.0.1",
|
||||
"get-stdin": "^8.0.0",
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.0.2",
|
||||
"globby": "^11.0.3",
|
||||
"globjoin": "^0.1.4",
|
||||
"html-tags": "^3.1.0",
|
||||
"ignore": "^5.1.8",
|
||||
@@ -20325,10 +20381,10 @@
|
||||
"imurmurhash": "^0.1.4",
|
||||
"known-css-properties": "^0.21.0",
|
||||
"lodash": "^4.17.21",
|
||||
"log-symbols": "^4.0.0",
|
||||
"log-symbols": "^4.1.0",
|
||||
"mathml-tag-names": "^2.1.3",
|
||||
"meow": "^9.0.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"micromatch": "^4.0.4",
|
||||
"normalize-selector": "^0.2.0",
|
||||
"postcss": "^7.0.35",
|
||||
"postcss-html": "^0.36.0",
|
||||
@@ -20338,7 +20394,7 @@
|
||||
"postcss-safe-parser": "^4.0.2",
|
||||
"postcss-sass": "^0.4.4",
|
||||
"postcss-scss": "^2.1.1",
|
||||
"postcss-selector-parser": "^6.0.4",
|
||||
"postcss-selector-parser": "^6.0.5",
|
||||
"postcss-syntax": "^0.36.2",
|
||||
"postcss-value-parser": "^4.1.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
@@ -20349,8 +20405,8 @@
|
||||
"style-search": "^0.1.0",
|
||||
"sugarss": "^2.0.0",
|
||||
"svg-tags": "^1.0.0",
|
||||
"table": "^6.0.7",
|
||||
"v8-compile-cache": "^2.2.0",
|
||||
"table": "^6.5.1",
|
||||
"v8-compile-cache": "^2.3.0",
|
||||
"write-file-atomic": "^3.0.3"
|
||||
},
|
||||
"bin": {
|
||||
@@ -20358,6 +20414,10 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/stylelint"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint-config-prettier": {
|
||||
@@ -20386,6 +20446,12 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/stylelint/node_modules/balanced-match": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
|
||||
"integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/stylelint/node_modules/debug": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
||||
@@ -21148,9 +21214,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/svg-sprite-loader": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.5.tgz",
|
||||
"integrity": "sha512-d1F4Bkx//jvITCYo4r5wf8skiJLdTHEREIg9hMH+N9KGARm8o57oCR49O3iBevDY4T+TRcxuTPU479FNQVnt8w==",
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.6.tgz",
|
||||
"integrity": "sha512-AcGvAH19iNuqGZ+DItYo0WOSl+TjTTGvx2pli9xNAFrGZ3UmO50rQRVt2+YJHPrvIAzdvxVv1EyIu/gEePAMCg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"bluebird": "^3.5.0",
|
||||
@@ -21222,30 +21288,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/table": {
|
||||
"version": "6.0.7",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
|
||||
"integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.6.0.tgz",
|
||||
"integrity": "sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^7.0.2",
|
||||
"lodash": "^4.17.20",
|
||||
"ajv": "^8.0.1",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.flatten": "^4.4.0",
|
||||
"lodash.truncate": "^4.4.2",
|
||||
"slice-ansi": "^4.0.0",
|
||||
"string-width": "^4.2.0"
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/ajv": {
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz",
|
||||
"integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==",
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz",
|
||||
"integrity": "sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/emoji-regex": {
|
||||
@@ -22706,9 +22779,9 @@
|
||||
"integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
|
||||
},
|
||||
"node_modules/vue-advanced-cropper": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-advanced-cropper/-/vue-advanced-cropper-1.5.0.tgz",
|
||||
"integrity": "sha512-WQs15c8wFRCje2GLdD6aGCRapttjjKE/dmz0qVFlRB7q38scB6G51G7eh5Jcnm4jMUgOX3OVD1sD2UWmHpaNpQ==",
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-advanced-cropper/-/vue-advanced-cropper-1.5.1.tgz",
|
||||
"integrity": "sha512-uK5le+RwMzYNKT+L9UTH9qNnqDNWcwZ/XKG5pFMb0Py8zuxl12OHCT/Fahc7FXhgp+ZcxzX2AJ7TiNQy8djAbA==",
|
||||
"dependencies": {
|
||||
"classnames": "^2.2.6",
|
||||
"debounce": "^1.2.0",
|
||||
@@ -32814,9 +32887,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "7.24.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.24.0.tgz",
|
||||
"integrity": "sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==",
|
||||
"version": "7.25.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz",
|
||||
"integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "7.12.11",
|
||||
@@ -32956,9 +33029,9 @@
|
||||
}
|
||||
},
|
||||
"eslint-config-prettier": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz",
|
||||
"integrity": "sha512-dWV9EVeSo2qodOPi1iBYU/x6F6diHv8uujxbxr77xExs3zTAlNXvVZKiyLsQGNz7yPV2K49JY5WjPzNIuDc2Bw==",
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
|
||||
"integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
@@ -34710,9 +34783,9 @@
|
||||
}
|
||||
},
|
||||
"globby": {
|
||||
"version": "11.0.2",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz",
|
||||
"integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==",
|
||||
"version": "11.0.3",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz",
|
||||
"integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-union": "^2.1.0",
|
||||
@@ -34793,12 +34866,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"gray-matter": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz",
|
||||
"integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
|
||||
"integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"js-yaml": "^3.11.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"kind-of": "^6.0.2",
|
||||
"section-matter": "^1.0.0",
|
||||
"strip-bom-string": "^1.0.0"
|
||||
@@ -35608,8 +35681,7 @@
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
@@ -36016,6 +36088,12 @@
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
|
||||
"dev": true
|
||||
},
|
||||
"is-unicode-supported": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
|
||||
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-utf8": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
|
||||
@@ -36434,6 +36512,12 @@
|
||||
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.flatten": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.isempty": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
|
||||
@@ -36513,6 +36597,12 @@
|
||||
"integrity": "sha1-j/TexTLYJIavWVc8OURZFOlEp/E=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||
"integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||
@@ -36520,12 +36610,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
|
||||
"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.0.0"
|
||||
"chalk": "^4.1.0",
|
||||
"is-unicode-supported": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"log-update": {
|
||||
@@ -36752,9 +36843,22 @@
|
||||
"dev": true
|
||||
},
|
||||
"markdown-it-image-lazy-loading": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-image-lazy-loading/-/markdown-it-image-lazy-loading-1.0.2.tgz",
|
||||
"integrity": "sha512-FBGKcF+zDSE7HEN9rGar6+36RtO3ozakqNLpbl2uL91DZQEIkXxN8uUZXJGCjvQL4O5f9IxeP5lagxX3FZ2SgA=="
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-image-lazy-loading/-/markdown-it-image-lazy-loading-1.1.0.tgz",
|
||||
"integrity": "sha512-3Mk/UjzNdYvhWyslIti9YUFSzQkmnaGsI3HC4jkw19VcIbnmp5Sofi18p1sIAHIvrQUGTAx8oW8tSDKSZEL49Q==",
|
||||
"requires": {
|
||||
"image-size": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"image-size": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz",
|
||||
"integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
|
||||
"requires": {
|
||||
"queue": "6.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"markdown-it-img-lazy": {
|
||||
"version": "1.0.2",
|
||||
@@ -37159,13 +37263,13 @@
|
||||
}
|
||||
},
|
||||
"micromatch": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
|
||||
"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.0.5"
|
||||
"picomatch": "^2.2.3"
|
||||
}
|
||||
},
|
||||
"miller-rabin": {
|
||||
@@ -38310,9 +38414,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
|
||||
"integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
|
||||
"dev": true
|
||||
},
|
||||
"pidtree": {
|
||||
@@ -39135,14 +39239,12 @@
|
||||
}
|
||||
},
|
||||
"postcss-selector-parser": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
|
||||
"integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz",
|
||||
"integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cssesc": "^3.0.0",
|
||||
"indexes-of": "^1.0.1",
|
||||
"uniq": "^1.0.1",
|
||||
"util-deprecate": "^1.0.2"
|
||||
}
|
||||
},
|
||||
@@ -39593,6 +39695,14 @@
|
||||
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"queue": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
|
||||
"integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
|
||||
"requires": {
|
||||
"inherits": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"queue-microtask": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz",
|
||||
@@ -41694,15 +41804,15 @@
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"version": "13.12.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.12.0.tgz",
|
||||
"integrity": "sha512-P8O1xDy41B7O7iXaSlW+UuFbE5+ZWQDb61ndGDxKIt36fMH50DtlQTbwLpFLf8DikceTAb3r6nPrRv30wBlzXw==",
|
||||
"version": "13.13.0",
|
||||
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.0.tgz",
|
||||
"integrity": "sha512-jvkM1iuH88vAvjdKPwPm6abiMP2/D/1chbfb+4GVONddOOskHuCXc0loyrLdxO1AwwH6jdnjYskkTKHQD7cXwQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@stylelint/postcss-css-in-js": "^0.37.2",
|
||||
"@stylelint/postcss-markdown": "^0.36.2",
|
||||
"autoprefixer": "^9.8.6",
|
||||
"balanced-match": "^1.0.0",
|
||||
"balanced-match": "^2.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cosmiconfig": "^7.0.0",
|
||||
"debug": "^4.3.1",
|
||||
@@ -41712,7 +41822,7 @@
|
||||
"file-entry-cache": "^6.0.1",
|
||||
"get-stdin": "^8.0.0",
|
||||
"global-modules": "^2.0.0",
|
||||
"globby": "^11.0.2",
|
||||
"globby": "^11.0.3",
|
||||
"globjoin": "^0.1.4",
|
||||
"html-tags": "^3.1.0",
|
||||
"ignore": "^5.1.8",
|
||||
@@ -41720,10 +41830,10 @@
|
||||
"imurmurhash": "^0.1.4",
|
||||
"known-css-properties": "^0.21.0",
|
||||
"lodash": "^4.17.21",
|
||||
"log-symbols": "^4.0.0",
|
||||
"log-symbols": "^4.1.0",
|
||||
"mathml-tag-names": "^2.1.3",
|
||||
"meow": "^9.0.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"micromatch": "^4.0.4",
|
||||
"normalize-selector": "^0.2.0",
|
||||
"postcss": "^7.0.35",
|
||||
"postcss-html": "^0.36.0",
|
||||
@@ -41733,7 +41843,7 @@
|
||||
"postcss-safe-parser": "^4.0.2",
|
||||
"postcss-sass": "^0.4.4",
|
||||
"postcss-scss": "^2.1.1",
|
||||
"postcss-selector-parser": "^6.0.4",
|
||||
"postcss-selector-parser": "^6.0.5",
|
||||
"postcss-syntax": "^0.36.2",
|
||||
"postcss-value-parser": "^4.1.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
@@ -41744,11 +41854,17 @@
|
||||
"style-search": "^0.1.0",
|
||||
"sugarss": "^2.0.0",
|
||||
"svg-tags": "^1.0.0",
|
||||
"table": "^6.0.7",
|
||||
"v8-compile-cache": "^2.2.0",
|
||||
"table": "^6.5.1",
|
||||
"v8-compile-cache": "^2.3.0",
|
||||
"write-file-atomic": "^3.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
|
||||
"integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
||||
@@ -42377,9 +42493,9 @@
|
||||
}
|
||||
},
|
||||
"svg-sprite-loader": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.5.tgz",
|
||||
"integrity": "sha512-d1F4Bkx//jvITCYo4r5wf8skiJLdTHEREIg9hMH+N9KGARm8o57oCR49O3iBevDY4T+TRcxuTPU479FNQVnt8w==",
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.6.tgz",
|
||||
"integrity": "sha512-AcGvAH19iNuqGZ+DItYo0WOSl+TjTTGvx2pli9xNAFrGZ3UmO50rQRVt2+YJHPrvIAzdvxVv1EyIu/gEePAMCg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.5.0",
|
||||
@@ -42440,21 +42556,24 @@
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"version": "6.0.7",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz",
|
||||
"integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==",
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.6.0.tgz",
|
||||
"integrity": "sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^7.0.2",
|
||||
"lodash": "^4.17.20",
|
||||
"ajv": "^8.0.1",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.flatten": "^4.4.0",
|
||||
"lodash.truncate": "^4.4.2",
|
||||
"slice-ansi": "^4.0.0",
|
||||
"string-width": "^4.2.0"
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz",
|
||||
"integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==",
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz",
|
||||
"integrity": "sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
@@ -43686,9 +43805,9 @@
|
||||
"integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
|
||||
},
|
||||
"vue-advanced-cropper": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-advanced-cropper/-/vue-advanced-cropper-1.5.0.tgz",
|
||||
"integrity": "sha512-WQs15c8wFRCje2GLdD6aGCRapttjjKE/dmz0qVFlRB7q38scB6G51G7eh5Jcnm4jMUgOX3OVD1sD2UWmHpaNpQ==",
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-advanced-cropper/-/vue-advanced-cropper-1.5.1.tgz",
|
||||
"integrity": "sha512-uK5le+RwMzYNKT+L9UTH9qNnqDNWcwZ/XKG5pFMb0Py8zuxl12OHCT/Fahc7FXhgp+ZcxzX2AJ7TiNQy8djAbA==",
|
||||
"requires": {
|
||||
"classnames": "^2.2.6",
|
||||
"debounce": "^1.2.0",
|
||||
|
||||
+7
-7
@@ -22,15 +22,15 @@
|
||||
"@vuepress/plugin-html-redirect": "^0.1.2",
|
||||
"@vuepress/plugin-last-updated": "^1.8.2",
|
||||
"autoprefixer": "^9.8.6",
|
||||
"eslint": "^7.24.0",
|
||||
"eslint-config-prettier": "^8.2.0",
|
||||
"eslint": "^7.25.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-config-standard": "^16.0.2",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-prettier": "^3.4.0",
|
||||
"eslint-plugin-promise": "^5.1.0",
|
||||
"eslint-plugin-vue": "^7.9.0",
|
||||
"gray-matter": "^4.0.2",
|
||||
"gray-matter": "^4.0.3",
|
||||
"husky": "^6.0.0",
|
||||
"lint-staged": "^10.5.4",
|
||||
"lodash": "^4.17.21",
|
||||
@@ -44,10 +44,10 @@
|
||||
"prettier": "^2.2.1",
|
||||
"slug": "^4.0.4",
|
||||
"standard-version": "^9.2.0",
|
||||
"stylelint": "^13.12.0",
|
||||
"stylelint": "^13.13.0",
|
||||
"stylelint-config-prettier": "^8.0.2",
|
||||
"stylelint-prettier": "^1.2.0",
|
||||
"svg-sprite-loader": "^6.0.5",
|
||||
"svg-sprite-loader": "^6.0.6",
|
||||
"svgo": "^2.3.0",
|
||||
"svgo-loader": "^3.0.0",
|
||||
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.1.0",
|
||||
@@ -75,12 +75,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"dayjs": "^1.10.4",
|
||||
"markdown-it-image-lazy-loading": "^1.0.2",
|
||||
"markdown-it-image-lazy-loading": "^1.1.0",
|
||||
"markdown-it-imsize": "^2.0.1",
|
||||
"tailwindcss-typography": "^3.1.0",
|
||||
"v-lazy-image": "^1.4.0",
|
||||
"v-scroll-lock": "^1.3.1",
|
||||
"vue-advanced-cropper": "^1.5.0",
|
||||
"vue-advanced-cropper": "^1.5.1",
|
||||
"vue-mq": "^1.0.1",
|
||||
"vue-multiselect": "^2.1.6",
|
||||
"vue-social-sharing": "^3.0.7",
|
||||
|
||||
@@ -32,18 +32,40 @@ module.exports = (options, context) => ({
|
||||
extendPageData($page) {
|
||||
const { frontmatter } = $page
|
||||
|
||||
// author config
|
||||
const authorName = frontmatter.author
|
||||
if (frontmatter.type) {
|
||||
frontmatter.type = {
|
||||
name: frontmatter.type,
|
||||
slug: slug(frontmatter.type),
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof authorName === 'string') {
|
||||
const authorKey = slug(authorName, { lower: true })
|
||||
if (typeof frontmatter.author === 'string') {
|
||||
frontmatter.author = frontmatter.author
|
||||
.split(/,|and|&/)
|
||||
.map((author) => ({ name: author.trim(), slug: slug(author) }))
|
||||
}
|
||||
|
||||
// setup author stub to keep templates happy
|
||||
const author = { name: authorName }
|
||||
if (frontmatter.tags) {
|
||||
frontmatter.tags = frontmatter.tags.map((tag) => ({
|
||||
name: tag,
|
||||
slug: slug(tag),
|
||||
}))
|
||||
}
|
||||
|
||||
// setup the page author object
|
||||
frontmatter.author = author
|
||||
frontmatter.authorKey = authorKey
|
||||
if (frontmatter.data) {
|
||||
frontmatter.data.forEach((subPage) => {
|
||||
if (subPage.tags) {
|
||||
subPage.tags = subPage.tags.map((tag) => ({
|
||||
name: tag,
|
||||
slug: slug(tag),
|
||||
}))
|
||||
}
|
||||
|
||||
// set links has hidden (future publishes, etc)
|
||||
if (shouldBeHidden(subPage)) {
|
||||
subPage.hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// exclude hidden pages (sitemap config, future publishes, etc)
|
||||
@@ -62,14 +84,5 @@ module.exports = (options, context) => ({
|
||||
frontmatter.hidden = true
|
||||
$page.hidden = true
|
||||
}
|
||||
|
||||
// set links has hidden (future publishes, etc)
|
||||
if (frontmatter.data) {
|
||||
frontmatter.data.forEach((item) => {
|
||||
if (shouldBeHidden(item)) {
|
||||
item.hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
(newest first)
|
||||
</span>
|
||||
of {{ resolvedActiveCategory }}
|
||||
<span v-if="activeAuthor"> by {{ activeAuthor }} </span>
|
||||
<span v-if="activeAuthor"> by {{ activeAuthor.name }} </span>
|
||||
<span v-if="searchedText.length">
|
||||
for {{ resolvedSearchedText }}
|
||||
</span>
|
||||
@@ -37,7 +37,7 @@
|
||||
class="multiselect__tag active-tag text-sm"
|
||||
@click="tagClick(tag)"
|
||||
>
|
||||
<span>#{{ tag }}</span
|
||||
<span>#{{ tagsList.find((t) => t.slug === tag).name }}</span
|
||||
><i class="multiselect__tag-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -75,13 +75,16 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapState('appState', [
|
||||
'tagsList',
|
||||
'activeCategory',
|
||||
'activeTags',
|
||||
'searchedText',
|
||||
'activeAuthor',
|
||||
]),
|
||||
resolvedActiveCategory() {
|
||||
return this.activeCategory ? `type "${this.activeCategory}"` : 'all types'
|
||||
return this.activeCategory
|
||||
? `type "${this.activeCategory.name}"`
|
||||
: 'all types'
|
||||
},
|
||||
resolvedSearchedText() {
|
||||
return `"${this.searchedText.join(' ')}"`
|
||||
|
||||
@@ -33,7 +33,7 @@ export default {
|
||||
return RegularCard
|
||||
}
|
||||
|
||||
switch (this.card.type) {
|
||||
switch (this.card.type.name) {
|
||||
case 'Academic paper':
|
||||
case 'Event':
|
||||
case 'News coverage':
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
See here: https://github.com/ipfs/ipfs-blog/pull/94
|
||||
-->
|
||||
<div
|
||||
v-if="frontmatter.type === 'Video'"
|
||||
v-if="frontmatter.type.slug === 'video'"
|
||||
class="cover embed-responsive embed-responsive-og"
|
||||
@click="handleVideoClick"
|
||||
>
|
||||
@@ -47,10 +47,7 @@
|
||||
:src="
|
||||
frontmatter.card_image
|
||||
? frontmatter.card_image
|
||||
: `/${frontmatter.type
|
||||
.toLowerCase()
|
||||
.split(' ')
|
||||
.join('-')}-placeholder.png`
|
||||
: `/${frontmatter.type.slug}-placeholder.png`
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
@@ -64,7 +61,9 @@
|
||||
:title="title"
|
||||
:description="frontmatter.description"
|
||||
:post-path="path"
|
||||
:onclick="frontmatter.type === 'Video' ? handleVideoClick : null"
|
||||
:onclick="
|
||||
frontmatter.type.slug === 'video' ? handleVideoClick : null
|
||||
"
|
||||
class="type-p4 text-primary"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="flex flex-row flex-wrap">
|
||||
<div
|
||||
v-for="(piece, index) in resolvedAuthorName"
|
||||
:key="piece"
|
||||
v-for="(piece, index) in author"
|
||||
:key="piece.name"
|
||||
itemprop="publisher author"
|
||||
itemtype="http://schema.org/Person"
|
||||
itemscope
|
||||
@@ -10,21 +10,15 @@
|
||||
>
|
||||
<span itemprop="name" class="flex flex-row">
|
||||
<router-link
|
||||
:to="{ path: $localePath, query: { author: piece.trim() } }"
|
||||
:to="{ path: $localePath, query: { author: piece.slug } }"
|
||||
rel="nofollow"
|
||||
>
|
||||
<span
|
||||
:class="computedClassName"
|
||||
@click="handleAuthorClick(piece.trim())"
|
||||
>
|
||||
{{ piece }}
|
||||
<span :class="computedClassName" @click="handleAuthorClick(piece)">
|
||||
{{ piece.name }}
|
||||
</span>
|
||||
</router-link>
|
||||
<span>{{
|
||||
resolvedAuthorName.length !== 1 &&
|
||||
index !== resolvedAuthorName.length - 1
|
||||
? ', '
|
||||
: ''
|
||||
author.length !== 1 && index !== author.length - 1 ? ', ' : ''
|
||||
}}</span>
|
||||
</span>
|
||||
</div>
|
||||
@@ -33,22 +27,20 @@
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex'
|
||||
import Author from '@theme/components/mixins/Author'
|
||||
import countly from '../../util/countly'
|
||||
|
||||
export default {
|
||||
name: 'PostAuthor',
|
||||
components: {},
|
||||
mixins: [Author],
|
||||
props: {
|
||||
author: {
|
||||
type: Array,
|
||||
default: null,
|
||||
},
|
||||
light: {
|
||||
type: Boolean,
|
||||
default: null,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
parent: {
|
||||
type: String,
|
||||
default: 'card',
|
||||
@@ -56,16 +48,6 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapState('appState', ['activeAuthor']),
|
||||
resolvedAuthorName() {
|
||||
const resolvedName = this.name.replace('and', ',')
|
||||
const pieces = resolvedName.match(/[,&]/g)
|
||||
|
||||
if (!pieces) {
|
||||
return [resolvedName]
|
||||
}
|
||||
|
||||
return resolvedName.split(/[,&]/g)
|
||||
},
|
||||
computedClassName() {
|
||||
return [
|
||||
'hover:underline cursor-pointer',
|
||||
@@ -74,15 +56,15 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleAuthorClick(authorName) {
|
||||
handleAuthorClick(author) {
|
||||
const authorTracking = {
|
||||
author: authorName,
|
||||
author: author.name,
|
||||
method: `${this.parent}-select`,
|
||||
}
|
||||
|
||||
countly.trackEvent(countly.events.FILTER, authorTracking)
|
||||
|
||||
this.$store.commit('appState/setActiveAuthor', authorName)
|
||||
this.$store.commit('appState/setActiveAuthor', author)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 pt-4">
|
||||
<div class="flex flex-col md:pr-8">
|
||||
<h1 class="type-h1">{{ title }}</h1>
|
||||
<PostAuthor v-bind="author" light parent="blog-post" />
|
||||
<PostAuthor :author="author" light parent="blog-post" />
|
||||
<time
|
||||
class="text-gray"
|
||||
pubdate
|
||||
@@ -37,7 +37,7 @@
|
||||
>
|
||||
<PostTag
|
||||
v-for="tag in resolvedTags"
|
||||
:key="tag"
|
||||
:key="tag.slug"
|
||||
:tag="tag"
|
||||
link
|
||||
dark
|
||||
@@ -76,7 +76,7 @@ export default {
|
||||
default: () => [],
|
||||
},
|
||||
author: {
|
||||
type: Object,
|
||||
type: Array,
|
||||
default: null,
|
||||
},
|
||||
date: {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
{{ title }}
|
||||
</h1>
|
||||
</a>
|
||||
<PostAuthor v-if="author" v-bind="author" />
|
||||
<PostAuthor v-if="author" :author="author" />
|
||||
<p
|
||||
v-if="description"
|
||||
class="type-p1 text-sm text-primary clamp-3 mt-2"
|
||||
@@ -41,9 +41,9 @@
|
||||
class="p-1 mr-1 bg-aquaMuted leading-none bg-opacity-50 text-blueGreen font-semibold hover:bg-blueGreen hover:text-white transition duration-300 ease-in-out rounded cursor-pointer mt-1"
|
||||
@click="handleCatClick"
|
||||
>
|
||||
{{ category }}
|
||||
{{ category.name }}
|
||||
</button>
|
||||
<PostTag v-for="tag in resolvedTags" :key="tag" class="mt-1" :tag="tag" />
|
||||
<PostTag v-for="tag in tags" :key="tag.name" class="mt-1" :tag="tag" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -69,7 +69,7 @@ export default {
|
||||
default: () => [],
|
||||
},
|
||||
author: {
|
||||
type: Object,
|
||||
type: Array,
|
||||
default: null,
|
||||
},
|
||||
date: {
|
||||
@@ -77,7 +77,7 @@ export default {
|
||||
default: null,
|
||||
},
|
||||
category: {
|
||||
type: String,
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
title: {
|
||||
@@ -104,19 +104,11 @@ export default {
|
||||
.utc(this.date)
|
||||
.format(this.$themeLocaleConfig.dateFormat || 'YYYY-MM-DD')
|
||||
},
|
||||
resolvedTags() {
|
||||
if (!this.tags || Array.isArray(this.tags)) return this.tags
|
||||
|
||||
return this.tags
|
||||
.replace(/, /g, ',')
|
||||
.split(',')
|
||||
.filter((tag) => tag)
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleCatClick() {
|
||||
const categoryTracking = {
|
||||
category: this.category,
|
||||
category: this.category.name,
|
||||
method: 'card-select',
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
<template>
|
||||
<router-link
|
||||
v-if="link"
|
||||
:to="{ path: $localePath, query: { tags: tag } }"
|
||||
:to="{ path: $localePath, query: { tags: tag.slug } }"
|
||||
:class="computedClass"
|
||||
rel="nofollow"
|
||||
@click.native="handleTagClick"
|
||||
>
|
||||
#{{ tag }}
|
||||
#{{ tag.name }}
|
||||
</router-link>
|
||||
<button v-else :class="computedClass" @click="addNewTag">#{{ tag }}</button>
|
||||
<button v-else :class="computedClass" @click="addNewTag">
|
||||
#{{ tag.name }}
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -22,7 +24,7 @@ export default {
|
||||
default: () => false,
|
||||
},
|
||||
tag: {
|
||||
type: String,
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
dark: {
|
||||
@@ -56,16 +58,16 @@ export default {
|
||||
methods: {
|
||||
handleTagClick() {
|
||||
this.trackTag()
|
||||
this.$store.commit('appState/setActiveTags', [this.tag])
|
||||
this.$store.commit('appState/setActiveTags', [this.tag.slug])
|
||||
},
|
||||
addNewTag() {
|
||||
this.trackTag()
|
||||
this.$store.commit('appState/addNewTag', [this.tag])
|
||||
this.$store.commit('appState/addNewTag', [this.tag.slug])
|
||||
this.callback()
|
||||
},
|
||||
trackTag() {
|
||||
const tagTracking = {
|
||||
tag: this.tag,
|
||||
tag: this.tag.name,
|
||||
method: `${this.parent}-select`,
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<div class="p-4 flex flex-grow flex-col">
|
||||
<div class="flex flex-grow">
|
||||
<PostMeta
|
||||
category="Blog post"
|
||||
:category="{ name: 'Blog post', slug: 'blog-post' }"
|
||||
:author="frontmatter.author"
|
||||
:date="frontmatter.date"
|
||||
:tags="frontmatter.tags"
|
||||
|
||||
@@ -8,9 +8,13 @@
|
||||
>
|
||||
<multiselect
|
||||
ref="select0"
|
||||
:value="activeCategory !== '' ? activeCategory : 'All content'"
|
||||
:value="
|
||||
activeCategory !== '' ? activeCategory : { name: 'All content' }
|
||||
"
|
||||
class="mb-2 xl:mb-0 xl:mr-2 xl:max-w-xs"
|
||||
:options="['All content', ...categoriesList]"
|
||||
:options="[{ name: 'All content' }, ...categoriesList]"
|
||||
label="name"
|
||||
track-by="name"
|
||||
:searchable="false"
|
||||
:allow-empty="false"
|
||||
select-label="Press 'enter' to select"
|
||||
@@ -25,7 +29,12 @@
|
||||
tag-placeholder="search for this text"
|
||||
placeholder="Search for words or #tags"
|
||||
track-by="name"
|
||||
label="name"
|
||||
:custom-label="
|
||||
(option) =>
|
||||
tagsList.map((tag) => tag.name).includes(option.name)
|
||||
? `#${option.name}`
|
||||
: option.name
|
||||
"
|
||||
:limit="['xxl'].includes($mq) ? tagsLimit : tagsList.length"
|
||||
:options="resolvedTags"
|
||||
:multiple="true"
|
||||
@@ -83,8 +92,8 @@ export default {
|
||||
]),
|
||||
resolvedTags() {
|
||||
return this.tags.map((tag) => ({
|
||||
name: `#${tag}`,
|
||||
value: tag,
|
||||
name: tag.name,
|
||||
value: tag.slug,
|
||||
}))
|
||||
},
|
||||
queryProptertyWatchlist() {
|
||||
@@ -115,7 +124,7 @@ export default {
|
||||
},
|
||||
calculateTagsLimit(newTags) {
|
||||
// The max value a char chan occupy in px
|
||||
const multiplier = 8
|
||||
const multiplier = 12
|
||||
// Width of the help text - "X or more"
|
||||
const helpTextWidth = 75
|
||||
// Padding and margin for the each tag
|
||||
@@ -159,16 +168,17 @@ export default {
|
||||
|
||||
const queryTags = query.tags ? query.tags.split(',') : []
|
||||
const querySearch = query.search ? query.search.split(',') : []
|
||||
const tagsListSlugs = this.tagsList.map((tag) => tag.slug)
|
||||
|
||||
const tagArray = this.selectedTags.map((tag) => tag.value)
|
||||
const tagsToAdd = [...queryTags, ...querySearch].filter(
|
||||
(tag) => !tagArray.includes(tag)
|
||||
)
|
||||
const tagsToRemove = tagArray.filter(
|
||||
(tag) => this.tagsList.includes(tag) && !queryTags.includes(tag)
|
||||
(tag) => tagsListSlugs.includes(tag) && !queryTags.includes(tag)
|
||||
)
|
||||
const textsToRemove = tagArray.filter(
|
||||
(tag) => !this.tagsList.includes(tag) && !querySearch.includes(tag)
|
||||
(tag) => !tagsListSlugs.includes(tag) && !querySearch.includes(tag)
|
||||
)
|
||||
|
||||
const newTags = this.selectedTags.filter(
|
||||
@@ -178,11 +188,13 @@ export default {
|
||||
)
|
||||
|
||||
tagsToAdd.forEach((tag) => {
|
||||
const isTag = this.tagsList.includes(tag)
|
||||
const filteredTag = this.tagsList.find(
|
||||
(listTag) => listTag.slug === tag
|
||||
)
|
||||
|
||||
newTags.push({
|
||||
name: (isTag ? '#' : '') + tag,
|
||||
value: tag,
|
||||
name: filteredTag ? filteredTag.name : tag,
|
||||
value: filteredTag ? filteredTag.slug : tag,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -190,7 +202,7 @@ export default {
|
||||
},
|
||||
setActiveCategory(category) {
|
||||
const categoryTracking = {
|
||||
category: category,
|
||||
category: category.name,
|
||||
method: 'filter-select',
|
||||
}
|
||||
|
||||
@@ -198,7 +210,11 @@ export default {
|
||||
|
||||
this.$store.commit(
|
||||
'appState/setActiveCategory',
|
||||
this.categoriesList.includes(category) ? category : ''
|
||||
this.categoriesList
|
||||
.map((category) => category.slug)
|
||||
.includes(category.slug)
|
||||
? category
|
||||
: ''
|
||||
)
|
||||
},
|
||||
removeTag(tagToRemove) {
|
||||
@@ -211,8 +227,9 @@ export default {
|
||||
},
|
||||
handleSearch() {
|
||||
const tagArray = this.selectedTags.map((tag) => tag.value)
|
||||
const tags = tagArray.filter((tag) => this.tagsList.includes(tag))
|
||||
const texts = tagArray.filter((tag) => !this.tagsList.includes(tag))
|
||||
const tagsListSlugs = this.tagsList.map((tag) => tag.slug)
|
||||
const tags = tagArray.filter((tag) => tagsListSlugs.includes(tag))
|
||||
const texts = tagArray.filter((tag) => !tagsListSlugs.includes(tag))
|
||||
|
||||
this.$store.commit('appState/setActiveTags', tags)
|
||||
this.$store.commit('appState/setSearchedText', texts)
|
||||
@@ -236,7 +253,7 @@ export default {
|
||||
},
|
||||
focusOnSubmit(option) {
|
||||
const tagTracking = {
|
||||
tag: option.value,
|
||||
tag: option.name,
|
||||
method: 'filter-select',
|
||||
}
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
class="p-1 bg-aquaMuted leading-none bg-opacity-50 rounded text-blueGreen font-semibold hover:bg-blueGreen hover:text-white text-sm mr-1"
|
||||
@click="handleCatClick()"
|
||||
>
|
||||
{{ videoModalCard.frontmatter.type }}
|
||||
{{ videoModalCard.frontmatter.type.name }}
|
||||
</button>
|
||||
<PostTag
|
||||
v-for="tag in resolvedTags"
|
||||
:key="tag"
|
||||
:key="tag.slug"
|
||||
:tag="tag"
|
||||
:callback="closeModal"
|
||||
class-name="text-sm"
|
||||
@@ -141,7 +141,7 @@ export default {
|
||||
methods: {
|
||||
handleCatClick() {
|
||||
const categoryTracking = {
|
||||
category: this.videoModalCard.frontmatter.type,
|
||||
category: this.videoModalCard.frontmatter.type.name,
|
||||
method: 'video-modal-select',
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
svgIcon: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
twitter: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@@ -60,11 +60,13 @@ import LanguageSelector from '@theme/components/base/LanguageSelector'
|
||||
import { getTags } from '@theme/util/tagUtils'
|
||||
import { parseProtectedPost, checkItem } from '@theme/util/blogUtils'
|
||||
import uniq from 'lodash/uniq'
|
||||
import uniqBy from 'lodash/uniqBy'
|
||||
import pick from 'lodash/pick'
|
||||
import isEqual from 'lodash/isEqual'
|
||||
import orderBy from 'lodash/orderBy'
|
||||
import countly from '../util/countly'
|
||||
|
||||
const defaultCategory = 'Blog post'
|
||||
const defaultCategory = { name: 'Blog post', slug: 'blog-post' }
|
||||
|
||||
export default {
|
||||
name: 'BlogIndex',
|
||||
@@ -95,12 +97,19 @@ export default {
|
||||
'videoModalCard',
|
||||
]),
|
||||
tags() {
|
||||
return getTags(this.activeTags, this.publicPages)
|
||||
return getTags(
|
||||
this.tagsList.filter((tag) => this.activeTags.includes(tag.slug)),
|
||||
this.publicPages
|
||||
)
|
||||
},
|
||||
publicPages: function () {
|
||||
let result = []
|
||||
this.$pagination.pages.forEach((page) => {
|
||||
if (this.categoriesList.includes(page.frontmatter.type)) {
|
||||
if (
|
||||
this.categoriesList
|
||||
.map((category) => category.slug)
|
||||
.includes(page.frontmatter.type?.slug)
|
||||
) {
|
||||
result = [
|
||||
...result,
|
||||
...parseProtectedPost(
|
||||
@@ -144,7 +153,9 @@ export default {
|
||||
: this.publicPages.slice(0, this.numberOfPagesToShow)
|
||||
},
|
||||
queryProptertyWatchlist() {
|
||||
return `${this.activeCategory}|${this.activeTags}|${this.searchedText}|${this.activeAuthor}`
|
||||
return `${JSON.stringify(this.activeCategory)}|${this.activeTags}|${
|
||||
this.searchedText
|
||||
}|${this.activeAuthor}`
|
||||
},
|
||||
urlUpdate() {
|
||||
return this.$route.query
|
||||
@@ -177,25 +188,20 @@ export default {
|
||||
}
|
||||
|
||||
if (data) {
|
||||
tagsArray.push(
|
||||
uniq(
|
||||
data
|
||||
.filter((subPage) => subPage.tags)
|
||||
.map((subPage) => subPage.tags)
|
||||
.flat(2)
|
||||
)
|
||||
)
|
||||
data.forEach((subPage) => {
|
||||
if (subPage.tags) {
|
||||
tagsArray.push(...subPage.tags)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (author) {
|
||||
authorsArray.push(
|
||||
author.name.split(/,|and|&/).map((author) => author.trim())
|
||||
)
|
||||
authorsArray.push(author)
|
||||
}
|
||||
})
|
||||
|
||||
categories = uniq(categories, true)
|
||||
tagsArray = uniq(tagsArray.flat(2), true)
|
||||
categories = orderBy(uniq(categories, true), 'name')
|
||||
tagsArray = uniqBy(tagsArray.flat(2), 'name')
|
||||
authorsArray = uniq(authorsArray.flat(2), true)
|
||||
|
||||
this.$store.commit('appState/setCategoriesList', [
|
||||
@@ -225,7 +231,11 @@ export default {
|
||||
|
||||
let queryCategory = query.category || ''
|
||||
|
||||
if (queryCategory && !this.categoriesList.includes(queryCategory)) {
|
||||
const filteredCategory = this.categoriesList.find(
|
||||
(category) =>
|
||||
category.slug === queryCategory || category.name === queryCategory
|
||||
)
|
||||
if (queryCategory && !filteredCategory) {
|
||||
queryCategory = ''
|
||||
delete newQuery.category
|
||||
}
|
||||
@@ -233,7 +243,9 @@ export default {
|
||||
let queryTags = query.tags ? query.tags.split(',') : []
|
||||
|
||||
if (queryTags.length > 0) {
|
||||
queryTags = queryTags.filter((tag) => this.tagsList.includes(tag))
|
||||
queryTags = queryTags.filter((queryTag) =>
|
||||
this.tagsList.find((tag) => tag.slug === queryTag)
|
||||
)
|
||||
|
||||
if (queryTags.length === 0) {
|
||||
delete newQuery.tags
|
||||
@@ -242,7 +254,10 @@ export default {
|
||||
|
||||
let queryAuthor = query.author
|
||||
|
||||
if (queryAuthor && !this.authorsList.includes(queryAuthor)) {
|
||||
if (
|
||||
queryAuthor &&
|
||||
!this.authorsList.map((author) => author.slug).includes(queryAuthor)
|
||||
) {
|
||||
queryAuthor = ''
|
||||
delete newQuery.author
|
||||
}
|
||||
@@ -255,7 +270,7 @@ export default {
|
||||
|
||||
if (queryCategory !== '') {
|
||||
const categoryTracking = {
|
||||
category: queryCategory,
|
||||
category: filteredCategory.name,
|
||||
method: 'urlQuery',
|
||||
}
|
||||
|
||||
@@ -263,9 +278,9 @@ export default {
|
||||
}
|
||||
|
||||
if (queryTags.length > 0) {
|
||||
queryTags.forEach((tag) => {
|
||||
queryTags.forEach((queryTag) => {
|
||||
const tagTracking = {
|
||||
tag: tag,
|
||||
tag: this.tagsList.find((tag) => tag.slug === queryTag).name,
|
||||
method: 'urlQuery',
|
||||
}
|
||||
|
||||
@@ -294,19 +309,25 @@ export default {
|
||||
}
|
||||
|
||||
this.$store.commit('appState/setActiveTags', queryTags)
|
||||
this.$store.commit('appState/setActiveCategory', queryCategory)
|
||||
this.$store.commit(
|
||||
'appState/setActiveCategory',
|
||||
filteredCategory || queryCategory
|
||||
)
|
||||
this.$store.commit(
|
||||
'appState/setSearchedText',
|
||||
queryText ? queryText.split(',') : []
|
||||
)
|
||||
this.$store.commit('appState/setActiveAuthor', queryAuthor || '')
|
||||
this.$store.commit(
|
||||
'appState/setActiveAuthor',
|
||||
this.authorsList.find((author) => author.slug === queryAuthor) || ''
|
||||
)
|
||||
|
||||
const latestWeeklyPost = this.publicPages
|
||||
.filter(
|
||||
(item) =>
|
||||
item.frontmatter &&
|
||||
item.frontmatter.tags &&
|
||||
item.frontmatter.tags.includes('weekly')
|
||||
item.frontmatter.tags.find((tag) => tag.name === 'weekly')
|
||||
)
|
||||
.sort(
|
||||
(a, b) => new Date(b.frontmatter.date) - new Date(a.frontmatter.date)
|
||||
@@ -323,8 +344,8 @@ export default {
|
||||
...this.$route.query,
|
||||
tags: this.activeTags.join(','),
|
||||
search: this.searchedText.join(','),
|
||||
category: this.activeCategory,
|
||||
author: this.activeAuthor,
|
||||
category: this.activeCategory.slug || '',
|
||||
author: this.activeAuthor.slug || '',
|
||||
}
|
||||
|
||||
Object.keys(newQuery).forEach((entry) => {
|
||||
@@ -333,7 +354,6 @@ export default {
|
||||
delete newQuery[entry]
|
||||
}
|
||||
})
|
||||
|
||||
this.$router.replace({ query: newQuery }).catch(() => {})
|
||||
},
|
||||
blockLazyLoad() {
|
||||
|
||||
@@ -53,6 +53,17 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// redirect routes that are not blog posts (/events, /videos, etc)
|
||||
// to the homepage with the search parameter category
|
||||
if (!this.isVisible && this.$root.$page.frontmatter.type) {
|
||||
const type = this.$root.$page.frontmatter.type
|
||||
|
||||
// path is relative to support ipfs sub path deployments
|
||||
return this.$router.replace({ path: `../?category=${type.slug}` })
|
||||
}
|
||||
|
||||
// redirect any other blog post route that should not be visible
|
||||
// to the 404 page (hidden or scheduled publish posts)
|
||||
if (!this.isVisible) {
|
||||
// path to 404 is relative to support ipfs sub path deployments
|
||||
return this.$router.replace({ path: '../404' })
|
||||
|
||||
@@ -2,29 +2,27 @@ export function checkItem({
|
||||
postType,
|
||||
tags,
|
||||
title,
|
||||
author = {},
|
||||
author = [],
|
||||
activeTags = [],
|
||||
searchedText = [],
|
||||
activeCategory = '',
|
||||
activeAuthor = '',
|
||||
activeAuthor,
|
||||
}) {
|
||||
if (activeCategory && decodeURI(activeCategory) !== postType) {
|
||||
if (activeCategory && activeCategory.slug !== postType.slug) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (
|
||||
activeAuthor &&
|
||||
((author.name &&
|
||||
!author.name
|
||||
.toLowerCase()
|
||||
.includes(decodeURI(activeAuthor.toLowerCase()))) ||
|
||||
!author.name)
|
||||
((author.length > 0 &&
|
||||
!author.map((entry) => entry.slug).includes(activeAuthor.slug)) ||
|
||||
author.length === 0)
|
||||
) {
|
||||
return false
|
||||
}
|
||||
|
||||
for (let i = 0; i < activeTags.length; i++) {
|
||||
if (!tags || !tags.includes(activeTags[i])) {
|
||||
if (!tags || !tags.map((tag) => tag.slug).includes(activeTags[i])) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
@@ -76,13 +74,11 @@ export function parseProtectedPost(
|
||||
type: post.frontmatter.type,
|
||||
date: item.date,
|
||||
title: item.title,
|
||||
author: { name: item.author },
|
||||
path: item.path,
|
||||
frontmatter: {
|
||||
...item,
|
||||
date: item.date,
|
||||
title: item.title,
|
||||
author: { name: item.author },
|
||||
path: item.path,
|
||||
type: post.frontmatter.type,
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import isArray from 'lodash/isArray'
|
||||
import orderBy from 'lodash/orderBy'
|
||||
|
||||
export const getTags = (activeTags, posts) => {
|
||||
const tags = [...activeTags]
|
||||
@@ -8,16 +8,14 @@ export const getTags = (activeTags, posts) => {
|
||||
return
|
||||
}
|
||||
|
||||
const postTags = isArray(post.frontmatter.tags)
|
||||
? post.frontmatter.tags
|
||||
: post.frontmatter.tags.replace(/, /g, ',').split(',')
|
||||
const postTags = post.frontmatter.tags
|
||||
|
||||
for (let i = 0; i < postTags.length; i++) {
|
||||
if (postTags[i] && !tags.includes(postTags[i])) {
|
||||
if (postTags[i] && !tags.find((tag) => tag.slug === postTags[i].slug)) {
|
||||
tags.push(postTags[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return tags.sort()
|
||||
return orderBy(tags, 'name')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user