Răsfoiți Sursa

fix: typing issues with useLoader and environment

alvarosabu 2 ani în urmă
părinte
comite
d6aca6fc90

+ 2 - 2
packages/cientos/package.json

@@ -50,9 +50,9 @@
     "rollup-plugin-visualizer": "^5.9.0",
     "tweakpane": "^3.1.4",
     "typescript": "^4.9.5",
-    "vite": "^4.1.1",
+    "vite": "^4.1.2",
     "vite-plugin-banner": "^0.7.0",
-    "vite-plugin-dts": "^1.7.2"
+    "vite-plugin-dts": "2.0.0-beta.1"
   },
   "dependencies": {
     "@tresjs/core": "workspace:^1.6.0",

+ 1 - 1
packages/cientos/src/core/OrbitControls.vue

@@ -1,7 +1,7 @@
 <script lang="ts" setup>
 import { Camera, Vector3 } from 'three'
 import { OrbitControls } from 'three-stdlib'
-import { ref, watch, watchEffect, unref, type Ref } from 'vue'
+import { ref, watch, unref, type Ref } from 'vue'
 
 import { useCientos } from './useCientos'
 

+ 4 - 4
packages/cientos/src/core/Text3D.vue

@@ -1,4 +1,4 @@
-<script async setup lang="ts">
+<script setup lang="ts">
 import { TextGeometry, FontLoader } from 'three-stdlib'
 
 import { computed, useSlots } from 'vue'
@@ -34,7 +34,7 @@ const props = withDefaults(
     bevelThickness?: number
     bevelSize?: number
     bevelOffset?: number
-    bevelSegments?: number,
+    bevelSegments?: number
     center?: boolean
   }>(),
   {
@@ -46,9 +46,9 @@ const props = withDefaults(
     bevelSize: 0.02,
     bevelOffset: 0,
     bevelSegments: 4,
-    center:false
+    center: false,
   },
-  )
+)
 
 const { extend } = useCientos()
 

+ 2 - 3
packages/cientos/src/core/TransformControls.vue

@@ -1,8 +1,7 @@
 <script setup lang="ts">
-import { useTres } from '@tresjs/core'
-import { Camera, Object3D, Scene, WebGLRenderer, type Event } from 'three'
+import { Object3D, type Event } from 'three'
 import { TransformControls as TransformControlsImp } from 'three-stdlib'
-import { inject, computed, type Ref, unref, watch, shallowRef, ShallowRef, onUnmounted } from 'vue'
+import { computed, unref, watch, shallowRef, ShallowRef, onUnmounted } from 'vue'
 import { pick, hasSetter } from '../utils'
 import { useCientos } from './useCientos'
 

+ 9 - 4
packages/cientos/src/core/useEnvironment/index.ts

@@ -33,10 +33,15 @@ export async function useEnvironment({
 
   const loader = isCubeMap ? CubeTextureLoader : RGBELoader
 
-  const result = await useLoader(loader, isCubeMap ? [files] : files, (loader: any) => {
-    if (path) loader.setPath(path)
-    if (encoding) loader.encoding = encoding
-  })
+  const result = await useLoader(
+    // @ts-expect-error There is a bug in the types for useLoader
+    loader,
+    isCubeMap ? [files] : files,
+    (loader: any) => {
+      if (path) loader.setPath(path)
+      if (encoding) loader.encoding = encoding
+    },
+  )
 
   const texture: Texture | CubeTexture = isCubeMap ? result[0] : result
 

+ 0 - 20
packages/cientos/src/env.d.ts

@@ -1,20 +0,0 @@
-/// <reference types="vite/client" />
-declare module '*.vue' {
-  import type { DefineComponent } from 'vue'
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
-  const component: DefineComponent<{}, {}, any>
-  export default component
-}
-
-declare module '*.glsl' {}
-
-declare global {
-  // Define the window interface, with type annotations for the properties and methods of the window object
-  interface Window {
-    // Define the location property, with a type of Location
-    __TRES__: {
-      app: App
-      version: string
-    }
-  }
-}

+ 3 - 0
packages/cientos/src/vite-env.d.ts

@@ -0,0 +1,3 @@
+/// <reference types="vite/client" />
+
+declare module '*.glsl' {}

+ 1 - 1
packages/cientos/tsconfig.json

@@ -21,7 +21,7 @@
       "/@/*": ["src/*"]
     }
   },
