mirror of https://github.com/vuejs/core.git
Merge remote-tracking branch 'upstream/minor'
This commit is contained in:
commit
116c3f37ae
|
@ -63,7 +63,7 @@ Hi! I'm really excited that you are interested in contributing to Vue.js. Before
|
|||
|
||||
You will need [Node.js](https://nodejs.org) **version 18.12+**, and [PNPM](https://pnpm.io) **version 8+**.
|
||||
|
||||
We also recommend installing [ni](https://github.com/antfu/ni) to help switching between repos using different package managers. `ni` also provides the handy `nr` command which running npm scripts easier.
|
||||
We also recommend installing [@antfu/ni](https://github.com/antfu/ni) to help switching between repos using different package managers. `ni` also provides the handy `nr` command which running npm scripts easier.
|
||||
|
||||
After cloning the repo, run:
|
||||
|
||||
|
@ -86,11 +86,11 @@ The project uses [simple-git-hooks](https://github.com/toplenboren/simple-git-ho
|
|||
|
||||
- Type check the entire project
|
||||
- Automatically format changed files using Prettier
|
||||
- Verify commit message format (logic in `scripts/verifyCommit.js`)
|
||||
- Verify commit message format (logic in `scripts/verify-commit.js`)
|
||||
|
||||
## Scripts
|
||||
|
||||
**The examples below will be using the `nr` command from the [ni](https://github.com/antfu/ni) package.** You can also use plain `npm run`, but you will need to pass all additional arguments after the command after an extra `--`. For example, `nr build runtime --all` is equivalent to `npm run build -- runtime --all`.
|
||||
**The examples below will be using the `nr` command from the [@antfu/ni](https://github.com/antfu/ni) package.** You can also use plain `npm run`, but you will need to pass all additional arguments after the command after an extra `--`. For example, `nr build runtime --all` is equivalent to `npm run build -- runtime --all`.
|
||||
|
||||
The `run-s` and `run-p` commands found in some scripts are from [npm-run-all](https://github.com/mysticatea/npm-run-all) for orchestrating multiple scripts. `run-s` means "run in sequence" while `run-p` means "run in parallel".
|
||||
|
||||
|
|
53
CHANGELOG.md
53
CHANGELOG.md
|
@ -1,3 +1,56 @@
|
|||
# [3.4.0-rc.2](https://github.com/vuejs/core/compare/v3.4.0-rc.1...v3.4.0-rc.2) (2023-12-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **deps:** update dependency @vue/repl to ^3.1.0 ([#9911](https://github.com/vuejs/core/issues/9911)) ([f96c413](https://github.com/vuejs/core/commit/f96c413e8ef2f24cacda5bb499492922f62c6e8b))
|
||||
* **types:** fix distribution of union types when unwrapping setup bindings ([#9909](https://github.com/vuejs/core/issues/9909)) ([0695c69](https://github.com/vuejs/core/commit/0695c69e0dfaf99882a623fe75b433c9618ea648)), closes [#9903](https://github.com/vuejs/core/issues/9903)
|
||||
* **warning:** ensure prod hydration warnings actually work ([b4ebe7a](https://github.com/vuejs/core/commit/b4ebe7ae8b904f28cdda33caf87bc05718d3a08a))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **compiler-sfc:** export aggregated error messages for compiler-core and compiler-dom ([25c726e](https://github.com/vuejs/core/commit/25c726eca81fc384b41fafbeba5e8dfcda1f030f))
|
||||
|
||||
|
||||
|
||||
# [3.4.0-rc.1](https://github.com/vuejs/core/compare/v3.4.0-beta.4...v3.4.0-rc.1) (2023-12-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler-core:** fix parsing `<script setup>` generics with > ([7aa3f25](https://github.com/vuejs/core/commit/7aa3f250f26d58ee2db82af907de8b9105e6e418)), closes [#9890](https://github.com/vuejs/core/issues/9890)
|
||||
* **compiler-sfc:** fix type resolution for shared type w/ different generic parameters ([a8d0b1b](https://github.com/vuejs/core/commit/a8d0b1b38b092ec2d10b32bedcee2eea33b77657)), closes [#9871](https://github.com/vuejs/core/issues/9871)
|
||||
* **ssr:** avoid hydration mismatch warning for classes with different order ([e585b0d](https://github.com/vuejs/core/commit/e585b0db43150c8b8b3d78f71e12efccc018a38d))
|
||||
|
||||
|
||||
|
||||
# [3.4.0-beta.4](https://github.com/vuejs/core/compare/v3.3.13...v3.4.0-beta.4) (2023-12-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compile-sfc:** fix identifier prefixing edge case caused by reused AST ([#9867](https://github.com/vuejs/core/issues/9867)) ([eb51b23](https://github.com/vuejs/core/commit/eb51b23d8512f15665d6f8bcdfd51582e0cd8ce8)), closes [#9853](https://github.com/vuejs/core/issues/9853) [#9863](https://github.com/vuejs/core/issues/9863)
|
||||
* **ssr:** fix hydration prop mismatch check for class on SVG elements ([e8448b0](https://github.com/vuejs/core/commit/e8448b018d9f837c08eace90cab404a27f68e31a))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **runtime-core:** throw real error when scheduler detects infinite loop during dev ([#7447](https://github.com/vuejs/core/issues/7447)) ([1d79b64](https://github.com/vuejs/core/commit/1d79b64ebce884d97136d71aa722347470b13e35)), closes [#7437](https://github.com/vuejs/core/issues/7437)
|
||||
|
||||
|
||||
|
||||
## [3.3.13](https://github.com/vuejs/core/compare/v3.3.12...v3.3.13) (2023-12-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **compiler-core:** fix v-on with modifiers on inline expression of undefined ([#9866](https://github.com/vuejs/core/issues/9866)) ([bae79dd](https://github.com/vuejs/core/commit/bae79ddf8564a2da4a5365cfeb8d811990f42335)), closes [#9865](https://github.com/vuejs/core/issues/9865)
|
||||
* **runtime-dom:** cache event handlers by key/modifiers ([#9851](https://github.com/vuejs/core/issues/9851)) ([04d2c05](https://github.com/vuejs/core/commit/04d2c05054c26b02fbc1d84839b0ed5cd36455b6)), closes [#9849](https://github.com/vuejs/core/issues/9849)
|
||||
* **types:** extract properties from extended collections ([#9854](https://github.com/vuejs/core/issues/9854)) ([24b1c1d](https://github.com/vuejs/core/commit/24b1c1dd57fd55d998aa231a147500e010b10219)), closes [#9852](https://github.com/vuejs/core/issues/9852)
|
||||
|
||||
|
||||
|
||||
# [3.4.0-beta.3](https://github.com/vuejs/core/compare/v3.3.12...v3.4.0-beta.3) (2023-12-16)
|
||||
|
||||
|
||||
|
|
22
package.json
22
package.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"version": "0.0.0-vapor",
|
||||
"packageManager": "pnpm@8.12.0",
|
||||
"packageManager": "pnpm@8.12.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "node scripts/dev.js vue vue-vapor",
|
||||
|
@ -60,8 +60,8 @@
|
|||
"node": ">=18.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/parser": "^7.23.5",
|
||||
"@babel/types": "^7.23.5",
|
||||
"@babel/parser": "^7.23.6",
|
||||
"@babel/types": "^7.23.6",
|
||||
"@codspeed/vitest-plugin": "^2.3.1",
|
||||
"@rollup/plugin-alias": "^5.0.1",
|
||||
"@rollup/plugin-commonjs": "^25.0.7",
|
||||
|
@ -71,16 +71,16 @@
|
|||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@types/hash-sum": "^1.0.2",
|
||||
"@types/minimist": "^1.2.5",
|
||||
"@types/node": "^20.10.4",
|
||||
"@types/node": "^20.10.5",
|
||||
"@types/semver": "^7.5.5",
|
||||
"@typescript-eslint/parser": "^6.13.2",
|
||||
"@vitest/coverage-istanbul": "^1.0.4",
|
||||
"@typescript-eslint/parser": "^6.15.0",
|
||||
"@vitest/coverage-istanbul": "^1.1.0",
|
||||
"@vue/consolidate": "0.17.3",
|
||||
"conventional-changelog-cli": "^4.1.0",
|
||||
"enquirer": "^2.4.1",
|
||||
"esbuild": "^0.19.5",
|
||||
"esbuild-plugin-polyfill-node": "^0.3.0",
|
||||
"eslint": "^8.55.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-define-config": "^1.24.1",
|
||||
"eslint-plugin-jest": "^27.6.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
|
@ -90,14 +90,14 @@
|
|||
"lodash": "^4.17.21",
|
||||
"magic-string": "^0.30.5",
|
||||
"markdown-table": "^3.0.3",
|
||||
"marked": "^11.0.1",
|
||||
"marked": "^11.1.0",
|
||||
"minimist": "^1.2.8",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"picocolors": "^1.0.0",
|
||||
"prettier": "^3.1.1",
|
||||
"pretty-bytes": "^6.1.1",
|
||||
"pug": "^3.0.2",
|
||||
"puppeteer": "~21.6.0",
|
||||
"puppeteer": "~21.6.1",
|
||||
"rimraf": "^5.0.5",
|
||||
"rollup": "^4.1.4",
|
||||
"rollup-plugin-dts": "^6.1.0",
|
||||
|
@ -109,9 +109,9 @@
|
|||
"terser": "^5.22.0",
|
||||
"todomvc-app-css": "^2.4.3",
|
||||
"tslib": "^2.6.2",
|
||||
"tsx": "^4.6.2",
|
||||
"tsx": "^4.7.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^5.0.5",
|
||||
"vitest": "^1.0.4"
|
||||
"vitest": "^1.1.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -838,9 +838,9 @@ exports[`compiler: parse > Errors > EOF_BEFORE_TAG_NAME > <template>< 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 13,
|
||||
"column": 12,
|
||||
"line": 1,
|
||||
"offset": 12,
|
||||
"offset": 11,
|
||||
},
|
||||
"source": "<template><",
|
||||
"start": {
|
||||
|
@ -908,9 +908,9 @@ exports[`compiler: parse > Errors > EOF_BEFORE_TAG_NAME > <template></ 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 14,
|
||||
"column": 13,
|
||||
"line": 1,
|
||||
"offset": 13,
|
||||
"offset": 12,
|
||||
},
|
||||
"source": "<template></",
|
||||
"start": {
|
||||
|
@ -962,9 +962,9 @@ exports[`compiler: parse > Errors > EOF_IN_CDATA > <template><svg><![CDATA[ 1`]
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 26,
|
||||
"column": 25,
|
||||
"line": 1,
|
||||
"offset": 25,
|
||||
"offset": 24,
|
||||
},
|
||||
"source": "<svg><![CDATA[",
|
||||
"start": {
|
||||
|
@ -983,9 +983,9 @@ exports[`compiler: parse > Errors > EOF_IN_CDATA > <template><svg><![CDATA[ 1`]
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 26,
|
||||
"column": 25,
|
||||
"line": 1,
|
||||
"offset": 25,
|
||||
"offset": 24,
|
||||
},
|
||||
"source": "<template><svg><![CDATA[",
|
||||
"start": {
|
||||
|
@ -1055,9 +1055,9 @@ exports[`compiler: parse > Errors > EOF_IN_CDATA > <template><svg><![CDATA[cdata
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 31,
|
||||
"column": 30,
|
||||
"line": 1,
|
||||
"offset": 30,
|
||||
"offset": 29,
|
||||
},
|
||||
"source": "<svg><![CDATA[cdata",
|
||||
"start": {
|
||||
|
@ -1076,9 +1076,9 @@ exports[`compiler: parse > Errors > EOF_IN_CDATA > <template><svg><![CDATA[cdata
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 31,
|
||||
"column": 30,
|
||||
"line": 1,
|
||||
"offset": 30,
|
||||
"offset": 29,
|
||||
},
|
||||
"source": "<template><svg><![CDATA[cdata",
|
||||
"start": {
|
||||
|
@ -1128,9 +1128,9 @@ exports[`compiler: parse > Errors > EOF_IN_COMMENT > <template><!-- 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 16,
|
||||
"column": 15,
|
||||
"line": 1,
|
||||
"offset": 15,
|
||||
"offset": 14,
|
||||
},
|
||||
"source": "<template><!--",
|
||||
"start": {
|
||||
|
@ -1198,9 +1198,9 @@ exports[`compiler: parse > Errors > EOF_IN_COMMENT > <template><!--comment 1`] =
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 23,
|
||||
"column": 22,
|
||||
"line": 1,
|
||||
"offset": 22,
|
||||
"offset": 21,
|
||||
},
|
||||
"source": "<template><!--comment",
|
||||
"start": {
|
||||
|
@ -1250,9 +1250,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <div></div 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 12,
|
||||
"column": 11,
|
||||
"line": 1,
|
||||
"offset": 11,
|
||||
"offset": 10,
|
||||
},
|
||||
"source": "<div></div",
|
||||
"start": {
|
||||
|
@ -1302,9 +1302,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 17,
|
||||
"column": 16,
|
||||
"line": 1,
|
||||
"offset": 16,
|
||||
"offset": 15,
|
||||
},
|
||||
"source": "<template><div ",
|
||||
"start": {
|
||||
|
@ -1354,9 +1354,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 16,
|
||||
"column": 15,
|
||||
"line": 1,
|
||||
"offset": 15,
|
||||
"offset": 14,
|
||||
},
|
||||
"source": "<template><div",
|
||||
"start": {
|
||||
|
@ -1406,9 +1406,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 20,
|
||||
"column": 19,
|
||||
"line": 1,
|
||||
"offset": 19,
|
||||
"offset": 18,
|
||||
},
|
||||
"source": "<template><div id ",
|
||||
"start": {
|
||||
|
@ -1458,9 +1458,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id = 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 21,
|
||||
"column": 20,
|
||||
"line": 1,
|
||||
"offset": 20,
|
||||
"offset": 19,
|
||||
},
|
||||
"source": "<template><div id =",
|
||||
"start": {
|
||||
|
@ -1510,9 +1510,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 19,
|
||||
"column": 18,
|
||||
"line": 1,
|
||||
"offset": 18,
|
||||
"offset": 17,
|
||||
},
|
||||
"source": "<template><div id",
|
||||
"start": {
|
||||
|
@ -1562,9 +1562,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id="abc 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 24,
|
||||
"column": 23,
|
||||
"line": 1,
|
||||
"offset": 23,
|
||||
"offset": 22,
|
||||
},
|
||||
"source": "<template><div id="abc",
|
||||
"start": {
|
||||
|
@ -1614,9 +1614,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id="abc" 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 25,
|
||||
"column": 24,
|
||||
"line": 1,
|
||||
"offset": 24,
|
||||
"offset": 23,
|
||||
},
|
||||
"source": "<template><div id="abc"",
|
||||
"start": {
|
||||
|
@ -1684,9 +1684,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id="abc"/ 1`] =
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 26,
|
||||
"column": 25,
|
||||
"line": 1,
|
||||
"offset": 25,
|
||||
"offset": 24,
|
||||
},
|
||||
"source": "<template><div id="abc"/",
|
||||
"start": {
|
||||
|
@ -1736,9 +1736,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id='abc 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 24,
|
||||
"column": 23,
|
||||
"line": 1,
|
||||
"offset": 23,
|
||||
"offset": 22,
|
||||
},
|
||||
"source": "<template><div id='abc",
|
||||
"start": {
|
||||
|
@ -1788,9 +1788,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id='abc' 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 25,
|
||||
"column": 24,
|
||||
"line": 1,
|
||||
"offset": 24,
|
||||
"offset": 23,
|
||||
},
|
||||
"source": "<template><div id='abc'",
|
||||
"start": {
|
||||
|
@ -1858,9 +1858,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id='abc'/ 1`] =
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 26,
|
||||
"column": 25,
|
||||
"line": 1,
|
||||
"offset": 25,
|
||||
"offset": 24,
|
||||
},
|
||||
"source": "<template><div id='abc'/",
|
||||
"start": {
|
||||
|
@ -1928,9 +1928,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id=abc / 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 25,
|
||||
"column": 24,
|
||||
"line": 1,
|
||||
"offset": 24,
|
||||
"offset": 23,
|
||||
},
|
||||
"source": "<template><div id=abc /",
|
||||
"start": {
|
||||
|
@ -1980,9 +1980,9 @@ exports[`compiler: parse > Errors > EOF_IN_TAG > <template><div id=abc 1`] = `
|
|||
"codegenNode": undefined,
|
||||
"loc": {
|
||||
"end": {
|
||||
"column": 23,
|
||||
"column": 22,
|
||||
"line": 1,
|
||||
"offset": 22,
|
||||
"offset": 21,
|
||||
},
|
||||
"source": "<template><div id=abc",
|
||||
"start": {
|
||||
|
|
|
@ -984,6 +984,89 @@ describe('compiler: parse', () => {
|
|||
})
|
||||
})
|
||||
|
||||
test('attribute value with >', () => {
|
||||
const ast = baseParse(
|
||||
'<script setup lang="ts" generic="T extends Record<string,string>"></script>',
|
||||
{ parseMode: 'sfc' }
|
||||
)
|
||||
const element = ast.children[0] as ElementNode
|
||||
expect(element).toMatchObject({
|
||||
type: NodeTypes.ELEMENT,
|
||||
ns: Namespaces.HTML,
|
||||
tag: 'script',
|
||||
tagType: ElementTypes.ELEMENT,
|
||||
codegenNode: undefined,
|
||||
children: [],
|
||||
innerLoc: {
|
||||
start: { column: 67, line: 1, offset: 66 },
|
||||
end: { column: 67, line: 1, offset: 66 }
|
||||
},
|
||||
props: [
|
||||
{
|
||||
loc: {
|
||||
source: 'setup',
|
||||
end: { column: 14, line: 1, offset: 13 },
|
||||
start: { column: 9, line: 1, offset: 8 }
|
||||
},
|
||||
name: 'setup',
|
||||
nameLoc: {
|
||||
source: 'setup',
|
||||
end: { column: 14, line: 1, offset: 13 },
|
||||
start: { column: 9, line: 1, offset: 8 }
|
||||
},
|
||||
type: NodeTypes.ATTRIBUTE,
|
||||
value: undefined
|
||||
},
|
||||
{
|
||||
loc: {
|
||||
source: 'lang="ts"',
|
||||
end: { column: 24, line: 1, offset: 23 },
|
||||
start: { column: 15, line: 1, offset: 14 }
|
||||
},
|
||||
name: 'lang',
|
||||
nameLoc: {
|
||||
source: 'lang',
|
||||
end: { column: 19, line: 1, offset: 18 },
|
||||
start: { column: 15, line: 1, offset: 14 }
|
||||
},
|
||||
type: NodeTypes.ATTRIBUTE,
|
||||
value: {
|
||||
content: 'ts',
|
||||
loc: {
|
||||
source: '"ts"',
|
||||
end: { column: 24, line: 1, offset: 23 },
|
||||
start: { column: 20, line: 1, offset: 19 }
|
||||
},
|
||||
type: NodeTypes.TEXT
|
||||
}
|
||||
},
|
||||
{
|
||||
loc: {
|
||||
source: 'generic="T extends Record<string,string>"',
|
||||
end: { column: 66, line: 1, offset: 65 },
|
||||
start: { column: 25, line: 1, offset: 24 }
|
||||
},
|
||||
name: 'generic',
|
||||
nameLoc: {
|
||||
source: 'generic',
|
||||
end: { column: 32, line: 1, offset: 31 },
|
||||
start: { column: 25, line: 1, offset: 24 }
|
||||
},
|
||||
type: NodeTypes.ATTRIBUTE,
|
||||
value: {
|
||||
content: 'T extends Record<string,string>',
|
||||
loc: {
|
||||
source: '"T extends Record<string,string>"',
|
||||
end: { column: 66, line: 1, offset: 65 },
|
||||
start: { column: 33, line: 1, offset: 32 }
|
||||
},
|
||||
type: NodeTypes.TEXT
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
})
|
||||
|
||||
test('multiple attributes', () => {
|
||||
const ast = baseParse('<div id=a class="c" inert style=\'\'></div>')
|
||||
const element = ast.children[0] as ElementNode
|
||||
|
|
|
@ -95,6 +95,10 @@ describe('isMemberExpression', () => {
|
|||
expect(fn(`123[a]`)).toBe(true)
|
||||
expect(fn(`foo() as string`)).toBe(false)
|
||||
expect(fn(`a + b as string`)).toBe(false)
|
||||
// #9865
|
||||
expect(fn('""')).toBe(false)
|
||||
expect(fn('undefined')).toBe(false)
|
||||
expect(fn('null')).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/compiler-core",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/compiler-core",
|
||||
"main": "index.js",
|
||||
"module": "dist/compiler-core.esm-bundler.js",
|
||||
|
@ -32,13 +32,13 @@
|
|||
},
|
||||
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/compiler-core#readme",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.23.5",
|
||||
"@babel/parser": "^7.23.6",
|
||||
"@vue/shared": "workspace:*",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/types": "^7.23.5"
|
||||
"@babel/types": "^7.23.6"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,14 +55,24 @@ export function walkIdentifiers(
|
|||
// mark property in destructure pattern
|
||||
;(node as any).inPattern = true
|
||||
} else if (isFunctionType(node)) {
|
||||
// walk function expressions and add its arguments to known identifiers
|
||||
// so that we don't prefix them
|
||||
walkFunctionParams(node, id => markScopeIdentifier(node, id, knownIds))
|
||||
if (node.scopeIds) {
|
||||
node.scopeIds.forEach(id => markKnownIds(id, knownIds))
|
||||
} else {
|
||||
// walk function expressions and add its arguments to known identifiers
|
||||
// so that we don't prefix them
|
||||
walkFunctionParams(node, id =>
|
||||
markScopeIdentifier(node, id, knownIds)
|
||||
)
|
||||
}
|
||||
} else if (node.type === 'BlockStatement') {
|
||||
// #3445 record block-level local variables
|
||||
walkBlockDeclarations(node, id =>
|
||||
markScopeIdentifier(node, id, knownIds)
|
||||
)
|
||||
if (node.scopeIds) {
|
||||
node.scopeIds.forEach(id => markKnownIds(id, knownIds))
|
||||
} else {
|
||||
// #3445 record block-level local variables
|
||||
walkBlockDeclarations(node, id =>
|
||||
markScopeIdentifier(node, id, knownIds)
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
leave(node: Node & { scopeIds?: Set<string> }, parent: Node | undefined) {
|
||||
|
@ -227,6 +237,14 @@ export function extractIdentifiers(
|
|||
return nodes
|
||||
}
|
||||
|
||||
function markKnownIds(name: string, knownIds: Record<string, number>) {
|
||||
if (name in knownIds) {
|
||||
knownIds[name]++
|
||||
} else {
|
||||
knownIds[name] = 1
|
||||
}
|
||||
}
|
||||
|
||||
function markScopeIdentifier(
|
||||
node: Node & { scopeIds?: Set<string> },
|
||||
child: Identifier,
|
||||
|
@ -236,11 +254,7 @@ function markScopeIdentifier(
|
|||
if (node.scopeIds && node.scopeIds.has(name)) {
|
||||
return
|
||||
}
|
||||
if (name in knownIds) {
|
||||
knownIds[name]++
|
||||
} else {
|
||||
knownIds[name] = 1
|
||||
}
|
||||
markKnownIds(name, knownIds)
|
||||
;(node.scopeIds || (node.scopeIds = new Set())).add(name)
|
||||
}
|
||||
|
||||
|
|
|
@ -145,13 +145,6 @@ const tokenizer = new Tokenizer(stack, {
|
|||
loc: getLoc(start - 1, end),
|
||||
codegenNode: undefined
|
||||
}
|
||||
if (tokenizer.inSFCRoot) {
|
||||
// in SFC mode, generate locations for root-level tags' inner content.
|
||||
currentOpenTag.innerLoc = getLoc(
|
||||
end + fastForward(end, CharCodes.Gt) + 1,
|
||||
end
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
onopentagend(end) {
|
||||
|
@ -572,6 +565,10 @@ function getSlice(start: number, end: number) {
|
|||
}
|
||||
|
||||
function endOpenTag(end: number) {
|
||||
if (tokenizer.inSFCRoot) {
|
||||
// in SFC mode, generate locations for root-level tags' inner content.
|
||||
currentOpenTag!.innerLoc = getLoc(end + 1, end + 1)
|
||||
}
|
||||
addNode(currentOpenTag!)
|
||||
const { tag, ns } = currentOpenTag!
|
||||
if (ns === Namespaces.HTML && currentOptions.isPreTag(tag)) {
|
||||
|
@ -616,7 +613,7 @@ function onCloseTag(el: ElementNode, end: number, isImplied = false) {
|
|||
// implied close, end should be backtracked to close
|
||||
setLocEnd(el.loc, backTrack(end, CharCodes.Lt))
|
||||
} else {
|
||||
setLocEnd(el.loc, end + fastForward(end, CharCodes.Gt) + 1)
|
||||
setLocEnd(el.loc, end + 1)
|
||||
}
|
||||
|
||||
if (tokenizer.inSFCRoot) {
|
||||
|
@ -738,17 +735,6 @@ function onCloseTag(el: ElementNode, end: number, isImplied = false) {
|
|||
}
|
||||
}
|
||||
|
||||
function fastForward(start: number, c: number) {
|
||||
let offset = 0
|
||||
while (
|
||||
currentInput.charCodeAt(start + offset) !== CharCodes.Gt &&
|
||||
start + offset < currentInput.length
|
||||
) {
|
||||
offset++
|
||||
}
|
||||
return offset
|
||||
}
|
||||
|
||||
function backTrack(index: number, c: number) {
|
||||
let i = index
|
||||
while (currentInput.charCodeAt(i) !== c && i >= 0) i--
|
||||
|
|
|
@ -169,7 +169,7 @@ export const isMemberExpressionNode = __BROWSER__
|
|||
return (
|
||||
ret.type === 'MemberExpression' ||
|
||||
ret.type === 'OptionalMemberExpression' ||
|
||||
ret.type === 'Identifier'
|
||||
(ret.type === 'Identifier' && ret.name !== 'undefined')
|
||||
)
|
||||
} catch (e) {
|
||||
return false
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/compiler-dom",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/compiler-dom",
|
||||
"main": "index.js",
|
||||
"module": "dist/compiler-dom.esm-bundler.js",
|
||||
|
|
|
@ -1383,6 +1383,21 @@ return { D, C, B, Foo }
|
|||
})"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> > with TypeScript > with generic attribute 1`] = `
|
||||
"import { defineComponent as _defineComponent } from 'vue'
|
||||
type Bar = {}
|
||||
|
||||
export default /*#__PURE__*/_defineComponent({
|
||||
setup(__props, { expose: __expose }) {
|
||||
__expose();
|
||||
|
||||
|
||||
return { }
|
||||
}
|
||||
|
||||
})"
|
||||
`;
|
||||
|
||||
exports[`SFC genDefaultAs > <script setup> only 1`] = `
|
||||
"const a = 1
|
||||
|
||||
|
|
|
@ -938,6 +938,14 @@ describe('SFC compile <script setup>', () => {
|
|||
expect(content).toMatch(`return { get Baz() { return Baz } }`)
|
||||
assertCode(content)
|
||||
})
|
||||
|
||||
test('with generic attribute', () => {
|
||||
const { content } = compile(`
|
||||
<script setup lang="ts" generic="T extends Record<string,string>">
|
||||
type Bar = {}
|
||||
</script>`)
|
||||
assertCode(content)
|
||||
})
|
||||
})
|
||||
|
||||
describe('async/await detection', () => {
|
||||
|
|
|
@ -939,6 +939,34 @@ describe('resolveType', () => {
|
|||
manufacturer: ['Object']
|
||||
})
|
||||
})
|
||||
|
||||
// #9871
|
||||
test('shared generics with different args', () => {
|
||||
const files = {
|
||||
'/foo.ts': `export interface Foo<T> { value: T }`
|
||||
}
|
||||
const { props } = resolve(
|
||||
`import type { Foo } from './foo'
|
||||
defineProps<Foo<string>>()`,
|
||||
files,
|
||||
undefined,
|
||||
`/One.vue`
|
||||
)
|
||||
expect(props).toStrictEqual({
|
||||
value: ['String']
|
||||
})
|
||||
const { props: props2 } = resolve(
|
||||
`import type { Foo } from './foo'
|
||||
defineProps<Foo<number>>()`,
|
||||
files,
|
||||
undefined,
|
||||
`/Two.vue`,
|
||||
false /* do not invalidate cache */
|
||||
)
|
||||
expect(props2).toStrictEqual({
|
||||
value: ['Number']
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('errors', () => {
|
||||
|
@ -1012,7 +1040,8 @@ function resolve(
|
|||
code: string,
|
||||
files: Record<string, string> = {},
|
||||
options?: Partial<SFCScriptCompileOptions>,
|
||||
sourceFileName: string = '/Test.vue'
|
||||
sourceFileName: string = '/Test.vue',
|
||||
invalidateCache = true
|
||||
) {
|
||||
const { descriptor } = parse(`<script setup lang="ts">\n${code}\n</script>`, {
|
||||
filename: sourceFileName
|
||||
|
@ -1030,8 +1059,10 @@ function resolve(
|
|||
...options
|
||||
})
|
||||
|
||||
for (const file in files) {
|
||||
invalidateTypeCache(file)
|
||||
if (invalidateCache) {
|
||||
for (const file in files) {
|
||||
invalidateTypeCache(file)
|
||||
}
|
||||
}
|
||||
|
||||
// ctx.userImports is collected when calling compileScript(), but we are
|
||||
|
|
|
@ -4,6 +4,7 @@ import {
|
|||
SFCTemplateCompileOptions
|
||||
} from '../src/compileTemplate'
|
||||
import { parse, SFCTemplateBlock } from '../src/parse'
|
||||
import { compileScript } from '../src'
|
||||
|
||||
function compile(opts: Omit<SFCTemplateCompileOptions, 'id'>) {
|
||||
return compileTemplate({
|
||||
|
@ -397,6 +398,35 @@ test('dynamic v-on + static v-on should merged', () => {
|
|||
expect(result.code).toMatchSnapshot()
|
||||
})
|
||||
|
||||
// #9853 regression found in Nuxt tests
|
||||
// walkIdentifiers can get called multiple times on the same node
|
||||
// due to #9729 calling it during SFC template usage check.
|
||||
// conditions needed:
|
||||
// 1. `<script setup lang="ts">`
|
||||
// 2. Has import
|
||||
// 3. inlineTemplate: false
|
||||
// 4. AST being reused
|
||||
test('prefixing edge case for reused AST', () => {
|
||||
const src = `
|
||||
<script setup lang="ts">
|
||||
import { Foo } from './foo'
|
||||
</script>
|
||||
<template>
|
||||
{{ list.map((t, index) => ({ t: t })) }}
|
||||
</template>
|
||||
`
|
||||
const { descriptor } = parse(src)
|
||||
// compileScript triggers importUsageCheck
|
||||
compileScript(descriptor, { id: 'xxx' })
|
||||
const { code } = compileTemplate({
|
||||
id: 'xxx',
|
||||
filename: 'test.vue',
|
||||
ast: descriptor.template!.ast,
|
||||
source: descriptor.template!.content
|
||||
})
|
||||
expect(code).not.toMatch(`_ctx.t`)
|
||||
})
|
||||
|
||||
interface Pos {
|
||||
line: number
|
||||
column: number
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/compiler-sfc",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/compiler-sfc",
|
||||
"main": "dist/compiler-sfc.cjs.js",
|
||||
"module": "dist/compiler-sfc.esm-browser.js",
|
||||
|
@ -32,7 +32,7 @@
|
|||
},
|
||||
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/compiler-sfc#readme",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.23.5",
|
||||
"@babel/parser": "^7.23.6",
|
||||
"@vue/compiler-core": "workspace:*",
|
||||
"@vue/compiler-dom": "workspace:*",
|
||||
"@vue/compiler-ssr": "workspace:*",
|
||||
|
@ -43,7 +43,7 @@
|
|||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/types": "^7.23.5",
|
||||
"@babel/types": "^7.23.6",
|
||||
"@vue/consolidate": "^0.17.3",
|
||||
"hash-sum": "^2.0.0",
|
||||
"lru-cache": "^10.1.0",
|
||||
|
|
|
@ -834,6 +834,7 @@ export function compileScript(
|
|||
// inline it right here
|
||||
const { code, ast, preamble, tips, errors } = compileTemplate({
|
||||
filename,
|
||||
ast: sfc.template.ast,
|
||||
source: sfc.template.content,
|
||||
inMap: sfc.template.map,
|
||||
...options.templateOptions,
|
||||
|
|
|
@ -12,6 +12,17 @@ import { SFCParseResult, parseCache as _parseCache } from './parse'
|
|||
// #9521 export parseCache as a simple map to avoid exposing LRU types
|
||||
export const parseCache = _parseCache as Map<string, SFCParseResult>
|
||||
|
||||
// error messages
|
||||
import {
|
||||
errorMessages as coreErrorMessages,
|
||||
DOMErrorMessages
|
||||
} from '@vue/compiler-dom'
|
||||
|
||||
export const errorMessages = {
|
||||
...coreErrorMessages,
|
||||
...DOMErrorMessages
|
||||
}
|
||||
|
||||
// Utilities
|
||||
export { parse as babelParse } from '@babel/parser'
|
||||
import MagicString from 'magic-string'
|
||||
|
|
|
@ -115,7 +115,7 @@ export class TypeScope {
|
|||
public types: Record<string, ScopeTypeNode> = Object.create(null),
|
||||
public declares: Record<string, ScopeTypeNode> = Object.create(null)
|
||||
) {}
|
||||
|
||||
isGenericScope = false
|
||||
resolvedImportSources: Record<string, string> = Object.create(null)
|
||||
exportedTypes: Record<string, ScopeTypeNode> = Object.create(null)
|
||||
exportedDeclares: Record<string, ScopeTypeNode> = Object.create(null)
|
||||
|
@ -146,15 +146,17 @@ export function resolveTypeElements(
|
|||
scope?: TypeScope,
|
||||
typeParameters?: Record<string, Node>
|
||||
): ResolvedElements {
|
||||
if (node._resolvedElements) {
|
||||
const canCache = !typeParameters
|
||||
if (canCache && node._resolvedElements) {
|
||||
return node._resolvedElements
|
||||
}
|
||||
return (node._resolvedElements = innerResolveTypeElements(
|
||||
const resolved = innerResolveTypeElements(
|
||||
ctx,
|
||||
node,
|
||||
node._ownerScope || scope || ctxToScope(ctx),
|
||||
typeParameters
|
||||
))
|
||||
)
|
||||
return canCache ? (node._resolvedElements = resolved) : resolved
|
||||
}
|
||||
|
||||
function innerResolveTypeElements(
|
||||
|
@ -215,17 +217,18 @@ function innerResolveTypeElements(
|
|||
}
|
||||
const resolved = resolveTypeReference(ctx, node, scope)
|
||||
if (resolved) {
|
||||
const typeParams: Record<string, Node> = Object.create(null)
|
||||
let typeParams: Record<string, Node> | undefined
|
||||
if (
|
||||
(resolved.type === 'TSTypeAliasDeclaration' ||
|
||||
resolved.type === 'TSInterfaceDeclaration') &&
|
||||
resolved.typeParameters &&
|
||||
node.typeParameters
|
||||
) {
|
||||
typeParams = Object.create(null)
|
||||
resolved.typeParameters.params.forEach((p, i) => {
|
||||
let param = typeParameters && typeParameters[p.name]
|
||||
if (!param) param = node.typeParameters!.params[i]
|
||||
typeParams[p.name] = param
|
||||
typeParams![p.name] = param
|
||||
})
|
||||
}
|
||||
return resolveTypeElements(
|
||||
|
@ -322,6 +325,7 @@ function typeElementsToMap(
|
|||
// capture generic parameters on node's scope
|
||||
if (typeParameters) {
|
||||
scope = createChildScope(scope)
|
||||
scope.isGenericScope = true
|
||||
Object.assign(scope.types, typeParameters)
|
||||
}
|
||||
;(e as MaybeWithScope)._ownerScope = scope
|
||||
|
@ -694,16 +698,18 @@ function resolveTypeReference(
|
|||
name?: string,
|
||||
onlyExported = false
|
||||
): ScopeTypeNode | undefined {
|
||||
if (node._resolvedReference) {
|
||||
const canCache = !scope?.isGenericScope
|
||||
if (canCache && node._resolvedReference) {
|
||||
return node._resolvedReference
|
||||
}
|
||||
return (node._resolvedReference = innerResolveTypeReference(
|
||||
const resolved = innerResolveTypeReference(
|
||||
ctx,
|
||||
scope || ctxToScope(ctx),
|
||||
name || getReferenceName(node),
|
||||
node,
|
||||
onlyExported
|
||||
))
|
||||
)
|
||||
return canCache ? (node._resolvedReference = resolved) : resolved
|
||||
}
|
||||
|
||||
function innerResolveTypeReference(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/compiler-ssr",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/compiler-ssr",
|
||||
"main": "dist/compiler-ssr.cjs.js",
|
||||
"types": "dist/compiler-ssr.d.ts",
|
||||
|
|
|
@ -77,6 +77,18 @@ describe('should unwrap Map correctly', () => {
|
|||
expectType<number>(wm2.get({})!.wrap)
|
||||
})
|
||||
|
||||
describe('should unwrap extended Map correctly', () => {
|
||||
class ExtendendMap1 extends Map<string, { wrap: Ref<number> }> {
|
||||
foo = ref('foo')
|
||||
bar = 1
|
||||
}
|
||||
|
||||
const emap1 = reactive(new ExtendendMap1())
|
||||
expectType<string>(emap1.foo)
|
||||
expectType<number>(emap1.bar)
|
||||
expectType<number>(emap1.get('a')!.wrap)
|
||||
})
|
||||
|
||||
describe('should unwrap Set correctly', () => {
|
||||
const set = reactive(new Set<Ref<number>>())
|
||||
expectType<Set<Ref<number>>>(set)
|
||||
|
@ -90,3 +102,14 @@ describe('should unwrap Set correctly', () => {
|
|||
const ws2 = reactive(new WeakSet<{ wrap: Ref<number> }>())
|
||||
expectType<WeakSet<{ wrap: number }>>(ws2)
|
||||
})
|
||||
|
||||
describe('should unwrap extended Set correctly', () => {
|
||||
class ExtendendSet1 extends Set<{ wrap: Ref<number> }> {
|
||||
foo = ref('foo')
|
||||
bar = 1
|
||||
}
|
||||
|
||||
const eset1 = reactive(new ExtendendSet1())
|
||||
expectType<string>(eset1.foo)
|
||||
expectType<number>(eset1.bar)
|
||||
})
|
||||
|
|
|
@ -244,13 +244,19 @@ expectType<typeof r1>(p1)
|
|||
// proxyRefs: `ShallowUnwrapRef`
|
||||
const r2 = {
|
||||
a: ref(1),
|
||||
c: computed(() => 1),
|
||||
u: undefined,
|
||||
obj: {
|
||||
k: ref('foo')
|
||||
}
|
||||
},
|
||||
union: Math.random() > 0 - 5 ? ref({ name: 'yo' }) : null
|
||||
}
|
||||
const p2 = proxyRefs(r2)
|
||||
expectType<number>(p2.a)
|
||||
expectType<number>(p2.c)
|
||||
expectType<undefined>(p2.u)
|
||||
expectType<Ref<string>>(p2.obj.k)
|
||||
expectType<{ name: string } | null>(p2.union)
|
||||
|
||||
// toRef and toRefs
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/reactivity",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/reactivity",
|
||||
"main": "index.js",
|
||||
"module": "dist/reactivity.esm-bundler.js",
|
||||
|
|
|
@ -490,15 +490,11 @@ type BaseTypes = string | number | boolean
|
|||
export interface RefUnwrapBailTypes {}
|
||||
|
||||
export type ShallowUnwrapRef<T> = {
|
||||
[K in keyof T]: T[K] extends Ref<infer V>
|
||||
? V // if `V` is `unknown` that means it does not extend `Ref` and is undefined
|
||||
: T[K] extends Ref<infer V> | undefined
|
||||
? unknown extends V
|
||||
? undefined
|
||||
: V | undefined
|
||||
: T[K]
|
||||
[K in keyof T]: DistrubuteRef<T[K]>
|
||||
}
|
||||
|
||||
type DistrubuteRef<T> = T extends Ref<infer V> ? V : T
|
||||
|
||||
export type UnwrapRef<T> = T extends ShallowRef<infer V>
|
||||
? V
|
||||
: T extends Ref<infer V>
|
||||
|
@ -513,13 +509,14 @@ export type UnwrapRefSimple<T> = T extends
|
|||
| { [RawSymbol]?: true }
|
||||
? T
|
||||
: T extends Map<infer K, infer V>
|
||||
? Map<K, UnwrapRefSimple<V>>
|
||||
? Map<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Map<any, any>>>
|
||||
: T extends WeakMap<infer K, infer V>
|
||||
? WeakMap<K, UnwrapRefSimple<V>>
|
||||
? WeakMap<K, UnwrapRefSimple<V>> &
|
||||
UnwrapRef<Omit<T, keyof WeakMap<any, any>>>
|
||||
: T extends Set<infer V>
|
||||
? Set<UnwrapRefSimple<V>>
|
||||
? Set<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Set<any>>>
|
||||
: T extends WeakSet<infer V>
|
||||
? WeakSet<UnwrapRefSimple<V>>
|
||||
? WeakSet<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakSet<any>>>
|
||||
: T extends ReadonlyArray<any>
|
||||
? { [K in keyof T]: UnwrapRefSimple<T[K]> }
|
||||
: T extends object & { [ShallowReactiveMarker]?: never }
|
||||
|
|
|
@ -1406,6 +1406,14 @@ describe('SSR hydration', () => {
|
|||
mountWithHydration(`<div class="foo bar"></div>`, () =>
|
||||
h('div', { class: 'foo bar' })
|
||||
)
|
||||
// SVG classes
|
||||
mountWithHydration(`<svg class="foo bar"></svg>`, () =>
|
||||
h('svg', { class: 'foo bar' })
|
||||
)
|
||||
// class with different order
|
||||
mountWithHydration(`<div class="foo bar"></div>`, () =>
|
||||
h('div', { class: 'bar foo' })
|
||||
)
|
||||
expect(`Hydration class mismatch`).not.toHaveBeenWarned()
|
||||
mountWithHydration(`<div class="foo bar"></div>`, () =>
|
||||
h('div', { class: 'foo' })
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/runtime-core",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/runtime-core",
|
||||
"main": "index.js",
|
||||
"module": "dist/runtime-core.esm-bundler.js",
|
||||
|
|
|
@ -21,7 +21,7 @@ enum DevtoolsHooks {
|
|||
PERFORMANCE_END = 'perf:end'
|
||||
}
|
||||
|
||||
interface DevtoolsHook {
|
||||
export interface DevtoolsHook {
|
||||
enabled?: boolean
|
||||
emit: (event: string, ...payload: any[]) => void
|
||||
on: (event: string, handler: Function) => void
|
||||
|
|
|
@ -55,7 +55,7 @@ export const ErrorTypeStrings: Record<LifecycleHooks | ErrorCodes, string> = {
|
|||
[ErrorCodes.ASYNC_COMPONENT_LOADER]: 'async component loader',
|
||||
[ErrorCodes.SCHEDULER]:
|
||||
'scheduler flush. This is likely a Vue internals bug. ' +
|
||||
'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
|
||||
'Please open an issue at https://github.com/vuejs/core .'
|
||||
}
|
||||
|
||||
export type ErrorTypes = LifecycleHooks | ErrorCodes
|
||||
|
|
|
@ -718,9 +718,11 @@ function propHasMismatch(el: Element, key: string, clientValue: any): boolean {
|
|||
let actual: any
|
||||
let expected: any
|
||||
if (key === 'class') {
|
||||
actual = el.className
|
||||
expected = normalizeClass(clientValue)
|
||||
if (actual !== expected) {
|
||||
// classes might be in different order, but that doesn't affect cascade
|
||||
// so we just need to check if the class lists contain the same classes.
|
||||
actual = toClassSet(el.getAttribute('class') || '')
|
||||
expected = toClassSet(normalizeClass(clientValue))
|
||||
if (!isSetEqual(actual, expected)) {
|
||||
mismatchType = mismatchKey = `class`
|
||||
}
|
||||
} else if (key === 'style') {
|
||||
|
@ -765,3 +767,19 @@ function propHasMismatch(el: Element, key: string, clientValue: any): boolean {
|
|||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function toClassSet(str: string): Set<string> {
|
||||
return new Set(str.trim().split(/\s+/))
|
||||
}
|
||||
|
||||
function isSetEqual(a: Set<string>, b: Set<string>): boolean {
|
||||
if (a.size !== b.size) {
|
||||
return false
|
||||
}
|
||||
for (const s of a) {
|
||||
if (!b.has(s)) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -116,7 +116,9 @@ export { useSSRContext, ssrContextKey } from './helpers/useSsrContext'
|
|||
|
||||
export { createRenderer, createHydrationRenderer } from './renderer'
|
||||
export { queuePostFlushCb } from './scheduler'
|
||||
export { warn } from './warning'
|
||||
import { warn as _warn } from './warning'
|
||||
export const warn = (__DEV__ ? _warn : NOOP) as typeof _warn
|
||||
|
||||
/** @internal */
|
||||
export { assertNumber } from './warning'
|
||||
export {
|
||||
|
@ -146,11 +148,22 @@ import { ErrorTypeStrings as _ErrorTypeStrings } from './errorHandling'
|
|||
* @internal
|
||||
*/
|
||||
export const ErrorTypeStrings = (
|
||||
__ESM_BUNDLER__ || __DEV__ ? _ErrorTypeStrings : null
|
||||
__ESM_BUNDLER__ || __NODE_JS__ || __DEV__ ? _ErrorTypeStrings : null
|
||||
) as typeof _ErrorTypeStrings
|
||||
|
||||
// For devtools
|
||||
export { devtools, setDevtoolsHook } from './devtools'
|
||||
import {
|
||||
devtools as _devtools,
|
||||
setDevtoolsHook as _setDevtoolsHook,
|
||||
DevtoolsHook
|
||||
} from './devtools'
|
||||
|
||||
export const devtools = (
|
||||
__DEV__ || __FEATURE_PROD_DEVTOOLS__ ? _devtools : undefined
|
||||
) as DevtoolsHook
|
||||
export const setDevtoolsHook = (
|
||||
__DEV__ || __FEATURE_PROD_DEVTOOLS__ ? _setDevtoolsHook : NOOP
|
||||
) as typeof _setDevtoolsHook
|
||||
|
||||
// Types -------------------------------------------------------------------------
|
||||
|
||||
|
@ -378,6 +391,7 @@ import {
|
|||
softAssertCompatEnabled
|
||||
} from './compat/compatConfig'
|
||||
import { resolveFilter as _resolveFilter } from './helpers/resolveAssets'
|
||||
import { NOOP } from '@vue/shared'
|
||||
|
||||
/**
|
||||
* @internal only exposed in compat builds
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { ErrorCodes, callWithErrorHandling } from './errorHandling'
|
||||
import { ErrorCodes, callWithErrorHandling, handleError } from './errorHandling'
|
||||
import { Awaited, isArray, NOOP } from '@vue/shared'
|
||||
import { ComponentInternalInstance, getComponentName } from './component'
|
||||
import { warn } from './warning'
|
||||
|
||||
export interface SchedulerJob extends Function {
|
||||
id?: number
|
||||
|
@ -271,14 +270,16 @@ function checkRecursiveUpdates(seen: CountMap, fn: SchedulerJob) {
|
|||
if (count > RECURSION_LIMIT) {
|
||||
const instance = fn.ownerInstance
|
||||
const componentName = instance && getComponentName(instance.type)
|
||||
warn(
|
||||
handleError(
|
||||
`Maximum recursive updates exceeded${
|
||||
componentName ? ` in component <${componentName}>` : ``
|
||||
}. ` +
|
||||
`This means you have a reactive effect that is mutating its own ` +
|
||||
`dependencies and thus recursively triggering itself. Possible sources ` +
|
||||
`include component template, render function, updated hook or ` +
|
||||
`watcher source function.`
|
||||
`watcher source function.`,
|
||||
null,
|
||||
ErrorCodes.APP_ERROR_HANDLER
|
||||
)
|
||||
return true
|
||||
} else {
|
||||
|
|
|
@ -30,8 +30,6 @@ export function popWarningContext() {
|
|||
}
|
||||
|
||||
export function warn(msg: string, ...args: any[]) {
|
||||
if (!__DEV__) return
|
||||
|
||||
// avoid props formatting or warn handler tracking deps that might be mutated
|
||||
// during patch, leading to infinite recursion.
|
||||
pauseTracking()
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import { type SpyInstance } from 'vitest'
|
||||
import { type MockInstance } from 'vitest'
|
||||
import { render, h } from '@vue/runtime-dom'
|
||||
|
||||
describe('customized built-in elements support', () => {
|
||||
let createElement: SpyInstance
|
||||
let createElement: MockInstance
|
||||
afterEach(() => {
|
||||
createElement.mockRestore()
|
||||
})
|
||||
|
|
|
@ -135,4 +135,32 @@ describe('runtime-dom: v-on directive', () => {
|
|||
handler(event, 'value', true)
|
||||
expect(fn).toBeCalledWith(event, 'value', true)
|
||||
})
|
||||
|
||||
it('withKeys cache wrapped listener separately for different modifiers', () => {
|
||||
const el1 = document.createElement('button')
|
||||
const el2 = document.createElement('button')
|
||||
const fn = vi.fn()
|
||||
const handler1 = withKeys(fn, ['a'])
|
||||
const handler2 = withKeys(fn, ['b'])
|
||||
expect(handler1 === handler2).toBe(false)
|
||||
patchEvent(el1, 'onKeyup', null, handler1, null)
|
||||
patchEvent(el2, 'onKeyup', null, handler2, null)
|
||||
triggerEvent(el1, 'keyup', e => (e.key = 'a'))
|
||||
triggerEvent(el2, 'keyup', e => (e.key = 'b'))
|
||||
expect(fn).toBeCalledTimes(2)
|
||||
})
|
||||
|
||||
it('withModifiers cache wrapped listener separately for different modifiers', () => {
|
||||
const el1 = document.createElement('button')
|
||||
const el2 = document.createElement('button')
|
||||
const fn = vi.fn()
|
||||
const handler1 = withModifiers(fn, ['ctrl'])
|
||||
const handler2 = withModifiers(fn, ['shift'])
|
||||
expect(handler1 === handler2).toBe(false)
|
||||
patchEvent(el1, 'onClick', null, handler1, null)
|
||||
patchEvent(el2, 'onClick', null, handler2, null)
|
||||
triggerEvent(el1, 'click', e => (e.ctrlKey = true))
|
||||
triggerEvent(el2, 'click', e => (e.shiftKey = true))
|
||||
expect(fn).toBeCalledTimes(2)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/runtime-dom",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/runtime-dom",
|
||||
"main": "index.js",
|
||||
"module": "dist/runtime-dom.esm-bundler.js",
|
||||
|
|
|
@ -35,12 +35,14 @@ const modifierGuards: Record<
|
|||
export const withModifiers = <
|
||||
T extends (event: Event, ...args: unknown[]) => any
|
||||
>(
|
||||
fn: T & { _withMods?: T },
|
||||
fn: T & { _withMods?: { [key: string]: T } },
|
||||
modifiers: string[]
|
||||
) => {
|
||||
const cache = fn._withMods || (fn._withMods = {})
|
||||
const cacheKey = modifiers.join('.')
|
||||
return (
|
||||
fn._withMods ||
|
||||
(fn._withMods = ((event, ...args) => {
|
||||
cache[cacheKey] ||
|
||||
(cache[cacheKey] = ((event, ...args) => {
|
||||
for (let i = 0; i < modifiers.length; i++) {
|
||||
const guard = modifierGuards[modifiers[i]]
|
||||
if (guard && guard(event, modifiers)) return
|
||||
|
@ -66,7 +68,7 @@ const keyNames: Record<string, string | string[]> = {
|
|||
* @private
|
||||
*/
|
||||
export const withKeys = <T extends (event: KeyboardEvent) => any>(
|
||||
fn: T & { _withKeys?: T },
|
||||
fn: T & { _withKeys?: { [k: string]: T } },
|
||||
modifiers: string[]
|
||||
) => {
|
||||
let globalKeyCodes: LegacyConfig['keyCodes']
|
||||
|
@ -88,9 +90,12 @@ export const withKeys = <T extends (event: KeyboardEvent) => any>(
|
|||
}
|
||||
}
|
||||
|
||||
const cache: { [k: string]: T } = fn._withKeys || (fn._withKeys = {})
|
||||
const cacheKey = modifiers.join('.')
|
||||
|
||||
return (
|
||||
fn._withKeys ||
|
||||
(fn._withKeys = (event => {
|
||||
cache[cacheKey] ||
|
||||
(cache[cacheKey] = (event => {
|
||||
if (!('key' in event)) {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/server-renderer",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "@vue/server-renderer",
|
||||
"main": "index.js",
|
||||
"module": "dist/server-renderer.esm-bundler.js",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
"vite": "^5.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/repl": "^3.0.0",
|
||||
"@vue/repl": "^3.1.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"jszip": "^3.10.1",
|
||||
"vue": "workspace:*"
|
||||
|
|
|
@ -26,13 +26,17 @@ const setVH = () => {
|
|||
window.addEventListener('resize', setVH)
|
||||
setVH()
|
||||
|
||||
const useDevMode = ref(true)
|
||||
const useProdMode = ref(false)
|
||||
const useSSRMode = ref(false)
|
||||
|
||||
let hash = location.hash.slice(1)
|
||||
if (hash.startsWith('__DEV__')) {
|
||||
hash = hash.slice(7)
|
||||
useDevMode.value = true
|
||||
useProdMode.value = false
|
||||
}
|
||||
if (hash.startsWith('__PROD__')) {
|
||||
hash = hash.slice(8)
|
||||
useProdMode.value = true
|
||||
}
|
||||
if (hash.startsWith('__SSR__')) {
|
||||
hash = hash.slice(7)
|
||||
|
@ -41,7 +45,7 @@ if (hash.startsWith('__SSR__')) {
|
|||
|
||||
const store = new ReplStore({
|
||||
serializedState: hash,
|
||||
productionMode: !useDevMode.value,
|
||||
productionMode: useProdMode.value,
|
||||
defaultVueRuntimeURL: import.meta.env.PROD
|
||||
? `${location.origin}/vue.runtime.esm-browser.js`
|
||||
: `${location.origin}/src/vue-dev-proxy`,
|
||||
|
@ -56,15 +60,15 @@ const store = new ReplStore({
|
|||
// enable experimental features
|
||||
const sfcOptions: SFCOptions = {
|
||||
script: {
|
||||
inlineTemplate: !useDevMode.value,
|
||||
isProd: !useDevMode.value,
|
||||
inlineTemplate: useProdMode.value,
|
||||
isProd: useProdMode.value,
|
||||
propsDestructure: true
|
||||
},
|
||||
style: {
|
||||
isProd: !useDevMode.value
|
||||
isProd: useProdMode.value
|
||||
},
|
||||
template: {
|
||||
isProd: !useDevMode.value
|
||||
isProd: useProdMode.value
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,18 +77,19 @@ watchEffect(() => {
|
|||
const newHash = store
|
||||
.serialize()
|
||||
.replace(/^#/, useSSRMode.value ? `#__SSR__` : `#`)
|
||||
.replace(/^#/, useDevMode.value ? `#__DEV__` : `#`)
|
||||
.replace(/^#/, useProdMode.value ? `#__PROD__` : `#`)
|
||||
history.replaceState({}, '', newHash)
|
||||
})
|
||||
|
||||
function toggleDevMode() {
|
||||
const dev = (useDevMode.value = !useDevMode.value)
|
||||
function toggleProdMode() {
|
||||
const isProd = (useProdMode.value = !useProdMode.value)
|
||||
sfcOptions.script!.inlineTemplate =
|
||||
sfcOptions.script!.isProd =
|
||||
sfcOptions.template!.isProd =
|
||||
sfcOptions.style!.isProd =
|
||||
!dev
|
||||
isProd
|
||||
store.toggleProduction()
|
||||
store.setFiles(store.getFiles())
|
||||
}
|
||||
|
||||
function toggleSSR() {
|
||||
|
@ -109,10 +114,10 @@ onMounted(() => {
|
|||
<template>
|
||||
<Header
|
||||
:store="store"
|
||||
:dev="useDevMode"
|
||||
:prod="useProdMode"
|
||||
:ssr="useSSRMode"
|
||||
@toggle-theme="toggleTheme"
|
||||
@toggle-dev="toggleDevMode"
|
||||
@toggle-prod="toggleProdMode"
|
||||
@toggle-ssr="toggleSSR"
|
||||
@reload-page="reloadPage"
|
||||
/>
|
||||
|
|
|
@ -12,13 +12,13 @@ import VersionSelect from './VersionSelect.vue'
|
|||
|
||||
const props = defineProps<{
|
||||
store: ReplStore
|
||||
dev: boolean
|
||||
prod: boolean
|
||||
ssr: boolean
|
||||
}>()
|
||||
const emit = defineEmits([
|
||||
'toggle-theme',
|
||||
'toggle-ssr',
|
||||
'toggle-dev',
|
||||
'toggle-prod',
|
||||
'reload-page'
|
||||
])
|
||||
|
||||
|
@ -90,11 +90,11 @@ function toggleDark() {
|
|||
</VersionSelect>
|
||||
<button
|
||||
title="Toggle development production mode"
|
||||
class="toggle-dev"
|
||||
:class="{ dev }"
|
||||
@click="$emit('toggle-dev')"
|
||||
class="toggle-prod"
|
||||
:class="{ prod }"
|
||||
@click="$emit('toggle-prod')"
|
||||
>
|
||||
<span>{{ dev ? 'DEV' : 'PROD' }}</span>
|
||||
<span>{{ prod ? 'PROD' : 'DEV' }}</span>
|
||||
</button>
|
||||
<button
|
||||
title="Toggle server rendering mode"
|
||||
|
@ -195,20 +195,20 @@ h1 img {
|
|||
display: flex;
|
||||
}
|
||||
|
||||
.toggle-dev span,
|
||||
.toggle-prod span,
|
||||
.toggle-ssr span {
|
||||
font-size: 12px;
|
||||
border-radius: 4px;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
|
||||
.toggle-dev span {
|
||||
background: var(--purple);
|
||||
.toggle-prod span {
|
||||
background: var(--green);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.toggle-dev.dev span {
|
||||
background: var(--green);
|
||||
.toggle-prod.prod span {
|
||||
background: var(--purple);
|
||||
}
|
||||
|
||||
.toggle-ssr span {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/shared",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "internal utils shared across @vue packages",
|
||||
"main": "index.js",
|
||||
"module": "dist/shared.esm-bundler.js",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@vue/compat",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "Vue 3 compatibility build for Vue 2",
|
||||
"main": "index.js",
|
||||
"module": "dist/vue.runtime.esm-bundler.js",
|
||||
|
@ -38,7 +38,7 @@
|
|||
},
|
||||
"homepage": "https://github.com/vuejs/core-vapor/tree/main/packages/vue-compat#readme",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.23.5",
|
||||
"@babel/parser": "^7.23.6",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "vue",
|
||||
"version": "3.4.0-beta.3",
|
||||
"version": "3.4.0-rc.2",
|
||||
"description": "The progressive JavaScript framework for building modern web UI.",
|
||||
"main": "index.js",
|
||||
"module": "dist/vue.runtime.esm-bundler.js",
|
||||
|
|
411
pnpm-lock.yaml
411
pnpm-lock.yaml
|
@ -9,14 +9,14 @@ importers:
|
|||
.:
|
||||
devDependencies:
|
||||
'@babel/parser':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
'@babel/types':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
'@codspeed/vitest-plugin':
|
||||
specifier: ^2.3.1
|
||||
version: 2.3.1(vite@5.0.10)(vitest@1.0.4)
|
||||
version: 2.3.1(vite@5.0.10)(vitest@1.1.0)
|
||||
'@rollup/plugin-alias':
|
||||
specifier: ^5.0.1
|
||||
version: 5.0.1(rollup@4.1.4)
|
||||
|
@ -42,17 +42,17 @@ importers:
|
|||
specifier: ^1.2.5
|
||||
version: 1.2.5
|
||||
'@types/node':
|
||||
specifier: ^20.10.4
|
||||
version: 20.10.4
|
||||
specifier: ^20.10.5
|
||||
version: 20.10.5
|
||||
'@types/semver':
|
||||
specifier: ^7.5.5
|
||||
version: 7.5.6
|
||||
'@typescript-eslint/parser':
|
||||
specifier: ^6.13.2
|
||||
version: 6.14.0(eslint@8.56.0)(typescript@5.2.2)
|
||||
specifier: ^6.15.0
|
||||
version: 6.16.0(eslint@8.56.0)(typescript@5.2.2)
|
||||
'@vitest/coverage-istanbul':
|
||||
specifier: ^1.0.4
|
||||
version: 1.0.4(vitest@1.0.4)
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0(vitest@1.1.0)
|
||||
'@vue/consolidate':
|
||||
specifier: 0.17.3
|
||||
version: 0.17.3
|
||||
|
@ -69,7 +69,7 @@ importers:
|
|||
specifier: ^0.3.0
|
||||
version: 0.3.0(esbuild@0.19.5)
|
||||
eslint:
|
||||
specifier: ^8.55.0
|
||||
specifier: ^8.56.0
|
||||
version: 8.56.0
|
||||
eslint-define-config:
|
||||
specifier: ^1.24.1
|
||||
|
@ -99,7 +99,7 @@ importers:
|
|||
specifier: ^3.0.3
|
||||
version: 3.0.3
|
||||
marked:
|
||||
specifier: ^11.0.1
|
||||
specifier: ^11.1.0
|
||||
version: 11.1.0
|
||||
minimist:
|
||||
specifier: ^1.2.8
|
||||
|
@ -120,7 +120,7 @@ importers:
|
|||
specifier: ^3.0.2
|
||||
version: 3.0.2
|
||||
puppeteer:
|
||||
specifier: ~21.6.0
|
||||
specifier: ~21.6.1
|
||||
version: 21.6.1(typescript@5.2.2)
|
||||
rimraf:
|
||||
specifier: ^5.0.5
|
||||
|
@ -156,23 +156,23 @@ importers:
|
|||
specifier: ^2.6.2
|
||||
version: 2.6.2
|
||||
tsx:
|
||||
specifier: ^4.6.2
|
||||
version: 4.6.2
|
||||
specifier: ^4.7.0
|
||||
version: 4.7.0
|
||||
typescript:
|
||||
specifier: ^5.2.2
|
||||
version: 5.2.2
|
||||
vite:
|
||||
specifier: ^5.0.5
|
||||
version: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
version: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
vitest:
|
||||
specifier: ^1.0.4
|
||||
version: 1.0.4(@types/node@20.10.4)(jsdom@23.0.1)(terser@5.22.0)
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0(@types/node@20.10.5)(jsdom@23.0.1)(terser@5.22.0)
|
||||
|
||||
packages/compiler-core:
|
||||
dependencies:
|
||||
'@babel/parser':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
'@vue/shared':
|
||||
specifier: workspace:*
|
||||
version: link:../shared
|
||||
|
@ -187,8 +187,8 @@ importers:
|
|||
version: 1.0.2
|
||||
devDependencies:
|
||||
'@babel/types':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
|
||||
packages/compiler-dom:
|
||||
dependencies:
|
||||
|
@ -202,8 +202,8 @@ importers:
|
|||
packages/compiler-sfc:
|
||||
dependencies:
|
||||
'@babel/parser':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
'@vue/compiler-core':
|
||||
specifier: workspace:*
|
||||
version: link:../compiler-core
|
||||
|
@ -230,8 +230,8 @@ importers:
|
|||
version: 1.0.2
|
||||
devDependencies:
|
||||
'@babel/types':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
'@vue/consolidate':
|
||||
specifier: ^0.17.3
|
||||
version: 0.17.3
|
||||
|
@ -362,8 +362,8 @@ importers:
|
|||
packages/sfc-playground:
|
||||
dependencies:
|
||||
'@vue/repl':
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0
|
||||
file-saver:
|
||||
specifier: ^2.0.5
|
||||
version: 2.0.5
|
||||
|
@ -379,7 +379,7 @@ importers:
|
|||
version: 4.4.0(vite@5.0.10)(vue@packages+vue)
|
||||
vite:
|
||||
specifier: ^5.0.5
|
||||
version: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
version: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
|
||||
packages/shared: {}
|
||||
|
||||
|
@ -422,8 +422,8 @@ importers:
|
|||
packages/vue-compat:
|
||||
dependencies:
|
||||
'@babel/parser':
|
||||
specifier: ^7.23.5
|
||||
version: 7.23.5
|
||||
specifier: ^7.23.6
|
||||
version: 7.23.6
|
||||
estree-walker:
|
||||
specifier: ^2.0.2
|
||||
version: 2.0.2
|
||||
|
@ -454,13 +454,13 @@ importers:
|
|||
version: 4.5.0(vite@5.0.2)(vue@packages+vue)
|
||||
vite:
|
||||
specifier: ^5.0.2
|
||||
version: 5.0.2(@types/node@20.10.4)(terser@5.22.0)
|
||||
version: 5.0.2(@types/node@20.10.5)(terser@5.22.0)
|
||||
vite-hyper-config:
|
||||
specifier: ^0.1.1
|
||||
version: 0.1.1(@types/node@20.10.4)(terser@5.22.0)(vite@5.0.2)
|
||||
version: 0.1.1(@types/node@20.10.5)(terser@5.22.0)(vite@5.0.2)
|
||||
vite-node:
|
||||
specifier: ^0.34.6
|
||||
version: 0.34.6(@types/node@20.10.4)(terser@5.22.0)
|
||||
version: 0.34.6(@types/node@20.10.5)(terser@5.22.0)
|
||||
vite-plugin-inspect:
|
||||
specifier: ^0.7.42
|
||||
version: 0.7.42(rollup@4.1.4)(vite@5.0.2)
|
||||
|
@ -508,10 +508,10 @@ packages:
|
|||
'@babel/helper-compilation-targets': 7.22.15
|
||||
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3)
|
||||
'@babel/helpers': 7.23.2
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/template': 7.22.15
|
||||
'@babel/traverse': 7.23.3
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
convert-source-map: 2.0.0
|
||||
debug: 4.3.4
|
||||
gensync: 1.0.0-beta.2
|
||||
|
@ -525,7 +525,7 @@ packages:
|
|||
resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
'@jridgewell/gen-mapping': 0.3.3
|
||||
'@jridgewell/trace-mapping': 0.3.20
|
||||
jsesc: 2.5.2
|
||||
|
@ -552,21 +552,21 @@ packages:
|
|||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/template': 7.22.15
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/@babel/helper-hoist-variables@7.22.5:
|
||||
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
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.5
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3):
|
||||
|
@ -587,14 +587,14 @@ packages:
|
|||
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
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.5
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/@babel/helper-string-parser@7.23.4:
|
||||
|
@ -617,7 +617,7 @@ packages:
|
|||
dependencies:
|
||||
'@babel/template': 7.22.15
|
||||
'@babel/traverse': 7.23.3
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
@ -632,20 +632,20 @@ packages:
|
|||
js-tokens: 4.0.0
|
||||
dev: true
|
||||
|
||||
/@babel/parser@7.23.5:
|
||||
resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==}
|
||||
/@babel/parser@7.23.6:
|
||||
resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
|
||||
/@babel/template@7.22.15:
|
||||
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.22.13
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/@babel/traverse@7.23.3:
|
||||
|
@ -658,16 +658,16 @@ 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.5
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/types': 7.23.6
|
||||
debug: 4.3.4
|
||||
globals: 11.12.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@babel/types@7.23.5:
|
||||
resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==}
|
||||
/@babel/types@7.23.6:
|
||||
resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/helper-string-parser': 7.23.4
|
||||
|
@ -681,19 +681,28 @@ packages:
|
|||
node-gyp-build: 4.7.1
|
||||
dev: true
|
||||
|
||||
/@codspeed/vitest-plugin@2.3.1(vite@5.0.10)(vitest@1.0.4):
|
||||
/@codspeed/vitest-plugin@2.3.1(vite@5.0.10)(vitest@1.1.0):
|
||||
resolution: {integrity: sha512-/e4G2B/onX/hG/EjUU/NpDxnIryeTDamVRTBeWfgQDoex3g7GDzTwoQktaU5l/Asw3ZjEErQg+oQVToQ6jYZlA==}
|
||||
peerDependencies:
|
||||
vite: ^4.2.0 || ^5.0.0
|
||||
vitest: '>=1.0.0-beta.4 || >=1'
|
||||
dependencies:
|
||||
'@codspeed/core': 2.3.1
|
||||
vite: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
vitest: 1.0.4(@types/node@20.10.4)(jsdom@23.0.1)(terser@5.22.0)
|
||||
vite: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
vitest: 1.1.0(@types/node@20.10.5)(jsdom@23.0.1)(terser@5.22.0)
|
||||
dev: true
|
||||
|
||||
/@esbuild/android-arm64@0.18.20:
|
||||
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
|
||||
/@esbuild/aix-ppc64@0.19.10:
|
||||
resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [aix]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-arm64@0.19.10:
|
||||
resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
@ -710,8 +719,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-arm@0.18.20:
|
||||
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
|
||||
/@esbuild/android-arm@0.19.10:
|
||||
resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
@ -728,8 +737,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-x64@0.18.20:
|
||||
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
|
||||
/@esbuild/android-x64@0.19.10:
|
||||
resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
@ -746,8 +755,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-arm64@0.18.20:
|
||||
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
|
||||
/@esbuild/darwin-arm64@0.19.10:
|
||||
resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
@ -764,8 +773,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-x64@0.18.20:
|
||||
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
|
||||
/@esbuild/darwin-x64@0.19.10:
|
||||
resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
@ -782,8 +791,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-arm64@0.18.20:
|
||||
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
|
||||
/@esbuild/freebsd-arm64@0.19.10:
|
||||
resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
@ -800,8 +809,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-x64@0.18.20:
|
||||
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
|
||||
/@esbuild/freebsd-x64@0.19.10:
|
||||
resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
@ -818,8 +827,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm64@0.18.20:
|
||||
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
|
||||
/@esbuild/linux-arm64@0.19.10:
|
||||
resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
@ -836,8 +845,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm@0.18.20:
|
||||
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
|
||||
/@esbuild/linux-arm@0.19.10:
|
||||
resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
@ -854,8 +863,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ia32@0.18.20:
|
||||
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
|
||||
/@esbuild/linux-ia32@0.19.10:
|
||||
resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
|
@ -872,8 +881,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-loong64@0.18.20:
|
||||
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
|
||||
/@esbuild/linux-loong64@0.19.10:
|
||||
resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
@ -890,8 +899,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-mips64el@0.18.20:
|
||||
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
|
||||
/@esbuild/linux-mips64el@0.19.10:
|
||||
resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
|
@ -908,8 +917,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ppc64@0.18.20:
|
||||
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
|
||||
/@esbuild/linux-ppc64@0.19.10:
|
||||
resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
@ -926,8 +935,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-riscv64@0.18.20:
|
||||
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
|
||||
/@esbuild/linux-riscv64@0.19.10:
|
||||
resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
@ -944,8 +953,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-s390x@0.18.20:
|
||||
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
|
||||
/@esbuild/linux-s390x@0.19.10:
|
||||
resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
@ -962,8 +971,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-x64@0.18.20:
|
||||
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
|
||||
/@esbuild/linux-x64@0.19.10:
|
||||
resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
@ -980,8 +989,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/netbsd-x64@0.18.20:
|
||||
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
|
||||
/@esbuild/netbsd-x64@0.19.10:
|
||||
resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
|
@ -998,8 +1007,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/openbsd-x64@0.18.20:
|
||||
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
|
||||
/@esbuild/openbsd-x64@0.19.10:
|
||||
resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
|
@ -1016,8 +1025,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/sunos-x64@0.18.20:
|
||||
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
|
||||
/@esbuild/sunos-x64@0.19.10:
|
||||
resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
|
@ -1034,8 +1043,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-arm64@0.18.20:
|
||||
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
|
||||
/@esbuild/win32-arm64@0.19.10:
|
||||
resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
@ -1052,8 +1061,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-ia32@0.18.20:
|
||||
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
|
||||
/@esbuild/win32-ia32@0.19.10:
|
||||
resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
@ -1070,8 +1079,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-x64@0.18.20:
|
||||
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
|
||||
/@esbuild/win32-x64@0.19.10:
|
||||
resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
@ -1599,8 +1608,8 @@ packages:
|
|||
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
|
||||
dev: true
|
||||
|
||||
/@types/node@20.10.4:
|
||||
resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==}
|
||||
/@types/node@20.10.5:
|
||||
resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
dev: true
|
||||
|
@ -1621,12 +1630,12 @@ packages:
|
|||
resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@types/node': 20.10.4
|
||||
'@types/node': 20.10.5
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==}
|
||||
/@typescript-eslint/parser@6.16.0(eslint@8.56.0)(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^7.0.0 || ^8.0.0
|
||||
|
@ -1635,10 +1644,10 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 6.14.0
|
||||
'@typescript-eslint/types': 6.14.0
|
||||
'@typescript-eslint/typescript-estree': 6.14.0(typescript@5.2.2)
|
||||
'@typescript-eslint/visitor-keys': 6.14.0
|
||||
'@typescript-eslint/scope-manager': 6.16.0
|
||||
'@typescript-eslint/types': 6.16.0
|
||||
'@typescript-eslint/typescript-estree': 6.16.0(typescript@5.2.2)
|
||||
'@typescript-eslint/visitor-keys': 6.16.0
|
||||
debug: 4.3.4
|
||||
eslint: 8.56.0
|
||||
typescript: 5.2.2
|
||||
|
@ -1654,12 +1663,12 @@ packages:
|
|||
'@typescript-eslint/visitor-keys': 5.62.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/scope-manager@6.14.0:
|
||||
resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
|
||||
/@typescript-eslint/scope-manager@6.16.0:
|
||||
resolution: {integrity: sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 6.14.0
|
||||
'@typescript-eslint/visitor-keys': 6.14.0
|
||||
'@typescript-eslint/types': 6.16.0
|
||||
'@typescript-eslint/visitor-keys': 6.16.0
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/types@5.62.0:
|
||||
|
@ -1667,8 +1676,8 @@ packages:
|
|||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/types@6.14.0:
|
||||
resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==}
|
||||
/@typescript-eslint/types@6.16.0:
|
||||
resolution: {integrity: sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
dev: true
|
||||
|
||||
|
@ -1693,8 +1702,8 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/typescript-estree@6.14.0(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==}
|
||||
/@typescript-eslint/typescript-estree@6.16.0(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
|
@ -1702,11 +1711,12 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 6.14.0
|
||||
'@typescript-eslint/visitor-keys': 6.14.0
|
||||
'@typescript-eslint/types': 6.16.0
|
||||
'@typescript-eslint/visitor-keys': 6.16.0
|
||||
debug: 4.3.4
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.3
|
||||
semver: 7.5.4
|
||||
ts-api-utils: 1.0.3(typescript@5.2.2)
|
||||
typescript: 5.2.2
|
||||
|
@ -1742,11 +1752,11 @@ packages:
|
|||
eslint-visitor-keys: 3.4.3
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/visitor-keys@6.14.0:
|
||||
resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
|
||||
/@typescript-eslint/visitor-keys@6.16.0:
|
||||
resolution: {integrity: sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==}
|
||||
engines: {node: ^16.0.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 6.14.0
|
||||
'@typescript-eslint/types': 6.16.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
dev: true
|
||||
|
||||
|
@ -1761,7 +1771,7 @@ packages:
|
|||
vite: ^4.0.0
|
||||
vue: ^3.2.25
|
||||
dependencies:
|
||||
vite: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
vue: link:packages/vue
|
||||
dev: true
|
||||
|
||||
|
@ -1772,12 +1782,12 @@ packages:
|
|||
vite: ^4.0.0 || ^5.0.0
|
||||
vue: ^3.2.25
|
||||
dependencies:
|
||||
vite: 5.0.2(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.2(@types/node@20.10.5)(terser@5.22.0)
|
||||
vue: link:packages/vue
|
||||
dev: true
|
||||
|
||||
/@vitest/coverage-istanbul@1.0.4(vitest@1.0.4):
|
||||
resolution: {integrity: sha512-6qoSzTR+sanwY/dREqu6OFJupo/mHzCcboh03rLwqH2V2B39505lDr9FpqaLwU1vQgeUKNA+CdHPkpNpusxkDw==}
|
||||
/@vitest/coverage-istanbul@1.1.0(vitest@1.1.0):
|
||||
resolution: {integrity: sha512-sjHGQQu7lkJUYSBMOR3f9AyOlK1LBVr0v7LMar/4i167ltabRWlQ2STBDM4P6Wl659NAcHlZ/RXxrAgJPavDMA==}
|
||||
peerDependencies:
|
||||
vitest: ^1.0.0
|
||||
dependencies:
|
||||
|
@ -1790,43 +1800,43 @@ packages:
|
|||
magicast: 0.3.2
|
||||
picocolors: 1.0.0
|
||||
test-exclude: 6.0.0
|
||||
vitest: 1.0.4(@types/node@20.10.4)(jsdom@23.0.1)(terser@5.22.0)
|
||||
vitest: 1.1.0(@types/node@20.10.5)(jsdom@23.0.1)(terser@5.22.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@vitest/expect@1.0.4:
|
||||
resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==}
|
||||
/@vitest/expect@1.1.0:
|
||||
resolution: {integrity: sha512-9IE2WWkcJo2BR9eqtY5MIo3TPmS50Pnwpm66A6neb2hvk/QSLfPXBz2qdiwUOQkwyFuuXEUj5380CbwfzW4+/w==}
|
||||
dependencies:
|
||||
'@vitest/spy': 1.0.4
|
||||
'@vitest/utils': 1.0.4
|
||||
'@vitest/spy': 1.1.0
|
||||
'@vitest/utils': 1.1.0
|
||||
chai: 4.3.10
|
||||
dev: true
|
||||
|
||||
/@vitest/runner@1.0.4:
|
||||
resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==}
|
||||
/@vitest/runner@1.1.0:
|
||||
resolution: {integrity: sha512-zdNLJ00pm5z/uhbWF6aeIJCGMSyTyWImy3Fcp9piRGvueERFlQFbUwCpzVce79OLm2UHk9iwaMSOaU9jVHgNVw==}
|
||||
dependencies:
|
||||
'@vitest/utils': 1.0.4
|
||||
'@vitest/utils': 1.1.0
|
||||
p-limit: 5.0.0
|
||||
pathe: 1.1.1
|
||||
dev: true
|
||||
|
||||
/@vitest/snapshot@1.0.4:
|
||||
resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==}
|
||||
/@vitest/snapshot@1.1.0:
|
||||
resolution: {integrity: sha512-5O/wyZg09V5qmNmAlUgCBqflvn2ylgsWJRRuPrnHEfDNT6tQpQ8O1isNGgo+VxofISHqz961SG3iVvt3SPK/QQ==}
|
||||
dependencies:
|
||||
magic-string: 0.30.5
|
||||
pathe: 1.1.1
|
||||
pretty-format: 29.7.0
|
||||
dev: true
|
||||
|
||||
/@vitest/spy@1.0.4:
|
||||
resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==}
|
||||
/@vitest/spy@1.1.0:
|
||||
resolution: {integrity: sha512-sNOVSU/GE+7+P76qYo+VXdXhXffzWZcYIPQfmkiRxaNCSPiLANvQx5Mx6ZURJ/ndtEkUJEpvKLXqAYTKEY+lTg==}
|
||||
dependencies:
|
||||
tinyspy: 2.2.0
|
||||
dev: true
|
||||
|
||||
/@vitest/utils@1.0.4:
|
||||
resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==}
|
||||
/@vitest/utils@1.1.0:
|
||||
resolution: {integrity: sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==}
|
||||
dependencies:
|
||||
diff-sequences: 29.6.3
|
||||
loupe: 2.3.7
|
||||
|
@ -1838,8 +1848,8 @@ packages:
|
|||
engines: {node: '>= 0.12.0'}
|
||||
dev: true
|
||||
|
||||
/@vue/repl@3.0.0:
|
||||
resolution: {integrity: sha512-tGYibiftMo5yEuIKPWVsNuuNDejjJk0JQmvKtTm12KNLFqtGD7fWoGv1qUzcN9EAxwVeDgnT9ljRgqGVgZkyEg==}
|
||||
/@vue/repl@3.1.0:
|
||||
resolution: {integrity: sha512-lnR010NTkysg71Z0TVsFCTfiF5ARZbyohqymGpOxOrSuSI4o9RlSvWH6YmJdv9OHm5j69HKLVVUhXlCScMCQrg==}
|
||||
dev: false
|
||||
|
||||
/@zeit/schemas@2.29.0:
|
||||
|
@ -2055,7 +2065,7 @@ packages:
|
|||
resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/balanced-match@1.0.2:
|
||||
|
@ -2395,8 +2405,8 @@ packages:
|
|||
/constantinople@4.0.1:
|
||||
resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/types': 7.23.6
|
||||
dev: true
|
||||
|
||||
/content-disposition@0.5.2:
|
||||
|
@ -2882,34 +2892,35 @@ packages:
|
|||
import-meta-resolve: 3.0.0
|
||||
dev: true
|
||||
|
||||
/esbuild@0.18.20:
|
||||
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
||||
/esbuild@0.19.10:
|
||||
resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@esbuild/android-arm': 0.18.20
|
||||
'@esbuild/android-arm64': 0.18.20
|
||||
'@esbuild/android-x64': 0.18.20
|
||||
'@esbuild/darwin-arm64': 0.18.20
|
||||
'@esbuild/darwin-x64': 0.18.20
|
||||
'@esbuild/freebsd-arm64': 0.18.20
|
||||
'@esbuild/freebsd-x64': 0.18.20
|
||||
'@esbuild/linux-arm': 0.18.20
|
||||
'@esbuild/linux-arm64': 0.18.20
|
||||
'@esbuild/linux-ia32': 0.18.20
|
||||
'@esbuild/linux-loong64': 0.18.20
|
||||
'@esbuild/linux-mips64el': 0.18.20
|
||||
'@esbuild/linux-ppc64': 0.18.20
|
||||
'@esbuild/linux-riscv64': 0.18.20
|
||||
'@esbuild/linux-s390x': 0.18.20
|
||||
'@esbuild/linux-x64': 0.18.20
|
||||
'@esbuild/netbsd-x64': 0.18.20
|
||||
'@esbuild/openbsd-x64': 0.18.20
|
||||
'@esbuild/sunos-x64': 0.18.20
|
||||
'@esbuild/win32-arm64': 0.18.20
|
||||
'@esbuild/win32-ia32': 0.18.20
|
||||
'@esbuild/win32-x64': 0.18.20
|
||||
'@esbuild/aix-ppc64': 0.19.10
|
||||
'@esbuild/android-arm': 0.19.10
|
||||
'@esbuild/android-arm64': 0.19.10
|
||||
'@esbuild/android-x64': 0.19.10
|
||||
'@esbuild/darwin-arm64': 0.19.10
|
||||
'@esbuild/darwin-x64': 0.19.10
|
||||
'@esbuild/freebsd-arm64': 0.19.10
|
||||
'@esbuild/freebsd-x64': 0.19.10
|
||||
'@esbuild/linux-arm': 0.19.10
|
||||
'@esbuild/linux-arm64': 0.19.10
|
||||
'@esbuild/linux-ia32': 0.19.10
|
||||
'@esbuild/linux-loong64': 0.19.10
|
||||
'@esbuild/linux-mips64el': 0.19.10
|
||||
'@esbuild/linux-ppc64': 0.19.10
|
||||
'@esbuild/linux-riscv64': 0.19.10
|
||||
'@esbuild/linux-s390x': 0.19.10
|
||||
'@esbuild/linux-x64': 0.19.10
|
||||
'@esbuild/netbsd-x64': 0.19.10
|
||||
'@esbuild/openbsd-x64': 0.19.10
|
||||
'@esbuild/sunos-x64': 0.19.10
|
||||
'@esbuild/win32-arm64': 0.19.10
|
||||
'@esbuild/win32-ia32': 0.19.10
|
||||
'@esbuild/win32-x64': 0.19.10
|
||||
dev: true
|
||||
|
||||
/esbuild@0.19.5:
|
||||
|
@ -3972,7 +3983,7 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
'@babel/core': 7.23.3
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@istanbuljs/schema': 0.1.3
|
||||
istanbul-lib-coverage: 3.2.2
|
||||
semver: 7.5.4
|
||||
|
@ -4316,8 +4327,8 @@ packages:
|
|||
/magicast@0.3.2:
|
||||
resolution: {integrity: sha512-Fjwkl6a0syt9TFN0JSYpOybxiMCkYNEeOTnOTNRbjphirLakznZXAqrXgj/7GG3D1dvETONNwrBfinvAbpunDg==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/types': 7.23.6
|
||||
source-map-js: 1.0.2
|
||||
dev: true
|
||||
|
||||
|
@ -6012,12 +6023,12 @@ packages:
|
|||
typescript: 5.2.2
|
||||
dev: true
|
||||
|
||||
/tsx@4.6.2:
|
||||
resolution: {integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==}
|
||||
/tsx@4.7.0:
|
||||
resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
esbuild: 0.18.20
|
||||
esbuild: 0.19.10
|
||||
get-tsconfig: 4.7.2
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
@ -6200,7 +6211,7 @@ packages:
|
|||
engines: {node: '>= 0.8'}
|
||||
dev: true
|
||||
|
||||
/vite-hyper-config@0.1.1(@types/node@20.10.4)(terser@5.22.0)(vite@5.0.2):
|
||||
/vite-hyper-config@0.1.1(@types/node@20.10.5)(terser@5.22.0)(vite@5.0.2):
|
||||
resolution: {integrity: sha512-Sc9WuuLImezPUG6JUnBU/L0KHZDHRyvLKEU1fEPCR6gBsC9QTnmnX78doRQpKt6P/rRcawlytbA2xt9Qb/kaVQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
peerDependencies:
|
||||
|
@ -6208,8 +6219,8 @@ packages:
|
|||
dependencies:
|
||||
cac: 6.7.14
|
||||
picocolors: 1.0.0
|
||||
vite: 5.0.2(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite-node: 0.34.6(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.2(@types/node@20.10.5)(terser@5.22.0)
|
||||
vite-node: 0.34.6(@types/node@20.10.5)(terser@5.22.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
|
@ -6221,7 +6232,7 @@ packages:
|
|||
- terser
|
||||
dev: true
|
||||
|
||||
/vite-node@0.34.6(@types/node@20.10.4)(terser@5.22.0):
|
||||
/vite-node@0.34.6(@types/node@20.10.5)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
|
||||
engines: {node: '>=v14.18.0'}
|
||||
hasBin: true
|
||||
|
@ -6231,7 +6242,7 @@ packages:
|
|||
mlly: 1.4.2
|
||||
pathe: 1.1.1
|
||||
picocolors: 1.0.0
|
||||
vite: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
|
@ -6243,8 +6254,8 @@ packages:
|
|||
- terser
|
||||
dev: true
|
||||
|
||||
/vite-node@1.0.4(@types/node@20.10.4)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==}
|
||||
/vite-node@1.1.0(@types/node@20.10.5)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-jV48DDUxGLEBdHCQvxL1mEh7+naVy+nhUUUaPAZLd3FJgXuxQiewHcfeZebbJ6onDqNGkP4r3MhQ342PRlG81Q==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
|
@ -6252,7 +6263,7 @@ packages:
|
|||
debug: 4.3.4
|
||||
pathe: 1.1.1
|
||||
picocolors: 1.0.0
|
||||
vite: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
|
@ -6282,13 +6293,13 @@ packages:
|
|||
open: 9.1.0
|
||||
picocolors: 1.0.0
|
||||
sirv: 2.0.3
|
||||
vite: 5.0.2(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.2(@types/node@20.10.5)(terser@5.22.0)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/vite@5.0.10(@types/node@20.10.4)(terser@5.22.0):
|
||||
/vite@5.0.10(@types/node@20.10.5)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
|
@ -6316,7 +6327,7 @@ packages:
|
|||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 20.10.4
|
||||
'@types/node': 20.10.5
|
||||
esbuild: 0.19.5
|
||||
postcss: 8.4.32
|
||||
rollup: 4.4.1
|
||||
|
@ -6325,7 +6336,7 @@ packages:
|
|||
fsevents: 2.3.3
|
||||
dev: true
|
||||
|
||||
/vite@5.0.2(@types/node@20.10.4)(terser@5.22.0):
|
||||
/vite@5.0.2(@types/node@20.10.5)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
|
@ -6353,7 +6364,7 @@ packages:
|
|||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 20.10.4
|
||||
'@types/node': 20.10.5
|
||||
esbuild: 0.19.5
|
||||
postcss: 8.4.32
|
||||
rollup: 4.4.1
|
||||
|
@ -6362,8 +6373,8 @@ packages:
|
|||
fsevents: 2.3.3
|
||||
dev: true
|
||||
|
||||
/vitest@1.0.4(@types/node@20.10.4)(jsdom@23.0.1)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==}
|
||||
/vitest@1.1.0(@types/node@20.10.5)(jsdom@23.0.1)(terser@5.22.0):
|
||||
resolution: {integrity: sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -6387,12 +6398,12 @@ packages:
|
|||
jsdom:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 20.10.4
|
||||
'@vitest/expect': 1.0.4
|
||||
'@vitest/runner': 1.0.4
|
||||
'@vitest/snapshot': 1.0.4
|
||||
'@vitest/spy': 1.0.4
|
||||
'@vitest/utils': 1.0.4
|
||||
'@types/node': 20.10.5
|
||||
'@vitest/expect': 1.1.0
|
||||
'@vitest/runner': 1.1.0
|
||||
'@vitest/snapshot': 1.1.0
|
||||
'@vitest/spy': 1.1.0
|
||||
'@vitest/utils': 1.1.0
|
||||
acorn-walk: 8.3.1
|
||||
cac: 6.7.14
|
||||
chai: 4.3.10
|
||||
|
@ -6407,8 +6418,8 @@ packages:
|
|||
strip-literal: 1.3.0
|
||||
tinybench: 2.5.1
|
||||
tinypool: 0.8.1
|
||||
vite: 5.0.10(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite-node: 1.0.4(@types/node@20.10.4)(terser@5.22.0)
|
||||
vite: 5.0.10(@types/node@20.10.5)(terser@5.22.0)
|
||||
vite-node: 1.1.0(@types/node@20.10.5)(terser@5.22.0)
|
||||
why-is-node-running: 2.2.2
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
|
@ -6524,8 +6535,8 @@ packages:
|
|||
resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/types': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@babel/types': 7.23.6
|
||||
assert-never: 1.2.1
|
||||
babel-walk: 3.0.0-canary-5
|
||||
dev: true
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { type SpyInstance } from 'vitest'
|
||||
import { type MockInstance } from 'vitest'
|
||||
|
||||
vi.stubGlobal('MathMLElement', class MathMLElement {})
|
||||
|
||||
|
@ -67,7 +67,7 @@ expect.extend({
|
|||
}
|
||||
})
|
||||
|
||||
let warn: SpyInstance
|
||||
let warn: MockInstance
|
||||
const asserted: Set<string> = new Set()
|
||||
|
||||
beforeEach(() => {
|
|
@ -0,0 +1,49 @@
|
|||
// @ts-check
|
||||
import fs from 'node:fs'
|
||||
import { execa } from 'execa'
|
||||
|
||||
execa('pnpm', ['build', 'vue', '-f', 'global-runtime']).then(() => {
|
||||
const errors = []
|
||||
|
||||
const devBuild = fs.readFileSync(
|
||||
'packages/vue/dist/vue.runtime.global.js',
|
||||
'utf-8'
|
||||
)
|
||||
|
||||
if (devBuild.includes('__spreadValues')) {
|
||||
errors.push(
|
||||
'dev build contains unexpected esbuild object spread helper.\n' +
|
||||
'This means { ...obj } syntax is used in runtime code. This should be ' +
|
||||
'refactoed to use the `extend` helper to avoid the extra code.'
|
||||
)
|
||||
}
|
||||
|
||||
const prodBuild = fs.readFileSync(
|
||||
'packages/vue/dist/vue.runtime.global.prod.js',
|
||||
'utf-8'
|
||||
)
|
||||
|
||||
if (prodBuild.includes('Vue warn')) {
|
||||
errors.push(
|
||||
'prod build contains unexpected warning-related code.\n' +
|
||||
'This means there are calls of warn() that are not guarded by the __DEV__ condition.'
|
||||
)
|
||||
}
|
||||
|
||||
if (
|
||||
prodBuild.includes('html,body,base') ||
|
||||
prodBuild.includes('svg,animate,animateMotion') ||
|
||||
prodBuild.includes('annotation,annotation-xml,maction')
|
||||
) {
|
||||
errors.push(
|
||||
'prod build contains unexpected domTagConifg lists.\n' +
|
||||
'This means helpers like isHTMLTag() is used in runtime code paths when it should be compiler-only.'
|
||||
)
|
||||
}
|
||||
|
||||
if (errors.length) {
|
||||
throw new Error(
|
||||
`Found the following treeshaking errors:\n\n- ${errors.join('\n\n- ')}`
|
||||
)
|
||||
}
|
||||
})
|
|
@ -25,7 +25,7 @@ export default defineConfig({
|
|||
plugins: [codspeedPlugin()],
|
||||
test: {
|
||||
globals: true,
|
||||
setupFiles: 'scripts/setupVitest.ts',
|
||||
setupFiles: 'scripts/setup-vitest.ts',
|
||||
environmentMatchGlobs: [
|
||||
['packages/{vue,vue-compat,runtime-dom,runtime-vapor}/**', 'jsdom']
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue