Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: vuejs/core
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.6
Choose a base ref
...
head repository: vuejs/core
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.0.7
Choose a head ref
  • 16 commits
  • 39 files changed
  • 5 contributors

Commits on Feb 24, 2021

  1. Copy the full SHA
    d0ea745 View commit details
  2. Copy the full SHA
    3549662 View commit details
  3. Copy the full SHA
    4a96580 View commit details

Commits on Feb 25, 2021

  1. Copy the full SHA
    e3568ba View commit details
  2. test: test case for #3300, #3301

    yyx990803 committed Feb 25, 2021
    Copy the full SHA
    75964ab View commit details
  3. Copy the full SHA
    45fae9d View commit details
  4. Copy the full SHA
    5ad4036 View commit details
  5. Copy the full SHA
    9cd9883 View commit details
  6. Copy the full SHA
    012dc5a View commit details

Commits on Feb 26, 2021

  1. Copy the full SHA
    1dedc19 View commit details

Commits on Mar 1, 2021

  1. Copy the full SHA
    81f2967 View commit details
  2. Copy the full SHA
    58c46d7 View commit details
  3. fix(deps): pin Rollup to 2.38

    Rollup 2.39 changes cjs re-exports code generation which breaks named
    exports static analysis of cjs-module-lexer / Node esm mode.
    
    close #3332
    yyx990803 committed Mar 1, 2021
    Copy the full SHA
    34f354b View commit details
  4. Copy the full SHA
    24b3523 View commit details
  5. Copy the full SHA
    290e494 View commit details
  6. release: v3.0.7

    yyx990803 committed Mar 1, 2021
    Copy the full SHA
    1a955e2 View commit details
Showing with 364 additions and 84 deletions.
  1. +19 −0 CHANGELOG.md
  2. +2 −2 package.json
  3. +2 −2 packages/compiler-core/package.json
  4. +3 −3 packages/compiler-dom/package.json
  5. +51 −0 packages/compiler-sfc/__tests__/rewriteDefault.spec.ts
  6. +6 −6 packages/compiler-sfc/package.json
  7. +11 −1 packages/compiler-sfc/src/rewriteDefault.ts
  8. +21 −0 packages/compiler-ssr/__tests__/ssrElement.spec.ts
  9. +3 −3 packages/compiler-ssr/package.json
  10. +3 −2 packages/compiler-ssr/src/ssrCodegenTransform.ts
  11. +2 −2 packages/reactivity/package.json
  12. +1 −1 packages/reactivity/src/collectionHandlers.ts
  13. +11 −1 packages/runtime-core/__tests__/apiOptions.spec.ts
  14. +32 −0 packages/runtime-core/__tests__/scheduler.spec.ts
  15. +3 −3 packages/runtime-core/package.json
  16. +3 −0 packages/runtime-core/src/component.ts
  17. +2 −1 packages/runtime-core/src/componentOptions.ts
  18. +1 −1 packages/runtime-core/src/componentProps.ts
  19. +1 −1 packages/runtime-core/src/index.ts
  20. +10 −2 packages/runtime-core/src/renderer.ts
  21. +25 −1 packages/runtime-core/src/scheduler.ts
  22. +63 −2 packages/runtime-dom/__tests__/directives/vShow.spec.ts
  23. +3 −3 packages/runtime-dom/package.json
  24. +2 −1 packages/runtime-dom/src/directives/vShow.ts
  25. +23 −1 packages/runtime-dom/src/index.ts
  26. +7 −0 packages/runtime-dom/src/modules/style.ts
  27. +3 −3 packages/runtime-test/package.json
  28. +4 −4 packages/server-renderer/package.json
  29. +1 −1 packages/shared/package.json
  30. +1 −1 packages/size-check/package.json
  31. +1 −1 packages/template-explorer/package.json
  32. +12 −1 packages/vue/__tests__/e2eUtils.ts
  33. +4 −4 packages/vue/package.json
  34. +1 −7 packages/vue/src/dev.ts
  35. +1 −1 packages/vue/src/index.ts
  36. +1 −1 packages/vue/src/runtime.ts
  37. +1 −1 scripts/release.js
  38. +7 −2 test-dts/component.test-d.ts
  39. +17 −18 yarn.lock
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
## [3.0.7](https://github.com/vuejs/vue-next/compare/v3.0.6...v3.0.7) (2021-03-01)


### Bug Fixes