-  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "histoire.setup.ts", "histoire.setup.ts"],
+  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
   "exclude": ["dist", "node_modules", "src/**/*.cy.ts", "src/**/*.test.ts"],
   "references": [{ "path": "./tsconfig.node.json" }]
 }

+ 1 - 0
packages/tres/src/core/useLoader/index.ts

@@ -9,6 +9,7 @@ export interface TresLoader<T> extends THREE.Loader {
     onProgress?: (event: ProgressEvent) => void,
     onError?: (event: ErrorEvent) => void,
   ): unknown
+  loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<T>
 }
 
 export type LoaderProto<T> = new (...args: any) => TresLoader<T extends unknown ? any : T>

+ 1 - 1
packages/tres/src/core/useRenderer/component.ts

@@ -1,5 +1,5 @@
 import { ShadowMapType, TextureEncoding, ToneMapping } from 'three'
-import { h, defineComponent, ref, provide, onBeforeUnmount, shallowRef, PropType } from 'vue'
+import { h, defineComponent, ref, provide, onBeforeUnmount, PropType } from 'vue'
 import { useRenderer } from '.'
 import { useLogger } from '/@/composables'
 import { TresVNodeType } from '/@/types'

+ 2 - 2
packages/tres/src/core/useTres/index.ts

@@ -1,5 +1,5 @@
 import { Clock, EventDispatcher, Raycaster, Scene, Vector2, WebGLRenderer } from 'three'
-import { ComputedRef, shallowReactive, ShallowRef, toRefs } from 'vue'
+import { ComputedRef, shallowReactive, toRefs } from 'vue'
 import { Camera } from '/@/core'
 
 export interface TresState {
@@ -11,7 +11,7 @@ export interface TresState {
   clock?: Clock
   pointer?: Vector2
   currentInstance?: any
-  controls?: EventDispatcher | null
+  controls?: (EventDispatcher & { enabled: boolean }) | null
   [key: string]: any
 }
 

+ 86 - 13
pnpm-lock.yaml

@@ -57,24 +57,24 @@ importers:
       three-stdlib: ^2.21.8
       tweakpane: ^3.1.4
       typescript: ^4.9.5
-      vite: ^4.1.1
+      vite: ^4.1.2
       vite-plugin-banner: ^0.7.0
-      vite-plugin-dts: ^1.7.2
+      vite-plugin-dts: 2.0.0-beta.1
     dependencies:
       '@tresjs/core': link:../tres
       three-stdlib: 2.21.8
     devDependencies:
       '@tweakpane/plugin-essentials': 0.1.8_tweakpane@3.1.4
-      '@vitejs/plugin-vue': 4.0.0_vite@4.1.1
+      '@vitejs/plugin-vue': 4.0.0_vite@4.1.2
       kolorist: 1.7.0
       pathe: 1.1.0
       rollup-plugin-analyzer: 4.0.0
       rollup-plugin-visualizer: 5.9.0
       tweakpane: 3.1.4
       typescript: 4.9.5
-      vite: 4.1.1
+      vite: 4.1.2
       vite-plugin-banner: 0.7.0
-      vite-plugin-dts: 1.7.3_vite@4.1.1
+      vite-plugin-dts: 2.0.0-beta.1_vite@4.1.2
 
   packages/tres:
     specifiers:
@@ -1820,14 +1820,24 @@ packages:
       vite: 4.1.1
     dev: true
 
-  /@vitejs/plugin-vue/4.0.0_vite@4.1.1+vue@3.2.47:
+  /@vitejs/plugin-vue/4.0.0_vite@4.1.2:
     resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==}
     engines: {node: ^14.18.0 || >=16.0.0}
     peerDependencies:
       vite: ^4.0.0
       vue: ^3.2.25
     dependencies:
-      vite: 4.1.1
+      vite: 4.1.2
+    dev: true
+
+  /@vitejs/plugin-vue/4.0.0_vite@4.1.2+vue@3.2.47:
+    resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    peerDependencies:
+      vite: ^4.0.0
+      vue: ^3.2.25
+    dependencies:
+      vite: 4.1.2
       vue: 3.2.47
     dev: true
 
