Переглянути джерело

feat(core): auto generated tres component types

alvarosabu 2 роки тому
батько
коміт
7430d2c758

+ 11 - 1
apps/playground/src/App.vue

@@ -1,9 +1,19 @@
 <script setup lang="ts">
 import { TresCanvas } from '@tresjs/core'
+import { OrbitControls } from '@tresjs/cientos'
 </script>
 
 <template>
-  <TresCanvas> </TresCanvas>
+  <TresCanvas>
+    <TresPerspectiveCamera :args="[45, 1, 0.1, 2000]" :position="[3, 3, 4]" />
+    <OrbitControls />
+    <TresAmbientLight :args="[0xffffff, 0.5]" />
+    <TresDirectionalLight :args="[0xffffff, 0.5]" />
+    <TresMesh>
+      <TresBoxGeometry :args="[1, 1, 1]" />
+      <TresMeshToonMaterial :color="'teal'" />
+    </TresMesh>
+  </TresCanvas>
 </template>
 
 <style scoped>

+ 1 - 2
packages/cientos/src/core/useCientos.ts

@@ -1,6 +1,5 @@
-import { useTres } from '@tresjs/core'
+import { useTres, useLogger } from '@tresjs/core'
 import { inject } from 'vue'
-import { useLogger } from '/@/composables'
 /**
  * Allows to use and extend the state of the core package.
  *

+ 0 - 286
packages/tres/.tres/tres-components.d.ts

@@ -1,286 +0,0 @@
-import type { DefineComponent } from 'vue'
-import { TresObject, TresColor, TresVectorProp } from '/@/types'
-import type {
-  Mesh,
-  AmbientLight,
-  ArrowHelper,
-  AxesHelper,
-  Box3Helper,
-  BoxBufferGeometry,
-  BoxGeometry,
-  BoxHelper,
-  BufferGeometry,
-  CameraHelper,
-  CapsuleBufferGeometry,
-  CapsuleGeometry,
-  CircleBufferGeometry,
-  CircleGeometry,
-  ConeBufferGeometry,
-  ConeGeometry,
-  CylinderBufferGeometry,
-  CylinderGeometry,
-  DirectionalLight,
-  DirectionalLightHelper,
-  DodecahedronBufferGeometry,
-  DodecahedronGeometry,
-  EdgesGeometry,
-  ExtrudeBufferGeometry,
-  ExtrudeGeometry,
-  GridHelper,
-  HemisphereLight,
-  HemisphereLightHelper,
-  IcosahedronBufferGeometry,
-  IcosahedronGeometry,
-  InstancedBufferGeometry,
-  LatheBufferGeometry,
-  LatheGeometry,
-  Light,
-  LineBasicMaterial,
-  LineDashedMaterial,
-  Material,
-  MeshBasicMaterial,
-  MeshDepthMaterial,
-  MeshDistanceMaterial,
-  MeshLambertMaterial,
-  MeshMatcapMaterial,
-  MeshNormalMaterial,
-  MeshPhongMaterial,
-  MeshPhysicalMaterial,
-  MeshStandardMaterial,
-  MeshToonMaterial,
-  OctahedronBufferGeometry,
-  OctahedronGeometry,
-  PlaneBufferGeometry,
-  PlaneGeometry,
-  PlaneHelper,
-  PointLight,
-  PointLightHelper,
-  PointsMaterial,
-  PolarGridHelper,
-  PolyhedronBufferGeometry,
-  PolyhedronGeometry,
-  RawShaderMaterial,
-  RectAreaLight,
-  RingBufferGeometry,
-  RingGeometry,
-  ShaderMaterial,
-  ShadowMaterial,
-  ShapeBufferGeometry,
-  ShapeGeometry,
-  SkeletonHelper,
-  SphereBufferGeometry,
-  SphereGeometry,
-  SpotLight,
-  SpotLightHelper,
-  SpriteMaterial,
-  TetrahedronBufferGeometry,
-  TetrahedronGeometry,
-  TorusBufferGeometry,
-  TorusGeometry,
-  TorusKnotBufferGeometry,
-  TorusKnotGeometry,
-  TubeBufferGeometry,
-  TubeGeometry,
-  WireframeGeometry,
-} from 'three'
-
-type OverwrittenProps = 'position' | 'rotation' | 'scale' | 'color'
-
-type TresModifiedObject = {
-  /**
-   * A Vector3 | Array | scalar representing the object's local position. Default is (0, 0, 0).
-   *
-   * @type {TresVectorProp}
-   */
-  position: TresVectorProp
-  /**
-   * A Vector3 | Array | scalar representing the object's local rotation. Default is (0, 0, 0).
-   *
-   * @type {TresVectorProp}
-   */
-  rotation: TresVectorProp
-  /**
-   * A Vector3 | Array | scalar representing the object's local scale. Default is (0, 0, 0).
-   *
-   * @type {TresVectorProp}
-   */
-  scale: TresVectorProp
-  /**
-   * Color of the material, by default set to white (0xffffff).
-   *
-   * @type {TresColor}
-   */
-  color: TresColor
-}
-
-declare module 'vue' {
-  export interface GlobalComponents {
-    TresMesh: DefineComponent<Partial<Omit<Mesh, OverwrittenProps> & TresModifiedObject>>
-    TresBoxBufferGeometry: DefineComponent<
-      Partial<Omit<BoxBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresBoxGeometry: DefineComponent<Partial<Omit<BoxGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
-    TresBufferGeometry: DefineComponent<
-      Partial<Omit<BufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresCapsuleBufferGeometry: DefineComponent<
-      Partial<Omit<CapsuleBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresCapsuleGeometry: DefineComponent<
-      Partial<Omit<CapsuleGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresCircleBufferGeometry: DefineComponent<
-      Partial<Omit<CircleBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresCircleGeometry: DefineComponent<
-      Partial<Omit<CircleGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresConeBufferGeometry: DefineComponent<
-      Partial<Omit<ConeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresConeGeometry: DefineComponent<Partial<Omit<ConeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
-    TresCylinderBufferGeometry: DefineComponent<
-      Partial<Omit<CylinderBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresCylinderGeometry: DefineComponent<
-      Partial<Omit<CylinderGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresDodecahedronBufferGeometry: DefineComponent<
-      Partial<Omit<DodecahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresDodecahedronGeometry: DefineComponent<
-      Partial<Omit<DodecahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresEdgesGeometry: DefineComponent<
-      Partial<Omit<EdgesGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresExtrudeBufferGeometry: DefineComponent<
-      Partial<Omit<ExtrudeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresExtrudeGeometry: DefineComponent<
-      Partial<Omit<ExtrudeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresIcosahedronBufferGeometry: DefineComponent<
-      Partial<Omit<IcosahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresIcosahedronGeometry: DefineComponent<
-      Partial<Omit<IcosahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresInstancedBufferGeometry: DefineComponent<
-      Partial<Omit<InstancedBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresLatheBufferGeometry: DefineComponent<
-      Partial<Omit<LatheBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresLatheGeometry: DefineComponent<
-      Partial<Omit<LatheGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresOctahedronBufferGeometry: DefineComponent<
-      Partial<Omit<OctahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresOctahedronGeometry: DefineComponent<
-      Partial<Omit<OctahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresPlaneBufferGeometry: DefineComponent<
-      Partial<Omit<PlaneBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresPlaneGeometry: DefineComponent<
-      Partial<Omit<PlaneGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresPolyhedronBufferGeometry: DefineComponent<
-      Partial<Omit<PolyhedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresPolyhedronGeometry: DefineComponent<
-      Partial<Omit<PolyhedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresRingBufferGeometry: DefineComponent<
-      Partial<Omit<RingBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresRingGeometry: DefineComponent<Partial<Omit<RingGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
-    TresShapeBufferGeometry: DefineComponent<
-      Partial<Omit<ShapeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresShapeGeometry: DefineComponent<
-      Partial<Omit<ShapeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresSphereBufferGeometry: DefineComponent<
-      Partial<Omit<SphereBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresSphereGeometry: DefineComponent<
-      Partial<Omit<SphereGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTetrahedronBufferGeometry: DefineComponent<
-      Partial<Omit<TetrahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTetrahedronGeometry: DefineComponent<
-      Partial<Omit<TetrahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTorusBufferGeometry: DefineComponent<
-      Partial<Omit<TorusBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTorusGeometry: DefineComponent<
-      Partial<Omit<TorusGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTorusKnotBufferGeometry: DefineComponent<
-      Partial<Omit<TorusKnotBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTorusKnotGeometry: DefineComponent<
-      Partial<Omit<TorusKnotGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTubeBufferGeometry: DefineComponent<
-      Partial<Omit<TubeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresTubeGeometry: DefineComponent<Partial<Omit<TubeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
-    TresWireframeGeometry: DefineComponent<
-      Partial<Omit<WireframeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>
-    >
-    TresAmbientLight: DefineComponent<Partial<Omit<AmbientLight, OverwrittenProps> & TresModifiedObject>>
-    TresArrowHelper: DefineComponent<Partial<Omit<ArrowHelper, OverwrittenProps> & TresModifiedObject>>
-    TresAxesHelper: DefineComponent<Partial<Omit<AxesHelper, OverwrittenProps> & TresModifiedObject>>
-    TresBox3Helper: DefineComponent<Partial<Omit<Box3Helper, OverwrittenProps> & TresModifiedObject>>
-    TresBoxHelper: DefineComponent<Partial<Omit<BoxHelper, OverwrittenProps> & TresModifiedObject>>
-    TresCameraHelper: DefineComponent<Partial<Omit<CameraHelper, OverwrittenProps> & TresModifiedObject>>
-    TresDirectionalLight: DefineComponent<Partial<Omit<DirectionalLight, OverwrittenProps> & TresModifiedObject>>
-    TresDirectionalLightHelper: DefineComponent<
-      Partial<Omit<DirectionalLightHelper, OverwrittenProps> & TresModifiedObject>
-    >
-    TresGridHelper: DefineComponent<Partial<Omit<GridHelper, OverwrittenProps> & TresModifiedObject>>
-    TresHemisphereLight: DefineComponent<Partial<Omit<HemisphereLight, OverwrittenProps> & TresModifiedObject>>
-    TresHemisphereLightHelper: DefineComponent<
-      Partial<Omit<HemisphereLightHelper, OverwrittenProps> & TresModifiedObject>
-    >
-    TresLight: DefineComponent<Partial<Omit<Light, OverwrittenProps> & TresModifiedObject>>
-    TresLineBasicMaterial: DefineComponent<Partial<Omit<LineBasicMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresLineDashedMaterial: DefineComponent<Partial<Omit<LineDashedMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMaterial: DefineComponent<Partial<Omit<Material, OverwrittenProps> & TresModifiedObject>>
-    TresMeshBasicMaterial: DefineComponent<Partial<Omit<MeshBasicMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshDepthMaterial: DefineComponent<Partial<Omit<MeshDepthMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshDistanceMaterial: DefineComponent<
-      Partial<Omit<MeshDistanceMaterial, OverwrittenProps> & TresModifiedObject>
-    >
-    TresMeshLambertMaterial: DefineComponent<Partial<Omit<MeshLambertMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshMatcapMaterial: DefineComponent<Partial<Omit<MeshMatcapMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshNormalMaterial: DefineComponent<Partial<Omit<MeshNormalMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshPhongMaterial: DefineComponent<Partial<Omit<MeshPhongMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresMeshPhysicalMaterial: DefineComponent<
-      Partial<Omit<MeshPhysicalMaterial, OverwrittenProps> & TresModifiedObject>
-    >
-    TresMeshStandardMaterial: DefineComponent<
-      Partial<Omit<MeshStandardMaterial, OverwrittenProps> & TresModifiedObject>
-    >
-    TresMeshToonMaterial: DefineComponent<Partial<Omit<MeshToonMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresPlaneHelper: DefineComponent<Partial<Omit<PlaneHelper, OverwrittenProps> & TresModifiedObject>>
-    TresPointLight: DefineComponent<Partial<Omit<PointLight, OverwrittenProps> & TresModifiedObject>>
-    TresPointLightHelper: DefineComponent<Partial<Omit<PointLightHelper, OverwrittenProps> & TresModifiedObject>>
-    TresPointsMaterial: DefineComponent<Partial<Omit<PointsMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresPolarGridHelper: DefineComponent<Partial<Omit<PolarGridHelper, OverwrittenProps> & TresModifiedObject>>
-    TresRawShaderMaterial: DefineComponent<Partial<Omit<RawShaderMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresRectAreaLight: DefineComponent<Partial<Omit<RectAreaLight, OverwrittenProps> & TresModifiedObject>>
-    TresShaderMaterial: DefineComponent<Partial<Omit<ShaderMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresShadowMaterial: DefineComponent<Partial<Omit<ShadowMaterial, OverwrittenProps> & TresModifiedObject>>
-    TresSkeletonHelper: DefineComponent<Partial<Omit<SkeletonHelper, OverwrittenProps> & TresModifiedObject>>
-    TresSpotLight: DefineComponent<Partial<Omit<SpotLight, OverwrittenProps> & TresModifiedObject>>
-    TresSpotLightHelper: DefineComponent<Partial<Omit<SpotLightHelper, OverwrittenProps> & TresModifiedObject>>
-    TresSpriteMaterial: DefineComponent<Partial<Omit<SpriteMaterial, OverwrittenProps> & TresModifiedObject>>
-  }
-}