* **compiler-sfc:** handle more edge cases in default rewrite ([1dedc19](https://github.com/vuejs/vue-next/commit/1dedc19e1f0a2039d2ab8f55af6e27034b8dcde5))
* **deps:** pin Rollup to 2.38 ([34f354b](https://github.com/vuejs/vue-next/commit/34f354b2a0eeb6c148ca485ae3558842814ea4d2)), closes [#3332](https://github.com/vuejs/vue-next/issues/3332)
* **runtime-core:** properties in methods should be writable and enumerable in DEV ([#3301](https://github.com/vuejs/vue-next/issues/3301)) ([e3568ba](https://github.com/vuejs/vue-next/commit/e3568bae276889cee60f4e84321a287125014e86)), closes [#3300](https://github.com/vuejs/vue-next/issues/3300)
* **scheduler:** ensure updates are always inserted in ascending id order ([#3184](https://github.com/vuejs/vue-next/issues/3184)) ([45fae9d](https://github.com/vuejs/vue-next/commit/45fae9d308e8cb9fe3304d4ca03c373ce63b2e62)), closes [#2768](https://github.com/vuejs/vue-next/issues/2768) [#2829](https://github.com/vuejs/vue-next/issues/2829)
* **v-show:** v-show takes higher priority than style attribute ([#3230](https://github.com/vuejs/vue-next/issues/3230)) ([5ad4036](https://github.com/vuejs/vue-next/commit/5ad4036e29f75dc907e95b99a63325b855332566)), closes [#2757](https://github.com/vuejs/vue-next/issues/2757)
* init devtools after feature flag checks ([d0ea745](https://github.com/vuejs/vue-next/commit/d0ea74556f74d8c503ffb7b70f41cbe2ce14db98))


### Performance Improvements

* **reactivity:** only call Set.add if doesn't already have value ([#3307](https://github.com/vuejs/vue-next/issues/3307)) ([9cd9883](https://github.com/vuejs/vue-next/commit/9cd988342cfa32ddd9479585244eb317d74c9712))



## [3.0.6](https://github.com/vuejs/vue-next/compare/v3.0.5...v3.0.6) (2021-02-24)


4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"private": true,
"version": "3.0.6",
"version": "3.0.7",
"workspaces": [
"packages/*"
],
@@ -66,7 +66,7 @@
"npm-run-all": "^4.1.5",
"prettier": "~1.14.0",
"puppeteer": "^2.0.0",
"rollup": "^2.26.11",
"rollup": "~2.38.5",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-globals": "^1.4.0",
"rollup-plugin-terser": "^7.0.2",
4 changes: 2 additions & 2 deletions packages/compiler-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-core",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/compiler-core",
"main": "index.js",
"module": "dist/compiler-core.esm-bundler.js",
@@ -31,7 +31,7 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-core#readme",
"dependencies": {
"@vue/shared": "3.0.6",
"@vue/shared": "3.0.7",
"@babel/parser": "^7.12.0",
"@babel/types": "^7.12.0",
"estree-walker": "^2.0.1",
6 changes: 3 additions & 3 deletions packages/compiler-dom/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-dom",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/compiler-dom",
"main": "index.js",
"module": "dist/compiler-dom.esm-bundler.js",
@@ -36,7 +36,7 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-dom#readme",
"dependencies": {
"@vue/shared": "3.0.6",
"@vue/compiler-core": "3.0.6"
"@vue/shared": "3.0.7",
"@vue/compiler-core": "3.0.7"
}
}
51 changes: 51 additions & 0 deletions packages/compiler-sfc/__tests__/rewriteDefault.spec.ts
Original file line number Diff line number Diff line change
@@ -26,4 +26,55 @@ describe('compiler sfc: rewriteDefault', () => {
const script = a"
`)
})

test('w/ comments', async () => {
expect(rewriteDefault(`// export default\nexport default {}`, 'script'))
.toMatchInlineSnapshot(`
"// export default
const script = {}"
`)
})

test('export default class', async () => {
expect(rewriteDefault(`export default class Foo {}`, 'script'))
.toMatchInlineSnapshot(`
"class Foo {}
const script = Foo"
`)
})

test('export default class w/ comments', async () => {
expect(
rewriteDefault(`// export default\nexport default class Foo {}`, 'script')
).toMatchInlineSnapshot(`
"// export default
class Foo {}
const script = Foo"
`)
})

test('export default class w/ comments 2', async () => {
expect(
rewriteDefault(
`export default {}\n` + `// export default class Foo {}`,
'script'
)
).toMatchInlineSnapshot(`
"const script = {}
// export default class Foo {}"
`)
})

test('export default class w/ comments 3', async () => {
expect(
rewriteDefault(
`/*\nexport default class Foo {}*/\n` + `export default class Bar {}`,
'script'
)
).toMatchInlineSnapshot(`
"/*
export default class Foo {}*/
const script = class Bar {}"
`)
})
})
12 changes: 6 additions & 6 deletions packages/compiler-sfc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-sfc",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/compiler-sfc",
"main": "dist/compiler-sfc.cjs.js",
"types": "dist/compiler-sfc.d.ts",
@@ -31,15 +31,15 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-sfc#readme",
"peerDependencies": {
"vue": "3.0.6"
"vue": "3.0.7"
},
"dependencies": {
"@babel/parser": "^7.12.0",
"@babel/types": "^7.12.0",
"@vue/compiler-core": "3.0.6",
"@vue/compiler-dom": "3.0.6",
"@vue/compiler-ssr": "3.0.6",
"@vue/shared": "3.0.6",
"@vue/compiler-core": "3.0.7",
"@vue/compiler-dom": "3.0.7",
"@vue/compiler-ssr": "3.0.7",
"@vue/shared": "3.0.7",
"consolidate": "^0.16.0",
"estree-walker": "^2.0.1",
"hash-sum": "^2.0.0",
12 changes: 11 additions & 1 deletion packages/compiler-sfc/src/rewriteDefault.ts
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ import MagicString from 'magic-string'

const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/
const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)as(\s*)default/
const exportDefaultClassRE = /((?:^|\n|;)\s*)export\s+default\s+class\s+([\w$]+)/

/**
* Utility for rewriting `export default` in a script block into a variable
@@ -17,7 +18,16 @@ export function rewriteDefault(
return input + `\nconst ${as} = {}`
}

const replaced = input.replace(defaultExportRE, `$1const ${as} =`)
let replaced: string | undefined

const classMatch = input.match(exportDefaultClassRE)
if (classMatch) {
replaced =
input.replace(exportDefaultClassRE, '$1class $2') +
`\nconst ${as} = ${classMatch[2]}`
} else {
replaced = input.replace(defaultExportRE, `$1const ${as} =`)
}
if (!hasDefaultExport(replaced)) {
return replaced
}
21 changes: 21 additions & 0 deletions packages/compiler-ssr/__tests__/ssrElement.spec.ts
Original file line number Diff line number Diff line change
@@ -71,6 +71,27 @@ describe('ssr: element', () => {
`)
})

test("multiple _ssrInterpolate at parent and child import dependency once", () => {
expect( compile(`<div>{{ hello }}<textarea v-bind="a"></textarea></div>`).code)
.toMatchInlineSnapshot(`
"const { ssrRenderAttrs: _ssrRenderAttrs, ssrInterpolate: _ssrInterpolate } = require(\\"@vue/server-renderer\\")
return function ssrRender(_ctx, _push, _parent, _attrs) {
let _temp0
_push(\`<div\${
_ssrRenderAttrs(_attrs)
}>\${
_ssrInterpolate(_ctx.hello)
}<textarea\${
_ssrRenderAttrs(_temp0 = _ctx.a, \\"textarea\\")
}>\${
_ssrInterpolate((\\"value\\" in _temp0) ? _temp0.value : \\"\\")
}</textarea></div>\`)
}"
`);
});

test('should pass tag to custom elements w/ dynamic v-bind', () => {
expect(
compile(`<my-foo v-bind="obj"></my-foo>`, {
6 changes: 3 additions & 3 deletions packages/compiler-ssr/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/compiler-ssr",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/compiler-ssr",
"main": "dist/compiler-ssr.cjs.js",
"types": "dist/compiler-ssr.d.ts",
@@ -28,7 +28,7 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-ssr#readme",
"dependencies": {
"@vue/shared": "3.0.6",
"@vue/compiler-dom": "3.0.6"
"@vue/shared": "3.0.7",
"@vue/compiler-dom": "3.0.7"
}
}
5 changes: 3 additions & 2 deletions packages/compiler-ssr/src/ssrCodegenTransform.ts
Original file line number Diff line number Diff line change
@@ -56,10 +56,11 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) {

// Finalize helpers.
// We need to separate helpers imported from 'vue' vs. '@vue/server-renderer'
ast.ssrHelpers = [
ast.ssrHelpers = Array.from(new Set([
...ast.helpers.filter(h => h in ssrHelpers),
...context.helpers
]
]))

ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers))
}

4 changes: 2 additions & 2 deletions packages/reactivity/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/reactivity",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/reactivity",
"main": "index.js",
"module": "dist/reactivity.esm-bundler.js",
@@ -36,6 +36,6 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/reactivity#readme",
"dependencies": {
"@vue/shared": "3.0.6"
"@vue/shared": "3.0.7"
}
}
2 changes: 1 addition & 1 deletion packages/reactivity/src/collectionHandlers.ts
Original file line number Diff line number Diff line change
@@ -76,8 +76,8 @@ function add(this: SetTypes, value: unknown) {
const target = toRaw(this)
const proto = getProto(target)
const hadKey = proto.has.call(target, value)
target.add(value)
if (!hadKey) {
target.add(value)
trigger(target, TriggerOpTypes.ADD, value, value)
}
return this
12 changes: 11 additions & 1 deletion packages/runtime-core/__tests__/apiOptions.spec.ts
Original file line number Diff line number Diff line change
@@ -78,20 +78,26 @@ describe('api: options', () => {
test('methods', async () => {
const Comp = defineComponent({
data() {
// #3300 method on ctx should be overwritable
this.incBy = this.incBy.bind(this, 2)
return {
foo: 1
}
},
methods: {
inc() {
this.foo++
},
incBy(n = 0) {
this.foo += n
}
},
render() {
return h(
'div',
{
onClick: this.inc
onClick: this.inc,
onFoo: this.incBy
},
this.foo
)
@@ -104,6 +110,10 @@ describe('api: options', () => {
triggerEvent(root.children[0] as TestElement, 'click')
await nextTick()
expect(serializeInner(root)).toBe(`<div>2</div>`)

triggerEvent(root.children[0] as TestElement, 'foo')
await nextTick()
expect(serializeInner(root)).toBe(`<div>4</div>`)
})

test('component’s own methods have higher priority than global properties', async () => {
32 changes: 32 additions & 0 deletions packages/runtime-core/__tests__/scheduler.spec.ts
Original file line number Diff line number Diff line change
@@ -44,6 +44,38 @@ describe('scheduler', () => {
expect(calls).toEqual(['job1', 'job2'])
})

it("should insert jobs in ascending order of job's id when flushing", async () => {
const calls: string[] = []
const job1 = () => {
calls.push('job1')

queueJob(job2)
queueJob(job3)
queueJob(job4)
}

const job2 = () => {
calls.push('job2')
}
job2.id = 10

const job3 = () => {
calls.push('job3')
}
job3.id = 1

// job4 gets the Infinity as it's id
const job4 = () => {
calls.push('job4')
}

queueJob(job1)

expect(calls).toEqual([])
await nextTick()
expect(calls).toEqual(['job1', 'job3', 'job2', 'job4'])
})

it('should dedupe queued jobs', async () => {
const calls: string[] = []
const job1 = () => {
6 changes: 3 additions & 3 deletions packages/runtime-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/runtime-core",
"version": "3.0.6",
"version": "3.0.7",
"description": "@vue/runtime-core",
"main": "index.js",
"module": "dist/runtime-core.esm-bundler.js",
@@ -32,7 +32,7 @@
},
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/runtime-core#readme",
"dependencies": {
"@vue/shared": "3.0.6",
"@vue/reactivity": "3.0.6"
"@vue/shared": "3.0.7",
"@vue/reactivity": "3.0.7"
}
}
3 changes: 3 additions & 0 deletions packages/runtime-core/src/component.ts
Original file line number Diff line number Diff line change
@@ -653,6 +653,9 @@ type CompileFunction = (

let compile: CompileFunction | undefined

// dev only
export const isRuntimeOnly = () => !compile

/**
* For runtime-dom to register the compiler.
* Note the exported method uses any to avoid d.ts relying on the compiler types.
3 changes: 2 additions & 1 deletion packages/runtime-core/src/componentOptions.ts
Original file line number Diff line number Diff line change
@@ -610,7 +610,8 @@ export function applyOptions(
Object.defineProperty(ctx, key, {
value: methodHandler.bind(publicThis),
configurable: true,
enumerable: false
enumerable: true,
writable: true
})
} else {
ctx[key] = methodHandler.bind(publicThis)
2 changes: 1 addition & 1 deletion packages/runtime-core/src/componentProps.ts
Original file line number Diff line number Diff line change
@@ -56,7 +56,7 @@ interface PropOptions<T = any, D = T> {
export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]

type PropConstructor<T = any> =
| { new (...args: any[]): T & object }
| { new (...args: any[]): T & {} }
| { (): T }
| PropMethod<T>

Loading