@@ -5123,6 +5133,13 @@ packages:
       '@jridgewell/sourcemap-codec': 1.4.14
     dev: true
 
+  /magic-string/0.29.0:
+    resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==}
+    engines: {node: '>=12'}
+    dependencies:
+      '@jridgewell/sourcemap-codec': 1.4.14
+    dev: true
+
   /make-dir/3.1.0:
     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
     engines: {node: '>=8'}
@@ -7531,7 +7548,7 @@ packages:
       picocolors: 1.0.0
       source-map: 0.6.1
       source-map-support: 0.5.21
-      vite: 4.1.1_@types+node@18.13.0
+      vite: 4.1.2_@types+node@18.13.0
     transitivePeerDependencies:
       - '@types/node'
       - less
@@ -7567,6 +7584,29 @@ packages:
       - supports-color
     dev: true
 
+  /vite-plugin-dts/2.0.0-beta.1_vite@4.1.2:
+    resolution: {integrity: sha512-LJWdbFzy9V4vAzapdJ0yVtJDdFn3xxJFn3korx9Vu9KLNuoSBOKDyOtlXy6WL2CZAmxyeETnzeQzkMZ3uhnFDQ==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    peerDependencies:
+      vite: '>=2.9.0'
+    dependencies:
+      '@babel/parser': 7.20.15
+      '@microsoft/api-extractor': 7.34.4
+      '@rollup/pluginutils': 5.0.2
+      '@rushstack/node-core-library': 3.55.2
+      debug: 4.3.4
+      fast-glob: 3.2.12
+      fs-extra: 10.1.0
+      kolorist: 1.7.0
+      magic-string: 0.29.0
+      ts-morph: 17.0.1
+      vite: 4.1.2
+    transitivePeerDependencies:
+      - '@types/node'
+      - rollup
+      - supports-color
+    dev: true
+
   /vite-plugin-glsl/1.1.2_vite@4.1.1:
     resolution: {integrity: sha512-zmXsfc1vn2MlYve9t3FAoWuhLyoCkNS1TuQL+TkXZL7tGmBjRErp10eNYxcse5tK9oUC5MyJpNc4ElpQnx8DoA==}
     engines: {node: '>= 16.15.1', npm: '>= 8.11.0'}
@@ -7649,8 +7689,41 @@ packages:
       fsevents: 2.3.2
     dev: true
 
-  /vite/4.1.1_@types+node@18.13.0:
-    resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==}
+  /vite/4.1.2:
+    resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    hasBin: true
+    peerDependencies:
+      '@types/node': '>= 14'
+      less: '*'
+      sass: '*'
+      stylus: '*'
+      sugarss: '*'
+      terser: ^5.4.0
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+      less:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      terser:
+        optional: true
+    dependencies:
+      esbuild: 0.16.17
+      postcss: 8.4.21
+      resolve: 1.22.1
+      rollup: 3.15.0
+    optionalDependencies:
+      fsevents: 2.3.2
+    dev: true
+
+  /vite/4.1.2_@types+node@18.13.0:
+    resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==}
     engines: {node: ^14.18.0 || >=16.0.0}
     hasBin: true
     peerDependencies:
@@ -7689,12 +7762,12 @@ packages:
     dependencies:
       '@docsearch/css': 3.3.3
       '@docsearch/js': 3.3.3
-      '@vitejs/plugin-vue': 4.0.0_vite@4.1.1+vue@3.2.47
+      '@vitejs/plugin-vue': 4.0.0_vite@4.1.2+vue@3.2.47
       '@vue/devtools-api': 6.5.0
       '@vueuse/core': 9.12.0_vue@3.2.47
       body-scroll-lock: 4.0.0-beta.0
       shiki: 0.12.1
-      vite: 4.1.1
+      vite: 4.1.2
       vue: 3.2.47
     transitivePeerDependencies:
       - '@algolia/client-search'
@@ -7755,7 +7828,7 @@ packages:
       tinybench: 2.3.1
       tinypool: 0.3.1
       tinyspy: 1.1.1
-      vite: 4.1.1_@types+node@18.13.0
+      vite: 4.1.2_@types+node@18.13.0
       vite-node: 0.28.5_@types+node@18.13.0
       why-is-node-running: 2.2.2
     transitivePeerDependencies: