wip: remove decorators
This commit is contained in:
parent
3f3e42b8cb
commit
444d6f4bda
@ -1,3 +0,0 @@
|
|||||||
__tests__/
|
|
||||||
__mocks__/
|
|
||||||
dist/packages
|
|
@ -1 +0,0 @@
|
|||||||
# @vue/decorators
|
|
@ -1,65 +0,0 @@
|
|||||||
import { prop } from '../src/prop'
|
|
||||||
import { Component, createInstance } from '@vue/runtime-test'
|
|
||||||
|
|
||||||
test('without options', () => {
|
|
||||||
let capturedThisValue
|
|
||||||
let capturedPropsValue
|
|
||||||
|
|
||||||
class Foo extends Component<{ p: number }> {
|
|
||||||
@prop
|
|
||||||
p: number
|
|
||||||
|
|
||||||
created() {
|
|
||||||
capturedThisValue = this.p
|
|
||||||
capturedPropsValue = this.$props.p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
createInstance(Foo, {
|
|
||||||
p: 1
|
|
||||||
})
|
|
||||||
expect(capturedThisValue).toBe(1)
|
|
||||||
expect(capturedPropsValue).toBe(1)
|
|
||||||
|
|
||||||
// explicit override
|
|
||||||
createInstance(Foo, {
|
|
||||||
p: 2
|
|
||||||
})
|
|
||||||
expect(capturedThisValue).toBe(2)
|
|
||||||
expect(capturedPropsValue).toBe(2)
|
|
||||||
})
|
|
||||||
|
|
||||||
test('with options', () => {
|
|
||||||
let capturedThisValue
|
|
||||||
let capturedPropsValue
|
|
||||||
let capturedDataValue
|
|
||||||
|
|
||||||
class Foo extends Component<{ p: number }> {
|
|
||||||
@prop({
|
|
||||||
default: 1
|
|
||||||
})
|
|
||||||
p: number
|
|
||||||
// data property should be able to make use of prop
|
|
||||||
d: number = this.p + 1
|
|
||||||
|
|
||||||
created() {
|
|
||||||
capturedThisValue = this.p
|
|
||||||
capturedPropsValue = this.$props.p
|
|
||||||
capturedDataValue = this.d
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// default value
|
|
||||||
createInstance(Foo)
|
|
||||||
expect(capturedThisValue).toBe(1)
|
|
||||||
expect(capturedPropsValue).toBe(1)
|
|
||||||
expect(capturedDataValue).toBe(2)
|
|
||||||
|
|
||||||
// explicit override
|
|
||||||
createInstance(Foo, {
|
|
||||||
p: 2
|
|
||||||
})
|
|
||||||
expect(capturedThisValue).toBe(2)
|
|
||||||
expect(capturedPropsValue).toBe(2)
|
|
||||||
expect(capturedDataValue).toBe(3)
|
|
||||||
})
|
|
@ -1,7 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
module.exports = require('./dist/decorators.cjs.prod.js')
|
|
||||||
} else {
|
|
||||||
module.exports = require('./dist/decorators.cjs.js')
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@vue/decorators",
|
|
||||||
"version": "3.0.0-alpha.1",
|
|
||||||
"description": "@vue/decorators",
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "dist/decorators.esm-bundler.js",
|
|
||||||
"types": "dist/index.d.ts",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"vue"
|
|
||||||
],
|
|
||||||
"author": "Evan You",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/decorators#readme"
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
export { prop } from './prop'
|
|
||||||
export { inject } from './inject'
|
|
@ -1 +0,0 @@
|
|||||||
export function inject() {}
|
|
@ -1,23 +0,0 @@
|
|||||||
import { Component, PropValidator } from '@vue/runtime-core'
|
|
||||||
import { camelize } from '@vue/shared'
|
|
||||||
|
|
||||||
export function prop(
|
|
||||||
target: Component | PropValidator<any>,
|
|
||||||
key?: string
|
|
||||||
): any {
|
|
||||||
if (key) {
|
|
||||||
applyProp(target, key)
|
|
||||||
} else {
|
|
||||||
const options = target as PropValidator<any>
|
|
||||||
return (target: any, key: string) => {
|
|
||||||
applyProp(target, key, options)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function applyProp(target: any, key: string, options: PropValidator<any> = {}) {
|
|
||||||
// here `target` is the prototype of the component class
|
|
||||||
Object.defineProperty(target, `__prop_${camelize(key)}`, {
|
|
||||||
value: options
|
|
||||||
})
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user