+ 4 - 0
packages/tres/package.json

@@ -20,6 +20,9 @@
       "require": "./dist/index.d.ts",
       "import": "./dist/index.d.ts"
     },
+    "./components": {
+      "types": "./dist/types/tres-components.d.ts"
+    },
     "./styles": "./dist/style.css",
     "./*": "./dist/tres.js"
   },
@@ -64,6 +67,7 @@
     "kolorist": "^1.7.0",
     "pathe": "^1.1.0",
     "rollup-plugin-analyzer": "^4.0.0",
+    "rollup-plugin-copy": "^3.4.0",
     "rollup-plugin-visualizer": "^5.9.0",
     "three": "latest",
     "unplugin": "^1.3.1",

+ 30 - 5
packages/tres/plugins/vite-tres-types-plugin.ts

@@ -10,20 +10,26 @@ export const unplugin = createUnplugin(() => {
     apply: 'build',
     configResolved(config) {
       // Check if the output directory exists, if not create it
-      const outputDir = join(config.root, '.tres')
+      const outputDir = join(config.root, 'src/types')
       if (!fs.existsSync(outputDir)) {
         fs.mkdirSync(outputDir)
       }
 
       const typeDefs = `
       import type { DefineComponent } from 'vue'
-      import { TresObject, TresColor, TresVectorProp } from '/@/types'
+      import type { Vector2, Vector3, Color } from 'three'
+      export type TresVectorProp = Vector2 | Vector3 | number[] | number
+      export type TresColor = string | number | Color | number[]
       import type {
         Mesh,
         ${Object.keys(THREE)
           .filter(
             key =>
-              key.endsWith('Geometry') || key.endsWith('Material') || key.endsWith('Helper') || key.endsWith('Light'),
+              key.endsWith('Geometry') ||
+              key.endsWith('Material') ||
+              key.endsWith('Helper') ||
+              key.endsWith('Light') ||
+              key.endsWith('Camera'),
           )
           .join(',\n')}
       } from 'three';
@@ -54,7 +60,19 @@ export const unplugin = createUnplugin(() => {
          *
          * @type {TresColor}
          */
-        color: TresColor
+        color: TresColor,
+        /**
+         * Arguments of the THREE instance, by default set to empty array.
+         *
+         * @type {any[]}
+         * 
+         * @example
+         * 
+         * \`\`\`html
+         * <TresBoxGeometry args="[1, 3, 4]" /> // BoxGeometry(1, 3, 4)
+         * \`\`\`
+         */
+        args?: any[],
       }
       
       declare module 'vue' {
@@ -68,7 +86,14 @@ export const unplugin = createUnplugin(() => {
         )
         .join('\n')}
         ${Object.keys(THREE)
-          .filter(key => key.endsWith('Material') || key.endsWith('Helper') || key.endsWith('Light'))
+          .filter(
+            key =>
+              key.endsWith('Geometry') ||
+              key.endsWith('Material') ||
+              key.endsWith('Helper') ||
+              key.endsWith('Light') ||
+              key.endsWith('Camera'),
+          )
           .map(key => `Tres${key}: DefineComponent<Partial<Omit<${key}, OverwrittenProps > & TresModifiedObject>>`)
           .join('\n')}
         }

+ 1 - 0
packages/tres/src/components/index.ts

@@ -0,0 +1 @@
+export * from './TresCanvas'

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

@@ -2,8 +2,8 @@ import { App } from 'vue'
 import { TresCanvas } from '/@/components/TresCanvas'
 export * from '/@/composables'
 export * from '/@/core/catalogue'
-export * from './keys'
-export * from './types'
+export * from '/@/components'
+export * from '/@/types'
 
 export interface TresOptions {
   extends?: Record<string, unknown>

+ 270 - 0
packages/tres/src/types/tres-components.d.ts

@@ -0,0 +1,270 @@
+
+      import type { DefineComponent } from 'vue'
+      import type { Vector2, Vector3, Color } from 'three'
+      export type TresVectorProp = Vector2 | Vector3 | number[] | number
+      export type TresColor = string | number | Color | number[]
+      import type {
+        Mesh,
+        AmbientLight,
+ArrayCamera,
+ArrowHelper,
+AxesHelper,
+Box3Helper,
+BoxBufferGeometry,
+BoxGeometry,
+BoxHelper,
+BufferGeometry,
+Camera,
+CameraHelper,
+CapsuleBufferGeometry,
+CapsuleGeometry,
+CircleBufferGeometry,
+CircleGeometry,
+ConeBufferGeometry,
+ConeGeometry,
+CubeCamera,
+CylinderBufferGeometry,
+CylinderGeometry,
+DirectionalLight,
+DirectionalLightHelper,
+DodecahedronBufferGeometry,
+DodecahedronGeometry,
+EdgesGeometry,
+ExtrudeBufferGeometry,
+ExtrudeGeometry,
+GridHelper,
+HemisphereLight,
+HemisphereLightHelper,
+IcosahedronBufferGeometry,
+IcosahedronGeometry,
+InstancedBufferGeometry,
+LatheBufferGeometry,
+LatheGeometry,
+Light,
+LineBasicMaterial,
+LineDashedMaterial,
+Material,
+MeshBasicMaterial,
+MeshDepthMaterial,
+MeshDistanceMaterial,
+MeshLambertMaterial,
+MeshMatcapMaterial,
+MeshNormalMaterial,
+MeshPhongMaterial,
+MeshPhysicalMaterial,
+MeshStandardMaterial,
+MeshToonMaterial,
+OctahedronBufferGeometry,
+OctahedronGeometry,
+OrthographicCamera,
+PerspectiveCamera,
+PlaneBufferGeometry,
+PlaneGeometry,
+PlaneHelper,
+PointLight,
+PointLightHelper,
+PointsMaterial,
+PolarGridHelper,
+PolyhedronBufferGeometry,
+PolyhedronGeometry,
+RawShaderMaterial,
+RectAreaLight,
+RingBufferGeometry,
+RingGeometry,
+ShaderMaterial,
+ShadowMaterial,
+ShapeBufferGeometry,
+ShapeGeometry,
+SkeletonHelper,
+SphereBufferGeometry,
+SphereGeometry,
+SpotLight,
+SpotLightHelper,
+SpriteMaterial,
+StereoCamera,
+TetrahedronBufferGeometry,
+TetrahedronGeometry,
+TorusBufferGeometry,
+TorusGeometry,
+TorusKnotBufferGeometry,
+TorusKnotGeometry,
+TubeBufferGeometry,
+TubeGeometry,
+WireframeGeometry
+      } from 'three';
+
+      type OverwrittenProps = 'position' | 'rotation' | 'scale' | 'color'
+
+      type TresModifiedObject = {
+        /**
+         * A Vector3 | Array | scalar representing the object's local position. Default is (0, 0, 0).
+         *
+         * @type {TresVectorProp}
+         */
+        position: TresVectorProp
+        /**
+         * A Vector3 | Array | scalar representing the object's local rotation. Default is (0, 0, 0).
+         *
+         * @type {TresVectorProp}
+         */
+        rotation: TresVectorProp
+        /**
+         * A Vector3 | Array | scalar representing the object's local scale. Default is (0, 0, 0).
+         *
+         * @type {TresVectorProp}
+         */
+        scale: TresVectorProp
+        /**
+         * Color of the material, by default set to white (0xffffff).
+         *
+         * @type {TresColor}
+         */
+        color: TresColor,
+        /**
+         * Arguments of the THREE instance, by default set to empty array.
+         *
+         * @type {any[]}
+         * 
+         * @example
+         * 
+         * ```html
+         * <TresBoxGeometry args="[1, 3, 4]" /> // BoxGeometry(1, 3, 4)
+         * ```
+         */
+        args?: any[],
+      }
+      
+      declare module 'vue' {
+        export interface GlobalComponents {
+          TresMesh: DefineComponent<Partial<Omit<Mesh, OverwrittenProps> & TresModifiedObject>>
+      TresBoxBufferGeometry: DefineComponent<Partial<Omit<BoxBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresBoxGeometry: DefineComponent<Partial<Omit<BoxGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresBufferGeometry: DefineComponent<Partial<Omit<BufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCapsuleBufferGeometry: DefineComponent<Partial<Omit<CapsuleBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCapsuleGeometry: DefineComponent<Partial<Omit<CapsuleGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCircleBufferGeometry: DefineComponent<Partial<Omit<CircleBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCircleGeometry: DefineComponent<Partial<Omit<CircleGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresConeBufferGeometry: DefineComponent<Partial<Omit<ConeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresConeGeometry: DefineComponent<Partial<Omit<ConeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCylinderBufferGeometry: DefineComponent<Partial<Omit<CylinderBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresCylinderGeometry: DefineComponent<Partial<Omit<CylinderGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresDodecahedronBufferGeometry: DefineComponent<Partial<Omit<DodecahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresDodecahedronGeometry: DefineComponent<Partial<Omit<DodecahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresEdgesGeometry: DefineComponent<Partial<Omit<EdgesGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresExtrudeBufferGeometry: DefineComponent<Partial<Omit<ExtrudeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresExtrudeGeometry: DefineComponent<Partial<Omit<ExtrudeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresIcosahedronBufferGeometry: DefineComponent<Partial<Omit<IcosahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresIcosahedronGeometry: DefineComponent<Partial<Omit<IcosahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresInstancedBufferGeometry: DefineComponent<Partial<Omit<InstancedBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresLatheBufferGeometry: DefineComponent<Partial<Omit<LatheBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresLatheGeometry: DefineComponent<Partial<Omit<LatheGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresOctahedronBufferGeometry: DefineComponent<Partial<Omit<OctahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresOctahedronGeometry: DefineComponent<Partial<Omit<OctahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresPlaneBufferGeometry: DefineComponent<Partial<Omit<PlaneBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresPlaneGeometry: DefineComponent<Partial<Omit<PlaneGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresPolyhedronBufferGeometry: DefineComponent<Partial<Omit<PolyhedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresPolyhedronGeometry: DefineComponent<Partial<Omit<PolyhedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresRingBufferGeometry: DefineComponent<Partial<Omit<RingBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresRingGeometry: DefineComponent<Partial<Omit<RingGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresShapeBufferGeometry: DefineComponent<Partial<Omit<ShapeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresShapeGeometry: DefineComponent<Partial<Omit<ShapeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresSphereBufferGeometry: DefineComponent<Partial<Omit<SphereBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresSphereGeometry: DefineComponent<Partial<Omit<SphereGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTetrahedronBufferGeometry: DefineComponent<Partial<Omit<TetrahedronBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTetrahedronGeometry: DefineComponent<Partial<Omit<TetrahedronGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTorusBufferGeometry: DefineComponent<Partial<Omit<TorusBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTorusGeometry: DefineComponent<Partial<Omit<TorusGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTorusKnotBufferGeometry: DefineComponent<Partial<Omit<TorusKnotBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTorusKnotGeometry: DefineComponent<Partial<Omit<TorusKnotGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTubeBufferGeometry: DefineComponent<Partial<Omit<TubeBufferGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresTubeGeometry: DefineComponent<Partial<Omit<TubeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+TresWireframeGeometry: DefineComponent<Partial<Omit<WireframeGeometry['parameters'], OverwrittenProps> & TresModifiedObject>>
+        TresAmbientLight: DefineComponent<Partial<Omit<AmbientLight, OverwrittenProps > & TresModifiedObject>>
+TresArrayCamera: DefineComponent<Partial<Omit<ArrayCamera, OverwrittenProps > & TresModifiedObject>>
+TresArrowHelper: DefineComponent<Partial<Omit<ArrowHelper, OverwrittenProps > & TresModifiedObject>>
+TresAxesHelper: DefineComponent<Partial<Omit<AxesHelper, OverwrittenProps > & TresModifiedObject>>
+TresBox3Helper: DefineComponent<Partial<Omit<Box3Helper, OverwrittenProps > & TresModifiedObject>>
+TresBoxBufferGeometry: DefineComponent<Partial<Omit<BoxBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresBoxGeometry: DefineComponent<Partial<Omit<BoxGeometry, OverwrittenProps > & TresModifiedObject>>
+TresBoxHelper: DefineComponent<Partial<Omit<BoxHelper, OverwrittenProps > & TresModifiedObject>>
+TresBufferGeometry: DefineComponent<Partial<Omit<BufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCamera: DefineComponent<Partial<Omit<Camera, OverwrittenProps > & TresModifiedObject>>
+TresCameraHelper: DefineComponent<Partial<Omit<CameraHelper, OverwrittenProps > & TresModifiedObject>>
+TresCapsuleBufferGeometry: DefineComponent<Partial<Omit<CapsuleBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCapsuleGeometry: DefineComponent<Partial<Omit<CapsuleGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCircleBufferGeometry: DefineComponent<Partial<Omit<CircleBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCircleGeometry: DefineComponent<Partial<Omit<CircleGeometry, OverwrittenProps > & TresModifiedObject>>
+TresConeBufferGeometry: DefineComponent<Partial<Omit<ConeBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresConeGeometry: DefineComponent<Partial<Omit<ConeGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCubeCamera: DefineComponent<Partial<Omit<CubeCamera, OverwrittenProps > & TresModifiedObject>>
+TresCylinderBufferGeometry: DefineComponent<Partial<Omit<CylinderBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresCylinderGeometry: DefineComponent<Partial<Omit<CylinderGeometry, OverwrittenProps > & TresModifiedObject>>
+TresDirectionalLight: DefineComponent<Partial<Omit<DirectionalLight, OverwrittenProps > & TresModifiedObject>>
+TresDirectionalLightHelper: DefineComponent<Partial<Omit<DirectionalLightHelper, OverwrittenProps > & TresModifiedObject>>
+TresDodecahedronBufferGeometry: DefineComponent<Partial<Omit<DodecahedronBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresDodecahedronGeometry: DefineComponent<Partial<Omit<DodecahedronGeometry, OverwrittenProps > & TresModifiedObject>>
+TresEdgesGeometry: DefineComponent<Partial<Omit<EdgesGeometry, OverwrittenProps > & TresModifiedObject>>
+TresExtrudeBufferGeometry: DefineComponent<Partial<Omit<ExtrudeBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresExtrudeGeometry: DefineComponent<Partial<Omit<ExtrudeGeometry, OverwrittenProps > & TresModifiedObject>>
+TresGridHelper: DefineComponent<Partial<Omit<GridHelper, OverwrittenProps > & TresModifiedObject>>
+TresHemisphereLight: DefineComponent<Partial<Omit<HemisphereLight, OverwrittenProps > & TresModifiedObject>>
+TresHemisphereLightHelper: DefineComponent<Partial<Omit<HemisphereLightHelper, OverwrittenProps > & TresModifiedObject>>
+TresIcosahedronBufferGeometry: DefineComponent<Partial<Omit<IcosahedronBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresIcosahedronGeometry: DefineComponent<Partial<Omit<IcosahedronGeometry, OverwrittenProps > & TresModifiedObject>>
+TresInstancedBufferGeometry: DefineComponent<Partial<Omit<InstancedBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresLatheBufferGeometry: DefineComponent<Partial<Omit<LatheBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresLatheGeometry: DefineComponent<Partial<Omit<LatheGeometry, OverwrittenProps > & TresModifiedObject>>
+TresLight: DefineComponent<Partial<Omit<Light, OverwrittenProps > & TresModifiedObject>>
+TresLineBasicMaterial: DefineComponent<Partial<Omit<LineBasicMaterial, OverwrittenProps > & TresModifiedObject>>
+TresLineDashedMaterial: DefineComponent<Partial<Omit<LineDashedMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMaterial: DefineComponent<Partial<Omit<Material, OverwrittenProps > & TresModifiedObject>>
+TresMeshBasicMaterial: DefineComponent<Partial<Omit<MeshBasicMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshDepthMaterial: DefineComponent<Partial<Omit<MeshDepthMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshDistanceMaterial: DefineComponent<Partial<Omit<MeshDistanceMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshLambertMaterial: DefineComponent<Partial<Omit<MeshLambertMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshMatcapMaterial: DefineComponent<Partial<Omit<MeshMatcapMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshNormalMaterial: DefineComponent<Partial<Omit<MeshNormalMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshPhongMaterial: DefineComponent<Partial<Omit<MeshPhongMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshPhysicalMaterial: DefineComponent<Partial<Omit<MeshPhysicalMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshStandardMaterial: DefineComponent<Partial<Omit<MeshStandardMaterial, OverwrittenProps > & TresModifiedObject>>
+TresMeshToonMaterial: DefineComponent<Partial<Omit<MeshToonMaterial, OverwrittenProps > & TresModifiedObject>>
+TresOctahedronBufferGeometry: DefineComponent<Partial<Omit<OctahedronBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresOctahedronGeometry: DefineComponent<Partial<Omit<OctahedronGeometry, OverwrittenProps > & TresModifiedObject>>
+TresOrthographicCamera: DefineComponent<Partial<Omit<OrthographicCamera, OverwrittenProps > & TresModifiedObject>>
+TresPerspectiveCamera: DefineComponent<Partial<Omit<PerspectiveCamera, OverwrittenProps > & TresModifiedObject>>
+TresPlaneBufferGeometry: DefineComponent<Partial<Omit<PlaneBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresPlaneGeometry: DefineComponent<Partial<Omit<PlaneGeometry, OverwrittenProps > & TresModifiedObject>>
+TresPlaneHelper: DefineComponent<Partial<Omit<PlaneHelper, OverwrittenProps > & TresModifiedObject>>
+TresPointLight: DefineComponent<Partial<Omit<PointLight, OverwrittenProps > & TresModifiedObject>>
+TresPointLightHelper: DefineComponent<Partial<Omit<PointLightHelper, OverwrittenProps > & TresModifiedObject>>
+TresPointsMaterial: DefineComponent<Partial<Omit<PointsMaterial, OverwrittenProps > & TresModifiedObject>>
+TresPolarGridHelper: DefineComponent<Partial<Omit<PolarGridHelper, OverwrittenProps > & TresModifiedObject>>
+TresPolyhedronBufferGeometry: DefineComponent<Partial<Omit<PolyhedronBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresPolyhedronGeometry: DefineComponent<Partial<Omit<PolyhedronGeometry, OverwrittenProps > & TresModifiedObject>>
+TresRawShaderMaterial: DefineComponent<Partial<Omit<RawShaderMaterial, OverwrittenProps > & TresModifiedObject>>
+TresRectAreaLight: DefineComponent<Partial<Omit<RectAreaLight, OverwrittenProps > & TresModifiedObject>>
+TresRingBufferGeometry: DefineComponent<Partial<Omit<RingBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresRingGeometry: DefineComponent<Partial<Omit<RingGeometry, OverwrittenProps > & TresModifiedObject>>
+TresShaderMaterial: DefineComponent<Partial<Omit<ShaderMaterial, OverwrittenProps > & TresModifiedObject>>
+TresShadowMaterial: DefineComponent<Partial<Omit<ShadowMaterial, OverwrittenProps > & TresModifiedObject>>
+TresShapeBufferGeometry: DefineComponent<Partial<Omit<ShapeBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresShapeGeometry: DefineComponent<Partial<Omit<ShapeGeometry, OverwrittenProps > & TresModifiedObject>>
+TresSkeletonHelper: DefineComponent<Partial<Omit<SkeletonHelper, OverwrittenProps > & TresModifiedObject>>
+TresSphereBufferGeometry: DefineComponent<Partial<Omit<SphereBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresSphereGeometry: DefineComponent<Partial<Omit<SphereGeometry, OverwrittenProps > & TresModifiedObject>>
+TresSpotLight: DefineComponent<Partial<Omit<SpotLight, OverwrittenProps > & TresModifiedObject>>
+TresSpotLightHelper: DefineComponent<Partial<Omit<SpotLightHelper, OverwrittenProps > & TresModifiedObject>>
+TresSpriteMaterial: DefineComponent<Partial<Omit<SpriteMaterial, OverwrittenProps > & TresModifiedObject>>
+TresStereoCamera: DefineComponent<Partial<Omit<StereoCamera, OverwrittenProps > & TresModifiedObject>>
+TresTetrahedronBufferGeometry: DefineComponent<Partial<Omit<TetrahedronBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTetrahedronGeometry: DefineComponent<Partial<Omit<TetrahedronGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTorusBufferGeometry: DefineComponent<Partial<Omit<TorusBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTorusGeometry: DefineComponent<Partial<Omit<TorusGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTorusKnotBufferGeometry: DefineComponent<Partial<Omit<TorusKnotBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTorusKnotGeometry: DefineComponent<Partial<Omit<TorusKnotGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTubeBufferGeometry: DefineComponent<Partial<Omit<TubeBufferGeometry, OverwrittenProps > & TresModifiedObject>>
+TresTubeGeometry: DefineComponent<Partial<Omit<TubeGeometry, OverwrittenProps > & TresModifiedObject>>
+TresWireframeGeometry: DefineComponent<Partial<Omit<WireframeGeometry, OverwrittenProps > & TresModifiedObject>>
+        }
+      }
+      

+ 2 - 10
packages/tres/tsconfig.json

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

+ 16 - 2
packages/tres/vite.config.ts

@@ -1,3 +1,4 @@
+import fs from 'fs'
 /// <reference types="vitest" />
 
 import { defineConfig } from 'vite'
@@ -8,10 +9,11 @@ import Inspect from 'vite-plugin-inspect'
 
 import dts from 'vite-plugin-dts'
 import { ViteTresPlugin } from './plugins/vite-tres-types-plugin'
+import copy from 'rollup-plugin-copy'
 
 import analyze from 'rollup-plugin-analyzer'
 /* import { visualizer } from 'rollup-plugin-visualizer' */
-import { resolve } from 'pathe'
+import { resolve, join } from 'pathe'
 
 import { lightGreen, yellow, gray, bold } from 'kolorist'
 
@@ -39,10 +41,19 @@ export default defineConfig({
         },
       },
     }),
-    ViteTresPlugin(),
     dts({
       insertTypesEntry: true,
+      afterBuild() {
+        console.log('DTS generated')
+        const outputDir = join(__dirname, 'dist/types')
+        const outputFile = join(outputDir, 'index.d.ts')
+        if (fs.existsSync(outputFile)) {
+          const index = fs.readFileSync(outputFile, 'utf-8')
+          fs.writeFileSync(outputFile, `import './tres-components';\n${index}`)
+        }
+      },
     }),
+    ViteTresPlugin(),
     banner({
       content: `/**\n * name: ${pkg.name}\n * version: v${
         pkg.version
@@ -70,6 +81,9 @@ export default defineConfig({
     copyPublicDir: false,
     rollupOptions: {
       plugins: [
+        copy({
+          targets: [{ src: 'src/types/tres-components.d.ts', dest: 'dist/types' }],
+        }),
         /*   analyze(), */
         /*    visualizer({
           open: true,

+ 53 - 0
pnpm-lock.yaml

@@ -112,6 +112,7 @@ importers:
       kolorist: ^1.7.0
       pathe: ^1.1.0
       rollup-plugin-analyzer: ^4.0.0
+      rollup-plugin-copy: ^3.4.0
       rollup-plugin-visualizer: ^5.9.0
       three: latest
       unplugin: ^1.3.1
@@ -138,6 +139,7 @@ importers:
       kolorist: 1.7.0
       pathe: 1.1.0
       rollup-plugin-analyzer: 4.0.0
+      rollup-plugin-copy: 3.4.0
       rollup-plugin-visualizer: 5.9.0
       three: 0.150.1
       unplugin: 1.3.1
@@ -1158,6 +1160,19 @@ packages:
     resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
     dev: true
 
+  /@types/fs-extra/8.1.2:
+    resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==}
+    dependencies:
+      '@types/node': 18.14.0
+    dev: true
+
+  /@types/glob/7.2.0:
+    resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+    dependencies:
+      '@types/minimatch': 5.1.2
+      '@types/node': 18.14.0
+    dev: true
+
   /@types/is-ci/3.0.0:
     resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==}
     dependencies:
@@ -1172,6 +1187,10 @@ packages:
     resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
     dev: true
 
+  /@types/minimatch/5.1.2:
+    resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+    dev: true
+
   /@types/minimist/1.2.2:
     resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
     dev: true
@@ -2175,6 +2194,10 @@ packages:
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
     dev: true
 
+  /colorette/1.4.0:
+    resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+    dev: true
+
   /colorette/2.0.19:
     resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
     dev: true
@@ -3332,6 +3355,20 @@ packages:
       define-properties: 1.2.0
     dev: true
 
+  /globby/10.0.1:
+    resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==}
+    engines: {node: '>=8'}
+    dependencies:
+      '@types/glob': 7.2.0
+      array-union: 2.1.0
+      dir-glob: 3.0.1
+      fast-glob: 3.2.12
+      glob: 7.2.3
+      ignore: 5.2.4
+      merge2: 1.4.1
+      slash: 3.0.0
+    dev: true
+
   /globby/11.1.0:
     resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
     engines: {node: '>=10'}
@@ -3685,6 +3722,11 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
+  /is-plain-object/3.0.1:
+    resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
   /is-potential-custom-element-name/1.0.1:
     resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
     dev: true
@@ -4875,6 +4917,17 @@ packages:
     engines: {node: '>=8.0.0'}
     dev: true
 
+  /rollup-plugin-copy/3.4.0:
+    resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==}
+    engines: {node: '>=8.3'}
+    dependencies:
+      '@types/fs-extra': 8.1.2
+      colorette: 1.4.0
+      fs-extra: 8.1.0
+      globby: 10.0.1
+      is-plain-object: 3.0.1
+    dev: true
+
   /rollup-plugin-visualizer/5.9.0:
     resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==}
     engines: {node: '>=14'}