Replace got in update-check to prevent CLI crash (#20693)

This commit is contained in:
Pascal Jufer
2023-12-10 14:45:51 +01:00
committed by GitHub
parent 92fc8edd7a
commit 0587948d18
6 changed files with 309 additions and 196 deletions

View File

@@ -0,0 +1,5 @@
---
'@directus/update-check': patch
---
Fixed an issue in update-check which could lead to a CLI crash when called again after a few minutes

View File

@@ -26,11 +26,11 @@
"test": "vitest --watch=false"
},
"dependencies": {
"axios": "1.6.2",
"axios-cache-interceptor": "1.3.2",
"boxen": "7.1.1",
"chalk": "5.3.0",
"filenamify": "6.0.0",
"find-cache-dir": "5.0.0",
"got": "13.0.0",
"semver": "7.5.4"
},
"devDependencies": {
@@ -39,7 +39,6 @@
"@types/node": "18.16.12",
"@types/semver": "7.5.1",
"@vitest/coverage-v8": "0.34.6",
"keyv": "4.5.2",
"strip-ansi": "7.1.0",
"tsup": "8.0.1",
"typescript": "5.3.2",

View File

@@ -1,6 +1,5 @@
import filenamify from 'filenamify';
import { buildStorage } from 'axios-cache-interceptor';
import findCacheDirectory from 'find-cache-dir';
import type { Store } from 'keyv';
import fs from 'node:fs/promises';
import path from 'node:path';
@@ -15,41 +14,30 @@ export async function getCache() {
return;
}
return new Cache(dir);
}
class Cache implements Store<string> {
constructor(private dir: string) {}
async get(key: string) {
try {
const file = path.join(this.dir, filenamify(key));
return await fs.readFile(file, { encoding: 'utf8' });
} catch {
return undefined;
}
}
async set(key: string, value: string) {
const file = path.join(this.dir, filenamify(key));
return fs.writeFile(file, value, { encoding: 'utf8' }).catch();
}
async delete(key: string) {
try {
const file = path.join(this.dir, filenamify(key));
await fs.unlink(file);
return true;
} catch {
return false;
}
}
async clear() {
// Not required
}
return buildStorage({
async set(key, value) {
const file = path.join(dir, key);
const content = JSON.stringify(value);
return fs.writeFile(file, content).catch(() => {});
},
async remove(key) {
const file = path.join(dir, key);
return fs.unlink(file).catch(() => {});
},
async find(key) {
try {
const file = path.join(dir, key);
const content = await fs.readFile(file, { encoding: 'utf8' });
const value = JSON.parse(content);
return value;
} catch {
return undefined;
}
},
});
}

View File

