chore(sfc-playground): ignore duplicate logs
This commit is contained in:
parent
1675b6d723
commit
3ffc7be864
@ -7,6 +7,12 @@ import { EmitFn, EmitsOptions } from './componentEmits'
|
|||||||
import { ComponentObjectPropsOptions, ExtractPropTypes } from './componentProps'
|
import { ComponentObjectPropsOptions, ExtractPropTypes } from './componentProps'
|
||||||
import { warn } from './warning'
|
import { warn } from './warning'
|
||||||
|
|
||||||
|
type InferDefaults<T> = {
|
||||||
|
[K in keyof T]?: NonNullable<T[K]> extends object
|
||||||
|
? () => NonNullable<T[K]>
|
||||||
|
: NonNullable<T[K]>
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compile-time-only helper used for declaring props inside `<script setup>`.
|
* Compile-time-only helper used for declaring props inside `<script setup>`.
|
||||||
* This is stripped away in the compiled code and should never be actually
|
* This is stripped away in the compiled code and should never be actually
|
||||||
@ -25,7 +31,10 @@ export function defineProps<
|
|||||||
TypeProps = undefined,
|
TypeProps = undefined,
|
||||||
PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions,
|
PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions,
|
||||||
InferredProps = ExtractPropTypes<PP>
|
InferredProps = ExtractPropTypes<PP>
|
||||||
>(props?: PP): Readonly<TypeProps extends undefined ? InferredProps : TypeProps>
|
>(
|
||||||
|
props?: PP,
|
||||||
|
defaults?: InferDefaults<TypeProps>
|
||||||
|
): Readonly<TypeProps extends undefined ? InferredProps : TypeProps>
|
||||||
// implementation
|
// implementation
|
||||||
export function defineProps() {
|
export function defineProps() {
|
||||||
if (__DEV__) {
|
if (__DEV__) {
|
||||||
|
@ -123,6 +123,9 @@ function createSandbox() {
|
|||||||
runtimeError.value = 'Uncaught (in promise): ' + error.message
|
runtimeError.value = 'Uncaught (in promise): ' + error.message
|
||||||
},
|
},
|
||||||
on_console: (log: any) => {
|
on_console: (log: any) => {
|
||||||
|
if (log.duplicate) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (log.level === 'error') {
|
if (log.level === 'error') {
|
||||||
if (log.args[0] instanceof Error) {
|
if (log.args[0] instanceof Error) {
|
||||||
runtimeError.value = log.args[0].message
|
runtimeError.value = log.args[0].message
|
||||||
@ -156,7 +159,10 @@ function createSandbox() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function updatePreview() {
|
async function updatePreview() {
|
||||||
|
// @ts-ignore
|
||||||
|
if (import.meta.env.PROD) {
|
||||||
console.clear()
|
console.clear()
|
||||||
|
}
|
||||||
runtimeError.value = null
|
runtimeError.value = null
|
||||||
runtimeWarning.value = null
|
runtimeWarning.value = null
|
||||||
try {
|
try {
|
||||||
|
@ -19,6 +19,32 @@ describe('defineProps w/ type declaration', () => {
|
|||||||
props.bar
|
props.bar
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('defineProps w/ type declaration + defaults', () => {
|
||||||
|
defineProps<{
|
||||||
|
number?: number
|
||||||
|
arr?: string[]
|
||||||
|
arr2?: string[]
|
||||||
|
obj?: { x: number }
|
||||||
|
obj2?: { x: number }
|
||||||
|
obj3?: { x: number }
|
||||||
|
}>(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
number: 1,
|
||||||
|
|
||||||
|
arr: () => [''],
|
||||||
|
// @ts-expect-error not using factory
|
||||||
|
arr2: [''],
|
||||||
|
|
||||||
|
obj: () => ({ x: 123 }),
|
||||||
|
// @ts-expect-error not using factory
|
||||||
|
obj2: { x: 123 },
|
||||||
|
// @ts-expect-error factory return type does not match
|
||||||
|
obj3: () => ({ x: 'foo' })
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
describe('defineProps w/ runtime declaration', () => {
|
describe('defineProps w/ runtime declaration', () => {
|
||||||
// runtime declaration
|
// runtime declaration
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
Loading…
Reference in New Issue
Block a user