]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore: make type check pass
authorEvan You <evan@vuejs.org>
Wed, 11 Dec 2024 03:50:17 +0000 (11:50 +0800)
committerEvan You <evan@vuejs.org>
Wed, 11 Dec 2024 03:50:17 +0000 (11:50 +0800)
14 files changed:
packages/compiler-vapor/__tests__/transforms/_utils.ts
packages/compiler-vapor/src/generators/for.ts
packages/compiler-vapor/src/transforms/vModel.ts
packages/runtime-vapor/__tests__/_utils.ts
packages/runtime-vapor/__tests__/apiCreateSelector.spec.ts
packages/runtime-vapor/__tests__/componentSlots.spec.ts
packages/runtime-vapor/__tests__/dom/templateRef.spec.ts
packages/runtime-vapor/__tests__/for.spec.ts
packages/runtime-vapor/__tests__/if.spec.ts
packages/runtime-vapor/src/apiCreateFor.ts [new file with mode: 0644]
packages/runtime-vapor/src/apiCreateIf.ts [new file with mode: 0644]
packages/runtime-vapor/src/componentSlots.ts
packages/runtime-vapor/src/dom/templateRef.ts
packages/runtime-vapor/src/index.ts

index f246f4e4cacd49c8716032d4795267b32d869136..1b6e3f18ab15d00da02dd2350ba4460492283c25 100644 (file)
@@ -16,7 +16,6 @@ export function makeCompile(options: CompilerOptions = {}) {
     ir: RootIRNode
     code: string
     helpers: Set<string>
-    helpers: Set<string>
   } => {
     const ast = parse(template, {
       prefixIdentifiers: true,
index 5ee350b255adf2ed700253bd815f9cd20c7eb49d..d061ec0dcda74390a4b5027ee7bf0c2ff3374925 100644 (file)
@@ -47,6 +47,7 @@ export function genFor(
     ]
 
     blockFn = genCall(
+      // @ts-expect-error
       helper('withDestructure'),
       destructureAssignmentFn,
       blockFn,
index 0be18bf1aeb2f2bb2d068e6236ed448854849f50..11927da74915edc303f3568c2918766dc7b8deb6 100644 (file)
@@ -14,7 +14,7 @@ import {
   isStaticArgOf,
 } from '@vue/compiler-dom'
 import type { DirectiveTransform } from '../transform'
-import { IRNodeTypes, type VaporHelper } from '../ir'
+import { IRNodeTypes } from '../ir'
 
 export const transformVModel: DirectiveTransform = (dir, node, context) => {
   const { exp, arg } = dir
@@ -79,7 +79,8 @@ export const transformVModel: DirectiveTransform = (dir, node, context) => {
     )
   const { tag } = node
   const isCustomElement = context.options.isCustomElement(tag)
-  let runtimeDirective: VaporHelper | undefined = 'vModelText'
+  let runtimeDirective: string | undefined = 'vModelText'
+  // TODO let runtimeDirective: VaporHelper | undefined = 'vModelText'
   if (
     tag === 'input' ||
     tag === 'textarea' ||
index 6900fa67d0be227709f8aa8f6c9c37e55d53c2af..a2f66f7b8e4ef6368ea757a0d837f63936d733e6 100644 (file)
@@ -6,7 +6,7 @@ import type { RawProps } from '../src/componentProps'
 export interface RenderContext {
   component: VaporComponent
   host: HTMLElement
-  instance: Record<string, any> | undefined
+  instance: VaporComponentInstance | undefined
   app: App
   create: (props?: RawProps) => RenderContext
   mount: (container?: string | ParentNode) => RenderContext
index 05f95bf081e40e82b45049836d85e6e0f4735d0d..03bf9c0f780909a8327b935d28b1d1801ca187ad 100644 (file)
@@ -18,7 +18,6 @@ describe.todo('api: createSelector', () => {
       const isSleected = createSelector(index)
       return createFor(
         () => list.value,
-        // @ts-expect-error
         ([item]) => {
           const span = document.createElement('li')
           renderEffect(() => {
@@ -28,7 +27,6 @@ describe.todo('api: createSelector', () => {
           })
           return span
         },
-        // @ts-expect-error
         item => item.id,
       )
     }).render()
@@ -75,7 +73,6 @@ describe.todo('api: createSelector', () => {
       )
       return createFor(
         () => list.value,
-        // @ts-expect-error
         ([item]) => {
           const span = document.createElement('li')
           renderEffect(() => {
@@ -85,7 +82,6 @@ describe.todo('api: createSelector', () => {
           })
           return span
         },
-        // @ts-expect-error
         item => item.id,
       )
     }).render()
index 03c96dbc1307425172c1550c6aa151ebdc96f5c6..78be11ebe7f969a4afb9f010b5da457e90af44cf 100644 (file)
@@ -2,7 +2,6 @@
 
 import {
   createComponent,
-  // @ts-expect-error
   createForSlots,
   createSlot,
   createVaporApp,
index f4fb1d0774fb5b28a966ec08442543e692c7561e..5fc64782e54e303a54e4893af4dc627017d0367b 100644 (file)
@@ -1,8 +1,6 @@
 import type { NodeRef } from '../../src/dom/templateRef'
 import {
-  // @ts-expect-error
   createFor,
-  // @ts-expect-error
   createIf,
   insert,
   renderEffect,
@@ -359,7 +357,6 @@ describe.todo('api: template ref', () => {
             const n1 = t0()
             const n2 = createFor(
               () => list,
-              // @ts-expect-error
               state => {
                 const n1 = t1()
                 setRef(n1 as Element, listRefs, undefined, true)
@@ -418,7 +415,6 @@ describe.todo('api: template ref', () => {
             const n1 = t0()
             const n2 = createFor(
               () => list,
-              // @ts-expect-error
               state => {
                 const n1 = t1()
                 setRef(n1 as Element, 'listRefs', undefined, true)
@@ -475,7 +471,6 @@ describe.todo('api: template ref', () => {
         const n2 = n1!.nextSibling!
         const n3 = createFor(
           () => list.value,
-          // @ts-expect-error
           state => {
             const n4 = t1()
             setRef(n4 as Element, 'listRefs', undefined, true)
index 9f50781acccf72110287e1b79af6c4717dd4871c..7e1ff385396de6ad1c8d988293a567f9a0d6cf3d 100644 (file)
@@ -1,13 +1,5 @@
-import {
-  createFor,
-  nextTick,
-  ref,
-  renderEffect,
-  shallowRef,
-  template,
-  triggerRef,
-  withDestructure,
-} from '../src'
+import { createFor, renderEffect } from '../src'
+import { nextTick, ref, shallowRef, triggerRef } from '@vue/runtime-dom'
 import { makeRender } from './_utils'
 
 const define = makeRender()
@@ -582,26 +574,24 @@ describe.todo('createFor', () => {
     expectCalledTimesToBe('Clear rows', 1, 0, 0, 0)
   })
 
-  test('withDestructure', () => {
-    const list = ref([{ name: 'a' }, { name: 'b' }, { name: 'c' }])
-
-    const { host } = define(() => {
-      const n1 = createFor(
-        () => list.value,
-        withDestructure(
-          ([{ name }, index]) => [name, index],
-          ctx => {
-            const span = template(`<li>${ctx[1]}. ${ctx[0]}</li>`)()
-            return span
-          },
-        ),
-        item => item.name,
-      )
-      return n1
-    }).render()
-
-    expect(host.innerHTML).toBe(
-      '<li>0. a</li><li>1. b</li><li>2. c</li><!--for-->',
-    )
+  test.todo('withDestructure', () => {
+    // const list = ref([{ name: 'a' }, { name: 'b' }, { name: 'c' }])
+    // const { host } = define(() => {
+    //   const n1 = createFor(
+    //     () => list.value,
+    //     withDestructure(
+    //       ([{ name }, index]) => [name, index],
+    //       ctx => {
+    //         const span = template(`<li>${ctx[1]}. ${ctx[0]}</li>`)()
+    //         return span
+    //       },
+    //     ),
+    //     item => item.name,
+    //   )
+    //   return n1
+    // }).render()
+    // expect(host.innerHTML).toBe(
+    //   '<li>0. a</li><li>1. b</li><li>2. c</li><!--for-->',
+    // )
   })
 })
index 2c6554cbc7815a9f97e98b54615c3caca2e799b3..7acff485ac9dee8d7fe7cfa8befa53b377a6def8 100644 (file)
@@ -2,13 +2,13 @@ import {
   children,
   createIf,
   insert,
-  nextTick,
-  ref,
   renderEffect,
   setText,
   template,
+  // @ts-expect-error
   withDirectives,
 } from '../src'
+import { nextTick, ref } from '@vue/runtime-dom'
 import type { Mock } from 'vitest'
 import { makeRender } from './_utils'
 import { unmountComponent } from '../src/component'
diff --git a/packages/runtime-vapor/src/apiCreateFor.ts b/packages/runtime-vapor/src/apiCreateFor.ts
new file mode 100644 (file)
index 0000000..e888546
--- /dev/null
@@ -0,0 +1,25 @@
+import type { EffectScope, ShallowRef } from '@vue/reactivity'
+import type { Block, Fragment } from './block'
+
+interface ForBlock extends Fragment {
+  scope: EffectScope
+  state: [
+    item: ShallowRef<any>,
+    key: ShallowRef<any>,
+    index: ShallowRef<number | undefined>,
+  ]
+  key: any
+}
+
+type Source = any[] | Record<any, any> | number | Set<any> | Map<any, any>
+
+export const createFor = (
+  src: () => Source,
+  renderItem: (block: ForBlock['state']) => Block,
+  getKey?: (item: any, key: any, index?: number) => any,
+  container?: ParentNode,
+  hydrationNode?: Node,
+  once?: boolean,
+): Fragment => {
+  return [] as any
+}
diff --git a/packages/runtime-vapor/src/apiCreateIf.ts b/packages/runtime-vapor/src/apiCreateIf.ts
new file mode 100644 (file)
index 0000000..7e56611
--- /dev/null
@@ -0,0 +1,11 @@
+import type { BlockFn, Fragment } from './block'
+
+export function createIf(
+  condition: () => any,
+  b1: BlockFn,
+  b2?: BlockFn,
+  once?: boolean,
+  // hydrationNode?: Node,
+): Fragment {
+  return [] as any
+}
index 1875651459e6f2450d2575d4c3d637149348153f..6eb365e004972949c2a7a6e9bce52a6c78ad964d 100644 (file)
@@ -132,3 +132,6 @@ export function createSlot(
 
   return fragment
 }
+
+// TODO
+export function createForSlots(): any {}
index 445b4a7925f5b207b448d40d0a31f956f9f67b92..b17a7eea542311625d719d14d3d8889bf4eb7bf0 100644 (file)
@@ -2,6 +2,7 @@ import { type Ref, isRef, onScopeDispose } from '@vue/reactivity'
 import {
   type VaporComponentInstance,
   currentInstance,
+  getExposed,
   isVaporComponent,
 } from '../component'
 import {
@@ -31,15 +32,10 @@ export function setRef(
   oldRef?: NodeRef,
   refFor = false,
 ): NodeRef | undefined {
-  if (!currentInstance) return
-  // @ts-expect-error TODO
-  const { setupState, isUnmounted } = currentInstance
+  if (!currentInstance || currentInstance.isUnmounted) return
 
-  if (isUnmounted) {
-    return
-  }
-
-  const refValue = isVaporComponent(el) ? el.exposed || el : el
+  const setupState = currentInstance.setupState || {}
+  const refValue = isVaporComponent(el) ? getExposed(el) || el : el
 
   const refs =
     currentInstance.refs === EMPTY_OBJ
@@ -50,7 +46,7 @@ export function setRef(
   if (oldRef != null && oldRef !== ref) {
     if (isString(oldRef)) {
       refs[oldRef] = null
-      if (setupState && hasOwn(setupState, oldRef)) {
+      if (hasOwn(setupState, oldRef)) {
         setupState[oldRef] = null
       }
     } else if (isRef(oldRef)) {
index 6c22332af9de7852995a6d3983e1a7d412867d22..ae7ea7cdb5054d791c5a2bb17de68f4596ccc234 100644 (file)
@@ -6,7 +6,7 @@ export { defineVaporComponent } from './apiDefineComponent'
 export { insert, prepend, remove } from './block'
 export { createComponent, createComponentWithFallback } from './component'
 export { renderEffect } from './renderEffect'
-export { createSlot } from './componentSlots'
+export { createSlot, createForSlots } from './componentSlots'
 export { template, children, next } from './dom/template'
 export { createTextNode } from './dom/node'
 export { setStyle } from './dom/style'
@@ -21,4 +21,6 @@ export {
   setDynamicProps,
 } from './dom/prop'
 export { on, delegate, delegateEvents, setDynamicEvents } from './dom/event'
+export { createIf } from './apiCreateIf'
+export { createFor } from './apiCreateFor'
 export { setRef } from './dom/templateRef'