diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..dac255d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.15.1 diff --git a/package.json b/package.json index b985749..c604585 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,17 @@ { "scripts": { - "start": "vuepress-vite dev src", - "build": "vuepress-vite build src" + "dev": "vitepress dev src", + "build": "vitepress build src" }, "devDependencies": { + "rollup-plugin-fluent-vue": "^3.0.0", + "vitepress": "^1.0.0-alpha.1" + }, + "dependencies": { "@fluent/bundle": "^0.17.0", - "@vuepress/plugin-search": "^2.0.0-beta.27", - "@vuepress/plugin-shiki": "^2.0.0-beta.27", + "@vueuse/core": "^8.6.0", "date-fns": "^2.25.0", "fluent-vue": "^3.0.0", - "fluent-vue-loader": "^3.0.1", - "primeflex": "^2.0.0", - "primeicons": "^4.1.0", - "primevue": "^3.8.2", - "rollup-plugin-fluent-vue": "^3.0.0", - "sitemap": "^7.0.0", - "vuepress-vite": "^2.0.0-beta.27" + "vue": "^3.2.36" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3bc928..b5ee15b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,476 +1,272 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@fluent/bundle': ^0.17.0 - '@vuepress/plugin-search': ^2.0.0-beta.27 - '@vuepress/plugin-shiki': ^2.0.0-beta.27 + '@vueuse/core': ^8.6.0 date-fns: ^2.25.0 fluent-vue: ^3.0.0 - fluent-vue-loader: ^3.0.1 - primeflex: ^2.0.0 - primeicons: ^4.1.0 - primevue: ^3.8.2 rollup-plugin-fluent-vue: ^3.0.0 - sitemap: ^7.0.0 - vuepress-vite: ^2.0.0-beta.27 + vitepress: ^1.0.0-alpha.1 + vue: ^3.2.36 -devDependencies: +dependencies: '@fluent/bundle': 0.17.0 - '@vuepress/plugin-search': 2.0.0-beta.27 - '@vuepress/plugin-shiki': 2.0.0-beta.27 + '@vueuse/core': 8.6.0_vue@3.2.36 date-fns: 2.25.0 - fluent-vue: 3.0.0_@fluent+bundle@0.17.0 - fluent-vue-loader: 3.0.1 - primeflex: 2.0.0 - primeicons: 4.1.0 - primevue: 3.8.2 + fluent-vue: 3.0.0_mr6cufgt6ycgfyxmc7zfnmihk4 + vue: 3.2.36 + +devDependencies: rollup-plugin-fluent-vue: 3.0.0 - sitemap: 7.0.0 - vuepress-vite: 2.0.0-beta.27 + vitepress: 1.0.0-alpha.1 packages: - /@babel/parser/7.16.0: - resolution: {integrity: sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true - - /@fluent/bundle/0.17.0: - resolution: {integrity: sha512-G/9wDCTKGPyHgw4ON3vBlLUIBBGG7vq8ytExqh4uwTfoeOfQ5VU5Xr6F+UV8B72k9P9S72GqFTXvqjS48pBVpg==} - engines: {node: '>=12.0.0', npm: '>=7.0.0'} - dev: true - - /@fluent/sequence/0.7.0_@fluent+bundle@0.17.0: - resolution: {integrity: sha512-aH1xMwX8DFvKOQSKUKpB3zMsnJ2rRKt7MajLNnx/r3V3DWDo2nzEfm21d7UyOgwEckPIjPmhxdW1MEmsGUxYIw==} - engines: {node: '>=12.0.0', npm: '>=7.0.0'} - peerDependencies: - '@fluent/bundle': '>= 0.13.0' - dependencies: - '@fluent/bundle': 0.17.0 - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 - dev: true - - /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - dev: true - - /@types/fs-extra/9.0.13: - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + /@algolia/autocomplete-core/1.6.3: + resolution: {integrity: sha512-dqQqRt01fX3YuVFrkceHsoCnzX0bLhrrg8itJI1NM68KjrPYQPYsE+kY8EZTCM4y8VDnhqJErR73xe/ZsV+qAA==} dependencies: - '@types/node': 16.11.6 + '@algolia/autocomplete-shared': 1.6.3 dev: true - /@types/hash-sum/1.0.0: - resolution: {integrity: sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==} + /@algolia/autocomplete-shared/1.6.3: + resolution: {integrity: sha512-UV46bnkTztyADFaETfzFC5ryIdGVb2zpAoYgu0tfcuYWjhg1KbLXveFffZIrGVoboqmAk1b+jMrl6iCja1i3lg==} dev: true - /@types/linkify-it/3.0.2: - resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} - dev: true - - /@types/markdown-it/12.2.3: - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + /@algolia/cache-browser-local-storage/4.13.1: + resolution: {integrity: sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg==} dependencies: - '@types/linkify-it': 3.0.2 - '@types/mdurl': 1.0.2 - dev: true - - /@types/mdurl/1.0.2: - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} - dev: true - - /@types/ms/0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true - - /@types/node/15.14.9: - resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + '@algolia/cache-common': 4.13.1 dev: true - /@types/node/16.11.6: - resolution: {integrity: sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==} + /@algolia/cache-common/4.13.1: + resolution: {integrity: sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA==} dev: true - /@types/sax/1.2.3: - resolution: {integrity: sha512-+QSw6Tqvs/KQpZX8DvIl3hZSjNFLW/OqE5nlyHXtTwODaJvioN2rOWpBNEWZp2HZUFhOh+VohmJku/WxEXU2XA==} + /@algolia/cache-in-memory/4.13.1: + resolution: {integrity: sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ==} dependencies: - '@types/node': 15.14.9 + '@algolia/cache-common': 4.13.1 dev: true - /@vitejs/plugin-vue/1.9.4_vite@2.6.13: - resolution: {integrity: sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A==} - engines: {node: '>=12.0.0'} - peerDependencies: - vite: ^2.5.10 + /@algolia/client-account/4.13.1: + resolution: {integrity: sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ==} dependencies: - vite: 2.6.13 + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@vue/compiler-core/3.2.20: - resolution: {integrity: sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==} + /@algolia/client-analytics/4.13.1: + resolution: {integrity: sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA==} dependencies: - '@babel/parser': 7.16.0 - '@vue/shared': 3.2.20 - estree-walker: 2.0.2 - source-map: 0.6.1 + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@vue/compiler-dom/3.2.20: - resolution: {integrity: sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==} + /@algolia/client-common/4.13.1: + resolution: {integrity: sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg==} dependencies: - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@vue/compiler-sfc/3.2.20: - resolution: {integrity: sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==} + /@algolia/client-personalization/4.13.1: + resolution: {integrity: sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w==} dependencies: - '@babel/parser': 7.16.0 - '@vue/compiler-core': 3.2.20 - '@vue/compiler-dom': 3.2.20 - '@vue/compiler-ssr': 3.2.20 - '@vue/ref-transform': 3.2.20 - '@vue/shared': 3.2.20 - estree-walker: 2.0.2 - magic-string: 0.25.7 - postcss: 8.3.11 - source-map: 0.6.1 + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@vue/compiler-ssr/3.2.20: - resolution: {integrity: sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==} + /@algolia/client-search/4.13.1: + resolution: {integrity: sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A==} dependencies: - '@vue/compiler-dom': 3.2.20 - '@vue/shared': 3.2.20 + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@vue/devtools-api/6.0.0-beta.19: - resolution: {integrity: sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==} + /@algolia/logger-common/4.13.1: + resolution: {integrity: sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw==} dev: true - /@vue/reactivity/3.2.20: - resolution: {integrity: sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==} + /@algolia/logger-console/4.13.1: + resolution: {integrity: sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA==} dependencies: - '@vue/shared': 3.2.20 + '@algolia/logger-common': 4.13.1 dev: true - /@vue/ref-transform/3.2.20: - resolution: {integrity: sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==} + /@algolia/requester-browser-xhr/4.13.1: + resolution: {integrity: sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA==} dependencies: - '@babel/parser': 7.16.0 - '@vue/compiler-core': 3.2.20 - '@vue/shared': 3.2.20 - estree-walker: 2.0.2 - magic-string: 0.25.7 + '@algolia/requester-common': 4.13.1 dev: true - /@vue/runtime-core/3.2.20: - resolution: {integrity: sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==} - dependencies: - '@vue/reactivity': 3.2.20 - '@vue/shared': 3.2.20 + /@algolia/requester-common/4.13.1: + resolution: {integrity: sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w==} dev: true - /@vue/runtime-dom/3.2.20: - resolution: {integrity: sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==} + /@algolia/requester-node-http/4.13.1: + resolution: {integrity: sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw==} dependencies: - '@vue/runtime-core': 3.2.20 - '@vue/shared': 3.2.20 - csstype: 2.6.18 + '@algolia/requester-common': 4.13.1 dev: true - /@vue/server-renderer/3.2.20_vue@3.2.20: - resolution: {integrity: sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==} - peerDependencies: - vue: 3.2.20 + /@algolia/transporter/4.13.1: + resolution: {integrity: sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw==} dependencies: - '@vue/compiler-ssr': 3.2.20 - '@vue/shared': 3.2.20 - vue: 3.2.20 - dev: true - - /@vue/shared/3.2.20: - resolution: {integrity: sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==} + '@algolia/cache-common': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/requester-common': 4.13.1 dev: true - /@vuepress/bundler-vite/2.0.0-beta.27: - resolution: {integrity: sha512-HOiIUq8lmcmO4PijxKCXk9dT9ImE//eqEDOvmJrWvJsbdePYcKw2/dVRKdSEeBwmL3xSjo0gIvsbiVx+P6umRA==} - dependencies: - '@vitejs/plugin-vue': 1.9.4_vite@2.6.13 - '@vue/compiler-sfc': 3.2.20 - '@vue/server-renderer': 3.2.20_vue@3.2.20 - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - autoprefixer: 10.4.0_postcss@8.3.11 - connect-history-api-fallback: 1.6.0 - postcss: 8.3.11 - postcss-csso: 5.0.1_postcss@8.3.11 - rollup: 2.58.3 - vite: 2.6.13 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - transitivePeerDependencies: - - less - - sass - - stylus - - supports-color - dev: true + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + engines: {node: '>=6.9.0'} - /@vuepress/cli/2.0.0-beta.27: - resolution: {integrity: sha512-YVRP7nQx2QHWA0PJM+HecvIX5kPb2/64IQtxBPwoNgSyLfVL7uCX3eTgOyaC0+RMJ31IpiiEcRgNpDQuaPc95A==} + /@babel/parser/7.18.4: + resolution: {integrity: sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==} + engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - cac: 6.7.11 - chokidar: 3.5.2 - envinfo: 7.8.1 - esbuild: 0.13.12 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/types': 7.18.4 - /@vuepress/client/2.0.0-beta.27: - resolution: {integrity: sha512-U34RLDsS1dX2GGpqmHR36sQHvC8sDrJ22f/NOeNbF4TnIK3m591F4Ps04+4F+j5UosNzRMKCZD3+9UMM9g/f7A==} + /@babel/types/7.18.4: + resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} + engines: {node: '>=6.9.0'} dependencies: - '@vuepress/shared': 2.0.0-beta.27 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - dev: true + '@babel/helper-validator-identifier': 7.16.7 + to-fast-properties: 2.0.0 - /@vuepress/core/2.0.0-beta.27: - resolution: {integrity: sha512-bTpG86CP7lc6/PS3Vg4vTt0/vlUKgz8Rav8YRCl/VWrrxWZbaRcIo/Qwz+YYMmH6ejokFjJf/2/1RJ6mi8V/Lw==} - dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/markdown': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - gray-matter: 4.0.3 - toml: 3.0.0 - transitivePeerDependencies: - - supports-color + /@docsearch/css/3.1.0: + resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} dev: true - /@vuepress/markdown/2.0.0-beta.27: - resolution: {integrity: sha512-BaZTCewE/YzFCK0rNam/dMPQtDPFfLRjWqgoP+i29XRTBqpOE0NwPwAE47mClVStMp36Rs7jq0G5rHsWTVSPuA==} + /@docsearch/js/3.1.0: + resolution: {integrity: sha512-5XSK+xbP0hcTIp54MECqxkWLs6kf7Ug4nWdxWNtx8cUpLiFNFnKXDxCb35wnyNpjukmrx7Q9DkO5tFFsmNVxng==} dependencies: - '@types/markdown-it': 12.2.3 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - markdown-it: 12.2.0 - markdown-it-anchor: 8.4.1_b5b6ac618dbcb305e9dd9bd86fa4e841 - markdown-it-emoji: 2.0.0 - mdurl: 1.0.1 + '@docsearch/react': 3.1.0 + preact: 10.7.3 transitivePeerDependencies: - - supports-color + - '@types/react' + - react + - react-dom dev: true - /@vuepress/plugin-active-header-links/2.0.0-beta.27: - resolution: {integrity: sha512-7lHM6DMplk+MQMTR2XTVQOPlwTvXORmhV4ogvpWraqAADqh6+nXe1eMZYci5rufp/JKzNXtCQ1nSD7BCBI12DQ==} + /@docsearch/react/3.1.0: + resolution: {integrity: sha512-bjB6ExnZzf++5B7Tfoi6UXgNwoUnNOfZ1NyvnvPhWgCMy5V/biAtLL4o7owmZSYdAKeFSvZ5Lxm0is4su/dBWg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - ts-debounce: 3.0.0 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - transitivePeerDependencies: - - supports-color + '@algolia/autocomplete-core': 1.6.3 + '@docsearch/css': 3.1.0 + algoliasearch: 4.13.1 dev: true - /@vuepress/plugin-back-to-top/2.0.0-beta.27: - resolution: {integrity: sha512-pO2TRNWRDt+yoOk1Vdg0i9SVIoa+JgSns5bYNxwAk72L9p15Vj4QKBTmqu6HkyRnug1oqFocvU1AgjxRz61mog==} - dependencies: - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - ts-debounce: 3.0.0 - vue: 3.2.20 - transitivePeerDependencies: - - supports-color - dev: true + /@fluent/bundle/0.17.0: + resolution: {integrity: sha512-G/9wDCTKGPyHgw4ON3vBlLUIBBGG7vq8ytExqh4uwTfoeOfQ5VU5Xr6F+UV8B72k9P9S72GqFTXvqjS48pBVpg==} + engines: {node: '>=12.0.0', npm: '>=7.0.0'} + dev: false - /@vuepress/plugin-container/2.0.0-beta.27: - resolution: {integrity: sha512-ZNVoMR9QbQdVlFF4oVfNmdZTLHI9xK8aV6m2e/3fcoaYQItPxBMvScyXixRP2m/PB32cCX3R6f48Hu3pSZbwvA==} + /@fluent/sequence/0.7.0_@fluent+bundle@0.17.0: + resolution: {integrity: sha512-aH1xMwX8DFvKOQSKUKpB3zMsnJ2rRKt7MajLNnx/r3V3DWDo2nzEfm21d7UyOgwEckPIjPmhxdW1MEmsGUxYIw==} + engines: {node: '>=12.0.0', npm: '>=7.0.0'} + peerDependencies: + '@fluent/bundle': '>= 0.13.0' dependencies: - '@types/markdown-it': 12.2.3 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/markdown': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - markdown-it: 12.2.0 - markdown-it-container: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true + '@fluent/bundle': 0.17.0 + dev: false - /@vuepress/plugin-git/2.0.0-beta.27: - resolution: {integrity: sha512-RzB8+puO0atcrTNV5Acw5X7J+jToxdVkA+joWRrLtcIIiAkGn0rn7WHEHIpt1GjeRi24ofsA/ojoLBgVFKQKmw==} + /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.36: + resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 dependencies: - '@vuepress/core': 2.0.0-beta.27 - execa: 5.1.1 - transitivePeerDependencies: - - supports-color + vite: 2.9.9 + vue: 3.2.36 dev: true - /@vuepress/plugin-medium-zoom/2.0.0-beta.27: - resolution: {integrity: sha512-mRjnMP4WbG1Xs2Pq/pLIchdF1p0uurDlR0AIyWkeTVmvQXlHPLMSwSCiUtiRxZLDCDnYnK7QS1+EASU77leQhA==} + /@vue/compiler-core/3.2.36: + resolution: {integrity: sha512-bbyZM5hvBicv0PW3KUfVi+x3ylHnfKG7DOn5wM+f2OztTzTjLEyBb/5yrarIYpmnGitVGbjZqDbODyW4iK8hqw==} dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - medium-zoom: 1.0.6 - vue: 3.2.20 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/parser': 7.18.4 + '@vue/shared': 3.2.36 + estree-walker: 2.0.2 + source-map: 0.6.1 - /@vuepress/plugin-nprogress/2.0.0-beta.27: - resolution: {integrity: sha512-ZDxIoUWg1cC/avLk1w2gLjtafkkj4uVhgwG22NaUKVrcCodssGiKWubmK6wxUqkC8Aneg0jtaBHZEzNaIU8w0g==} + /@vue/compiler-dom/3.2.36: + resolution: {integrity: sha512-tcOTAOiW4s24QLnq+ON6J+GRONXJ+A/mqKCORi0LSlIh8XQlNnlm24y8xIL8la+ZDgkdbjarQ9ZqYSvEja6gVA==} dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - nprogress: 0.2.0 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - transitivePeerDependencies: - - supports-color - dev: true + '@vue/compiler-core': 3.2.36 + '@vue/shared': 3.2.36 - /@vuepress/plugin-palette/2.0.0-beta.27: - resolution: {integrity: sha512-LiKCL+jw9O1SMcKbFuTpN7f/EFgKkRS9n70VYrBDI49Knvc42bsb48OurcI1Cuq2C2s2A+V/MXckwGETQ3TxzA==} + /@vue/compiler-sfc/3.2.36: + resolution: {integrity: sha512-AvGb4bTj4W8uQ4BqaSxo7UwTEqX5utdRSMyHy58OragWlt8nEACQ9mIeQh3K4di4/SX+41+pJrLIY01lHAOFOA==} dependencies: - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - chokidar: 3.5.2 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/parser': 7.18.4 + '@vue/compiler-core': 3.2.36 + '@vue/compiler-dom': 3.2.36 + '@vue/compiler-ssr': 3.2.36 + '@vue/reactivity-transform': 3.2.36 + '@vue/shared': 3.2.36 + estree-walker: 2.0.2 + magic-string: 0.25.7 + postcss: 8.4.14 + source-map: 0.6.1 - /@vuepress/plugin-prismjs/2.0.0-beta.27: - resolution: {integrity: sha512-QKfwh23PsbwcYDxPLUw+Jwq0KliOGP4yCOZ6rQ1/MxbxP2od8vsfv2oAcyaAeg4ReRz7kdT/SPvD5hf+OWSd1Q==} + /@vue/compiler-ssr/3.2.36: + resolution: {integrity: sha512-+KugInUFRvOxEdLkZwE+W43BqHyhBh0jpYXhmqw1xGq2dmE6J9eZ8UUSOKNhdHtQ/iNLWWeK/wPZkVLUf3YGaw==} dependencies: - '@vuepress/core': 2.0.0-beta.27 - prismjs: 1.25.0 - transitivePeerDependencies: - - supports-color - dev: true + '@vue/compiler-dom': 3.2.36 + '@vue/shared': 3.2.36 - /@vuepress/plugin-search/2.0.0-beta.27: - resolution: {integrity: sha512-22r2nVD55CnraQZOnzEsIueg6iXWIsutcw54UVbQFmgQxmAEEa8ZQ4YQ/W91IQepis1qdinynWvJGPLI6IHSOg==} + /@vue/reactivity-transform/3.2.36: + resolution: {integrity: sha512-Jk5o2BhpODC9XTA7o4EL8hSJ4JyrFWErLtClG3NH8wDS7ri9jBDWxI7/549T7JY9uilKsaNM+4pJASLj5dtRwA==} dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - chokidar: 3.5.2 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/parser': 7.18.4 + '@vue/compiler-core': 3.2.36 + '@vue/shared': 3.2.36 + estree-walker: 2.0.2 + magic-string: 0.25.7 - /@vuepress/plugin-shiki/2.0.0-beta.27: - resolution: {integrity: sha512-taegu2oUGFKSvNdYlFnBVAL4NDdF+jaDWXqQ7kZfmkre+zISatRSe5fGVYGuXHx5sDerRr38YI4RIAxlP0SdWA==} + /@vue/reactivity/3.2.36: + resolution: {integrity: sha512-c2qvopo0crh9A4GXi2/2kfGYMxsJW4tVILrqRPydVGZHhq0fnzy6qmclWOhBFckEhmyxmpHpdJtIRYGeKcuhnA==} dependencies: - '@vuepress/core': 2.0.0-beta.27 - shiki: 0.9.12 - transitivePeerDependencies: - - supports-color - dev: true + '@vue/shared': 3.2.36 - /@vuepress/plugin-theme-data/2.0.0-beta.27: - resolution: {integrity: sha512-hKZdznYcG9RmlzCiVaEAlRzWYmX39yS8UBYaSYMwgG1t2XpKMwyY06A1QZg5leod+Zi2YbqP00UUWLTZzMk9RQ==} + /@vue/runtime-core/3.2.36: + resolution: {integrity: sha512-PTWBD+Lub+1U3/KhbCExrfxyS14hstLX+cBboxVHaz+kXoiDLNDEYAovPtxeTutbqtClIXtft+wcGdC+FUQ9qQ==} dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - vue: 3.2.20 - transitivePeerDependencies: - - supports-color - dev: true + '@vue/reactivity': 3.2.36 + '@vue/shared': 3.2.36 - /@vuepress/shared/2.0.0-beta.27: - resolution: {integrity: sha512-WvP76yNWik9Y3J9o8flY2bWJCPwqifhl4xjYtP73O5+Yze2r/tf0gO0IJ0ccYUNLDu46ZGlnn5Jett4BABlwBg==} + /@vue/runtime-dom/3.2.36: + resolution: {integrity: sha512-gYPYblm7QXHVuBohqNRRT7Wez0f2Mx2D40rb4fleehrJU9CnkjG0phhcGEZFfGwCmHZRqBCRgbFWE98bPULqkg==} dependencies: - '@vue/shared': 3.2.20 - dev: true + '@vue/runtime-core': 3.2.36 + '@vue/shared': 3.2.36 + csstype: 2.6.18 - /@vuepress/theme-default/2.0.0-beta.27: - resolution: {integrity: sha512-FncLK8ggLVwSFIu9z1ZFWQ5BY9j6Q6PM68l4+qtKCwK4X88CDRdJ638wiK2HRe+C5oFnxR//zWMmhC08Yu4TlA==} + /@vue/server-renderer/3.2.36_vue@3.2.36: + resolution: {integrity: sha512-uZE0+jfye6yYXWvAQYeHZv+f50sRryvy16uiqzk3jn8hEY8zTjI+rzlmZSGoE915k+W/Ol9XSw6vxOUD8dGkUg==} + peerDependencies: + vue: 3.2.36 dependencies: - '@vuepress/client': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/plugin-active-header-links': 2.0.0-beta.27 - '@vuepress/plugin-back-to-top': 2.0.0-beta.27 - '@vuepress/plugin-container': 2.0.0-beta.27 - '@vuepress/plugin-git': 2.0.0-beta.27 - '@vuepress/plugin-medium-zoom': 2.0.0-beta.27 - '@vuepress/plugin-nprogress': 2.0.0-beta.27 - '@vuepress/plugin-palette': 2.0.0-beta.27 - '@vuepress/plugin-prismjs': 2.0.0-beta.27 - '@vuepress/plugin-theme-data': 2.0.0-beta.27 - '@vuepress/shared': 2.0.0-beta.27 - '@vuepress/utils': 2.0.0-beta.27 - '@vueuse/core': 6.7.4_vue@3.2.20 - sass: 1.43.4 - sass-loader: 12.3.0_sass@1.43.4 - vue: 3.2.20 - vue-router: 4.0.12_vue@3.2.20 - transitivePeerDependencies: - - '@vue/composition-api' - - fibers - - node-sass - - supports-color - - webpack - dev: true + '@vue/compiler-ssr': 3.2.36 + '@vue/shared': 3.2.36 + vue: 3.2.36 - /@vuepress/utils/2.0.0-beta.27: - resolution: {integrity: sha512-Y+zfQc8YB5zl58wszDvTLBpHzXZXzl6jyUVd7HeQNTZaHjdYL01gTsQk/hEivxmaL9spH+ZcxivdP+m+VpGzjw==} - dependencies: - '@types/debug': 4.1.7 - '@types/fs-extra': 9.0.13 - '@types/hash-sum': 1.0.0 - '@vuepress/shared': 2.0.0-beta.27 - chalk: 4.1.2 - debug: 4.3.2 - fs-extra: 10.0.0 - globby: 11.0.4 - hash-sum: 2.0.0 - ora: 5.4.1 - upath: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true + /@vue/shared/3.2.36: + resolution: {integrity: sha512-JtB41wXl7Au3+Nl3gD16Cfpj7k/6aCroZ6BbOiCMFCMvrOpkg/qQUXTso2XowaNqBbnkuGHurLAqkLBxNGc1hQ==} - /@vueuse/core/6.7.4_vue@3.2.20: - resolution: {integrity: sha512-y39SD+pxDkv7/Fe369c02FQpr/148otQr64ScPDTpw4fGnspc8ONXCNU3gTrvDFRuiylirdPBpXgmt/GDQO7RA==} + /@vueuse/core/8.6.0_vue@3.2.36: + resolution: {integrity: sha512-VirzExCm/N+QdrEWT7J4uSrvJ5hquKIAU9alQ37kUvIJk9XxCLxmfRnmekYc1kz2+6BnoyuKYXVmrMV351CB4w==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: ^2.6.0 || ^3.2.0 @@ -480,13 +276,16 @@ packages: vue: optional: true dependencies: - '@vueuse/shared': 6.7.4_vue@3.2.20 - vue: 3.2.20 - vue-demi: 0.12.0_vue@3.2.20 - dev: true + '@vueuse/metadata': 8.6.0 + '@vueuse/shared': 8.6.0_vue@3.2.36 + vue: 3.2.36 + vue-demi: 0.13.1_vue@3.2.36 - /@vueuse/shared/6.7.4_vue@3.2.20: - resolution: {integrity: sha512-Lkm8myEiOj0sIqSXck5EXDbu0W705Q10BxydGLMfiV6wAY4U1zu+YgEgR37Wy2/mT1545pwQqiJ7bd3kQQFCMw==} + /@vueuse/metadata/8.6.0: + resolution: {integrity: sha512-F+CKPvaExsm7QgRr8y+ZNJFwXasn89rs5wth/HeX9lJ1q8XEt+HJ16Q5Sxh4rfG5YSKXrStveVge8TKvPjMjFA==} + + /@vueuse/shared/8.6.0_vue@3.2.36: + resolution: {integrity: sha512-Y/IVywZo7IfEoSSEtCYpkVEmPV7pU35mEIxV7PbD/D3ly18B3mEsBaPbtDkNM/QP3zAZ5mn4nEkOfddX4uwuIA==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: ^2.6.0 || ^3.2.0 @@ -496,476 +295,257 @@ packages: vue: optional: true dependencies: - vue: 3.2.20 - vue-demi: 0.12.0_vue@3.2.20 - dev: true - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.0 - dev: true - - /arg/5.0.1: - resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} - dev: true - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /autoprefixer/10.4.0_postcss@8.3.11: - resolution: {integrity: sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.17.5 - caniuse-lite: 1.0.30001274 - fraction.js: 4.1.1 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.3.11 - postcss-value-parser: 4.1.0 - dev: true - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /browserslist/4.17.5: - resolution: {integrity: sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001274 - electron-to-chromium: 1.3.885 - escalade: 3.1.1 - node-releases: 2.0.1 - picocolors: 1.0.0 - dev: true + vue: 3.2.36 + vue-demi: 0.13.1_vue@3.2.36 - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + /algoliasearch/4.13.1: + resolution: {integrity: sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA==} dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 + '@algolia/cache-browser-local-storage': 4.13.1 + '@algolia/cache-common': 4.13.1 + '@algolia/cache-in-memory': 4.13.1 + '@algolia/client-account': 4.13.1 + '@algolia/client-analytics': 4.13.1 + '@algolia/client-common': 4.13.1 + '@algolia/client-personalization': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/logger-console': 4.13.1 + '@algolia/requester-browser-xhr': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/requester-node-http': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /cac/6.7.11: - resolution: {integrity: sha512-m4xrA2MKfid6uDV2j2+0mXrtPGxlvAW0y+7Gnn2P8WVMSG+4e4tcoYX++94ZPblPfpBccJ5e7HvKdghlX5yiDA==} - engines: {node: '>=8'} + /body-scroll-lock/4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: true /cached-iterable/0.3.0: resolution: {integrity: sha512-MDqM6TpBVebZD4UDtmlFp8EjVtRcsB6xt9aRdWymjk0fWVUUGgmt/V7o0H0gkI2Tkvv8B0ucjidZm4mLosdlWw==} engines: {node: '>=8.9.0'} - dev: true - - /caniuse-lite/1.0.30001274: - resolution: {integrity: sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==} - dev: true - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chokidar/3.5.2: - resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-spinners/2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - dev: true - - /clone/1.0.4: - resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} - engines: {node: '>=0.8'} - dev: true - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /connect-history-api-fallback/1.6.0: - resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} - engines: {node: '>=0.8'} - dev: true - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /css-tree/1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - - /csso/4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - dev: true + dev: false /csstype/2.6.18: resolution: {integrity: sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==} - dev: true /date-fns/2.25.0: resolution: {integrity: sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==} engines: {node: '>=0.11'} - dev: true - - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /defaults/1.0.3: - resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} - dependencies: - clone: 1.0.4 - dev: true - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true + dev: false - /electron-to-chromium/1.3.885: - resolution: {integrity: sha512-JXKFJcVWrdHa09n4CNZYfYaK6EW5aAew7/wr3L1OnsD1L+JHL+RCtd7QgIsxUbFPeTwPlvnpqNNTOLkoefmtXg==} - dev: true - - /entities/2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: true - - /envinfo/7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true + /esbuild-android-64/0.14.42: + resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /esbuild-android-arm64/0.13.12: - resolution: {integrity: sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==} + /esbuild-android-arm64/0.14.42: + resolution: {integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==} + engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /esbuild-darwin-64/0.13.12: - resolution: {integrity: sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==} + /esbuild-darwin-64/0.14.42: + resolution: {integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==} + engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /esbuild-darwin-arm64/0.13.12: - resolution: {integrity: sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==} + /esbuild-darwin-arm64/0.14.42: + resolution: {integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==} + engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /esbuild-freebsd-64/0.13.12: - resolution: {integrity: sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==} + /esbuild-freebsd-64/0.14.42: + resolution: {integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==} + engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true - /esbuild-freebsd-arm64/0.13.12: - resolution: {integrity: sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==} + /esbuild-freebsd-arm64/0.14.42: + resolution: {integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==} + engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true - /esbuild-linux-32/0.13.12: - resolution: {integrity: sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==} + /esbuild-linux-32/0.14.42: + resolution: {integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==} + engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-64/0.13.12: - resolution: {integrity: sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==} + /esbuild-linux-64/0.14.42: + resolution: {integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==} + engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-arm/0.13.12: - resolution: {integrity: sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==} + /esbuild-linux-arm/0.14.42: + resolution: {integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==} + engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-arm64/0.13.12: - resolution: {integrity: sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==} + /esbuild-linux-arm64/0.14.42: + resolution: {integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==} + engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-mips64le/0.13.12: - resolution: {integrity: sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==} + /esbuild-linux-mips64le/0.14.42: + resolution: {integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==} + engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-ppc64le/0.13.12: - resolution: {integrity: sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==} + /esbuild-linux-ppc64le/0.14.42: + resolution: {integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==} + engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-netbsd-64/0.13.12: - resolution: {integrity: sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==} + /esbuild-linux-riscv64/0.14.42: + resolution: {integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.42: + resolution: {integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.42: + resolution: {integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==} + engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true dev: true optional: true - /esbuild-openbsd-64/0.13.12: - resolution: {integrity: sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==} + /esbuild-openbsd-64/0.14.42: + resolution: {integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==} + engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true dev: true optional: true - /esbuild-sunos-64/0.13.12: - resolution: {integrity: sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==} + /esbuild-sunos-64/0.14.42: + resolution: {integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==} + engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true dev: true optional: true - /esbuild-windows-32/0.13.12: - resolution: {integrity: sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==} + /esbuild-windows-32/0.14.42: + resolution: {integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==} + engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /esbuild-windows-64/0.13.12: - resolution: {integrity: sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==} + /esbuild-windows-64/0.14.42: + resolution: {integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==} + engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /esbuild-windows-arm64/0.13.12: - resolution: {integrity: sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==} + /esbuild-windows-arm64/0.14.42: + resolution: {integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==} + engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /esbuild/0.13.12: - resolution: {integrity: sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==} + /esbuild/0.14.42: + resolution: {integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==} + engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-arm64: 0.13.12 - esbuild-darwin-64: 0.13.12 - esbuild-darwin-arm64: 0.13.12 - esbuild-freebsd-64: 0.13.12 - esbuild-freebsd-arm64: 0.13.12 - esbuild-linux-32: 0.13.12 - esbuild-linux-64: 0.13.12 - esbuild-linux-arm: 0.13.12 - esbuild-linux-arm64: 0.13.12 - esbuild-linux-mips64le: 0.13.12 - esbuild-linux-ppc64le: 0.13.12 - esbuild-netbsd-64: 0.13.12 - esbuild-openbsd-64: 0.13.12 - esbuild-sunos-64: 0.13.12 - esbuild-windows-32: 0.13.12 - esbuild-windows-64: 0.13.12 - esbuild-windows-arm64: 0.13.12 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + esbuild-android-64: 0.14.42 + esbuild-android-arm64: 0.14.42 + esbuild-darwin-64: 0.14.42 + esbuild-darwin-arm64: 0.14.42 + esbuild-freebsd-64: 0.14.42 + esbuild-freebsd-arm64: 0.14.42 + esbuild-linux-32: 0.14.42 + esbuild-linux-64: 0.14.42 + esbuild-linux-arm: 0.14.42 + esbuild-linux-arm64: 0.14.42 + esbuild-linux-mips64le: 0.14.42 + esbuild-linux-ppc64le: 0.14.42 + esbuild-linux-riscv64: 0.14.42 + esbuild-linux-s390x: 0.14.42 + esbuild-netbsd-64: 0.14.42 + esbuild-openbsd-64: 0.14.42 + esbuild-sunos-64: 0.14.42 + esbuild-windows-32: 0.14.42 + esbuild-windows-64: 0.14.42 + esbuild-windows-arm64: 0.14.42 dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.5 - strip-final-newline: 2.0.0 - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /fast-glob/3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.4 - dev: true - - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} - dependencies: - reusify: 1.0.4 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /fluent-vue-loader/3.0.1: - resolution: {integrity: sha512-JjVAhde7kX3PlUDPYAU31aavlu5OIklbOwkT+/9C6HbLV9N9z1J0kHmBEW66APyKqvfiC/IHSFr9IS1/iecsoA==} - dev: true - - /fluent-vue/3.0.0_@fluent+bundle@0.17.0: + /fluent-vue/3.0.0_mr6cufgt6ycgfyxmc7zfnmihk4: resolution: {integrity: sha512-nHspmM4Dmr7c5YvcoIZopQ/PgoujrPb2fzbbGRK1FdeCqahRs9UpeBMdcxUPsoZcshd1N0o8nJuQnng7AKFb3Q==} peerDependencies: '@fluent/bundle': '>=0.17.0' @@ -979,21 +559,9 @@ packages: '@fluent/sequence': 0.7.0_@fluent+bundle@0.17.0 cached-iterable: 0.3.0 tslib: 2.3.1 - vue-demi: 0.12.0 - dev: true - - /fraction.js/4.1.1: - resolution: {integrity: sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==} - dev: true - - /fs-extra/10.0.0: - resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.8 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true + vue: 3.2.36 + vue-demi: 0.13.1_vue@3.2.36 + dev: false /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1007,49 +575,6 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /globby/11.0.4: - resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.7 - ignore: 5.1.8 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /graceful-fs/4.2.8: - resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} - dev: true - - /gray-matter/4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - dev: true - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -1057,560 +582,100 @@ packages: function-bind: 1.1.1 dev: true - /hash-sum/2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - dev: true - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - - /ignore/5.1.8: - resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} - engines: {node: '>= 4'} - dev: true - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-core-module/2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 dev: true - /is-extendable/0.1.1: - resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} - engines: {node: '>=0.10.0'} - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-interactive/1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /jsonc-parser/3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} dev: true - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.8 - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /klona/2.0.5: - resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} - engines: {node: '>= 8'} - dev: true - - /linkify-it/3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - dependencies: - uc.micro: 1.0.6 - dev: true - - /log-symbols/4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - /magic-string/0.25.7: resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} dependencies: sourcemap-codec: 1.4.8 - dev: true - - /markdown-it-anchor/8.4.1_b5b6ac618dbcb305e9dd9bd86fa4e841: - resolution: {integrity: sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - dependencies: - '@types/markdown-it': 12.2.3 - markdown-it: 12.2.0 - dev: true - - /markdown-it-container/3.0.0: - resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} - dev: true - - /markdown-it-emoji/2.0.0: - resolution: {integrity: sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==} - dev: true - - /markdown-it/12.2.0: - resolution: {integrity: sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - - /mdn-data/2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: true - - /mdurl/1.0.1: - resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=} - dev: true - - /medium-zoom/1.0.6: - resolution: {integrity: sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==} - dev: true - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch/4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.0 - dev: true - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /nanoid/3.1.30: - resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true - - /neo-async/2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /node-releases/2.0.1: - resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-range/0.1.2: - resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /nprogress/0.2.0: - resolution: {integrity: sha1-y480xTIT2JVyP8urkH6UIq28r7E=} - dev: true - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /onigasm/2.2.5: - resolution: {integrity: sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==} - dependencies: - lru-cache: 5.1.1 - dev: true - - /ora/5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} - engines: {node: '>=8.6'} - dev: true - - /postcss-csso/5.0.1_postcss@8.3.11: - resolution: {integrity: sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==} - engines: {node: '>=10.12.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - csso: 4.2.0 - postcss: 8.3.11 - dev: true - /postcss-value-parser/4.1.0: - resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} - dev: true - - /postcss/8.3.11: - resolution: {integrity: sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==} + /postcss/8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.1.30 + nanoid: 3.3.4 picocolors: 1.0.0 - source-map-js: 0.6.2 - dev: true - - /primeflex/2.0.0: - resolution: {integrity: sha512-t6AG3iRI1rh04uI+9nC4JSlbKfA8PnpRDFtjyqi3rDSLRgdfOuhIiunJbjVQ4alnnCfuQAAbVyde1AKN9QxT/w==} - dev: true - - /primeicons/4.1.0: - resolution: {integrity: sha512-uEv2pSPk1zQCfaB2VgnUfnUxxlGryYi+5rbdxmZBBt5v9S/pscIQYS5YDLxsQZ7D9jn5c76+Tx5wX/2J1nK6sA==} - dev: true - - /primevue/3.8.2: - resolution: {integrity: sha512-ToJYJad5wvrSydBjyIFHuDZzehor90XVioTzNHGyMqBat23XMwHqQSHsCmbOS91CCxTP9UjaAS8S6m4HjBGceQ==} - dev: true + source-map-js: 1.0.2 - /prismjs/1.25.0: - resolution: {integrity: sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==} + /preact/10.7.3: + resolution: {integrity: sha512-giqJXP8VbtA1tyGa3f1n9wiN7PrHtONrDyE3T+ifjr/tTkg+2N4d/6sjC9WyJKv8wM7rOYDveqy5ZoFmYlwo4w==} dev: true - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.0 - dev: true - - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true dependencies: - is-core-module: 2.8.0 + is-core-module: 2.9.0 path-parse: 1.0.7 - dev: true - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.5 - dev: true - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + supports-preserve-symlinks-flag: 1.0.0 dev: true /rollup-plugin-fluent-vue/3.0.0: resolution: {integrity: sha512-4UjZpsQylowhHDbt4DYkzC2NxnIxfhSnlsBPIJXDSJlK/iqohiz6dSbZbE2C/NpQCZM4FpFsEEp0cZxw+WEYHQ==} dev: true - /rollup/2.58.3: - resolution: {integrity: sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==} + /rollup/2.75.5: + resolution: {integrity: sha512-JzNlJZDison3o2mOxVmb44Oz7t74EfSd1SQrplQk0wSaXV7uLQXtVdHbxlcT3w+8tZ1TL4r/eLfc7nAbz38BBA==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /sass-loader/12.3.0_sass@1.43.4: - resolution: {integrity: sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==} - engines: {node: '>= 12.13.0'} - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 - sass: ^1.3.0 - webpack: ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - dependencies: - klona: 2.0.5 - neo-async: 2.6.2 - sass: 1.43.4 - dev: true - - /sass/1.43.4: - resolution: {integrity: sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==} - engines: {node: '>=8.9.0'} - hasBin: true - dependencies: - chokidar: 3.5.2 - dev: true - - /sax/1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: true - - /section-matter/1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shiki/0.9.12: - resolution: {integrity: sha512-VXcROdldv0/Qu0w2XvzU4IrvTeBNs/Kj/FCmtcEXGz7Tic/veQzliJj6tEiAgoKianhQstpYmbPDStHU5Opqcw==} + /shiki/0.10.1: + resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} dependencies: jsonc-parser: 3.0.0 - onigasm: 2.2.5 + vscode-oniguruma: 1.6.2 vscode-textmate: 5.2.0 dev: true - /signal-exit/3.0.5: - resolution: {integrity: sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==} - dev: true - - /sitemap/7.0.0: - resolution: {integrity: sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - dependencies: - '@types/node': 15.14.9 - '@types/sax': 1.2.3 - arg: 5.0.1 - sax: 1.2.4 - dev: true - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /source-map-js/0.6.2: - resolution: {integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==} + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true - /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-bom-string/1.0.0: - resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=} - engines: {node: '>=0.10.0'} - dev: true - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /toml/3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - dev: true - - /ts-debounce/3.0.0: - resolution: {integrity: sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==} - dev: true + /to-fast-properties/2.0.0: + resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + engines: {node: '>=4'} /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: true - - /uc.micro/1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true - - /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true - - /upath/2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - dev: true - - /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - dev: true + dev: false - /vite/2.6.13: - resolution: {integrity: sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==} + /vite/2.9.9: + resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -1625,33 +690,47 @@ packages: stylus: optional: true dependencies: - esbuild: 0.13.12 - postcss: 8.3.11 - resolve: 1.20.0 - rollup: 2.58.3 + esbuild: 0.14.42 + postcss: 8.4.14 + resolve: 1.22.0 + rollup: 2.75.5 optionalDependencies: fsevents: 2.3.2 dev: true - /vscode-textmate/5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + /vitepress/1.0.0-alpha.1: + resolution: {integrity: sha512-yA0QIl+mB3fQ2j+keQVa0DTT0waP2AeWM/p9VYfUAT9vOkQEGass4/oYmMGPCQrBwCaO3cpOxJL3ZFVooyvybQ==} + engines: {node: '>=14.6.0'} + hasBin: true + dependencies: + '@docsearch/css': 3.1.0 + '@docsearch/js': 3.1.0 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.36 + '@vueuse/core': 8.6.0_vue@3.2.36 + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.10.1 + vite: 2.9.9 + vue: 3.2.36 + transitivePeerDependencies: + - '@types/react' + - '@vue/composition-api' + - less + - react + - react-dom + - sass + - stylus dev: true - /vue-demi/0.12.0: - resolution: {integrity: sha512-eggsbQSQEJKlvQrtrJLx4J44MIVq5+Z7QetIEh1Na+ZWLgt5Fq0qskQ1QmckTTEoFcUdn36c4K23EjtXZhws7w==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true + /vscode-oniguruma/1.6.2: + resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} dev: true - /vue-demi/0.12.0_vue@3.2.20: - resolution: {integrity: sha512-eggsbQSQEJKlvQrtrJLx4J44MIVq5+Z7QetIEh1Na+ZWLgt5Fq0qskQ1QmckTTEoFcUdn36c4K23EjtXZhws7w==} + /vscode-textmate/5.2.0: + resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + dev: true + + /vue-demi/0.13.1_vue@3.2.36: + resolution: {integrity: sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -1662,61 +741,13 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.2.20 - dev: true + vue: 3.2.36 - /vue-router/4.0.12_vue@3.2.20: - resolution: {integrity: sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==} - peerDependencies: - vue: ^3.0.0 + /vue/3.2.36: + resolution: {integrity: sha512-5yTXmrE6gW8IQgttzHW5bfBiFA6mx35ZXHjGLDmKYzW6MMmYvCwuKybANRepwkMYeXw2v1buGg3/lPICY5YlZw==} dependencies: - '@vue/devtools-api': 6.0.0-beta.19 - vue: 3.2.20 - dev: true - - /vue/3.2.20: - resolution: {integrity: sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==} - dependencies: - '@vue/compiler-dom': 3.2.20 - '@vue/compiler-sfc': 3.2.20 - '@vue/runtime-dom': 3.2.20 - '@vue/server-renderer': 3.2.20_vue@3.2.20 - '@vue/shared': 3.2.20 - dev: true - - /vuepress-vite/2.0.0-beta.27: - resolution: {integrity: sha512-E09Rbc0RaSlcEbeo3yayctDheb3dQmD28YgRCPwJCa8gpmAyEglE3kEboJYnyufEMpvbNl2nqcubV09ZpX96+Q==} - hasBin: true - dependencies: - '@vuepress/bundler-vite': 2.0.0-beta.27 - '@vuepress/cli': 2.0.0-beta.27 - '@vuepress/core': 2.0.0-beta.27 - '@vuepress/theme-default': 2.0.0-beta.27 - transitivePeerDependencies: - - '@vue/composition-api' - - fibers - - less - - node-sass - - sass - - stylus - - supports-color - - webpack - dev: true - - /wcwidth/1.0.1: - resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} - dependencies: - defaults: 1.0.3 - dev: true - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true + '@vue/compiler-dom': 3.2.36 + '@vue/compiler-sfc': 3.2.36 + '@vue/runtime-dom': 3.2.36 + '@vue/server-renderer': 3.2.36_vue@3.2.36 + '@vue/shared': 3.2.36 diff --git a/src/.vitepress/config.ts b/src/.vitepress/config.ts new file mode 100644 index 0000000..ea46d58 --- /dev/null +++ b/src/.vitepress/config.ts @@ -0,0 +1,166 @@ +import { defineConfig } from 'vitepress' + +import fluentPlugin from 'rollup-plugin-fluent-vue' + +import { BUNDLED_LANGUAGES, Theme, getHighlighter } from 'shiki' +import VueGrammar from 'shiki/languages/vue.tmLanguage.json' +import FluentGrammar from './fluent.tmLanguage.json' + +const shikiLanguages = BUNDLED_LANGUAGES + .filter(lang => lang.id !== 'vue') + +Object.assign(VueGrammar.repository, FluentGrammar.repository) + +// Add fluent support to shiki Vue lang definition +VueGrammar.patterns.unshift( + { + "begin": "(<)(fluent)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.style.html" + } + }, + "end": "()(fluent)(>)", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.style.html" + }, + "3": { + "name": "punctuation.definition.tag.end.html" + } + }, + "patterns": [ + { + "begin": "(>)", + "end": "(?=)", + "contentName": "source.ftl", + "patterns": [{ + "include": "#comment" + },{ + "include": "#message" + }] + } + ] + } +) + +export type ThemeOptions = Theme | { light: Theme; dark: Theme } + +export async function highlight(theme: ThemeOptions = 'material-palenight') { + const themes = typeof theme === 'string' ? [theme] : [theme.dark, theme.light] + const highlighter = await getHighlighter({ + themes, + langs: [ + ...shikiLanguages, { + id: 'vue', + scopeName: 'source.vue', + grammar: VueGrammar + }, { + id: 'ftl', + scopeName: 'source.ftl', + grammar: FluentGrammar + } + ] + }) + const preRE = /^
') + } + + const dark = highlighter + .codeToHtml(str, { lang, theme: theme.dark }) + .replace(preRE, '') + + const light = highlighter + .codeToHtml(str, { lang, theme: theme.light }) + .replace(preRE, '') + + return dark + light + } +} + +export default async() => defineConfig({ + title: 'fluent-vue', + description: 'fluent-vue is an internationalization plugin for Vue.js that works both with Vue 2 and Vue 3. Is it a Vue.js integration for Mozilla\'s Project Fluent.', + head: [ + ['meta', { name: 'keywords', content: 'vue, i18n, vue i18n, vue.js, internationalization, localization, vue plugin, fluent, project fluent' }] + ], + + themeConfig: { + logo: '/assets/logo.svg', + siteTitle: null, + + sidebar: [ + { + text: 'Guide', + items: [ + { text: 'Introduction', link: '/introduction' }, + { text: 'Fluent syntax', link: '/fluent-syntax' }, + { text: 'Installation', link: '/installation' }, + { text: 'Comparison with vue-i18n', link: '/vue-i18n-comparison' }, + ] + }, + { + text: 'Api', + items: [ + { text: '$t and $ta instance methods', link: '/api/instance-methods' }, + { text: 'v-t directive', link: '/api/v-t-directive' }, + { text: 'i18n component', link: '/api/i18n-component' }, + ] + }, + { + text: 'How-to', + items: [ + { text: 'Changing locale', link: '/howto/change-locale' }, + { text: 'Localizing date and time', link: '/howto/date-time' }, + { text: 'Importing .ftl files', link: '/howto/importing-ftl-files' }, + { text: 'Access outside of component', link: '/howto/access-outside-of-component' }, + ] + }, + { + text: 'Tooling and integrations', + items: [ + { text: 'Overview', link: '/integrations/' }, + { text: 'Webpack loader', link: '/integrations/webpack' }, + { text: 'Rollup plugin', link: '/integrations/rollup.html' }, + { text: 'Vite plugin', link: '/integrations/vite.html' }, + ] + } + ], + + editLink: { + repo: 'fluent-vue/docs', + dir: 'src', + text: 'Edit this page on GitHub' + }, + + socialLinks: [ + { icon: 'github', link: 'https://github.com/demivan/fluent-vue' } + ], + + footer: { + message: 'MIT Licensed', + copyright: 'Copyright © 2020-present Ivan Demchuk' + } + }, + markdown: { + highlight: await highlight(), + }, + vite: { + plugins: [ + fluentPlugin() + ] + } +}) diff --git a/src/.vuepress/fluent.tmLanguage.json b/src/.vitepress/fluent.tmLanguage.json similarity index 100% rename from src/.vuepress/fluent.tmLanguage.json rename to src/.vitepress/fluent.tmLanguage.json diff --git a/src/.vitepress/theme/CodeBlock.vue b/src/.vitepress/theme/CodeBlock.vue new file mode 100644 index 0000000..c8da1ea --- /dev/null +++ b/src/.vitepress/theme/CodeBlock.vue @@ -0,0 +1,22 @@ + +++ + + + + diff --git a/src/.vitepress/theme/CodeGroup.vue b/src/.vitepress/theme/CodeGroup.vue new file mode 100644 index 0000000..4592d96 --- /dev/null +++ b/src/.vitepress/theme/CodeGroup.vue @@ -0,0 +1,109 @@ + + + ++ ++ + + diff --git a/src/.vitepress/theme/index.ts b/src/.vitepress/theme/index.ts new file mode 100644 index 0000000..4a0cc4c --- /dev/null +++ b/src/.vitepress/theme/index.ts @@ -0,0 +1,34 @@ +import DefaultTheme from 'vitepress/theme' + +import { FluentBundle } from '@fluent/bundle' +import { createFluentVue } from 'fluent-vue' + +import { format } from 'date-fns' + +import CodeGroup from './CodeGroup.vue' +import CodeBlock from './CodeBlock.vue' + +import './theme.css' + +const bundle = new FluentBundle('en', { + functions: { + DATEFNS (positionalArgs, namedArgs) { + const [date, formatString] = positionalArgs as [string, string] + return format(new Date(date), formatString) + } + } +}) + +const fluent = createFluentVue({ + bundles: [bundle], +}) + +export default { + ...DefaultTheme, + enhanceApp({ app, router, siteData }) { + app.use(fluent) + + app.component('code-group', CodeGroup) + app.component('code-group-item', CodeBlock) + } +} diff --git a/src/.vitepress/theme/theme.css b/src/.vitepress/theme/theme.css new file mode 100644 index 0000000..644f753 --- /dev/null +++ b/src/.vitepress/theme/theme.css @@ -0,0 +1,24 @@ +.VPNavBarTitle .logo { + width: 226px; + height: 35px; +} + +.dark .VPNavBarTitle .logo { + filter: invert(80%); +} + +code { + font-size: 0.875em; +} + +:root { + --vp-font-family-mono: "JetBrains Mono", "Consolas", "Monaco", "Andale Mono", "Ubuntu Mono", monospace +} + +pre { + font-family: var(--vp-font-family-mono); +} + +.mono { + font-family: var(--vp-font-family-mono) +} diff --git a/src/.vuepress/clientAppEnhance.ts b/src/.vuepress/clientAppEnhance.ts deleted file mode 100644 index a604d37..0000000 --- a/src/.vuepress/clientAppEnhance.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { defineClientAppEnhance } from '@vuepress/client' -import { FluentBundle } from '@fluent/bundle' -import { createFluentVue } from 'fluent-vue' -import PrimeVue from 'primevue/config' -import Slider from 'primevue/slider' -import Input from 'primevue/inputtext' -import Dropdown from 'primevue/dropdown' -import 'primevue/resources/themes/saga-blue/theme.css' -import 'primevue/resources/primevue.min.css' -import 'primeicons/primeicons.css' -import 'primeflex/primeflex.css' -import './theme.scss' - -import SimpleInput from '../components/SimpleInput.vue' -import DateTime from '../components/DateTime.vue' -import DateTimeCustom from '../components/DateTimeCustom.vue' - -import { format } from 'date-fns' - -const bundle = new FluentBundle('en', { - functions: { - DATEFNS (positionalArgs, namedArgs) { - const [date, formatString] = positionalArgs as [string, string] - return format(new Date(date), formatString) - } - } -}) - -const fluent = createFluentVue({ - bundles: [bundle], -}) - -export default defineClientAppEnhance(({ app }) => { - app.use(fluent) - app.use(PrimeVue) - - app.component('p-slider', Slider) - app.component('p-input', Input) - app.component('p-dropdown', Dropdown) - app.component('simple-input', SimpleInput) - app.component('date-time', DateTime) - app.component('date-time-custom', DateTimeCustom) -}) diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts deleted file mode 100644 index a0dccb1..0000000 --- a/src/.vuepress/config.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { DefaultThemeOptions } from 'vuepress-vite' - -import { defineUserConfig } from 'vuepress-vite' -import fluentPlugin from 'rollup-plugin-fluent-vue' - -import { BUNDLED_LANGUAGES } from 'shiki' -import VueGrammar from 'shiki/languages/vue.tmLanguage.json' -import FluentGrammar from './fluent.tmLanguage.json' - -const shikiLanguages = BUNDLED_LANGUAGES - .filter(lang => lang.id !== 'vue') - -Object.assign(VueGrammar.repository, FluentGrammar.repository) - -// Add fluent support to shiki Vue lang definition -VueGrammar.patterns.unshift( - { - "begin": "(<)(fluent)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.style.html" - } - }, - "end": "()(fluent)(>)", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.style.html" - }, - "3": { - "name": "punctuation.definition.tag.end.html" - } - }, - "patterns": [ - { - "begin": "(>)", - "end": "(?=)", - "contentName": "source.ftl", - "patterns": [{ - "include": "#comment" - },{ - "include": "#message" - }] - } - ] - } -) - -export default defineUserConfig ++++ ({ - title: 'fluent-vue', - description: 'fluent-vue is an internationalization plugin for Vue.js that works both with Vue 2 and Vue 3. Is it a Vue.js integration for Mozilla\'s Project Fluent.', - head: [ - ['meta', { name: 'keywords', content: 'vue, i18n, vue i18n, vue.js, internationalization, localization, vue plugin, fluent, project fluent' }] - ], - themeConfig: { - repo: 'demivan/fluent-vue', - logo: '/assets/logo.svg', - docsRepo: 'fluent-vue/docs', - docsDir: 'src', - docsBranch: 'main', - editLinks: true, - smoothScroll: true, - displayAllHeaders: true, - sidebarDepth: 0, - sidebar: [ - '/introduction.html', - '/fluent-syntax.html', - '/installation.html', - { - text: 'Api', - children: ['/api/instance-methods.html', '/api/v-t-directive.html', '/api/i18n-component.html'], - collapsable: false, - }, - '/vue-i18n-comparison.html', - { - text: 'HOWTO', - children: ['/howto/change-locale.html', '/howto/date-time.html', '/howto/importing-ftl-files.html', '/howto/access-outside-of-component.html'], - collapsable: false, - }, - { - text: 'Tooling and integrations', - link: '/integrations/', - children: ['/integrations/webpack.html', '/integrations/rollup.html', '/integrations/vite.html'], - collapsable: false, - }, - ] - }, - plugins: [ - [ - '@vuepress/shiki', - { - theme: 'solarized-dark', - langs: [ - ...shikiLanguages, { - id: 'vue', - scopeName: 'source.vue', - grammar: VueGrammar - }, { - id: 'ftl', - scopeName: 'source.ftl', - grammar: FluentGrammar - } - ] - } - ], - '@vuepress/plugin-search', - [ - require.resolve('./sitemapPlugin.ts'), - { - hostname: 'https://fluent-vue.demivan.me', - exclude: ['/404.html'] - } - ] - ], - bundlerConfig: { - viteOptions: { - plugins: [ - fluentPlugin() - ] - } - } -}) diff --git a/src/.vuepress/public/robots.txt b/src/.vuepress/public/robots.txt deleted file mode 100644 index 8fc0aea..0000000 --- a/src/.vuepress/public/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Allow: / - -Sitemap: https://fluent-vue.demivan.me/sitemap.xml diff --git a/src/.vuepress/shim.d.ts b/src/.vuepress/shim.d.ts deleted file mode 100644 index 32a1b5c..0000000 --- a/src/.vuepress/shim.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module '*.vue' { - import { defineComponent } from 'vue' - const component: ReturnType - export default component -} diff --git a/src/.vuepress/sitemapPlugin.ts b/src/.vuepress/sitemapPlugin.ts deleted file mode 100644 index 1a84b2a..0000000 --- a/src/.vuepress/sitemapPlugin.ts +++ /dev/null @@ -1,161 +0,0 @@ -import type { Plugin } from 'vuepress-vite' -import { createWriteStream, promises } from 'fs' -import { resolve } from 'path' -import chalk from 'chalk' -import { SitemapItemLoose, SitemapStream } from 'sitemap' -import { Readable, pipeline } from 'stream' - -const log = (msg: string, color = 'blue', label = 'SITEMAP') => - console.log(`\n${chalk.reset.inverse.bold[color](` ${label} `)} ${msg}`) - -function stripLocalePrefix (path, localePathPrefixes) { - const matchingPrefix = localePathPrefixes.filter(prefix => path.startsWith(prefix)).shift() - return { normalizedPath: path.replace(matchingPrefix, '/'), localePrefix: matchingPrefix } -} - -interface Options { - urls?: SitemapItemLoose[] - outFile?: string - hostname: string - changefreq?: string - exclude?: string[] - dateFormatter?: (date: string) => string -} - -const plugin: Plugin = (options, context) => { - const { - urls = [], - hostname, - outFile = 'sitemap.xml', - changefreq = 'daily', - exclude = [], - dateFormatter = (lastUpdated) => new Date(lastUpdated).toISOString(), - ...others - } = options - - return { - name: 'vuepress-sitemap-plugin', - async onGenerated (app) { - if (!hostname) { - return log( - 'Not generating sitemap because required "hostname" option doesn\'t exist', - 'red' - ) - } - - log('Generating sitemap...') - - const { locales, base } = context.siteData - const pages = context.pages - - const withBase = (url: string) => base.replace(/\/$/, '') + url - - // Sort the locale keys in reverse order so that longer locales, such as '/en/', match before the default '/' - const localeKeys = (locales && Object.keys(locales).sort().reverse()) || [] - const localesByNormalizedPagePath = pages.reduce((map, page) => { - const { normalizedPath, localePrefix } = stripLocalePrefix(page.path, localeKeys) - const prefixesByPath = map.get(normalizedPath) || [] - prefixesByPath.push(localePrefix) - return map.set(normalizedPath, prefixesByPath) - }, new Map()) - - const pagesMap = new Map() - - await Promise.all(pages.map(async page => { - const fmOpts: { exclude?: boolean, changefreq?: string } = page.frontmatter.sitemap || {} - const metaRobots = (page.frontmatter.meta as [{name?: string, content?: string}] || []) - .find(meta => meta.name === 'robots') - const excludePage = metaRobots - ? (metaRobots.content || '').split(/,/).map(x => x.trim()).includes('noindex') - : fmOpts.exclude === true - - if (excludePage) { - exclude.push(page.path) - } - - const extendsPageData = await app.pluginApi.hooks.extendsPageData.process( - page, - app - ) - extendsPageData.forEach((item) => Object.assign(page, item)) - - const lastmodISO = page.git.updatedTime - ? dateFormatter(page.git.updatedTime) - : undefined - - const { normalizedPath } = stripLocalePrefix(page.path, localeKeys) - const relatedLocales = localesByNormalizedPagePath.get(normalizedPath) - - let links = [] - if (relatedLocales.length > 1) { - links = relatedLocales.map(localePrefix => { - return { - lang: locales[localePrefix].lang, - url: withBase(normalizedPath.replace('/', localePrefix)) - } - }) - } - - pagesMap.set( - page.path, - { - changefreq: fmOpts.changefreq || changefreq, - lastmodISO, - links, - ...others - } - ) - })) - - const sourceData: SitemapItemLoose[] = [] - - pagesMap.forEach((page, url) => { - if (!exclude.includes(url)) { - sourceData.push({ - url: withBase(url), - ...page - }) - } - }) - - urls.forEach(item => { - const page = pagesMap.get(item.url) - if (page) { - const existingIndex = sourceData.findIndex(data => data.url === item.url) - sourceData[existingIndex] = { ...page, ...item } - } else { - sourceData.push(item) - } - }) - - const sitemapStream = new SitemapStream({ - hostname, - }); - - const src = Readable.from(sourceData); - - const destinationDir = context.options.dest - await promises.mkdir(destinationDir, { recursive: true }); - const writePath = resolve(destinationDir, './sitemap.xml'); - - await new Promise((resolve, reject) => { - pipeline( - src, - sitemapStream, - createWriteStream(writePath), - (err) => { - if (err) { - reject(err) - } else { - resolve(undefined) - } - } - ) - }) - - log('Sitemap generated') - } - } -} - -export default plugin diff --git a/src/.vuepress/theme.scss b/src/.vuepress/theme.scss deleted file mode 100644 index 4e45a3b..0000000 --- a/src/.vuepress/theme.scss +++ /dev/null @@ -1,24 +0,0 @@ -.navbar .site-name { - display: none; -} - -.navbar .logo { - width: 226px; - height: 35px; -} - -.dark .navbar .logo { - filter: invert(80%); -} - -code { - font-size: 0.875em; -} - -:root { - --font-family-code: "JetBrains Mono", "Consolas", "Monaco", "Andale Mono", "Ubuntu Mono", monospace -} - -pre { - font-family: "JetBrains Mono", "Consolas", "Monaco", "Andale Mono", "Ubuntu Mono", monospace; -} diff --git a/src/README.md b/src/README.md deleted file mode 100644 index 71f589f..0000000 --- a/src/README.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -home: true -title: Internationalization plugin for Vue.js -meta: - - name: keywords - content: vue i18n l10n i18n vue.js fluent.js Fluent ProjectFluent translation localization -tagline: Internationalization plugin for Vue.js - -actions: - - text: Get Started - link: /introduction.html - type: primary - -footer: MIT Licensed | Copyright © 2020-present Ivan Demchuk ---- - -[](https://vshymanskyy.github.io/StandWithUkraine) - -## Example - -@[code{11-33}](./components/Simple.vue) - - diff --git a/src/api/i18n-component.md b/src/api/i18n-component.md index 97e0e93..f261db6 100644 --- a/src/api/i18n-component.md +++ b/src/api/i18n-component.md @@ -57,7 +57,7 @@ sign-in-up-to-add-comments = As you can see entire sentence uses just one translation key. It does not use v-html directive. And we can even add comments, so translators know what they are dealing with. -### API +## API * Props: * `path {string}` localization message key @@ -83,7 +83,7 @@ Result: Hello, World!``` -### Scoped slots +## Scoped slots Message attributes are passed as scoped slot parameters. This allows to not split translation into multiple messages. And attributes have access to same parameters entire message has access to. @@ -110,4 +110,4 @@ Template: Result: ```htmlSign in or sign up to the site.
-``` \ No newline at end of file +``` diff --git a/src/api/instance-methods.md b/src/api/instance-methods.md index b7d77b1..e2589df 100644 --- a/src/api/instance-methods.md +++ b/src/api/instance-methods.md @@ -1,6 +1,6 @@ # `$t` and `$ta` instance methods -### `$t` method +## `$t` method Formats message with `key` identifier. `args` is used to resolve references to variables passed as arguments to the translation. @@ -25,7 +25,7 @@ Result:Hello, World
``` -### `$ta` method +## `$ta` method Formats message with `key` identifier, but only returns message attributes. `args` is used to resolve references to variables passed as arguments to the translation. diff --git a/src/assets/logo.svg b/src/assets/logo.svg deleted file mode 100644 index 20cb556..0000000 --- a/src/assets/logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/components/DateTime.vue b/src/components/DateTime.vue index 8f3084d..bc83ea3 100644 --- a/src/components/DateTime.vue +++ b/src/components/DateTime.vue @@ -1,13 +1,10 @@ - +// #region snippet{{ $t('default', { now }) }}
@@ -19,5 +16,6 @@ export default {default = Now is {{ $now }} today = Today is {{ DATETIME($now, day: "numeric", month: "long", year: "numeric") }} -now = It is {{ DATETIME($now, hour: "numeric", minute: "numeric") }} +now = It is {{ DATETIME($now, hour: "numeric", minute: "numeric", second: "numeric") }} +// #endregion snippet diff --git a/src/components/DateTimeCustom.vue b/src/components/DateTimeCustom.vue index bdaace2..6df8b2e 100644 --- a/src/components/DateTimeCustom.vue +++ b/src/components/DateTimeCustom.vue @@ -1,13 +1,10 @@ - +// #region snippet{{ $t('default', { now }) }}
@@ -19,5 +16,6 @@ export default {default = Now is {{ $now }} today = Today is {{ DATEFNS($now, "PP") }} -now = It is {{ DATEFNS($now, "p") }} +now = It is {{ DATEFNS($now, "pp") }} +// #endregion snippet diff --git a/src/components/Simple.vue b/src/components/Simple.vue index 488a24b..594b20f 100644 --- a/src/components/Simple.vue +++ b/src/components/Simple.vue @@ -8,6 +8,7 @@ } +// #region snippet{{ $t('hello-user', { userName }) }}@@ -22,7 +23,7 @@ hello-user = Hello, {$userName}! # Complex things are possible. shared-photos = {$userName} {$photoCount -> - [one] added one photo + [1] added one photo *[other] added {$photoCount} new photos } to {$userGender -> [male] his stream @@ -30,3 +31,4 @@ shared-photos = *[other] their stream }. +// #endregion snippet diff --git a/src/components/SimpleInput.vue b/src/components/SimpleInput.vue index 2dd7610..e2323ff 100644 --- a/src/components/SimpleInput.vue +++ b/src/components/SimpleInput.vue @@ -1,67 +1,82 @@ -+- -- --+- ++ +-- -- + import Simple from './Simple.vue' - diff --git a/src/fluent-syntax.md b/src/fluent-syntax.md index 76bc05d..3ff5c21 100644 --- a/src/fluent-syntax.md +++ b/src/fluent-syntax.md @@ -17,7 +17,7 @@ Text in Fluent can use special syntax to incorporate small pieces of programmabl Placeables can be used to interpolate external variables into the translation, interpolate other messages and terms or insert special characters. -### Variables +## Variables Variables are parameters received from the app. They are provided by the developer and can be interpolated into the translation. @@ -28,7 +28,7 @@ unread-emails = { $user } has { $email-count } unread emails. Numbers and dates are automatically formatted according to target language formatting rules. -### Select expression +## Select expression ```ftl emails = { $unreadEmails -> @@ -63,13 +63,13 @@ your-rank = { NUMBER($pos, type: "ordinal") -> } ``` -### Functions +## Functions Functions provide additional functionality available to the translators. They can be either used to format data or can provide additional data that the translator may use (like, current user gender, or time of the day) to fine tune the translation. The list of available functions is extensible. There are two built-in functions `NUMBER` and `DATETIME`. -#### `NUMBER` function +### `NUMBER` function Formats a number to a string in a given locale. @@ -85,7 +85,7 @@ Result: π is 3.1415 ``` -#### `DATETIME` function +### `DATETIME` function Formats a date and time to a string in a given locale. Main page: [Localizing date and time](/howto/date-time.html) @@ -101,7 +101,7 @@ Result: Today is September 10, 2021 ``` -### Referencing messages +## Referencing messages Referencing other messages generally helps to keep certain translations consistent across the interface and makes maintenance easier. @@ -110,7 +110,7 @@ menu-save = Save help-menu-save = Click { menu-save } to save the file. ``` -### Attributes +## Attributes UI elements often contain multiple translatable messages per one element. In order to prevent having to define multiple separate messages for representing different strings within a single element, FTL allows you to add attributes to messages. @@ -123,7 +123,7 @@ login-input = Predefined value Attributes may also be used to define grammatical properties of [terms](/fluent-syntax.html#terms). Attributes of terms are private and cannot be retrieved by the localization runtime. They can only be used as [selectors](/fluent-syntax.html#select-expression). -### Terms +## Terms Terms are similar to regular messages but they can only be used as references in other messages. @@ -134,7 +134,7 @@ about = About { -brand-name }. update-successful = { -brand-name } has been updated. ``` -#### Parameterized Terms +### Parameterized Terms Term values follow the same rules as message values. They can be simple text, or they can interpolate other expressions, including variables. @@ -152,7 +152,7 @@ In many inflected languages (e.g. German, Finnish, Hungarian, all Slavic languag about = Informacje o { -brand-name(case: "locative") }. ``` -#### Terms and Attributes +### Terms and Attributes Sometimes translations might vary depending on some grammatical trait of a term references in them. Terms can store this grammatical information about themselves in [attributes](/fluent-syntax.html#attributes). @@ -169,7 +169,7 @@ update-successful = { -brand-name.gender -> Use attributes to describe grammatical traits and properties. Genders, animacy, whether the term message starts with a vowel or not etc. -### Comments +## Comments Comments in Fluent start with `#`, `##`, or `###`, and can be used to document messages and to define the outline of the file. diff --git a/src/howto/date-time.md b/src/howto/date-time.md index 165a51f..68f23bc 100644 --- a/src/howto/date-time.md +++ b/src/howto/date-time.md @@ -2,6 +2,11 @@ description: 'fluent-vue has built-in date and time formatting using native js methods. But it allows custom implementation using any library you want: dayjs, date-fns, moment, etc.' --- + + # Localizing date and time Fluent has build-in function for formatting date and time: `DATETIME`. It uses [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) under the hood. @@ -27,9 +32,11 @@ See the [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaS ### Example component -@[code{11-33}](../components/DateTime.vue) +<<< @/components/DateTime.vue#snippet --+- + +-- --+- + ++::: info Output + +::: ## Using custom library for date formatting @@ -58,6 +65,8 @@ const fluent = createFluentVue({ ### Use it -@[code{11-33}](../components/DateTimeCustom.vue) +<<< @/components/DateTimeCustom.vue#snippet +::: info Output +::: \ No newline at end of file diff --git a/src/howto/importing-ftl-files.md b/src/howto/importing-ftl-files.md index 9a0cb25..4131d83 100644 --- a/src/howto/importing-ftl-files.md +++ b/src/howto/importing-ftl-files.md @@ -17,7 +17,7 @@ You will need to configure your build system to support importing .ftl files as You can code-split your localizations messages into multiple .ftl files. Just import .ftl file when you need and call `bundle.addResource`. But make sure that there are not duplicate keys in different files as localization messages added using `addResource` are global. ::: -### Webpack +## Webpack For Webpack 5 you need to set .ftl files to be `type: 'asset/source'`. In earlier Webpack versions, this was done using `raw-loader`. @@ -33,7 +33,7 @@ module: { } ``` -### Vite +## Vite For Vite you need to add `?raw` to your .ftl file imports to import them as strings. diff --git a/src/index.md b/src/index.md new file mode 100644 index 0000000..ce78106 --- /dev/null +++ b/src/index.md @@ -0,0 +1,30 @@ +--- +layout: home +title: Internationalization plugin for Vue.js + +features: +- title: Simple api + details: Just 2 methods, 1 directive and 1 component is all you need to internationalize your app. +- title: Vue 2 and 3 compatible + details: By utilising @vue/composition-api library, fluent-vue is made compatible both with Vue version 2 and version 3. +- title: SFC support + details: With fluent-vue-loader you can include localization messages with rest of your single file component code. +- title: Easy to read + details: Fluent syntax used for describing translation is easy to read and understand. +- title: Powerful + details: Fluent syntax allows to represent complex concepts of natural languages. +- title: Asymmetric localization + details: Natural-sounding translations with genders and grammatical cases only when necessary. + +hero: + name: fluent-vue + text: Internationalization plugin for Vue.js + tagline: Vue.js integration for Fluent.js - JavaScript implementation of Mozilla's Project Fluent + actions: + - text: Get Started + link: /introduction.html + type: primary + - theme: alt + text: View on GitHub + link: https://github.com/demivan/fluent-vue +--- diff --git a/src/installation.md b/src/installation.md index a13ae43..01f3a0a 100644 --- a/src/installation.md +++ b/src/installation.md @@ -18,10 +18,17 @@ however, a polyfill is required. You can use [polyfill.io](https://polyfill.io) Add `fluent-vue` and `@fluent/bundle` to your project. + #### Note: If you are using `Vue` version 2 you need to install `@vue/composition-api`- +```shell +pnpm add fluent-vue @fluent/bundle +``` + + -```bash:no-line-numbers ++ +```shell yarn add fluent-vue @fluent/bundle ``` @@ -29,28 +36,34 @@ yarn add fluent-vue @fluent/bundle -```bash:no-line-numbers +```shell npm install fluent-vue @fluent/bundle ``` -- diff --git a/src/integrations/README.md b/src/integrations/index.md similarity index 95% rename from src/integrations/README.md rename to src/integrations/index.md index 57a23db..aef7c84 100644 --- a/src/integrations/README.md +++ b/src/integrations/index.md @@ -5,7 +5,7 @@ description: List of official and third-party tools that support fluent-vue # Tooling and integrations -This is the list of official and third-party tools that support fluent-vue. +This is the list of official and third-party tools that support `fluent-vue`. ## Official @@ -35,4 +35,4 @@ It reports missing translations, allows to extract hardcoded strings, and much m Check their [README](https://github.com/lokalise/i18n-ally) for more information. - + diff --git a/src/integrations/webpack.md b/src/integrations/webpack.md index d1012c8..e021aeb 100644 --- a/src/integrations/webpack.md +++ b/src/integrations/webpack.md @@ -8,7 +8,7 @@ description: fluent-vue-loader - official Webpack loader for fluent-vue that all **Example** -@[code{11-33}](../components/Simple.vue) +<<< @/components/Simple.vue#snippet ## Instalation @@ -16,9 +16,17 @@ description: fluent-vue-loader - official Webpack loader for fluent-vue that all+ + +```shell +pnpm add @vue/composition-api +``` + + +-```bash:no-line-numbers +```shell yarn add @vue/composition-api ``` -```bash:no-line-numbers +```shell npm install @vue/composition-api ``` @@ -88,8 +101,8 @@ createApp(App) // Install Vue plugin .use(fluent) ``` - +```js @@ -117,4 +130,5 @@ Vue.use(fluent) ``` +- -2. Configure Webpack +1. Configure Webpack ```js module.exports = { // ... diff --git a/src/introduction.md b/src/introduction.md index 64f7cac..bb531dc 100644 --- a/src/introduction.md +++ b/src/introduction.md @@ -8,6 +8,13 @@ Fluent keeps simple things simple and makes complex things possible. The syntax ## Example -@[code{11-33}](./components/Simple.vue) +<<< @/components/Simple.vue#snippet + + + +::: info Example+ -```bash:no-line-numbers +```shell +pnpm add fluent-vue-loader -D +``` + + + ++ +```shell yarn add fluent-vue-loader --dev ``` @@ -26,7 +34,7 @@ yarn add fluent-vue-loader --dev -```bash:no-line-numbers +```shell npm install fluent-vue-loader --save-dev ``` @@ -34,7 +42,7 @@ npm install fluent-vue-loader --save-dev +::: diff --git a/src/assets/i18n-ally.png b/src/public/assets/i18n-ally.png similarity index 100% rename from src/assets/i18n-ally.png rename to src/public/assets/i18n-ally.png diff --git a/src/.vuepress/public/assets/logo.svg b/src/public/assets/logo.svg similarity index 100% rename from src/.vuepress/public/assets/logo.svg rename to src/public/assets/logo.svg diff --git a/src/vue-i18n-comparison.md b/src/vue-i18n-comparison.md index a770642..b0e7ead 100644 --- a/src/vue-i18n-comparison.md +++ b/src/vue-i18n-comparison.md @@ -1,8 +1,12 @@ # Comparison with vue-i18n +`fluent-vue` API is inspired by `vue-i18n`. But API surface is much smaller as most things are handled by Fluent syntax. + +Blog post about my motivation for switching from `vue-i18n`: [Difficulties you might encounter when using vue-i18n in real-world Vue.js applications](https://demivan.me/posts/2021-08-08-vue-i18n-in-real-world-application.html) + ## Formatting -Simple formatting API in `fluent-vue` is similar to `vue-i18n`. +Simple formatting API in `fluent-vue` is very similar to `vue-i18n`. ### fluent-vue