wip: remove decorators

This commit is contained in:
Evan You 2019-05-27 13:48:27 +08:00
parent 3f3e42b8cb
commit 444d6f4bda
8 changed files with 0 additions and 123 deletions

View File

@ -1,3 +0,0 @@
__tests__/
__mocks__/
dist/packages

View File

@ -1 +0,0 @@
# @vue/decorators

View File

@ -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)
})

View File

@ -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')
}

View File

@ -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"
}

View File

@ -1,2 +0,0 @@
export { prop } from './prop'
export { inject } from './inject'

View File

@ -1 +0,0 @@
export function inject() {}

View File

@ -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
})
}