diff --git a/package.json b/package.json index 349d84053e..3e5b86acd9 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "dependencies": { "@ltd/j-toml": "^1.38.0", "dayjs": "^1.11.7", + "feed": "^4.2.2", "floating-vue": "2.0.0-beta.20", "fuse.js": "^6.6.2", "highlight.js": "^11.7.0", diff --git a/pages/[type]/[id].vue b/pages/[type]/[id].vue index e4d9ba9449..e8962a9329 100644 --- a/pages/[type]/[id].vue +++ b/pages/[type]/[id].vue @@ -1036,6 +1036,26 @@ if (!route.name.startsWith('type-id-settings')) { ? 'all' : 'noindex', }) + + useHead({ + link: [ + { + rel: 'alternate', + type: 'application/rss+xml', + href: `${config.public.siteUrl}/feed/rss/project/${project.value.id}`, + }, + { + rel: 'alternate', + type: 'application/atom+xml', + href: `${config.public.siteUrl}/feed/atom/project/${project.value.id}`, + }, + { + rel: 'alternate', + type: 'application/feed+json', + href: `${config.public.siteUrl}/feed/json/project/${project.value.id}`, + }, + ], + }) } const onUserCollectProject = useClientTry(userCollectProject) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b255d6d192..5e65e84de2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ dependencies: dayjs: specifier: ^1.11.7 version: 1.11.7 + feed: + specifier: ^4.2.2 + version: 4.2.2 floating-vue: specifier: 2.0.0-beta.20 version: 2.0.0-beta.20(vue@3.4.8) @@ -157,11 +160,24 @@ packages: chalk: 2.4.2 dev: true + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + /@babel/compat-data@7.23.2: resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.2: resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} @@ -172,10 +188,33 @@ packages: '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.0 + '@babel/parser': 7.23.6 '@babel/template': 7.22.15 '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -189,7 +228,17 @@ packages: resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 @@ -199,7 +248,7 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 dev: true /@babel/helper-compilation-targets@7.22.15: @@ -213,6 +262,17 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} engines: {node: '>=6.9.0'} @@ -233,6 +293,26 @@ packages: - supports-color dev: true + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -242,29 +322,29 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/helper-member-expression-to-functions@7.22.5: resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 dev: true /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): @@ -281,11 +361,25 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -300,9 +394,9 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color dev: true @@ -311,26 +405,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.23.9 dev: true /@babel/helper-string-parser@7.23.4: @@ -346,13 +435,29 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helpers@7.23.2: resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color dev: true @@ -366,12 +471,21 @@ packages: js-tokens: 4.0.0 dev: true + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 dev: true /@babel/parser@7.23.6: @@ -380,6 +494,14 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.6 + dev: true + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -400,6 +522,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} @@ -410,6 +542,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} engines: {node: '>=6.9.0'} @@ -425,6 +567,26 @@ packages: - supports-color dev: true + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.9) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/standalone@7.23.10: + resolution: {integrity: sha512-xqWviI/pt1Zb/d+6ilWa5IDL2mkDzsBnlHbreqnfyP3/QB/ofQ1bNVcHj8YQX154Rf/xZKR6y0s1ydVF3nAS8g==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/standalone@7.23.2: resolution: {integrity: sha512-VJNw7OS26JvB6rE9XpbT6uQeQIEBWU5eeHGS4VR/+/4ZoKdLBXLcy66ZVJ/9IBkK1RMp8B0cohvhzdKWtJAGmg==} engines: {node: '>=6.9.0'} @@ -435,8 +597,17 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true /@babel/traverse@7.23.2: @@ -449,8 +620,26 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -461,7 +650,7 @@ packages: resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.22.5 + '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -473,6 +662,15 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 /@braw/async-computed@5.0.2(vue@3.4.8): resolution: {integrity: sha512-fThqjZBTPvWtbD90Nkd4IldN7dpCkxfvthuk12ZBjkPPjh+wuRGi3HYiUqUSAOOVS0NHSxpsQFfg+qO275FtYA==} @@ -1277,13 +1475,13 @@ packages: dependencies: '@formatjs/icu-messageformat-parser': 2.7.0 '@formatjs/ts-transformer': 3.13.6 - '@types/estree': 1.0.1 + '@types/estree': 1.0.5 '@types/fs-extra': 9.0.13 '@types/json-stable-stringify': 1.0.34 '@types/node': 17.0.45 chalk: 4.1.2 commander: 8.3.0 - fast-glob: 3.3.1 + fast-glob: 3.3.2 fs-extra: 10.1.0 json-stable-stringify: 1.0.2 loud-rejection: 2.2.0 @@ -1666,8 +1864,8 @@ packages: nuxt: ^3.6.1 vite: '*' dependencies: - '@nuxt/kit': 3.8.0 - '@nuxt/schema': 3.8.0 + '@nuxt/kit': 3.10.1 + '@nuxt/schema': 3.10.1 execa: 7.1.1 nuxt: 3.5.3(@types/node@20.1.0)(eslint@8.41.0)(sass@1.58.0)(typescript@5.0.4)(vue-tsc@1.6.5) vite: 5.0.11(@types/node@20.1.0)(sass@1.58.0) @@ -1685,7 +1883,7 @@ packages: execa: 7.1.1 global-dirs: 3.0.1 magicast: 0.2.9 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 pkg-types: 1.0.3 prompts: 2.4.2 @@ -1702,7 +1900,7 @@ packages: dependencies: '@nuxt/devtools-kit': 0.7.0(nuxt@3.5.3)(vite@5.0.11) '@nuxt/devtools-wizard': 0.7.0 - '@nuxt/kit': 3.8.0 + '@nuxt/kit': 3.6.5 birpc: 0.2.12 boxen: 7.1.1 consola: 3.2.3 @@ -1729,7 +1927,7 @@ packages: rc9: 2.1.1 semver: 7.5.4 sirv: 2.0.3 - unimport: 3.4.0(rollup@3.26.0) + unimport: 3.1.0(rollup@3.26.0) vite: 5.0.11(@types/node@20.1.0)(sass@1.58.0) vite-plugin-inspect: 0.7.33(vite@5.0.11) vite-plugin-vue-inspector: 3.4.2(vite@5.0.11) @@ -1745,12 +1943,39 @@ packages: - utf-8-validate dev: true + /@nuxt/kit@3.10.1: + resolution: {integrity: sha512-M9VRY0QGbG6lWOVqt69ZF96RLBUZVXyFpbBUwHnoHgjF9BXSX/MT/hrZcJicN4aPM2QRephGgsBd4U5wFmmn6g==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/schema': 3.10.1 + c12: 1.7.0 + consola: 3.2.3 + defu: 6.1.4 + globby: 14.0.0 + hash-sum: 2.0.0 + ignore: 5.3.1 + jiti: 1.21.0 + knitwork: 1.0.0 + mlly: 1.5.0 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + semver: 7.5.4 + ufo: 1.4.0 + unctx: 2.3.1 + unimport: 3.7.1 + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /@nuxt/kit@3.5.3: resolution: {integrity: sha512-QzoOGqa1zjKQfg7Y50TrrFAL9DhtIpYYs10gihcM1ISPrn9ROht+VEjqsaMvT+L8JuQbNf8wDYl8qzsdWGU29Q==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: '@nuxt/schema': 3.5.3 - c12: 1.5.1 + c12: 1.4.2 consola: 3.2.3 defu: 6.1.2 globby: 13.2.2 @@ -1764,8 +1989,8 @@ packages: scule: 1.0.0 semver: 7.5.4 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + unimport: 3.1.0(rollup@3.26.0) + untyped: 1.3.2 transitivePeerDependencies: - rollup - supports-color @@ -1776,7 +2001,7 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dependencies: '@nuxt/schema': 3.6.1 - c12: 1.5.1 + c12: 1.4.2 consola: 3.2.3 defu: 6.1.2 globby: 13.2.2 @@ -1784,41 +2009,60 @@ packages: ignore: 5.2.4 jiti: 1.20.0 knitwork: 1.0.0 - mlly: 1.4.2 + mlly: 1.4.0 pathe: 1.1.1 pkg-types: 1.0.3 scule: 1.0.0 semver: 7.5.4 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + unimport: 3.1.0(rollup@3.26.0) + untyped: 1.3.2 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/kit@3.8.0: - resolution: {integrity: sha512-oIthQxeMIVs4ESVP5FqLYn8tj0S1sLd+eYreh+dNYgnJ2pTi7+THR12ONBNHjk668jqEe7ErUJ8UlGwqBzgezg==} + /@nuxt/kit@3.6.5: + resolution: {integrity: sha512-uBI5I2Zx6sk+vRHU+nBmifwxg/nyXCGZ1g5hUKrUfgv1ZfiKB8JkN5T9iRoduDOaqbwM6XSnEl1ja73iloDcrw==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/schema': 3.8.0 - c12: 1.5.1 + '@nuxt/schema': 3.6.5 + c12: 1.7.0 consola: 3.2.3 - defu: 6.1.2 + defu: 6.1.4 globby: 13.2.2 hash-sum: 2.0.0 - ignore: 5.2.4 - jiti: 1.20.0 + ignore: 5.3.1 + jiti: 1.21.0 knitwork: 1.0.0 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.3.0 semver: 7.5.4 - ufo: 1.3.1 unctx: 2.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + unimport: 3.7.1 + untyped: 1.4.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/schema@3.10.1: + resolution: {integrity: sha512-DyZLhbaaoGBCXO2jboCHTp77jbCIUem/va5iSu2+GO6M8vAHbNRphksw38gpSk/F74LbJDTbW0t3hrMBzU4B3g==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/ui-templates': 1.3.1 + consola: 3.2.3 + defu: 6.1.4 + hookable: 5.5.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + std-env: 3.7.0 + ufo: 1.4.0 + unimport: 3.7.1 + untyped: 1.4.2 transitivePeerDependencies: - rollup - supports-color @@ -1833,10 +2077,10 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 - std-env: 3.4.3 - ufo: 1.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + std-env: 3.3.3 + ufo: 1.1.2 + unimport: 3.1.0(rollup@3.26.0) + untyped: 1.3.2 transitivePeerDependencies: - rollup - supports-color @@ -1846,35 +2090,33 @@ packages: resolution: {integrity: sha512-+4pr0lkcPP5QqprYV+/ujmBkt2JHmi/v5vaxCrMhElUFgifvJAfT89BkGFn6W7pz0b8Vd3GcByFUWI7/wX/Pcw==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - defu: 6.1.2 + defu: 6.1.4 hookable: 5.5.3 - pathe: 1.1.1 + pathe: 1.1.2 pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 std-env: 3.3.3 - ufo: 1.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + ufo: 1.4.0 + unimport: 3.7.1 + untyped: 1.4.2 transitivePeerDependencies: - rollup - supports-color dev: true - /@nuxt/schema@3.8.0: - resolution: {integrity: sha512-VEDVeCjdVowhoY5vIBSz94+SSwmM204jN6TNe/ShBJ2d/vZiy9EtLbhOwqaPNFHwnN1fl/XFHThwJiexdB9D1w==} + /@nuxt/schema@3.6.5: + resolution: {integrity: sha512-UPUnMB0W5TZ/Pi1fiF71EqIsPlj8LGZqzhSf8wOeh538KHwxbA9r7cuvEUU92eXRksOZaylbea3fJxZWhOITVw==} engines: {node: ^14.18.0 || >=16.10.0} dependencies: - '@nuxt/ui-templates': 1.3.1 - consola: 3.2.3 - defu: 6.1.2 + defu: 6.1.4 hookable: 5.5.3 - pathe: 1.1.1 + pathe: 1.1.2 pkg-types: 1.0.3 postcss-import-resolver: 2.0.0 std-env: 3.4.3 - ufo: 1.3.1 - unimport: 3.4.0(rollup@3.26.0) - untyped: 1.4.0 + ufo: 1.4.0 + unimport: 3.7.1 + untyped: 1.4.2 transitivePeerDependencies: - rollup - supports-color @@ -1884,7 +2126,7 @@ packages: resolution: {integrity: sha512-Z2UmPkBy5WjxvHKuUcl1X6vKWnIyWSP+9UGde1F+MzzZxYgAQybFud1uL2B3KCowxZdoqT1hd2WklV7EtyCwrQ==} hasBin: true dependencies: - '@nuxt/kit': 3.8.0 + '@nuxt/kit': 3.10.1 chalk: 5.3.0 ci-info: 3.8.0 consola: 3.2.3 @@ -1941,8 +2183,8 @@ packages: h3: 1.7.1 knitwork: 1.0.0 magic-string: 0.30.5 - mlly: 1.4.2 - ohash: 1.1.3 + mlly: 1.4.0 + ohash: 1.1.2 pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 @@ -1950,9 +2192,9 @@ packages: postcss-import: 15.1.0(postcss@8.4.24) postcss-url: 10.1.3(postcss@8.4.24) rollup-plugin-visualizer: 5.9.2(rollup@3.26.0) - std-env: 3.4.3 - strip-literal: 1.3.0 - ufo: 1.3.1 + std-env: 3.3.3 + strip-literal: 1.0.1 + ufo: 1.1.2 unplugin: 1.5.0 vite: 4.3.9(@types/node@20.1.0)(sass@1.58.0) vite-node: 0.31.4(@types/node@20.1.0)(sass@1.58.0) @@ -2041,7 +2283,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 @@ -2074,7 +2316,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -2092,7 +2334,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) estree-walker: 2.0.2 magic-string: 0.27.0 rollup: 3.26.0 @@ -2107,7 +2349,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) rollup: 3.26.0 dev: true @@ -2120,7 +2362,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 @@ -2138,7 +2380,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) magic-string: 0.27.0 rollup: 3.26.0 dev: true @@ -2187,7 +2429,22 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.26.0 + dev: true + + /@rollup/pluginutils@5.1.0(rollup@3.26.0): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 3.26.0 @@ -2333,6 +2590,11 @@ packages: - supports-color dev: true + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -2591,7 +2853,7 @@ packages: dependencies: '@mapbox/node-pre-gyp': 1.0.10 '@rollup/pluginutils': 4.2.1 - acorn: 8.10.0 + acorn: 8.11.3 async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -2630,7 +2892,7 @@ packages: dependencies: '@formatjs/intl': 2.9.9(typescript@5.0.4) '@formatjs/intl-localematcher': 0.4.2 - '@nuxt/kit': 3.8.0 + '@nuxt/kit': 3.10.1 '@vintl/unplugin': 1.5.1(vite@5.0.11)(vue@3.4.8) '@vintl/vintl': 4.4.1(typescript@5.0.4)(vue@3.4.8) astring: 1.8.6 @@ -2704,9 +2966,9 @@ packages: vite: ^4.0.0 vue: ^3.0.0 dependencies: - '@babel/core': 7.23.2 - '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.23.2) - '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) + '@babel/core': 7.23.9 + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.23.9) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.9) vite: 4.3.9(@types/node@20.1.0)(sass@1.58.0) vue: 3.3.4 transitivePeerDependencies: @@ -2778,8 +3040,8 @@ packages: vue: optional: true dependencies: - '@babel/types': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) + '@babel/types': 7.23.9 + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) '@vue/compiler-sfc': 3.3.4 ast-kit: 0.6.5 local-pkg: 0.4.3 @@ -2803,7 +3065,26 @@ packages: '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) '@babel/template': 7.22.15 '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/types': 7.23.6 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.9): + resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.9) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.6 '@vue/babel-helper-vue-transform-on': 1.1.5 camelcase: 6.3.0 html-tags: 3.3.1 @@ -2815,7 +3096,7 @@ packages: /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.23.0 + '@babel/parser': 7.23.9 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 @@ -2824,7 +3105,7 @@ packages: /@vue/compiler-core@3.4.8: resolution: {integrity: sha512-GjAwOydZV6UyVBi1lYW5v4jjfU6wOeyi3vBATKJOwV7muYF0/nZi4kfdJc0pwdT5lXwbbx57lyA2Y356rFpw1A==} dependencies: - '@babel/parser': 7.23.6 + '@babel/parser': 7.23.9 '@vue/shared': 3.4.8 entities: 4.5.0 estree-walker: 2.0.2 @@ -2861,7 +3142,7 @@ packages: /@vue/compiler-sfc@3.4.8: resolution: {integrity: sha512-3ZcurOa6bQdZ6VZLtMqYSUZqpsMqfX0MC3oCxQG0VIJFCqouZAgRYJN1c8QvGs7HW5wW8aXVvUOQU0ILVlYHKA==} dependencies: - '@babel/parser': 7.23.6 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.4.8 '@vue/compiler-dom': 3.4.8 '@vue/compiler-ssr': 3.4.8 @@ -2890,7 +3171,7 @@ packages: /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.23.0 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 @@ -2984,6 +3265,12 @@ packages: hasBin: true dev: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -3214,9 +3501,9 @@ packages: resolution: {integrity: sha512-XCg0VWvmWU2T/6aMp8VRfJWZ6LZv1P0o8otWY7RAGtfKj0qGi45vtnKNkltJhu9tmbQNZxv+gJA4o7FtLDfmWg==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.23.0 - '@rollup/pluginutils': 5.0.5(rollup@3.26.0) - pathe: 1.1.1 + '@babel/parser': 7.23.9 + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) + pathe: 1.1.2 transitivePeerDependencies: - rollup dev: true @@ -3232,8 +3519,8 @@ packages: resolution: {integrity: sha512-vdCU9JvpsrxWxvJiRHAr8If8cu07LWJXDPhkqLiP4ErbN1fu/mK623QGmU4Qbn2Nq4Mx0vR/Q017B6+HcHg1aQ==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true /astring@1.8.6: @@ -3260,8 +3547,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001511 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001585 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -3382,6 +3669,17 @@ packages: update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001585 + electron-to-chromium: 1.4.665 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) + dev: true + /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} dev: true @@ -3445,8 +3743,8 @@ packages: dotenv: 16.3.1 giget: 1.1.3 jiti: 1.20.0 - mlly: 1.4.2 - ohash: 1.1.3 + mlly: 1.4.0 + ohash: 1.1.2 pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 @@ -3455,22 +3753,22 @@ packages: - supports-color dev: true - /c12@1.5.1: - resolution: {integrity: sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==} + /c12@1.7.0: + resolution: {integrity: sha512-luqIHUs5S5s4vcSa1TVIGxSC1dH8mBT8cxzRvrlHN/iZs+G/PkxsOb300ODuAdvRzUopyXYqg7cmdOGpcYaxwg==} dependencies: chokidar: 3.5.3 - defu: 6.1.2 - dotenv: 16.3.1 - giget: 1.1.3 - jiti: 1.20.0 - mlly: 1.4.2 + defu: 6.1.4 + dotenv: 16.4.1 + giget: 1.2.1 + jiti: 1.21.0 + json5: 2.2.3 + jsonc-parser: 3.2.1 + mlly: 1.5.0 ohash: 1.1.3 - pathe: 1.1.1 + pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.0.3 rc9: 2.1.1 - transitivePeerDependencies: - - supports-color dev: true /cac@6.7.14: @@ -3521,8 +3819,8 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001511 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001585 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true @@ -3531,6 +3829,10 @@ packages: resolution: {integrity: sha512-NaWPJawcoedlghN4P7bDNeADD7K+rZaY6V8ZcME7PkEZo/nfOg+lnrUgRWiKbNxcQ4/toFKSxnS4WdbyPZnKkw==} dev: true + /caniuse-lite@1.0.30001585: + resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -3586,6 +3888,12 @@ packages: resolution: {integrity: sha512-fL/EEp9TyXlNkgYFQYNqtMJhnAk2tAq8lCST7O5LPn1NrzWPsOKE5wafR7J+8W87oxqolpxNli+w7khq5WP7tg==} dev: true + /citty@0.1.5: + resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} + dependencies: + consola: 3.2.3 + dev: true + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -4063,6 +4371,10 @@ packages: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: true + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -4169,6 +4481,11 @@ packages: engines: {node: '>=12'} dev: true + /dotenv@16.4.1: + resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} + engines: {node: '>=12'} + dev: true + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -4185,6 +4502,10 @@ packages: resolution: {integrity: sha512-fHtoB4KThQZ+kPs/VE2fq+EFAI7RXTWRy7DeRqVo0iFQ7NpXtqiZ++1gHfvnsTbbbV/MXdgeykxZLnLD2yHKCg==} dev: true + /electron-to-chromium@1.4.665: + resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -4600,7 +4921,7 @@ packages: eslint: 8.41.0 eslint-plugin-es: 4.1.0(eslint@8.41.0) eslint-utils: 3.0.0(eslint@8.41.0) - ignore: 5.2.4 + ignore: 5.3.1 is-core-module: 2.12.1 minimatch: 3.1.2 resolve: 1.22.2 @@ -4616,7 +4937,7 @@ packages: eslint: 8.41.0 eslint-plugin-es: 3.0.1(eslint@8.41.0) eslint-utils: 2.1.0 - ignore: 5.2.4 + ignore: 5.3.1 minimatch: 3.1.2 resolve: 1.22.2 semver: 6.3.1 @@ -4884,6 +5205,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} dev: true @@ -4901,9 +5237,9 @@ packages: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} dependencies: enhanced-resolve: 5.15.0 - mlly: 1.4.2 - pathe: 1.1.1 - ufo: 1.3.1 + mlly: 1.5.0 + pathe: 1.1.2 + ufo: 1.4.0 dev: true /fast-deep-equal@3.1.3: @@ -4936,6 +5272,17 @@ packages: micromatch: 4.0.5 dev: true + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -4956,6 +5303,13 @@ packages: pend: 1.2.0 dev: true + /feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + dependencies: + xml-js: 1.6.11 + dev: false + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -5233,6 +5587,11 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -5252,16 +5611,30 @@ packages: hasBin: true dependencies: colorette: 2.0.20 - defu: 6.1.2 + defu: 6.1.4 https-proxy-agent: 7.0.2 mri: 1.2.0 - node-fetch-native: 1.4.0 - pathe: 1.1.1 + node-fetch-native: 1.6.2 + pathe: 1.1.2 tar: 6.2.0 transitivePeerDependencies: - supports-color dev: true + /giget@1.2.1: + resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==} + hasBin: true + dependencies: + citty: 0.1.5 + consola: 3.2.3 + defu: 6.1.4 + node-fetch-native: 1.6.2 + nypm: 0.3.6 + ohash: 1.1.3 + pathe: 1.1.2 + tar: 6.2.0 + dev: true + /git-config-path@2.0.0: resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} engines: {node: '>=4'} @@ -5372,8 +5745,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -5394,12 +5767,24 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 dev: true + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -5429,11 +5814,11 @@ packages: resolution: {integrity: sha512-A9V2NEDNHet7v1gCg7CMwerSigLi0SRbhTy7C3lGb0N4YKIpPmLDjedTUopqp4dnn7COHfqUjjaz3zbtz4QduA==} dependencies: cookie-es: 1.0.0 - defu: 6.1.2 + defu: 6.1.4 destr: 2.0.0 iron-webcrypto: 0.7.1 radix3: 1.0.1 - ufo: 1.3.1 + ufo: 1.4.0 uncrypto: 0.1.3 dev: true @@ -5605,6 +5990,11 @@ packages: engines: {node: '>=14.18.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -5643,6 +6033,11 @@ packages: engines: {node: '>= 4'} dev: true + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + /image-meta@0.1.1: resolution: {integrity: sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==} engines: {node: '>=10.18.0'} @@ -5952,7 +6347,7 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.5 dev: true /is-regex@1.1.4: @@ -6077,6 +6472,11 @@ packages: hasBin: true dev: true + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + /joi@17.9.2: resolution: {integrity: sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==} dependencies: @@ -6143,6 +6543,10 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -6235,12 +6639,12 @@ packages: dependencies: clipboardy: 3.0.0 colorette: 2.0.20 - defu: 6.1.2 + defu: 6.1.4 get-port-please: 3.0.1 http-shutdown: 1.2.2 ip-regex: 5.0.0 node-forge: 1.3.1 - ufo: 1.3.1 + ufo: 1.4.0 dev: true /local-pkg@0.4.3: @@ -6248,6 +6652,14 @@ packages: engines: {node: '>=14'} dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.5.0 + pkg-types: 1.0.3 + dev: true + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -6633,10 +7045,19 @@ packages: /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - acorn: 8.10.0 - pathe: 1.1.1 + acorn: 8.11.3 + pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.1 + ufo: 1.4.0 + dev: true + + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 dev: true /mri@1.2.0: @@ -6719,7 +7140,7 @@ packages: '@types/http-proxy': 1.17.11 '@vercel/nft': 0.22.6 archiver: 5.3.1 - c12: 1.5.1 + c12: 1.4.2 chalk: 5.3.0 chokidar: 3.5.3 citty: 0.1.1 @@ -6767,7 +7188,7 @@ packages: ufo: 1.3.1 uncrypto: 0.1.3 unenv: 1.5.1 - unimport: 3.4.0(rollup@3.26.0) + unimport: 3.1.0(rollup@3.26.0) unstorage: 1.7.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -6793,6 +7214,10 @@ packages: resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} dev: true + /node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + dev: true + /node-fetch@2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} @@ -6848,6 +7273,10 @@ packages: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -7099,6 +7528,17 @@ packages: execa: 7.1.1 dev: true + /nypm@0.3.6: + resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + dependencies: + citty: 0.1.5 + execa: 8.0.1 + pathe: 1.1.2 + ufo: 1.4.0 + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -7230,7 +7670,7 @@ packages: hasBin: true dependencies: ansi-colors: 4.1.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 js-yaml: 4.1.0 supports-color: 9.4.0 undici: 5.22.1 @@ -7360,7 +7800,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7428,10 +7868,19 @@ packages: engines: {node: '>=8'} dev: true + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -7474,8 +7923,8 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 dev: true /pluralize@8.0.0: @@ -7500,7 +7949,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.24 @@ -7513,7 +7962,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 postcss: 8.4.24 postcss-value-parser: 4.2.0 dev: true @@ -7589,7 +8038,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 caniuse-api: 3.0.0 cssnano-utils: 4.0.0(postcss@8.4.24) postcss: 8.4.24 @@ -7624,7 +8073,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 cssnano-utils: 4.0.0(postcss@8.4.24) postcss: 8.4.24 postcss-value-parser: 4.2.0 @@ -7705,7 +8154,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 postcss: 8.4.24 postcss-value-parser: 4.2.0 dev: true @@ -7747,7 +8196,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 caniuse-api: 3.0.0 postcss: 8.4.24 dev: true @@ -7924,7 +8373,7 @@ packages: /rc9@2.1.1: resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: - defu: 6.1.2 + defu: 6.1.4 destr: 2.0.0 flat: 5.0.2 dev: true @@ -8219,10 +8668,18 @@ packages: source-map-js: 1.0.2 dev: true + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + /scule@1.0.0: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} dev: true + /scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + dev: true + /seek-bzip@1.0.6: resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} hasBin: true @@ -8282,7 +8739,7 @@ packages: /serve-placeholder@2.0.1: resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} dependencies: - defu: 6.1.2 + defu: 6.1.4 dev: true /serve-static@1.15.0: @@ -8342,6 +8799,11 @@ packages: engines: {node: '>=14'} dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /sigstore@1.8.0: resolution: {integrity: sha512-ogU8qtQ3VFBawRJ8wjsBEX/vIFeHuGs1fm4jZtjWQwjo8pfAt7T/rh+udlAN4+QUe0IzA8qRSc/YZ7dHP6kh+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8478,6 +8940,10 @@ packages: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -8593,7 +9059,7 @@ packages: /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 dev: true /style-mod@4.1.0: @@ -8606,7 +9072,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.9 + browserslist: 4.22.3 postcss: 8.4.24 postcss-selector-parser: 6.0.13 dev: true @@ -8766,7 +9232,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.10.0 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -8934,6 +9400,10 @@ packages: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: true + /ultrahtml@1.2.0: resolution: {integrity: sha512-vxZM2yNvajRmCj/SknRYGNXk2tqiy6kRNvZjJLaleG3zJbSh/aNkOqD1/CVzypw8tyHyhpzYuwQgMMhUB4ZVNQ==} dev: true @@ -8993,6 +9463,11 @@ packages: hookable: 5.5.3 dev: true + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + /unimport@3.0.12: resolution: {integrity: sha512-wETYjro+wK0lGlate7JNDu4OI89m6hNt2bfqL8ysAGgStXyIplISZrktAqr2psfY9/ft/jU5HWatk7wZeUUPdQ==} dependencies: @@ -9001,34 +9476,54 @@ packages: fast-glob: 3.3.1 local-pkg: 0.4.3 magic-string: 0.30.5 - mlly: 1.4.2 + mlly: 1.4.0 pathe: 1.1.1 pkg-types: 1.0.3 scule: 1.0.0 - strip-literal: 1.3.0 + strip-literal: 1.0.1 unplugin: 1.5.0 transitivePeerDependencies: - rollup dev: true - /unimport@3.4.0(rollup@3.26.0): - resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} + /unimport@3.1.0(rollup@3.26.0): + resolution: {integrity: sha512-ybK3NVWh30MdiqSyqakrrQOeiXyu5507tDA0tUf7VJHrsq4DM6S43gR7oAsZaFojM32hzX982Lqw02D3yf2aiA==} dependencies: '@rollup/pluginutils': 5.0.5(rollup@3.26.0) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 magic-string: 0.30.5 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.0.0 + scule: 1.3.0 strip-literal: 1.3.0 unplugin: 1.5.0 transitivePeerDependencies: - rollup dev: true + /unimport@3.7.1: + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@3.26.0) + acorn: 8.11.3 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.5.0 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.3.0 + strip-literal: 1.3.0 + unplugin: 1.7.1 + transitivePeerDependencies: + - rollup + dev: true + /unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -9087,12 +9582,21 @@ packages: /unplugin@1.5.0: resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} dependencies: - acorn: 8.10.0 + acorn: 8.11.3 chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 dev: true + /unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} + dependencies: + acorn: 8.11.3 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + /unstorage@1.7.0: resolution: {integrity: sha512-f78UtR4HyUGWuET35iNPdKMvCh9YPQpC7WvkGpP6XiLlolT/9wjyAICYN9AMD/tlB8ZdOqWQHZn+j7mXcTSO4w==} peerDependencies: @@ -9133,9 +9637,9 @@ packages: listhen: 1.0.4 lru-cache: 10.0.0 mri: 1.2.0 - node-fetch-native: 1.4.0 + node-fetch-native: 1.6.2 ofetch: 1.1.1 - ufo: 1.3.1 + ufo: 1.4.0 transitivePeerDependencies: - supports-color dev: true @@ -9160,17 +9664,17 @@ packages: - supports-color dev: true - /untyped@1.4.0: - resolution: {integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==} + /untyped@1.4.2: + resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} hasBin: true dependencies: - '@babel/core': 7.23.2 - '@babel/standalone': 7.23.2 - '@babel/types': 7.23.0 - defu: 6.1.2 - jiti: 1.20.0 + '@babel/core': 7.23.9 + '@babel/standalone': 7.23.10 + '@babel/types': 7.23.6 + defu: 6.1.4 + jiti: 1.21.0 mri: 1.2.0 - scule: 1.0.0 + scule: 1.3.0 transitivePeerDependencies: - supports-color dev: true @@ -9186,6 +9690,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.3): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.3 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -9226,8 +9741,8 @@ packages: dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 picocolors: 1.0.0 vite: 4.3.9(@types/node@20.1.0)(sass@1.58.0) transitivePeerDependencies: @@ -9271,13 +9786,13 @@ packages: vue-tsc: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 ansi-escapes: 4.3.2 chalk: 4.1.2 chokidar: 3.5.3 commander: 8.3.0 eslint: 8.41.0 - fast-glob: 3.3.1 + fast-glob: 3.3.2 fs-extra: 11.1.1 lodash.debounce: 4.0.8 lodash.pick: 4.4.0 @@ -9335,7 +9850,7 @@ packages: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.23.2) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) - '@vue/compiler-dom': 3.3.4 + '@vue/compiler-dom': 3.4.8 esno: 0.16.3 kolorist: 1.8.0 magic-string: 0.30.5 @@ -9626,6 +10141,10 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -9728,6 +10247,13 @@ packages: optional: true dev: true + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.3.0 + dev: false + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} diff --git a/server/routes/feed/[feed_type]/project/[id].js b/server/routes/feed/[feed_type]/project/[id].js new file mode 100644 index 0000000000..22329ef59f --- /dev/null +++ b/server/routes/feed/[feed_type]/project/[id].js @@ -0,0 +1,101 @@ +import { Feed } from 'feed' +import { renderString } from 'omorphia' + +const capitalizeString = (name) => { + return name ? name.charAt(0).toUpperCase() + name.slice(1) : name +} + +export default defineEventHandler(async (event) => { + const config = useRuntimeConfig() + const API_URL = config.apiBaseUrl + const WEBSITE_URL = config.public.siteUrl + + const projectInformation = await $fetch(API_URL + 'project/' + event.context.params.id) + const projectVersions = await $fetch(API_URL + 'project/' + event.context.params.id + '/version') + const projectTeam = await $fetch(API_URL + 'project/' + event.context.params.id + '/members') + + const slugOrId = projectInformation.slug ?? projectInformation.id + const projectUrl = WEBSITE_URL + `/${projectInformation.project_type}/${projectInformation.id}` + + const feed = new Feed({ + title: projectInformation.title, + id: projectUrl, + description: projectInformation.description, + feedLinks: { + json: WEBSITE_URL + `/feed/json/project/${projectInformation.id}`, + atom: WEBSITE_URL + `/feed/atom/project/${projectInformation.id}`, + rss: WEBSITE_URL + `/feed/rss/project/${projectInformation.id}`, + }, + generator: 'Modrinth', + link: WEBSITE_URL + `/${projectInformation.project_type}/${slugOrId}`, + language: 'en', + updated: new Date(projectInformation.updated), + favicon: projectInformation.icon_url ?? 'https://cdn.modrinth.com/placeholder.png', + image: projectInformation.icon_url ?? 'https://cdn.modrinth.com/placeholder.png', + }) + + for (const category of projectInformation.categories) { + feed.addCategory(category) + } + + for (const member of projectTeam) { + feed.addContributor({ + name: member.user.username, + link: WEBSITE_URL + `/user/${member.user.id}`, + }) + } + + for (const version of projectVersions) { + /** + * @type {Array} + */ + const categories = [...version.loaders, ...version.game_versions].map((x) => { + return { + name: capitalizeString(x), + term: x, + } + }) + + const author = + projectTeam.find((member) => member.user.id === version.author_id)?.user ?? + (await $fetch(API_URL + 'user/' + version.author_id)) + + const loadersPretty = version.loaders.map(capitalizeString).join(', ') + const gameVersionsPretty = version.game_versions.join(', ') + + feed.addItem({ + title: `${version.name}`, + id: `${projectUrl}/version/${version.id}`, + link: `${projectUrl}/version/${version.id}`, + description: `Loaders: ${loadersPretty}, Minecraft versions: ${gameVersionsPretty}`, + content: + // Check for changelog length being greater than 1 to ensure no blank changelog section. + renderString( + version.changelog.length > 1 ? version.changelog : 'No changelog was specified.' + ), + author: [ + { + name: author.username, + link: WEBSITE_URL + `/user/${author.id}`, + }, + ], + category: categories, + date: new Date(version.date_published), + }) + } + + switch (event.context.params.feed_type.toLowerCase()) { + case 'rss': + setResponseHeader(event, 'Content-Type', 'application/rss+xml') + return feed.rss2() + case 'atom': + setResponseHeader(event, 'Content-Type', 'application/atom+xml') + return feed.atom1() + case 'json': + setResponseHeader(event, 'Content-Type', 'application/feed+json') + return feed.json1() + default: + setResponseStatus(event, 400) + return `'${event.context.params.feed_type}' is an invalid feed type, only 'rss', 'atom' and 'json' are supported` + } +})