@@ -1,27 +1,33 @@
import stripAnsi from 'strip-ansi';
import { expect, test, vi } from 'vitest';
import { updateCheck } from './index.js';
import stripAnsi from 'strip-ansi';
vi.mock('got', () => {
const manifest = {
'dist-tags': { latest: '10.6.1' },
versions: {
'10.4.3': {},
'10.5.0': {},
'10.5.1': {},
'10.5.2': {},
'10.5.3': {},
'10.6.0': {},
'10.6.1': {},
'10.7.0-beta.0': {},
vi.mock('./cache.js');
vi.mock('axios-cache-interceptor', () => ({
setupCache: () => ({
async get() {
return { data: manifest };
},
};
}),
}));
return { default: () => ({ json: () => manifest }) };
});
const manifest = {
'dist-tags': { latest: '10.6.1' },
versions: {
'10.4.3': {},
'10.5.0': {},
'10.5.1': {},
'10.5.2': {},
'10.5.3': {},
'10.6.0': {},
'10.6.1': {},
'10.7.0-beta.0': {},
},
};
test('#updateCheck', async () => {
const consoleMock = vi.spyOn(console, 'warn').mockImplementation(() => undefined);
const consoleMock = vi.spyOn(console, 'warn').mockImplementation(() => {});
const currentVersion = '10.5.0';
await updateCheck(currentVersion);

View File

@@ -1,34 +1,30 @@
import type { Manifest } from '@npm/types';
import Axios from 'axios';
import { setupCache } from 'axios-cache-interceptor';
import boxen, { type Options as BoxenOptions } from 'boxen';
import chalk from 'chalk';
import got from 'got';
import { gte, prerelease } from 'semver';
import { getCache } from './cache.js';
const cache = await getCache();
const instance = Axios.create();
// @ts-ignore TODO Remove once type is fixed in axios-cache-interceptor
const axios = setupCache(instance, { storage: cache });
export async function updateCheck(currentVersion: string) {
let packageManifest: Manifest | undefined;
let response;
try {
packageManifest = await got('https://registry.npmjs.org/directus', {
response = await axios.get<Manifest>('https://registry.npmjs.org/directus', {
headers: { accept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*' },
cache,
retry: {
limit: 0,
},
timeout: {
request: 8_000,
},
}).json<Manifest>();
} catch (error) {
// Any errors are intentionally ignored & update message simply not printed
timeout: 8_000,
});
} catch {
// Errors are intentionally ignored and update check is skipped
return;
}
if (!packageManifest) {
return;
}
const packageManifest = response.data;
const latestVersion = packageManifest['dist-tags']['latest'];

361
pnpm-lock.yaml generated
View File

@@ -1827,21 +1827,21 @@ importers:
packages/update-check:
dependencies:
axios:
specifier: 1.6.2
version: 1.6.2
axios-cache-interceptor:
specifier: 1.3.2
version: 1.3.2(axios@1.6.2)
boxen:
specifier: 7.1.1
version: 7.1.1
chalk:
specifier: 5.3.0
version: 5.3.0
filenamify:
specifier: 6.0.0
version: 6.0.0
find-cache-dir:
specifier: 5.0.0
version: 5.0.0
got:
specifier: 13.0.0
version: 13.0.0
semver:
specifier: 7.5.4
version: 7.5.4
@@ -1861,9 +1861,6 @@ importers:
'@vitest/coverage-v8':
specifier: 0.34.6
version: 0.34.6(vitest@0.34.6)
keyv:
specifier: 4.5.2
version: 4.5.2
strip-ansi:
specifier: 7.1.0
version: 7.1.0
@@ -1875,7 +1872,7 @@ importers:
version: 5.3.2
vitest:
specifier: 0.34.6
version: 0.34.6(happy-dom@12.10.3)(sass@1.62.1)
version: 0.34.6
packages/utils:
dependencies:
@@ -6675,11 +6672,6 @@ packages:
engines: {node: '>=10'}
dev: true
/@sindresorhus/is@5.6.0:
resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
engines: {node: '>=14.16'}
dev: false
/@sindresorhus/slugify@2.2.1:
resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==}
engines: {node: '>=12'}
@@ -6714,13 +6706,6 @@ packages:
defer-to-connect: 2.0.1
dev: true
/@szmarczak/http-timer@5.0.1:
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
dependencies:
defer-to-connect: 2.0.1
dev: false
/@tinymce/tinymce-vue@5.1.0(vue@3.3.9):
resolution: {integrity: sha512-Z4R8zaOKrAXBhHWsq+qUlwHY+rvze2RgxHDrZ5+qTYkGvRofW5880HLG9gvv6TRPVsNSQBNMdsaOjJ/eueccgA==}
peerDependencies:
@@ -6979,6 +6964,7 @@ packages:
/@types/http-cache-semantics@4.0.3:
resolution: {integrity: sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==}
dev: true
/@types/http-errors@2.0.3:
resolution: {integrity: sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==}
@@ -7559,7 +7545,7 @@ packages:
vite: ^4.0.0 || ^5.0.0
vue: ^3.2.25
dependencies:
vite: 4.5.0(@types/node@18.16.12)(sass@1.62.1)
vite: 4.5.0
vue: 3.3.8(typescript@5.3.2)
dev: true
@@ -7579,7 +7565,7 @@ packages:
std-env: 3.4.3
test-exclude: 6.0.0
v8-to-istanbul: 9.1.3
vitest: 0.34.6(happy-dom@12.10.3)(sass@1.62.1)
vitest: 0.34.6
transitivePeerDependencies:
- supports-color
dev: true
@@ -8096,6 +8082,11 @@ packages:
engines: {node: '>=0.4.0'}
dev: true
/acorn-walk@8.3.1:
resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==}
engines: {node: '>=0.4.0'}
dev: true
/acorn@8.10.0:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
@@ -8526,6 +8517,18 @@ packages:
dev: false
optional: true
/axios-cache-interceptor@1.3.2(axios@1.6.2):
resolution: {integrity: sha512-FNy4/IKvFYVswpPS09j3H9OUzcXSuxQ93wYxCKnogHbjCRE9nDQ/lukgjyuJqMIk3Yao51qQI/zPbMRNQu4JJw==}
engines: {node: '>=12'}
peerDependencies:
axios: ^1
dependencies:
axios: 1.6.2
cache-parser: 1.2.4
fast-defer: 1.1.8
object-code: 1.3.0
dev: false
/axios@1.4.0:
resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
dependencies:
@@ -8545,6 +8548,16 @@ packages:
transitivePeerDependencies:
- debug
/axios@1.6.2:
resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
dependencies:
follow-redirects: 1.15.3
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
dev: false
/b4a@1.6.4:
resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
dev: false
@@ -8850,29 +8863,15 @@ packages:
- bluebird
optional: true
/cache-parser@1.2.4:
resolution: {integrity: sha512-O0KwuHuJnbHUrghHi2kGp0SxnWSIBXTYt7M8WVhW0kbPRUNUKoE/Of6e1rRD6AAxmfxFunKnt90yEK09D+sc5g==}
dev: false
/cacheable-lookup@5.0.4:
resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
engines: {node: '>=10.6.0'}
dev: true
/cacheable-lookup@7.0.0:
resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
engines: {node: '>=14.16'}
dev: false
/cacheable-request@10.2.14:
resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
engines: {node: '>=14.16'}
dependencies:
'@types/http-cache-semantics': 4.0.3
get-stream: 6.0.1
http-cache-semantics: 4.1.1
keyv: 4.5.4
mimic-response: 4.0.0
normalize-url: 8.0.0
responselike: 3.0.0
dev: false
/cacheable-request@7.0.4:
resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
engines: {node: '>=8'}
@@ -10009,6 +10008,7 @@ packages:
/defer-to-connect@2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
dev: true
/define-data-property@1.1.1:
resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
@@ -10976,6 +10976,10 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
requiresBuild: true
/fast-defer@1.1.8:
resolution: {integrity: sha512-lEJeOH5VL5R09j6AA0D4Uvq7AgsHw0dAImQQ+F3iSyHZuAxyQfWobsagGpTcOPvJr3urmKRHrs+Gs9hV+/Qm/Q==}
dev: false
/fast-diff@1.3.0:
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
dev: true
@@ -11068,18 +11072,6 @@ packages:
resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
dev: true
/filename-reserved-regex@3.0.0:
resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false
/filenamify@6.0.0:
resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==}
engines: {node: '>=16'}
dependencies:
filename-reserved-regex: 3.0.0
dev: false
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@@ -11239,11 +11231,6 @@ packages:
dev: false
optional: true
/form-data-encoder@2.1.4:
resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
engines: {node: '>= 14.17'}
dev: false
/form-data@2.3.3:
resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==}
engines: {node: '>= 0.12'}
@@ -11706,23 +11693,6 @@ packages:
responselike: 2.0.1
dev: true
/got@13.0.0:
resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
engines: {node: '>=16'}
dependencies:
'@sindresorhus/is': 5.6.0
'@szmarczak/http-timer': 5.0.1
cacheable-lookup: 7.0.0
cacheable-request: 10.2.14
decompress-response: 6.0.0
form-data-encoder: 2.1.4
get-stream: 6.0.1
http2-wrapper: 2.2.0
lowercase-keys: 3.0.0
p-cancelable: 3.0.0
responselike: 3.0.0
dev: false
/graceful-fs@4.2.10:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
@@ -12123,14 +12093,6 @@ packages:
resolve-alpn: 1.2.1
dev: true
/http2-wrapper@2.2.0:
resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==}
engines: {node: '>=10.19.0'}
dependencies:
quick-lru: 5.1.1
resolve-alpn: 1.2.1
dev: false
/https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@@ -13084,6 +13046,7 @@ packages:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
json-buffer: 3.0.1
dev: true
/kind-of@6.0.3:
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
@@ -13464,11 +13427,6 @@ packages:
engines: {node: '>=8'}
dev: true
/lowercase-keys@3.0.0:
resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false
/lru-cache@10.0.1:
resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==}
engines: {node: 14 || >=16.14}
@@ -14120,11 +14078,6 @@ packages:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
/mimic-response@4.0.0:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false
/min-indent@1.0.1:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
@@ -14346,6 +14299,12 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
/nanoid@4.0.2:
resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==}
engines: {node: ^14 || ^16 || >=18}
@@ -14699,11 +14658,6 @@ packages:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
/normalize-url@8.0.0:
resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==}
engines: {node: '>=14.16'}
dev: false
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -14772,6 +14726,10 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
/object-code@1.3.0:
resolution: {integrity: sha512-PLplgvzuFhSPBuTX/mtaXEnU3c6g7qKflVVQbV9VWEnV/34iKeAX1jeDNCKq1OgGlsnkA/NjldCzTbHxa7Wj4A==}
dev: false
/object-hash@2.2.0:
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
engines: {node: '>= 6'}
@@ -15007,11 +14965,6 @@ packages:
engines: {node: '>=8'}
dev: true
/p-cancelable@3.0.0:
resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
engines: {node: '>=12.20'}
dev: false
/p-defer@1.0.0:
resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==}
engines: {node: '>=4'}
@@ -15977,6 +15930,15 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
/postcss@8.4.32:
resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
dev: true
/postgres-array@2.0.0:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
@@ -16254,6 +16216,7 @@ packages:
/quick-lru@5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
dev: true
/quickselect@2.0.0:
resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
@@ -16615,6 +16578,7 @@ packages:
/resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
dev: true
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
@@ -16664,13 +16628,6 @@ packages:
lowercase-keys: 2.0.0
dev: true
/responselike@3.0.0:
resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
engines: {node: '>=14.16'}
dependencies:
lowercase-keys: 3.0.0
dev: false
/restore-cursor@3.1.0:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
@@ -17631,6 +17588,10 @@ packages:
resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==}
dev: true
/std-env@3.6.0:
resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==}
dev: true
/stdin-discarder@0.1.0:
resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -19168,7 +19129,29 @@ packages:
picocolors: 1.0.0
source-map: 0.6.1
source-map-support: 0.5.21
vite: 4.5.0(@types/node@18.16.12)(sass@1.62.1)
vite: 4.5.0
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vite-node@0.34.6(@types/node@18.16.12):
resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
engines: {node: '>=v14.18.0'}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4
mlly: 1.4.2
pathe: 1.1.1
picocolors: 1.0.0
vite: 4.4.11(@types/node@18.16.12)
transitivePeerDependencies:
- '@types/node'
- less
@@ -19190,7 +19173,7 @@ packages:
mlly: 1.4.2
pathe: 1.1.1
picocolors: 1.0.0
vite: 4.5.0(@types/node@18.16.12)(sass@1.62.1)
vite: 4.4.11(@types/node@18.16.12)(sass@1.62.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -19332,8 +19315,8 @@ packages:
fsevents: 2.3.3
dev: true
/vite@4.5.0(@types/node@18.16.12)(sass@1.62.1):
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
/vite@4.4.11(@types/node@18.16.12):
resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
@@ -19362,13 +19345,84 @@ packages:
dependencies:
'@types/node': 18.16.12
esbuild: 0.18.20
postcss: 8.4.31
postcss: 8.4.32
rollup: 3.29.4
optionalDependencies:
fsevents: 2.3.3
dev: true
/vite@4.4.11(@types/node@18.16.12)(sass@1.62.1):
resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
'@types/node': '>= 14'
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
dependencies:
'@types/node': 18.16.12
esbuild: 0.18.20
postcss: 8.4.32
rollup: 3.29.4
sass: 1.62.1
optionalDependencies:
fsevents: 2.3.3
dev: true
/vite@4.5.0:
resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
'@types/node': '>= 14'
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
dependencies:
esbuild: 0.18.20
postcss: 8.4.31
rollup: 3.29.4
optionalDependencies:
fsevents: 2.3.3
dev: true
/vitepress-plugin-tabs@0.3.0(vitepress@1.0.0-rc.4)(vue@3.3.8):
resolution: {integrity: sha512-3dKsBuP6PDzcFHgUtNCwwCs3bYoZduj7AcQkT9JfAKTRAKPCNmjiNInPT3IZ7AihL0SJNoQ3liz/e97z8oo+XA==}
peerDependencies:
@@ -19394,7 +19448,7 @@ packages:
mark.js: 8.11.1
minisearch: 6.1.0
shiki: 0.14.5
vite: 4.5.0(@types/node@18.16.12)(sass@1.62.1)
vite: 4.5.0
vue: 3.3.8(typescript@5.3.2)
transitivePeerDependencies:
- '@algolia/client-search'
@@ -19424,6 +19478,71 @@ packages:
- universal-cookie
dev: true
/vitest@0.34.6:
resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
engines: {node: '>=v14.18.0'}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@vitest/browser': '*'
'@vitest/ui': '*'
happy-dom: '*'
jsdom: '*'
playwright: '*'
safaridriver: '*'
webdriverio: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
'@vitest/browser':
optional: true
'@vitest/ui':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
playwright:
optional: true
safaridriver:
optional: true
webdriverio:
optional: true
dependencies:
'@types/chai': 4.3.9
'@types/chai-subset': 1.3.4
'@types/node': 18.16.12
'@vitest/expect': 0.34.6
'@vitest/runner': 0.34.6
'@vitest/snapshot': 0.34.6
'@vitest/spy': 0.34.6
'@vitest/utils': 0.34.6
acorn: 8.11.2
acorn-walk: 8.3.1
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4
local-pkg: 0.4.3
magic-string: 0.30.5
pathe: 1.1.1
picocolors: 1.0.0
std-env: 3.6.0
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.7.0
vite: 4.4.11(@types/node@18.16.12)
vite-node: 0.34.6(@types/node@18.16.12)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vitest@0.34.6(happy-dom@12.10.3)(sass@1.62.1):
resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
engines: {node: '>=v14.18.0'}
@@ -19463,8 +19582,8 @@ packages:
'@vitest/snapshot': 0.34.6
'@vitest/spy': 0.34.6
'@vitest/utils': 0.34.6
acorn: 8.10.0
acorn-walk: 8.2.0
acorn: 8.11.2
acorn-walk: 8.3.1
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4
@@ -19473,11 +19592,11 @@ packages:
magic-string: 0.30.5
pathe: 1.1.1
picocolors: 1.0.0
std-env: 3.4.3
std-env: 3.6.0
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.7.0
vite: 4.5.0(@types/node@18.16.12)(sass@1.62.1)
vite: 4.4.11(@types/node@18.16.12)(sass@1.62.1)
vite-node: 0.34.6(@types/node@18.16.12)(sass@1.62.1)
why-is-node-running: 2.2.2
transitivePeerDependencies: