1
mirror of https://github.com/thepeacockproject/Peacock synced 2024-11-16 11:03:30 +01:00

Add test to ensure objectives are localized (#391)

Signed-off-by: Reece Dunham <me@rdil.rocks>
This commit is contained in:
Reece Dunham 2024-02-20 07:21:52 -05:00 committed by GitHub
parent 7780d4fc89
commit e184ce0e82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 344 additions and 75 deletions

View File

@ -9,3 +9,4 @@ webui/dist
*Plugin.js
packaging/livesplit-node-client/build
webstorm.config.js
tests/data/scripts

View File

@ -167,7 +167,7 @@
}
},
"HUDTemplate": {
"display": "$loc UI_PEACOCK_KHAKIASP_DOCUNMENTATION_OBJ3"
"display": "$loc UI_PEACOCK_KHAKIASP_DOCUMENTATION_OBJ3"
},
"Category": "primary",
"Definition": {

View File

@ -79,6 +79,7 @@ export async function generateRequireTable() {
const prettierConfig = await prettier.resolveConfig()
prettierConfig.parser = "babel"
// language=TypeScript
const generatedPeacockRequireTableFile = prettier.format(
`/*
* The Peacock Project - a HITMAN server replacement.
@ -121,7 +122,7 @@ export async function packResources() {
const start = Date.now()
const contracts = glob.sync("contractdata/**/*.json")
const contracts = await glob("contractdata/**/*.json")
const b = []
const el = []

Binary file not shown.

View File

@ -0,0 +1,34 @@
/*
* The Peacock Project - a HITMAN server replacement.
* Copyright (C) 2021-2024 The Peacock Project Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { pack } from "msgpackr"
import { writeFile } from "node:fs/promises"
const lines = await fetch(
"https://raw.githubusercontent.com/glacier-modding/Hitman-l10n-Hashes/master/lines.json",
)
.then((res) => res.json())
.catch(() => {
throw new Error("Failed to fetch lines.json")
})
const outKeys = Object.keys(lines).map((key) => {
return parseInt(key, 16)
})
await writeFile("data/game-defined-locr-crc32s.msgpack", pack(outKeys))

View File

@ -3,13 +3,15 @@
"type": "module",
"private": true,
"dependencies": {
"@vitest/ui": "^1.2.2",
"vite": "^5.0.12",
"vitest": "^1.2.2"
"@aws-crypto/crc32": "^5.2.0",
"@vitest/ui": "^1.3.0",
"vite": "^5.1.3",
"vitest": "^1.3.0"
},
"scripts": {
"test:main": "vitest --run --config vitest.config.ts",
"test:ui": "vitest --config vitest.config.ts --ui",
"typecheck-ws": "tsc --noEmit"
"typecheck-ws": "tsc --noEmit",
"tests:update-locr-crcs": "node ./data/scripts/updateLocrCrcData.mjs"
}
}

View File

@ -0,0 +1,153 @@
/*
* The Peacock Project - a HITMAN server replacement.
* Copyright (C) 2021-2024 The Peacock Project Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { describe, expect, it } from "vitest"
import { glob } from "fast-glob"
import { readFile } from "atomically"
import { MissionManifest } from "../../components/types/types"
import { unpack } from "msgpackr"
import { crc32 } from "@aws-crypto/crc32"
const allContractFiles = (
await glob("**/*.json", {
cwd: "../contractdata",
})
).filter((file) => !file.includes("CHALLENGES") && !file.includes("MASTERY"))
type LocWrap = {
$loc: { key: string; data: string | number[] }
}
function parseLocString(locString: string | LocWrap) {
if ((locString as LocWrap)?.$loc?.key) {
return (locString as LocWrap).$loc.key
}
if ((locString as string).includes("$loc")) {
const parts = (locString as string).split(" ")
// i hate this
const double = (locString as string).includes("$loc $loc")
return parts[double ? 2 : 1] ?? ""
}
return locString as string
}
// this is a list of all the crc32s that the game defines for localization
const gameCrcs: number[] = unpack(
await readFile("data/game-defined-locr-crc32s.msgpack"),
)
function getCrc(str: string) {
return crc32(Buffer.from(str))
}
let peacockCrcs: number[]
{
const strings = JSON.parse(
(await readFile("../resources/locale.json")).toString(),
)["english"]
peacockCrcs = Object.keys(strings).map(getCrc)
}
const allCrcs = [...peacockCrcs, ...gameCrcs]
const ignored = [
"UI_CONTRACT_RAT_OBJ_DATACORE_OPTIONAL_TITLE",
"UI_CONTRACT_FOX_ELIMINATE_REMAINING_LESSER_AGENTS_TITLE",
"UI_CONTRACT_FOX_ELIMINATE_REMAINING_LESSER_AGENTS_OBJ",
"UI_CONTRACT_FOX_ELIMINATE_REMAINING_LESSER_AGENTS_DESC",
"$UI_CONTRACT_JACARANDA_OBJECTIVE_SNIPER_NAME",
"UI_CONTRACT_GLORIOSA_OBJ_1_NAME",
"UI_CONTRACT_RAFFLESIA_OBJ_2_NAME",
"UI_CONTRACT_RAFFLESIA_OBJ_3_NAME",
"UI_CONTRACT_TITANUMARUM_OBJ_1_NAME",
"UI_CONTRACT_TITANUMARUM_OBJ_2_NAME",
"UI_CONTRACT_HOLLY_OBJ_3_NAME",
"UI_CONTRACT_HOLLY_OBJ_4_NAME",
"UI_CONTRACT_GORSE_OBJ_1_NAME",
"UI_CONTRACT_GORSE_OBJ_3_NAME",
"UI_CONTRACT_GORSE_OBJ_4_NAME",
"UI_CONTRACT_GORSE_OBJ_5_NAME",
"UI_CONTRACT_GORSE_OBJ_6_NAME",
"UI_CONTRACT_GORSE_OBJ_7_NAME",
"UI_CONTRACT_GORSE_OBJ_2_NAME",
]
describe("contract files", () => {
it("contract objectives have working localization", async () => {
for (const file of allContractFiles) {
const contract: MissionManifest = JSON.parse(
(await readFile(`../contractdata/${file}`)).toString(),
)
if (contract.Metadata.Type === "featured") {
continue
}
for (const objective of contract.Data.Objectives || []) {
if (objective.BriefingText) {
const loc = parseLocString(
objective.BriefingText,
).toUpperCase()
if (!ignored.includes(loc) && !loc.startsWith("$.")) {
const i = getCrc(loc)
expect(
allCrcs,
`${file} objective ${objective.Id} BriefingText (${loc}) in defined strings`,
).toContain(i)
}
}
if (objective.BriefingName) {
const loc = parseLocString(
objective.BriefingName,
).toUpperCase()
if (!ignored.includes(loc) && !loc.startsWith("$.")) {
const i = getCrc(loc)
expect(
allCrcs,
`${file} objective ${objective.Id} BriefingName (${loc}) in defined strings`,
).toContain(i)
}
}
if (objective.HUDTemplate?.display) {
const loc = parseLocString(
objective.HUDTemplate.display,
).toUpperCase()
if (!ignored.includes(loc) && !loc.startsWith("$.")) {
const i = getCrc(loc)
expect(
allCrcs,
`${file} objective ${objective.Id} HUDTemplate.display (${loc}) in defined strings`,
).toContain(i)
}
}
}
}
})
})

View File

@ -5,7 +5,8 @@
"rootDir": null,
"rootDirs": ["../components", "."],
"noEmit": true,
"emitDeclarationOnly": false
"emitDeclarationOnly": false,
"module": "ESNext"
},
"include": ["../components", "**/*.ts"],
"exclude": []

View File

@ -24,7 +24,7 @@
"@types/react-dom": "^18.2.18",
"rollup-plugin-license": "^3.2.0",
"typescript": "5.3.3",
"vite": "^5.0.12"
"vite": "^5.1.3"
},
"peerDependencies": {
"rollup": "*"

211
yarn.lock
View File

@ -12,6 +12,38 @@ __metadata:
languageName: node
linkType: hard
"@aws-crypto/crc32@npm:^5.2.0":
version: 5.2.0
resolution: "@aws-crypto/crc32@npm:5.2.0"
dependencies:
"@aws-crypto/util": "npm:^5.2.0"
"@aws-sdk/types": "npm:^3.222.0"
tslib: "npm:^2.6.2"
checksum: 10/1b0a56ad4cb44c9512d8b1668dcf9306ab541d3a73829f435ca97abaec8d56f3db953db03ad0d0698754fea16fcd803d11fa42e0889bc7b803c6a030b04c63de
languageName: node
linkType: hard
"@aws-crypto/util@npm:^5.2.0":
version: 5.2.0
resolution: "@aws-crypto/util@npm:5.2.0"
dependencies:
"@aws-sdk/types": "npm:^3.222.0"
"@smithy/util-utf8": "npm:^2.0.0"
tslib: "npm:^2.6.2"
checksum: 10/f80a174c404e1ad4364741c942f440e75f834c08278fa754349fe23a6edc679d480ea9ced5820774aee58091ed270067022d8059ecf1a7ef452d58134ac7e9e1
languageName: node
linkType: hard
"@aws-sdk/types@npm:^3.222.0":
version: 3.515.0
resolution: "@aws-sdk/types@npm:3.515.0"
dependencies:
"@smithy/types": "npm:^2.9.1"
tslib: "npm:^2.5.0"
checksum: 10/465b998e539e88fcd7be3d4acaaf9a8cd80bda2f2cb0ae407f60b87eb3e3dd9229df1d384ba524de8b9e2bb2c61f4f126b0bc5f5b42558235e40e5f491b3997d
languageName: node
linkType: hard
"@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0":
version: 1.6.0
resolution: "@colors/colors@npm:1.6.0"
@ -538,9 +570,10 @@ __metadata:
version: 0.0.0-use.local
resolution: "@peacockproject/tests@workspace:tests"
dependencies:
"@vitest/ui": "npm:^1.2.2"
vite: "npm:^5.0.12"
vitest: "npm:^1.2.2"
"@aws-crypto/crc32": "npm:^5.2.0"
"@vitest/ui": "npm:^1.3.0"
vite: "npm:^5.1.3"
vitest: "npm:^1.3.0"
languageName: unknown
linkType: soft
@ -560,7 +593,7 @@ __metadata:
rollup-plugin-license: "npm:^3.2.0"
swr: "npm:^1.3.0"
typescript: "npm:5.3.3"
vite: "npm:^5.0.12"
vite: "npm:^5.1.3"
peerDependencies:
rollup: "*"
peerDependenciesMeta:
@ -681,6 +714,44 @@ __metadata:
languageName: node
linkType: hard
"@smithy/is-array-buffer@npm:^2.1.1":
version: 2.1.1
resolution: "@smithy/is-array-buffer@npm:2.1.1"
dependencies:
tslib: "npm:^2.5.0"
checksum: 10/0724355a8fa1e61c9fb77c6e6965cc7eae0cd561f158b768f8d1c9a26254db149bb545b318cdd81ebe383bbe5f26f6197b144c69e812dfd55f512e511e0ccbd8
languageName: node
linkType: hard
"@smithy/types@npm:^2.9.1":
version: 2.9.1
resolution: "@smithy/types@npm:2.9.1"
dependencies:
tslib: "npm:^2.5.0"
checksum: 10/82156919fd78814cfe988b8e0eea9d086134583e5d55501429a2cde6f0c5465cdbc274816162cdce3c19f5c81f7d8aed6c5d2edde3a214250760fce794efa4c2
languageName: node
linkType: hard
"@smithy/util-buffer-from@npm:^2.1.1":
version: 2.1.1
resolution: "@smithy/util-buffer-from@npm:2.1.1"
dependencies:
"@smithy/is-array-buffer": "npm:^2.1.1"
tslib: "npm:^2.5.0"
checksum: 10/5de4cf8b2d9c5347990be5791882947a509ba00a55ee67589f327e4852309dac5278248317929519f5a9d2aa5dc1c11cd54803db962287909e0322b7f73332bc
languageName: node
linkType: hard
"@smithy/util-utf8@npm:^2.0.0":
version: 2.1.1
resolution: "@smithy/util-utf8@npm:2.1.1"
dependencies:
"@smithy/util-buffer-from": "npm:^2.1.1"
tslib: "npm:^2.5.0"
checksum: 10/736992921e50c2c96234dc5eab305a30d29b1cfa29ce5ad2ec0e4b3f2e0dc3e2d29303bd1362bd20fa2e66c5fd494c558f4b1050b91ead5e13a479903bb9686f
languageName: node
linkType: hard
"@types/body-parser@npm:*":
version: 1.19.5
resolution: "@types/body-parser@npm:1.19.5"
@ -1025,53 +1096,53 @@ __metadata:
languageName: node
linkType: hard
"@vitest/expect@npm:1.2.2":
version: 1.2.2
resolution: "@vitest/expect@npm:1.2.2"
"@vitest/expect@npm:1.3.0":
version: 1.3.0
resolution: "@vitest/expect@npm:1.3.0"
dependencies:
"@vitest/spy": "npm:1.2.2"
"@vitest/utils": "npm:1.2.2"
"@vitest/spy": "npm:1.3.0"
"@vitest/utils": "npm:1.3.0"
chai: "npm:^4.3.10"
checksum: 10/409bf9984a2901cd13bd8644d1dcc61a3b85a122e70f842626c83995b806c6fb1ed5a81685493e88df8bf76557e599bdeed5fd5e908d84a4cb0fa4947b90b631
checksum: 10/32bc76108a608acb614dfb46ee9b588fc1a3f1fb68ba400a49d6ab80de463a2ab8a6a5dd51960ca76417b300d7c5ce16e2e346a0b0ebe25ca3b80232a378d6dc
languageName: node
linkType: hard
"@vitest/runner@npm:1.2.2":
version: 1.2.2
resolution: "@vitest/runner@npm:1.2.2"
"@vitest/runner@npm:1.3.0":
version: 1.3.0
resolution: "@vitest/runner@npm:1.3.0"
dependencies:
"@vitest/utils": "npm:1.2.2"
"@vitest/utils": "npm:1.3.0"
p-limit: "npm:^5.0.0"
pathe: "npm:^1.1.1"
checksum: 10/e12a758a8c9ce762af470fc5a33e42a416b1e16469b69a077bc021044c460c468ed24fa892e80cba4bfc0448df8484d1bfc43a271db09560347455aa392cc8aa
checksum: 10/7212e457fa89425c1e0b75e1817b50dc9c7d554617faf2178784a5fe0b97e6e4fe417e20886bd189f5385d01ac3f389d90ebca2a01ea4dee8a26897921db70c1
languageName: node
linkType: hard
"@vitest/snapshot@npm:1.2.2":
version: 1.2.2
resolution: "@vitest/snapshot@npm:1.2.2"
"@vitest/snapshot@npm:1.3.0":
version: 1.3.0
resolution: "@vitest/snapshot@npm:1.3.0"
dependencies:
magic-string: "npm:^0.30.5"
pathe: "npm:^1.1.1"
pretty-format: "npm:^29.7.0"
checksum: 10/73e669efdf8ba7270a2b71b988ca93fc9cbc9f9b4ad4cb7c7f8d44dbedfef3109fc8896867b8e1f22cd95494ce18cbc1026a0f89ef4a2e7e4546cf8e613ed302
checksum: 10/b39bfee8ba9424e672e1c3076e3ee679d530ab8d38a5ad94ceec109063925caae10d4656d9256e331d2f8ed4a3169bfdc8ae584afe171fd51bbe70892dbce1b9
languageName: node
linkType: hard
"@vitest/spy@npm:1.2.2":
version: 1.2.2
resolution: "@vitest/spy@npm:1.2.2"
"@vitest/spy@npm:1.3.0":
version: 1.3.0
resolution: "@vitest/spy@npm:1.3.0"
dependencies:
tinyspy: "npm:^2.2.0"
checksum: 10/8cf453f2b0c519b27d783dafbca8a4df6945b8f4723077e7ae153ef06bcb1422af608d2a09912284c3bd7bd1e66555d82d889497780295c73a14876807755a79
checksum: 10/780c6b678aeb3cc1ccd730ff35fb6596e1a0adb78b39934e37bc6ae712b99bcf46a9387b34f8e76265c6805aef1dff72f47a921695ae5c567d59490d097c90a0
languageName: node
linkType: hard
"@vitest/ui@npm:^1.2.2":
version: 1.2.2
resolution: "@vitest/ui@npm:1.2.2"
"@vitest/ui@npm:^1.3.0":
version: 1.3.0
resolution: "@vitest/ui@npm:1.3.0"
dependencies:
"@vitest/utils": "npm:1.2.2"
"@vitest/utils": "npm:1.3.0"
fast-glob: "npm:^3.3.2"
fflate: "npm:^0.8.1"
flatted: "npm:^3.2.9"
@ -1079,20 +1150,20 @@ __metadata:
picocolors: "npm:^1.0.0"
sirv: "npm:^2.0.4"
peerDependencies:
vitest: ^1.0.0
checksum: 10/5570ff8afc7731e672608709e8d107127b71080d3b4ee20369a24bd03c18365642aec4a31c5eea01adf473d1f016bbdf4b0b9dfa70d4d0fc1e552439f004efd4
vitest: 1.3.0
checksum: 10/e4f76cdb4d926ccd52a804d4ef3db35140a1b8347ca0db173deebd6af6660d06d3e05faad26b842a920ee638ba7ccfe8d0a86e4733943eb09a5b66d4f680ce1b
languageName: node
linkType: hard
"@vitest/utils@npm:1.2.2":
version: 1.2.2
resolution: "@vitest/utils@npm:1.2.2"
"@vitest/utils@npm:1.3.0":
version: 1.3.0
resolution: "@vitest/utils@npm:1.3.0"
dependencies:
diff-sequences: "npm:^29.6.3"
estree-walker: "npm:^3.0.3"
loupe: "npm:^2.3.7"
pretty-format: "npm:^29.7.0"
checksum: 10/f9a62bc8cbe05475b99e1f8bd96e0ee48cf819ca2e532ba18f071bf0371f044dffa006c33a69b1b276097e6b50f91342a776c830cfac19456b24a9bdad29abe5
checksum: 10/9d544b24e25659d9f715f43906b9e40571450bbc14cb0320487dae67e4561acb61820200f4e185e1f7b805a17225b70802ebace9fb5c313bfff82ee3841278a9
languageName: node
linkType: hard
@ -1151,7 +1222,7 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.10.0, acorn@npm:^8.11.3, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
"acorn@npm:^8.11.3, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
version: 8.11.3
resolution: "acorn@npm:8.11.3"
bin:
@ -3017,6 +3088,13 @@ __metadata:
languageName: node
linkType: hard
"js-tokens@npm:^8.0.2":
version: 8.0.3
resolution: "js-tokens@npm:8.0.3"
checksum: 10/af5ed8ddbc446a868c026599214f4a482ab52461edb82e547949255f98910a14bd81ddab88a8d570d74bd7dc96c6d4df7f963794ec5aaf13c53918cc46b9caa6
languageName: node
linkType: hard
"js-yaml@npm:^4.1.0":
version: 4.1.0
resolution: "js-yaml@npm:4.1.0"
@ -3956,14 +4034,14 @@ __metadata:
languageName: node
linkType: hard
"postcss@npm:^8.4.32":
version: 8.4.33
resolution: "postcss@npm:8.4.33"
"postcss@npm:^8.4.35":
version: 8.4.35
resolution: "postcss@npm:8.4.35"
dependencies:
nanoid: "npm:^3.3.7"
picocolors: "npm:^1.0.0"
source-map-js: "npm:^1.0.2"
checksum: 10/e22a4594c255f26117f38419fb494d7ecab0f596cd409f7aadc8a6173abf180ed7ea970cd13fd366ab12b5840be901d2a09b25197700c2ebcb5a8077326bf519
checksum: 10/93a7ce50cd6188f5f486a9ca98950ad27c19dfed996c45c414fa242944497e4d084a8760d3537f078630226f2bd3c6ab84b813b488740f4432e7c7039cd73a20
languageName: node
linkType: hard
@ -4758,12 +4836,12 @@ __metadata:
languageName: node
linkType: hard
"strip-literal@npm:^1.3.0":
version: 1.3.0
resolution: "strip-literal@npm:1.3.0"
"strip-literal@npm:^2.0.0":
version: 2.0.0
resolution: "strip-literal@npm:2.0.0"
dependencies:
acorn: "npm:^8.10.0"
checksum: 10/f5fa7e289df8ebe82e90091fd393974faf8871be087ca50114327506519323cf15f2f8fee6ebe68b5e58bfc795269cae8bdc7cb5a83e27b02b3fe953f37b0a89
js-tokens: "npm:^8.0.2"
checksum: 10/efb3197175a7e403d0eaaaf5382b9574be77f8fa006b57b669856a38b58ca9caf76cbc75d9f69d56324dad0b8babe1d4ea7ad1eb12106228830bcdd5d4bf12b5
languageName: node
linkType: hard
@ -4938,7 +5016,7 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.4.0":
"tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca
@ -5091,9 +5169,9 @@ __metadata:
languageName: node
linkType: hard
"vite-node@npm:1.2.2":
version: 1.2.2
resolution: "vite-node@npm:1.2.2"
"vite-node@npm:1.3.0":
version: 1.3.0
resolution: "vite-node@npm:1.3.0"
dependencies:
cac: "npm:^6.7.14"
debug: "npm:^4.3.4"
@ -5102,17 +5180,17 @@ __metadata:
vite: "npm:^5.0.0"
bin:
vite-node: vite-node.mjs
checksum: 10/a4b39361011ebf890fb2be83babd24aa29de76185f1683f57a76b6dfcfbdcd7700b83c9d0cd3b5bebc4a114427d7c2612095ab59d0d12732ce21ef816fe86b07
checksum: 10/39a473a927547416ee72e01310929b02ee6724f1671c20cd1f1bd65494850906624b6a06b813ba2e3f742c42e5e2d2718e4f4248032cf1ad9c95c696659dd832
languageName: node
linkType: hard
"vite@npm:^5.0.0, vite@npm:^5.0.12":
version: 5.0.12
resolution: "vite@npm:5.0.12"
"vite@npm:^5.0.0, vite@npm:^5.1.3":
version: 5.1.3
resolution: "vite@npm:5.1.3"
dependencies:
esbuild: "npm:^0.19.3"
fsevents: "npm:~2.3.3"
postcss: "npm:^8.4.32"
postcss: "npm:^8.4.35"
rollup: "npm:^4.2.0"
peerDependencies:
"@types/node": ^18.0.0 || >=20.0.0
@ -5142,21 +5220,20 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
checksum: 10/ed0bb26a0d0c8e1dae0b70af9e36adffd7e15d80297443fe4da762596dc81570bad7f0291f590a57c1553f5e435338d8c7ffc483bd9431a95c09d9ac90665fad
checksum: 10/6ba2223157e2cc2fa62dff9004ccba20fc409c6baf7354c64ed0f8e4bcd853092d08d06ec4dec37143e794a96e061879a870d85bad4f1eb9ee5c6d0a13cef30f
languageName: node
linkType: hard
"vitest@npm:^1.2.2":
version: 1.2.2
resolution: "vitest@npm:1.2.2"
"vitest@npm:^1.3.0":
version: 1.3.0
resolution: "vitest@npm:1.3.0"
dependencies:
"@vitest/expect": "npm:1.2.2"
"@vitest/runner": "npm:1.2.2"
"@vitest/snapshot": "npm:1.2.2"
"@vitest/spy": "npm:1.2.2"
"@vitest/utils": "npm:1.2.2"
"@vitest/expect": "npm:1.3.0"
"@vitest/runner": "npm:1.3.0"
"@vitest/snapshot": "npm:1.3.0"
"@vitest/spy": "npm:1.3.0"
"@vitest/utils": "npm:1.3.0"
acorn-walk: "npm:^8.3.2"
cac: "npm:^6.7.14"
chai: "npm:^4.3.10"
debug: "npm:^4.3.4"
execa: "npm:^8.0.1"
@ -5165,17 +5242,17 @@ __metadata:
pathe: "npm:^1.1.1"
picocolors: "npm:^1.0.0"
std-env: "npm:^3.5.0"
strip-literal: "npm:^1.3.0"
strip-literal: "npm:^2.0.0"
tinybench: "npm:^2.5.1"
tinypool: "npm:^0.8.2"
vite: "npm:^5.0.0"
vite-node: "npm:1.2.2"
vite-node: "npm:1.3.0"
why-is-node-running: "npm:^2.2.2"
peerDependencies:
"@edge-runtime/vm": "*"
"@types/node": ^18.0.0 || >=20.0.0
"@vitest/browser": ^1.0.0
"@vitest/ui": ^1.0.0
"@vitest/browser": 1.3.0
"@vitest/ui": 1.3.0
happy-dom: "*"
jsdom: "*"
peerDependenciesMeta:
@ -5193,7 +5270,7 @@ __metadata:
optional: true
bin:
vitest: vitest.mjs
checksum: 10/1dc90823cde249a60e955f82e67cef76c363c78a9783c4dae94a080199fa3e48a56a5c9d1f40667b4542862e183d05c444af846059477b3a66c6b952d168b9cb
checksum: 10/4aabfb972f5f2c165f1f751a063a07a5be952bc684f93ab19ea617fad633fd3db7473ebc7c59c1afdb902334364710476785f01d1cc3cc071a48fcaaf4bac2fa
languageName: node
linkType: hard