+++ /dev/null
-__tests__/
-__mocks__/
-dist/packages
\ No newline at end of file
+++ /dev/null
-# @vue/decorators
\ No newline at end of file
+++ /dev/null
-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)
-})
+++ /dev/null
-'use strict'
-
-if (process.env.NODE_ENV === 'production') {
- module.exports = require('./dist/decorators.cjs.prod.js')
-} else {
- module.exports = require('./dist/decorators.cjs.js')
-}
+++ /dev/null
-{
- "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"
-}
\ No newline at end of file
+++ /dev/null
-export { prop } from './prop'
-export { inject } from './inject'
+++ /dev/null
-export function inject() {}
+++ /dev/null
-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
- })
-}