From 224ab06a4404e2ae5a0cbd2f43041961862b09fd Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Fri, 22 Dec 2023 16:31:02 +0100 Subject: [PATCH 01/52] feat: 474 vue chrome devtools plugin (#479) * feat: vue chrome devtools * feat: editable scenes from devtools * chore(lint): fix lint errors * feat: highlight material * chore(lint): fix --- docs/package.json | 6 +- playground/package.json | 3 +- playground/src/components/TheExperience.vue | 37 +- playground/src/components/TheSphere.vue | 1 + pnpm-lock.yaml | 1707 +++++++------------ src/components/TresCanvas.vue | 5 + src/devtools/highlight.ts | 24 + src/devtools/index.ts | 1 + src/devtools/plugin.ts | 292 ++++ src/devtools/utils.ts | 27 + src/utils/index.ts | 100 ++ src/utils/perf.ts | 2 +- 12 files changed, 1112 insertions(+), 1093 deletions(-) create mode 100644 src/devtools/highlight.ts create mode 100644 src/devtools/index.ts create mode 100644 src/devtools/plugin.ts create mode 100644 src/devtools/utils.ts diff --git a/docs/package.json b/docs/package.json index 097a757d5..38eb07d73 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,11 +8,11 @@ "build": "vitepress build", "preview": "vitepress preview" }, + "dependencies": { + "@tresjs/core": "workspace:3.6.0" + }, "devDependencies": { "unocss": "^0.58.0", "vite-svg-loader": "^5.1.0" - }, - "dependencies": { - "@tresjs/core": "workspace:3.6.0-next.0" } } diff --git a/playground/package.json b/playground/package.json index 2d29c1920..74f6190cb 100644 --- a/playground/package.json +++ b/playground/package.json @@ -10,15 +10,16 @@ }, "dependencies": { "@tresjs/cientos": "3.6.0", + "@tresjs/core": "workspace:^", "vue-router": "^4.2.5" }, "devDependencies": { "@tresjs/leches": "0.15.0-next.3", "@tweakpane/plugin-essentials": "^0.2.0", - "vite-plugin-vue-devtools": "1.0.0-rc.6", "unplugin-auto-import": "^0.17.2", "vite-plugin-glsl": "^1.2.1", "vite-plugin-qrcode": "^0.2.3", + "vite-plugin-vue-devtools": "1.0.0-rc.6", "vue-tsc": "^1.8.25" } } diff --git a/playground/src/components/TheExperience.vue b/playground/src/components/TheExperience.vue index 51a02dc51..500a8b19d 100644 --- a/playground/src/components/TheExperience.vue +++ b/playground/src/components/TheExperience.vue @@ -3,6 +3,8 @@ import { ref, watchEffect } from 'vue' import { BasicShadowMap, SRGBColorSpace, NoToneMapping } from 'three' import { TresCanvas } from '@tresjs/core' import { OrbitControls } from '@tresjs/cientos' +import { TresLeches, useControls } from '@tresjs/leches' +import '@tresjs/leches/styles' import TheSphere from './TheSphere.vue' const gl = { @@ -17,21 +19,21 @@ const gl = { const wireframe = ref(true) const canvas = ref() +const meshRef = ref() + +const { isVisible } = useControls({ + isVisible: true, +}) watchEffect(() => { - if (canvas.value) { - console.log(canvas.value.context) + if (meshRef.value) { + console.log(meshRef.value) } }) diff --git a/playground/src/components/TheSphere.vue b/playground/src/components/TheSphere.vue index fa8b6118b..9c1761fcc 100644 --- a/playground/src/components/TheSphere.vue +++ b/playground/src/components/TheSphere.vue @@ -3,6 +3,7 @@ diff --git a/playground/src/pages/primitives.vue b/playground/src/pages/primitives.vue new file mode 100644 index 000000000..086d4d868 --- /dev/null +++ b/playground/src/pages/primitives.vue @@ -0,0 +1,135 @@ + + + diff --git a/playground/src/router.ts b/playground/src/router.ts index 06409bf1d..29e8f29a2 100644 --- a/playground/src/router.ts +++ b/playground/src/router.ts @@ -81,6 +81,11 @@ const routes = [ name: 'Perf', component: () => import('./pages/perf/index.vue'), }, + { + path: '/primitives', + name: 'Primitives', + component: () => import('./pages/primitives.vue'), + }, { path: '/rendering-modes', name: 'Rendering Modes', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fba73b6ec..238e02ae8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -89,7 +89,7 @@ importers: version: 0.160.1 unocss: specifier: ^0.58.3 - version: 0.58.4(postcss@8.4.32)(vite@5.0.10) + version: 0.58.4(postcss@8.4.33)(vite@5.0.10) unplugin: specifier: ^1.6.0 version: 1.6.0 @@ -116,7 +116,7 @@ importers: version: 5.1.0(vue@3.4.15) vitepress: specifier: 1.0.0-rc.34 - version: 1.0.0-rc.34(@algolia/client-search@4.22.0)(postcss@8.4.32)(search-insights@2.13.0)(typescript@5.3.3) + version: 1.0.0-rc.34(@algolia/client-search@4.22.0)(postcss@8.4.33)(search-insights@2.13.0)(typescript@5.3.3) vitest: specifier: ^1.1.1 version: 1.2.2(@vitest/ui@1.2.2)(jsdom@23.0.1) @@ -135,7 +135,7 @@ importers: devDependencies: unocss: specifier: ^0.58.3 - version: 0.58.4(postcss@8.4.32)(vite@5.0.10) + version: 0.58.4(postcss@8.4.33)(vite@5.0.10) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.4.15) @@ -2119,7 +2119,7 @@ packages: sirv: 2.0.4 dev: true - /@unocss/postcss@0.58.4(postcss@8.4.32): + /@unocss/postcss@0.58.4(postcss@8.4.33): resolution: {integrity: sha512-pg2qCGakV1TyMApPdvuvqqmPDhgogPWF14J97BT5zIfGYITAJSmBsm7d3+06w6EuqIS+vcYRw+qCV3oX6qTeiA==} engines: {node: '>=14'} peerDependencies: @@ -2131,7 +2131,7 @@ packages: css-tree: 2.3.1 fast-glob: 3.3.2 magic-string: 0.30.5 - postcss: 8.4.32 + postcss: 8.4.33 dev: true /@unocss/preset-attributify@0.58.4: @@ -2927,7 +2927,7 @@ packages: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: true /balanced-match@1.0.2: @@ -3395,8 +3395,8 @@ packages: /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: true /conventional-changelog-angular@7.0.0: @@ -7919,7 +7919,7 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unocss@0.58.4(postcss@8.4.32)(vite@5.0.10): + /unocss@0.58.4(postcss@8.4.33)(vite@5.0.10): resolution: {integrity: sha512-JYeQddAIObJPr6nuxahOgku0MIzjIaQ2P73KtJr0zSuzx6kiq20jf67FgDIOP1Ks6s7iJd7Ga3yuY2h49XjDjg==} engines: {node: '>=14'} peerDependencies: @@ -7935,7 +7935,7 @@ packages: '@unocss/cli': 0.58.4 '@unocss/core': 0.58.4 '@unocss/extractor-arbitrary-variants': 0.58.4 - '@unocss/postcss': 0.58.4(postcss@8.4.32) + '@unocss/postcss': 0.58.4(postcss@8.4.33) '@unocss/preset-attributify': 0.58.4 '@unocss/preset-icons': 0.58.4 '@unocss/preset-mini': 0.58.4 @@ -8337,7 +8337,7 @@ packages: fsevents: 2.3.3 dev: true - /vitepress@1.0.0-rc.34(@algolia/client-search@4.22.0)(postcss@8.4.32)(search-insights@2.13.0)(typescript@5.3.3): + /vitepress@1.0.0-rc.34(@algolia/client-search@4.22.0)(postcss@8.4.33)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-TUbTiSdAZFni2XlHlpx61KikgkQ5uG4Wtmw2R0SXhIOG6qGqzDJczAFjkMc4i45I9c3KyatwOYe8oEfCnzVYwQ==} hasBin: true peerDependencies: @@ -8360,7 +8360,7 @@ packages: mark.js: 8.11.1 minisearch: 6.3.0 mrmime: 2.0.0 - postcss: 8.4.32 + postcss: 8.4.33 shikiji: 0.9.19 shikiji-core: 0.9.19 shikiji-transformers: 0.9.19 @@ -8660,8 +8660,8 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 dev: true diff --git a/src/core/nodeOps.ts b/src/core/nodeOps.ts index c1def0f9a..d16f80192 100644 --- a/src/core/nodeOps.ts +++ b/src/core/nodeOps.ts @@ -1,4 +1,4 @@ -import type { RendererOptions } from 'vue' +import { type RendererOptions } from 'vue' import { BufferAttribute } from 'three' import { isFunction } from '@alvarosabu/utils' import type { Object3D, Camera } from 'three' @@ -49,7 +49,7 @@ export const nodeOps: RendererOptions = { if (props?.object === undefined) logError('Tres primitives need a prop \'object\'') const object = props.object as TresObject name = object.type - instance = Object.assign(object, { type: name, attach: props.attach }) + instance = Object.assign(object.clone(), { type: name }) as TresObject } else { const target = catalogue.value[name] @@ -136,6 +136,8 @@ export const nodeOps: RendererOptions = { if (!node) return const ctx = node.__tres // remove is only called on the node being removed and not on child nodes. + node.parent = node.parent || scene + const { deregisterObjectAtPointerEventHandler, deregisterBlockingObjectAtPointerEventHandler, @@ -180,15 +182,41 @@ export const nodeOps: RendererOptions = { disposeMaterialsAndGeometries(node) deregisterCameraIfRequired(node as Object3D) deregisterAtPointerEventHandlerIfRequired?.(node as TresObject) + invalidateInstance(node as TresObject) + node.dispose?.() + } - invalidateInstance(node as TresObject) - node.dispose?.() }, - patchProp(node, prop, _prevValue, nextValue) { + patchProp(node, prop, prevValue, nextValue) { if (node) { let root = node let key = prop + if (node.__tres.primitive && key === 'object' && prevValue !== null) { + // If the prop 'object' is changed, we need to re-instance the object and swap the old one with the new one + const newInstance = nodeOps.createElement('primitive', undefined, undefined, { + object: nextValue, + }) + for (const subkey in newInstance) { + if (subkey === 'uuid') continue + const target = node[subkey] + const value = newInstance[subkey] + if (!target?.set && !isFunction(target)) node[subkey] = value + else if (target.constructor === value.constructor && target?.copy) target?.copy(value) + else if (Array.isArray(value)) target.set(...value) + else if (!target.isColor && target.setScalar) target.setScalar(value) + else target.set(value) + } + newInstance.__tres.root = scene?.__tres.root + // This code is needed to handle the case where the prop 'object' type change from a group to a mesh or vice versa, otherwise the object will not be rendered correctly (models will be invisible) + if (newInstance.isGroup) { + node.geometry = undefined + node.material = undefined + } + else { + delete node.isGroup + } + } if (node.__tres.root) { const { @@ -211,7 +239,7 @@ export const nodeOps: RendererOptions = { if (key === 'args') { const prevNode = node as TresObject3D - const prevArgs = _prevValue ?? [] + const prevArgs = prevValue ?? [] const args = nextValue ?? [] const instanceName = node.__tres.type || node.type From ddc229e6e492b9e7887add0fcc679a9ae4e47f5c Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Fri, 8 Mar 2024 09:50:45 +0100 Subject: [PATCH 11/52] fix: `nodeOps` is now a function (#579) * fix: `nodeOps` is now a function * chore(test): updated tests for `nodeOps` --- playground/src/components/MultipleCanvas.vue | 97 -------------------- playground/src/pages/multiple.vue | 81 +++++++++++++++- src/components/TresCanvas.vue | 11 ++- src/core/nodeOps.ts | 8 +- src/core/nodeOpts.test.ts | 26 +++--- src/core/renderer.ts | 12 --- 6 files changed, 102 insertions(+), 133 deletions(-) delete mode 100644 playground/src/components/MultipleCanvas.vue delete mode 100644 src/core/renderer.ts diff --git a/playground/src/components/MultipleCanvas.vue b/playground/src/components/MultipleCanvas.vue deleted file mode 100644 index dad40f41a..000000000 --- a/playground/src/components/MultipleCanvas.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - \ No newline at end of file diff --git a/playground/src/pages/multiple.vue b/playground/src/pages/multiple.vue index 7e8e659b4..d89499989 100644 --- a/playground/src/pages/multiple.vue +++ b/playground/src/pages/multiple.vue @@ -1,7 +1,80 @@ - + diff --git a/src/components/TresCanvas.vue b/src/components/TresCanvas.vue index f9d0bd0e8..c1d70b4b0 100644 --- a/src/components/TresCanvas.vue +++ b/src/components/TresCanvas.vue @@ -6,8 +6,8 @@ import type { ShadowMapType, ToneMapping, } from 'three' -import type { Ref, - App } from 'vue' +import * as THREE from 'three' +import type { Ref, App } from 'vue' import { computed, onMounted, @@ -20,6 +20,7 @@ import { defineComponent, h, getCurrentInstance, + createRenderer, } from 'vue' import pkg from '../../package.json' import { @@ -29,7 +30,7 @@ import { type TresContext, } from '../composables' import { extend } from '../core/catalogue' -import { render } from '../core/renderer' +import { nodeOps } from '../core/nodeOps' import type { RendererPresetsType } from '../composables/useRenderer/const' import type { TresCamera, TresObject } from '../types/' @@ -87,6 +88,7 @@ const slots = defineSlots<{ }>() const instance = getCurrentInstance()?.appContext.app +extend(THREE) const createInternalComponent = (context: TresContext) => defineComponent({ @@ -105,6 +107,9 @@ const createInternalComponent = (context: TresContext) => const mountCustomRenderer = (context: TresContext) => { const InternalComponent = createInternalComponent(context) + + const { render } = createRenderer(nodeOps()) + render(h(InternalComponent), scene.value as unknown as TresObject) } diff --git a/src/core/nodeOps.ts b/src/core/nodeOps.ts index d16f80192..ac1a35d0e 100644 --- a/src/core/nodeOps.ts +++ b/src/core/nodeOps.ts @@ -12,7 +12,6 @@ function noop(fn: string): any { fn } -let scene: TresScene | null = null const { logError } = useLogger() const supportedPointerEvents = [ @@ -33,8 +32,9 @@ export function invalidateInstance(instance: TresObject) { } -export const nodeOps: RendererOptions = { - createElement(tag, _isSVG, _anchor, props): TresObject | null { +export const nodeOps: () => RendererOptions = () => { + let scene: TresScene | null = null + return { createElement(tag, _isSVG, _anchor, props): TresObject | null { if (!props) props = {} if (!props.args) { @@ -303,5 +303,5 @@ export const nodeOps: RendererOptions = { setScopeId: () => noop('setScopeId'), cloneNode: () => noop('cloneNode'), - insertStaticContent: () => noop('insertStaticContent'), + insertStaticContent: () => noop('insertStaticContent') } } diff --git a/src/core/nodeOpts.test.ts b/src/core/nodeOpts.test.ts index cddd7a04f..e232e9dab 100644 --- a/src/core/nodeOpts.test.ts +++ b/src/core/nodeOpts.test.ts @@ -15,7 +15,7 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.isObject3D).toBeTruthy() @@ -28,7 +28,7 @@ describe('nodeOps', () => { const props = { args: [10, 3, 16, 100] } // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.parameters.radius).toBe(10) @@ -43,7 +43,7 @@ describe('nodeOps', () => { const props = { args: [75, 2, 0.1, 5] } // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.isCamera).toBeTruthy() @@ -60,7 +60,7 @@ describe('nodeOps', () => { consoleWarnSpy.mockImplementation(() => { }) // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.isCamera).toBeTruthy() @@ -74,7 +74,7 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.isMaterial).toBeTruthy() @@ -87,7 +87,7 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps.createElement(tag, false, null, props) + const instance = nodeOps().createElement(tag, false, null, props) // Assert expect(instance.isBufferGeometry).toBeTruthy() @@ -115,7 +115,7 @@ describe('nodeOps', () => { } // Test - nodeOps.insert(child, parent, null) + nodeOps().insert(child, parent, null) // Assert expect(parent.children.includes(child)).toBeTruthy() @@ -130,10 +130,10 @@ describe('nodeOps', () => { child.__vnode = { type: 'TresMesh', } - nodeOps.insert(child, parent) + nodeOps().insert(child, parent) // Test - nodeOps.remove(child) + nodeOps().remove(child) // Assert expect(!parent.children.includes(child)).toBeTruthy() @@ -151,7 +151,7 @@ describe('nodeOps', () => { const nextValue = false // Test - nodeOps.patchProp(node, prop, null, nextValue) + nodeOps().patchProp(node, prop, null, nextValue) // Assert expect(node.visible === nextValue) @@ -169,7 +169,7 @@ describe('nodeOps', () => { const nextValue = 5 // Test - nodeOps.patchProp(node, prop, null, nextValue) + nodeOps().patchProp(node, prop, null, nextValue) // Assert expect(node.position.x === nextValue) @@ -187,7 +187,7 @@ describe('nodeOps', () => { const nextValue = true // Test - nodeOps.patchProp(node, prop, null, nextValue) + nodeOps().patchProp(node, prop, null, nextValue) // Assert expect(node.castShadow === nextValue) @@ -201,7 +201,7 @@ describe('nodeOps', () => { child.parent = parent // Test - const parentNode = nodeOps.parentNode(child) + const parentNode = nodeOps().parentNode(child) // Assert expect(parentNode === parent) diff --git a/src/core/renderer.ts b/src/core/renderer.ts deleted file mode 100644 index 316cb6020..000000000 --- a/src/core/renderer.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as THREE from 'three' - -import { createRenderer } from 'vue' -import { extend } from './catalogue' -import { nodeOps } from './nodeOps' - -export const { render } = createRenderer(nodeOps) - -// Creates the catalogue of components based on THREE namespace -extend(THREE) - -export default { extend } From 963e662ae992fc7879e30541966cf98df0749b0a Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Mon, 18 Mar 2024 21:42:00 +0100 Subject: [PATCH 12/52] chore: next package json version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 948885a1c..4596de179 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@tresjs/core", "type": "module", - "version": "3.7.0", + "version": "4.0.0-next.0", "packageManager": "pnpm@8.10.2", "description": "Declarative ThreeJS using Vue Components", "author": "Alvaro Saburido (https://github.com/alvarosabu/)", From 47713bc1a73c2fcd0a5b41955630a8d88489a2c4 Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Mon, 18 Mar 2024 21:43:27 +0100 Subject: [PATCH 13/52] chore: release v4.0.0-next.1 --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b28e1565d..7e1b67b62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ + + +## [4.0.0-next.1](https://github.com/Tresjs/tres/compare/3.7.0...4.0.0-next.1) (2024-03-18) + + +### Features + +* 140 on demand rendering ([#497](https://github.com/Tresjs/tres/issues/497)) ([f688c64](https://github.com/Tresjs/tres/commit/f688c6447be887c4675a57ecabb5182d8b7d02cf)) +* 492 set tone mapping default to acesfilmictonemapping ([#498](https://github.com/Tresjs/tres/issues/498)) ([c4547f9](https://github.com/Tresjs/tres/commit/c4547f92615a43b7b56b34c0e1ee9f4b78a2230b)) +* 503 conditional rendering of primitives ([#514](https://github.com/Tresjs/tres/issues/514)) ([79d8a76](https://github.com/Tresjs/tres/commit/79d8a762da6b6e23771a20314f7902eff4635acf)) +* 516 localstate for custom renderer node instances instead of userdata ([#522](https://github.com/Tresjs/tres/issues/522)) ([08717ef](https://github.com/Tresjs/tres/commit/08717efd0f631c085340b1fea4eb6c154c63608b)) +* remove default camera warning ([#499](https://github.com/Tresjs/tres/issues/499)) ([8bbafde](https://github.com/Tresjs/tres/commit/8bbafde48a33753f0b6560da36a4d128aaa83cc6)) +* update to three `v160` and vue `v3.4` ([#488](https://github.com/Tresjs/tres/issues/488)) ([5fad3b8](https://github.com/Tresjs/tres/commit/5fad3b8095c09cfe758e2553da3df49b29b1ce1a)) + + +### Bug Fixes + +* `nodeOps` is now a function ([#579](https://github.com/Tresjs/tres/issues/579)) ([ddc229e](https://github.com/Tresjs/tres/commit/ddc229e6e492b9e7887add0fcc679a9ae4e47f5c)) +* camera aspect ([52dad5c](https://github.com/Tresjs/tres/commit/52dad5c98271f80f4d454bbcce1bb5844960f943)) +* **types:** added `Object3DEventMap` to `Object3D` generics for point event handling ([#491](https://github.com/Tresjs/tres/issues/491)) ([a63eb90](https://github.com/Tresjs/tres/commit/a63eb9099fcaf97b1c96abe5667ee71ca2fd611f)) + +## [4.0.0-next.0](https://github.com/Tresjs/tres/compare/3.7.0...4.0.0-next.1) (2023-12-22) + + +### Features + +* 474 vue chrome devtools plugin ([#479](https://github.com/Tresjs/tres/issues/479)) ([224ab06](https://github.com/Tresjs/tres/commit/224ab06a4404e2ae5a0cbd2f43041961862b09fd)) + ## [3.7.0](https://github.com/Tresjs/tres/compare/3.6.1...3.7.0) (2024-01-29) ### Features diff --git a/package.json b/package.json index 4596de179..406a26e3b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@tresjs/core", "type": "module", - "version": "4.0.0-next.0", + "version": "4.0.0-next.1", "packageManager": "pnpm@8.10.2", "description": "Declarative ThreeJS using Vue Components", "author": "Alvaro Saburido (https://github.com/alvarosabu/)", From cd0c3bcd891f019cf91f30e5fdd547630332a065 Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Tue, 26 Mar 2024 22:42:25 +0100 Subject: [PATCH 14/52] fix: refactor nodeOps to return methods at the end of the function (#602) * fix: refactor nodeOps to return methods at the end of the function * chore: fix lint --- src/core/nodeOps.ts | 51 ++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/core/nodeOps.ts b/src/core/nodeOps.ts index ac1a35d0e..2eb1e5342 100644 --- a/src/core/nodeOps.ts +++ b/src/core/nodeOps.ts @@ -34,7 +34,7 @@ export function invalidateInstance(instance: TresObject) { export const nodeOps: () => RendererOptions = () => { let scene: TresScene | null = null - return { createElement(tag, _isSVG, _anchor, props): TresObject | null { + function createElement(tag, _isSVG, _anchor, props): TresObject | null { if (!props) props = {} if (!props.args) { @@ -92,8 +92,8 @@ export const nodeOps: () => RendererOptions = () } return instance as TresObject - }, - insert(child, parent) { + } + function insert(child, parent) { if (!child) return if (parent && parent.isScene) { @@ -131,8 +131,8 @@ export const nodeOps: () => RendererOptions = () parentObject[child.attach] = child } } - }, - remove(node) { + } + function remove(node) { if (!node) return const ctx = node.__tres // remove is only called on the node being removed and not on child nodes. @@ -187,14 +187,14 @@ export const nodeOps: () => RendererOptions = () } - }, - patchProp(node, prop, prevValue, nextValue) { + } + function patchProp(node, prop, prevValue, nextValue) { if (node) { let root = node let key = prop if (node.__tres.primitive && key === 'object' && prevValue !== null) { // If the prop 'object' is changed, we need to re-instance the object and swap the old one with the new one - const newInstance = nodeOps.createElement('primitive', undefined, undefined, { + const newInstance = createElement('primitive', undefined, undefined, { object: nextValue, }) for (const subkey in newInstance) { @@ -285,23 +285,26 @@ export const nodeOps: () => RendererOptions = () invalidateInstance(node as TresObject) } - }, + } - parentNode(node) { + function parentNode(node) { return node?.parent || null - }, - createText: () => noop('createText'), - createComment: () => noop('createComment'), - - setText: () => noop('setText'), - - setElementText: () => noop('setElementText'), - nextSibling: () => noop('nextSibling'), - - querySelector: () => noop('querySelector'), - - setScopeId: () => noop('setScopeId'), - cloneNode: () => noop('cloneNode'), + } - insertStaticContent: () => noop('insertStaticContent') } + return { + insert, + remove, + createElement, + patchProp, + parentNode, + createText: () => noop('createText'), + createComment: () => noop('createComment'), + setText: () => noop('setText'), + setElementText: () => noop('setElementText'), + nextSibling: () => noop('nextSibling'), + querySelector: () => noop('querySelector'), + setScopeId: () => noop('setScopeId'), + cloneNode: () => noop('cloneNode'), + insertStaticContent: () => noop('insertStaticContent'), + } } From a6578a7b9add1dfb98a56bf5aebd2c7e9cb3d81e Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Wed, 27 Mar 2024 08:43:22 +0100 Subject: [PATCH 15/52] chore: internal playground organisation (#601) * chore: new internal playground org and testing pages * chore: fix lint * chore: better styling of playground landing page * chore: lint --- docs/public/logo.svg | 32 +++++- playground/components.d.ts | 3 + playground/public/logo.svg | 27 +++++ playground/src/App.vue | 14 ++- playground/src/components/BlenderCube.vue | 18 ++++ playground/src/components/GraphPane.vue | 101 ++++++++++++++++++ playground/src/components/RenderingLogger.vue | 24 +++++ playground/src/composables/state.ts | 11 ++ .../Conditional.vue} | 0 .../pages/{TheGroups.vue => basic/Groups.vue} | 0 .../pages/{lights.vue => basic/Lights.vue} | 0 .../{multiple.vue => basic/Multiple.vue} | 0 .../{primitives.vue => basic/Primitives.vue} | 0 .../src/pages/{ => basic}/Responsiveness.vue | 2 +- .../pages/{TheBasic.vue => basic/index.vue} | 0 .../pages/cameras/{Cameras.vue => index.vue} | 0 playground/src/pages/click-blocking-box.vue | 41 ------- .../TheEvents.vue => events/index.vue} | 0 playground/src/pages/index.vue | 83 +++++++++++++- playground/src/pages/perf/AkuAku.vue | 49 --------- playground/src/pages/perf/OnDemand.vue | 40 +++++++ .../src/pages/rendering-modes/index.vue | 21 ---- .../src/pages/rendering-modes/scene.vue | 32 ------ playground/src/{router.ts => router/index.ts} | 18 +++- playground/src/router/routes/basic.ts | 37 +++++++ playground/src/router/routes/cameras.ts | 17 +++ playground/src/router/routes/events.ts | 7 ++ playground/src/router/routes/index.ts | 11 ++ playground/src/router/routes/performance.ts | 7 ++ playground/vite.config.ts | 5 + 30 files changed, 446 insertions(+), 154 deletions(-) create mode 100644 playground/public/logo.svg create mode 100644 playground/src/components/BlenderCube.vue create mode 100644 playground/src/components/GraphPane.vue create mode 100644 playground/src/components/RenderingLogger.vue create mode 100644 playground/src/composables/state.ts rename playground/src/pages/{TheConditional.vue => basic/Conditional.vue} (100%) rename playground/src/pages/{TheGroups.vue => basic/Groups.vue} (100%) rename playground/src/pages/{lights.vue => basic/Lights.vue} (100%) rename playground/src/pages/{multiple.vue => basic/Multiple.vue} (100%) rename playground/src/pages/{primitives.vue => basic/Primitives.vue} (100%) rename playground/src/pages/{ => basic}/Responsiveness.vue (87%) rename playground/src/pages/{TheBasic.vue => basic/index.vue} (100%) rename playground/src/pages/cameras/{Cameras.vue => index.vue} (100%) delete mode 100644 playground/src/pages/click-blocking-box.vue rename playground/src/pages/{raycaster/TheEvents.vue => events/index.vue} (100%) delete mode 100644 playground/src/pages/perf/AkuAku.vue create mode 100644 playground/src/pages/perf/OnDemand.vue delete mode 100644 playground/src/pages/rendering-modes/index.vue delete mode 100644 playground/src/pages/rendering-modes/scene.vue rename playground/src/{router.ts => router/index.ts} (84%) create mode 100644 playground/src/router/routes/basic.ts create mode 100644 playground/src/router/routes/cameras.ts create mode 100644 playground/src/router/routes/events.ts create mode 100644 playground/src/router/routes/index.ts create mode 100644 playground/src/router/routes/performance.ts diff --git a/docs/public/logo.svg b/docs/public/logo.svg index 809472a68..035ffd955 100644 --- a/docs/public/logo.svg +++ b/docs/public/logo.svg @@ -1,5 +1,27 @@ - - - - - + + + + + + + + + \ No newline at end of file diff --git a/playground/components.d.ts b/playground/components.d.ts index 2040947f7..d78fae7b3 100644 --- a/playground/components.d.ts +++ b/playground/components.d.ts @@ -8,6 +8,7 @@ export {} declare module 'vue' { export interface GlobalComponents { AnimatedModel: typeof import('./src/components/AnimatedModel.vue')['default'] + BlenderCube: typeof import('./src/components/BlenderCube.vue')['default'] CameraOperator: typeof import('./src/components/CameraOperator.vue')['default'] Cameras: typeof import('./src/components/Cameras.vue')['default'] copy: typeof import('./src/components/TheBasic copy.vue')['default'] @@ -17,10 +18,12 @@ declare module 'vue' { DynamicModel: typeof import('./src/components/DynamicModel.vue')['default'] FBXModels: typeof import('./src/components/FBXModels.vue')['default'] Gltf: typeof import('./src/components/gltf/index.vue')['default'] + GraphPane: typeof import('./src/components/GraphPane.vue')['default'] LocalOrbitControls: typeof import('./src/components/LocalOrbitControls.vue')['default'] MeshWobbleMaterial: typeof import('./src/components/meshWobbleMaterial/index.vue')['default'] MultipleCanvas: typeof import('./src/components/MultipleCanvas.vue')['default'] PortalJourney: typeof import('./src/components/portal-journey/index.vue')['default'] + RenderingLogger: typeof import('./src/components/RenderingLogger.vue')['default'] Responsiveness: typeof import('./src/components/Responsiveness.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/playground/public/logo.svg b/playground/public/logo.svg new file mode 100644 index 000000000..035ffd955 --- /dev/null +++ b/playground/public/logo.svg @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/playground/src/App.vue b/playground/src/App.vue index 950cb89e3..1db6204f5 100644 --- a/playground/src/App.vue +++ b/playground/src/App.vue @@ -1,7 +1,17 @@ - diff --git a/playground/src/components/BlenderCube.vue b/playground/src/components/BlenderCube.vue new file mode 100644 index 000000000..8ce1fd809 --- /dev/null +++ b/playground/src/components/BlenderCube.vue @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/playground/src/components/GraphPane.vue b/playground/src/components/GraphPane.vue new file mode 100644 index 000000000..410b927c8 --- /dev/null +++ b/playground/src/components/GraphPane.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/playground/src/components/RenderingLogger.vue b/playground/src/components/RenderingLogger.vue new file mode 100644 index 000000000..eddb08648 --- /dev/null +++ b/playground/src/components/RenderingLogger.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/playground/src/composables/state.ts b/playground/src/composables/state.ts new file mode 100644 index 000000000..70bf5769e --- /dev/null +++ b/playground/src/composables/state.ts @@ -0,0 +1,11 @@ +import { reactive, toRefs } from 'vue' + +const state = reactive({ + renderingTimes: 0, +}) +export function useState() { + return { + ...toRefs(state), + + } +} \ No newline at end of file diff --git a/playground/src/pages/TheConditional.vue b/playground/src/pages/basic/Conditional.vue similarity index 100% rename from playground/src/pages/TheConditional.vue rename to playground/src/pages/basic/Conditional.vue diff --git a/playground/src/pages/TheGroups.vue b/playground/src/pages/basic/Groups.vue similarity index 100% rename from playground/src/pages/TheGroups.vue rename to playground/src/pages/basic/Groups.vue diff --git a/playground/src/pages/lights.vue b/playground/src/pages/basic/Lights.vue similarity index 100% rename from playground/src/pages/lights.vue rename to playground/src/pages/basic/Lights.vue diff --git a/playground/src/pages/multiple.vue b/playground/src/pages/basic/Multiple.vue similarity index 100% rename from playground/src/pages/multiple.vue rename to playground/src/pages/basic/Multiple.vue diff --git a/playground/src/pages/primitives.vue b/playground/src/pages/basic/Primitives.vue similarity index 100% rename from playground/src/pages/primitives.vue rename to playground/src/pages/basic/Primitives.vue diff --git a/playground/src/pages/Responsiveness.vue b/playground/src/pages/basic/Responsiveness.vue similarity index 87% rename from playground/src/pages/Responsiveness.vue rename to playground/src/pages/basic/Responsiveness.vue index a7fc456e8..8d7f15a5a 100644 --- a/playground/src/pages/Responsiveness.vue +++ b/playground/src/pages/basic/Responsiveness.vue @@ -1,5 +1,5 @@ \ No newline at end of file + diff --git a/docs/.vitepress/theme/components/RenderingLogger.vue b/docs/.vitepress/theme/components/RenderingLogger.vue index eddb08648..0fca78844 100644 --- a/docs/.vitepress/theme/components/RenderingLogger.vue +++ b/docs/.vitepress/theme/components/RenderingLogger.vue @@ -1,10 +1,9 @@ ``` - diff --git a/playground/src/components/AkuAku.vue b/playground/src/components/AkuAku.vue index 741932f9a..da35e1437 100644 --- a/playground/src/components/AkuAku.vue +++ b/playground/src/components/AkuAku.vue @@ -2,8 +2,7 @@ import { useTresContext } from '@tresjs/core' import { useGLTF } from '@tresjs/cientos' -const { nodes } = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/AkuAku.glb', - { draco: true }) +const { nodes } = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/AkuAku.glb', { draco: true }) const model = nodes.Cube model.position.set(0, 1, 0) @@ -15,4 +14,4 @@ state.invalidate() \ No newline at end of file + diff --git a/playground/src/components/BlenderCube.vue b/playground/src/components/BlenderCube.vue index 8ce1fd809..349fee298 100644 --- a/playground/src/components/BlenderCube.vue +++ b/playground/src/components/BlenderCube.vue @@ -2,8 +2,7 @@ import { useTresContext } from '@tresjs/core' import { useGLTF } from '@tresjs/cientos' -const { nodes } = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/blender-cube.glb', - { draco: true }) +const { nodes } = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/blender-cube.glb', { draco: true }) const model = nodes.Cube model.position.set(0, 1, 0) @@ -15,4 +14,4 @@ state.invalidate() \ No newline at end of file + diff --git a/playground/src/components/DynamicModel.vue b/playground/src/components/DynamicModel.vue index 1a4926fff..bb99cee45 100644 --- a/playground/src/components/DynamicModel.vue +++ b/playground/src/components/DynamicModel.vue @@ -2,11 +2,10 @@ import { useControls } from '@tresjs/leches' import { useGLTF } from '@tresjs/cientos' -const { nodes } - = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/blender-cube.glb', - { draco: true }) +const { nodes } + = await useGLTF('https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/blender-cube.glb', { draco: true }) -const { scene: AkuAku, nodes: akukuNodes } = await useGLTF( +const { scene: AkuAku } = await useGLTF( 'https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/aku-aku/AkuAku.gltf', { draco: true }, ) @@ -20,4 +19,4 @@ const model = computed(() => isCube.value ? nodes.Cube : AkuAku) \ No newline at end of file + diff --git a/playground/src/components/GraphPane.vue b/playground/src/components/GraphPane.vue index 410b927c8..79110e0f2 100644 --- a/playground/src/components/GraphPane.vue +++ b/playground/src/components/GraphPane.vue @@ -56,11 +56,11 @@ useRafFn(({ timestamp }) => { bg-white dark:bg-dark shadow-xl - rounded - border-4 - border-solid - bg-primary - border-primary + rounded + border-4 + border-solid + bg-primary + border-primary pointer-events-none overflow-hidden" > @@ -98,4 +98,4 @@ useRafFn(({ timestamp }) => { - \ No newline at end of file + diff --git a/playground/src/components/RenderingLogger.vue b/playground/src/components/RenderingLogger.vue index eddb08648..0fca78844 100644 --- a/playground/src/components/RenderingLogger.vue +++ b/playground/src/components/RenderingLogger.vue @@ -1,10 +1,9 @@ \ No newline at end of file + diff --git a/playground/src/router/routes/basic.ts b/playground/src/router/routes/basic.ts index 30de64a11..bb32b163d 100644 --- a/playground/src/router/routes/basic.ts +++ b/playground/src/router/routes/basic.ts @@ -39,4 +39,4 @@ export const basicRoutes = [ name: 'Pierced Props', component: () => import('../../pages/basic/PiercedProps.vue'), }, -] \ No newline at end of file +] diff --git a/playground/src/router/routes/cameras.ts b/playground/src/router/routes/cameras.ts index 978261d99..c96dcaf44 100644 --- a/playground/src/router/routes/cameras.ts +++ b/playground/src/router/routes/cameras.ts @@ -14,4 +14,4 @@ export const cameraRoutes = [ name: 'Multiple Cameras', component: () => import('../../pages/cameras/MultipleCameras.vue'), }, -] \ No newline at end of file +] diff --git a/playground/src/router/routes/events.ts b/playground/src/router/routes/events.ts index b60d568c3..91c59b966 100644 --- a/playground/src/router/routes/events.ts +++ b/playground/src/router/routes/events.ts @@ -4,4 +4,4 @@ export const eventsRoutes = [ name: 'Events', component: () => import('../../pages/events/index.vue'), }, -] \ No newline at end of file +] diff --git a/playground/src/router/routes/index.ts b/playground/src/router/routes/index.ts index 9ba714345..e3dfea724 100644 --- a/playground/src/router/routes/index.ts +++ b/playground/src/router/routes/index.ts @@ -12,4 +12,4 @@ export { cameraRoutes, modelsRoutes, miscRoutes, -} \ No newline at end of file +} diff --git a/playground/src/router/routes/misc.ts b/playground/src/router/routes/misc.ts index 04cbbb70d..2ac0bbb5e 100644 --- a/playground/src/router/routes/misc.ts +++ b/playground/src/router/routes/misc.ts @@ -4,4 +4,4 @@ export const miscRoutes = [ name: 'Text 3D', component: () => import('../../pages/misc/Text3DDemo.vue'), }, -] \ No newline at end of file +] diff --git a/playground/src/router/routes/models.ts b/playground/src/router/routes/models.ts index 1efaac073..742eefc76 100644 --- a/playground/src/router/routes/models.ts +++ b/playground/src/router/routes/models.ts @@ -4,4 +4,4 @@ export const modelsRoutes = [ name: 'Model Primitives', component: () => import('../../pages/models/PrimitivesModel.vue'), }, -] \ No newline at end of file +] diff --git a/playground/src/router/routes/performance.ts b/playground/src/router/routes/performance.ts index 3d64bbef1..aba6f2617 100644 --- a/playground/src/router/routes/performance.ts +++ b/playground/src/router/routes/performance.ts @@ -4,4 +4,4 @@ export const perfRoutes = [ name: 'On Demand', component: () => import('../../pages/perf/OnDemand.vue'), }, -] \ No newline at end of file +] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f45e96497..c6492442c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,7 @@ importers: .: dependencies: '@alvarosabu/utils': -<<<<<<< HEAD specifier: ^3.2.0 -======= - specifier: ^3.1.1 ->>>>>>> main version: 3.2.0 '@vue/devtools-api': specifier: ^6.6.1 @@ -30,31 +26,10 @@ importers: version: 1.9.0 '@tresjs/cientos': specifier: 3.8.0 -<<<<<<< HEAD - version: 3.8.0(@tresjs/core@3.7.0)(three@0.162.0)(tweakpane@4.0.3)(vue@3.4.21) - '@tresjs/eslint-config-vue': - specifier: ^0.2.1 - version: 0.2.1(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0)(typescript@5.4.3) - '@types/three': - specifier: ^0.162.0 - version: 0.162.0 - '@typescript-eslint/eslint-plugin': - specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': - specifier: ^7.4.0 - version: 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.0.4(vite@5.2.6)(vue@3.4.21) -======= - version: 3.8.0(@tresjs/core@)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21) + version: 3.8.0(@tresjs/core@3.5.1)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21) '@tresjs/eslint-config': specifier: ^1.0.0 version: 1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0) - '@tresjs/eslint-config-vue': - specifier: ^0.2.1 - version: 0.2.1(@typescript-eslint/eslint-plugin@7.5.0)(eslint@8.57.0)(typescript@5.4.3) '@types/three': specifier: ^0.163.0 version: 0.163.0 @@ -67,38 +42,23 @@ importers: '@vitejs/plugin-vue': specifier: ^5.0.4 version: 5.0.4(vite@5.2.7)(vue@3.4.21) ->>>>>>> main '@vitest/coverage-c8': specifier: ^0.33.0 version: 0.33.0(vitest@1.4.0) '@vitest/ui': -<<<<<<< HEAD specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) '@vue/test-utils': specifier: ^2.4.5 -======= - specifier: ^1.0.4 - version: 1.4.0(vitest@1.4.0) - '@vue/test-utils': - specifier: ^2.4.3 ->>>>>>> main version: 2.4.5 eslint: specifier: ^8.57.0 version: 8.57.0 eslint-plugin-vue: -<<<<<<< HEAD specifier: ^9.24.0 - version: 9.24.0(eslint@8.57.0) + version: 9.24.1(eslint@8.57.0) esno: specifier: ^4.7.0 -======= - specifier: ^9.19.2 - version: 9.24.0(eslint@8.57.0) - esno: - specifier: ^4.0.0 ->>>>>>> main version: 4.7.0 gsap: specifier: ^3.12.5 @@ -116,11 +76,7 @@ importers: specifier: ^1.1.2 version: 1.1.2 release-it: -<<<<<<< HEAD specifier: ^17.1.1 -======= - specifier: ^17.0.1 ->>>>>>> main version: 17.1.1(typescript@5.4.3) rollup-plugin-analyzer: specifier: ^4.0.0 @@ -132,53 +88,29 @@ importers: specifier: ^5.12.0 version: 5.12.0 three: -<<<<<<< HEAD - specifier: ^0.162.0 - version: 0.162.0 - unocss: - specifier: ^0.58.7 - version: 0.58.7(postcss@8.4.38)(vite@5.2.6) - unplugin: - specifier: ^1.10.0 - version: 1.10.0 -======= specifier: ^0.163.0 version: 0.163.0 unocss: - specifier: ^0.58.0 + specifier: ^0.58.7 version: 0.58.7(postcss@8.4.38)(vite@5.2.7) unplugin: - specifier: ^1.10.1 + specifier: ^1.10.0 version: 1.10.1 ->>>>>>> main unplugin-vue-components: specifier: ^0.26.0 version: 0.26.0(vue@3.4.21) vite: -<<<<<<< HEAD - specifier: ^5.2.6 - version: 5.2.6 -======= specifier: ^5.2.7 version: 5.2.7 ->>>>>>> main vite-plugin-banner: specifier: ^0.7.1 version: 0.7.1 vite-plugin-dts: -<<<<<<< HEAD - specifier: 3.7.3 - version: 3.7.3(typescript@5.4.3)(vite@5.2.6) - vite-plugin-inspect: - specifier: ^0.8.3 - version: 0.8.3(vite@5.2.6) -======= specifier: 3.8.1 version: 3.8.1(typescript@5.4.3)(vite@5.2.7) vite-plugin-inspect: - specifier: ^0.8.1 + specifier: ^0.8.3 version: 0.8.3(vite@5.2.7) ->>>>>>> main vite-plugin-require-transform: specifier: ^1.0.21 version: 1.0.21 @@ -186,23 +118,13 @@ importers: specifier: ^5.1.0 version: 5.1.0(vue@3.4.21) vitepress: -<<<<<<< HEAD - specifier: 1.0.1 - version: 1.0.1(@algolia/client-search@4.23.1)(postcss@8.4.38)(search-insights@2.13.0)(typescript@5.4.3) - vitest: - specifier: ^1.4.0 - version: 1.4.0(@vitest/ui@1.4.0)(jsdom@24.0.0) - vue: - specifier: ^3.4.21 -======= specifier: 1.0.2 version: 1.0.2(@algolia/client-search@4.23.2)(postcss@8.4.38)(search-insights@2.13.0)(typescript@5.4.3) vitest: specifier: ^1.0.4 version: 1.4.0(@vitest/ui@1.4.0)(jsdom@24.0.0) vue: - specifier: ^3.3.11 ->>>>>>> main + specifier: ^3.4.21 version: 3.4.21(typescript@5.4.3) vue-demi: specifier: ^0.14.7 @@ -215,13 +137,8 @@ importers: version: link:.. devDependencies: unocss: -<<<<<<< HEAD specifier: ^0.58.3 - version: 0.58.4(postcss@8.4.38)(vite@5.2.6) -======= - specifier: ^0.58.0 version: 0.58.7(postcss@8.4.38)(vite@5.2.7) ->>>>>>> main vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.4.21) @@ -230,45 +147,25 @@ importers: dependencies: '@tresjs/cientos': specifier: 3.6.0 -<<<<<<< HEAD - version: 3.6.0(@tresjs/core@)(three@0.162.0)(tweakpane@4.0.3)(vue@3.4.21) -======= version: 3.6.0(@tresjs/core@)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21) ->>>>>>> main '@tresjs/core': specifier: workspace:^ version: link:.. vue-router: specifier: ^4.2.5 - version: 4.2.5(vue@3.4.21) + version: 4.3.0(vue@3.4.21) devDependencies: '@tresjs/leches': specifier: 0.15.0-next.3 -<<<<<<< HEAD - version: 0.15.0-next.3(three@0.162.0)(vite@5.2.6)(vue@3.4.21) -======= version: 0.15.0-next.3(three@0.163.0)(vite@5.2.7)(vue@3.4.21) ->>>>>>> main '@tweakpane/plugin-essentials': specifier: ^0.2.0 version: 0.2.1(tweakpane@4.0.3) unplugin-auto-import: specifier: ^0.17.2 - version: 0.17.2(@vueuse/core@10.9.0) + version: 0.17.5(@vueuse/core@10.9.0) vite-plugin-glsl: specifier: ^1.2.1 -<<<<<<< HEAD - version: 1.2.1(vite@5.2.6) - vite-plugin-qrcode: - specifier: ^0.2.3 - version: 0.2.3(vite@5.2.6) - vite-plugin-vue-devtools: - specifier: 1.0.0-rc.6 - version: 1.0.0-rc.6(pug@3.0.2)(vite@5.2.6) - vue-tsc: - specifier: ^1.8.25 - version: 1.8.25(typescript@5.4.3) -======= version: 1.3.0(vite@5.2.7) vite-plugin-qrcode: specifier: ^0.2.3 @@ -279,7 +176,6 @@ importers: vue-tsc: specifier: ^2.0.0 version: 2.0.7(typescript@5.4.3) ->>>>>>> main packages: @@ -288,185 +184,46 @@ packages: engines: {node: '>=0.10.0'} dev: true -<<<<<<< HEAD - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1)(search-insights@2.13.0): - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1) -======= /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) ->>>>>>> main transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: true -<<<<<<< HEAD - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1)(search-insights@2.13.0): -======= /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0): ->>>>>>> main resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: -<<<<<<< HEAD - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1) -======= '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) ->>>>>>> main search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: true -<<<<<<< HEAD - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1): -======= /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2): ->>>>>>> main resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: -<<<<<<< HEAD - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1) - '@algolia/client-search': 4.23.1 - algoliasearch: 4.23.1 - dev: true - - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1): -======= '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) '@algolia/client-search': 4.23.2 algoliasearch: 4.23.2 dev: true /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2): ->>>>>>> main resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: -<<<<<<< HEAD - '@algolia/client-search': 4.23.1 - algoliasearch: 4.23.1 - dev: true - - /@algolia/cache-browser-local-storage@4.23.1: - resolution: {integrity: sha512-1sAJYmXN9TOk6Hd8BUQOglxP9Kq9F0qlISsuWxH6y4UjevevgxhLvA6VrODJb1ghwwQi0nODXxwUhNh0sGF8xw==} - dependencies: - '@algolia/cache-common': 4.23.1 - dev: true - - /@algolia/cache-common@4.23.1: - resolution: {integrity: sha512-w0sqXuwbGyIDsFDHTZzTv79rZjW7vc/6vCPdqYAAkiUlvvCdUo0cCWFXpbMpvYHBS2IXZXJaQY0R9yL/bmk9VQ==} - dev: true - - /@algolia/cache-in-memory@4.23.1: - resolution: {integrity: sha512-Wy5J4c2vLi1Vfsc3qoM/trVtvN9BlV+X2hfiAhfTVclyney6fs/Rjus8lbadl1x5GjlPIgMNGxvr/A/wnJQUBw==} - dependencies: - '@algolia/cache-common': 4.23.1 - dev: true - - /@algolia/client-account@4.23.1: - resolution: {integrity: sha512-E8rALAfC7G1gruxW4zO3WgBkWQDJq1Crnxi45uo/KUYf78x+T7YwojyS42fHz//thbtPyPUC5WZCQlnzqgMZlg==} - dependencies: - '@algolia/client-common': 4.23.1 - '@algolia/client-search': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/client-analytics@4.23.1: - resolution: {integrity: sha512-xtfp/M3TjHStStH/UQoxmt8SeVpxSgdZGcCY61+chG9fmbJHgeYtzECQu7SVZ+LPTW0nmyqMrpKQ9kFcgPnV1A==} - dependencies: - '@algolia/client-common': 4.23.1 - '@algolia/client-search': 4.23.1 - '@algolia/requester-common': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/client-common@4.23.1: - resolution: {integrity: sha512-01lBsO8r4KeXWIDzVQoPMYwOndeAvSQk3xk3Bxwrt2ag5jrGswiq8DgEqPVx+PQw+7T5GY6dS25cYcdv1dVorA==} - dependencies: - '@algolia/requester-common': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/client-personalization@4.23.1: - resolution: {integrity: sha512-B8UEALAg1/6DaLuJOxYTfGBVrLZN4M7FoaYrjbHLw2oF5Y6bxe59Y5ug+lSbs6v9bWx7U9rNVpd8m2I8pobFcA==} - dependencies: - '@algolia/client-common': 4.23.1 - '@algolia/requester-common': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/client-search@4.23.1: - resolution: {integrity: sha512-jeA1ZksO0N33SZhcLRa4paUI7LFJrrhtMlw27eIdPTVv/npV0dMLoNGPg3MuLSeZqRKqfpY7tTOBjRZFMhskLg==} - dependencies: - '@algolia/client-common': 4.23.1 - '@algolia/requester-common': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/logger-common@4.23.1: - resolution: {integrity: sha512-hGsqJrpeZfw1Ng8ctWj9gg8zXlSmEMA0cfbBn3yoZa3so8oQZmB9uz57AJcJj1CfSBf+5SK8/AF4kjTungvgUA==} - dev: true - - /@algolia/logger-console@4.23.1: - resolution: {integrity: sha512-6QYjtxsDwrdFeLoCcZmi9af/EbWkpUYSclx2d342EoayaY8S2tCORgqwzDmPPOpvi5Y6zPnDsj2BG7vrpK8bdg==} - dependencies: - '@algolia/logger-common': 4.23.1 - dev: true - - /@algolia/recommend@4.23.1: - resolution: {integrity: sha512-9Td+htxUYkUxrkaPOum9Q1jAy+NogxpwZ+Vvn3X+IBIfXECrNhIff+u1ddIirRM2rMphWrrO/3GWLZaKY7FOxw==} - dependencies: - '@algolia/cache-browser-local-storage': 4.23.1 - '@algolia/cache-common': 4.23.1 - '@algolia/cache-in-memory': 4.23.1 - '@algolia/client-common': 4.23.1 - '@algolia/client-search': 4.23.1 - '@algolia/logger-common': 4.23.1 - '@algolia/logger-console': 4.23.1 - '@algolia/requester-browser-xhr': 4.23.1 - '@algolia/requester-common': 4.23.1 - '@algolia/requester-node-http': 4.23.1 - '@algolia/transporter': 4.23.1 - dev: true - - /@algolia/requester-browser-xhr@4.23.1: - resolution: {integrity: sha512-dM8acMp6sn1HRoQrUiBYQCZvTrFwLwFuHagZH88nKhL52bUrtZXH2qUQ8RMQBb9am71J9COLyMgZYdyR+u8Ktg==} - dependencies: - '@algolia/requester-common': 4.23.1 - dev: true - - /@algolia/requester-common@4.23.1: - resolution: {integrity: sha512-G9+ySLxPBtn2o6Mk4NoxPnkYtAe/isxrVy5LmJ4za+aYEdV5tvZpgvn+k4558T7XoRBrI2eQKyjnvQs7zJeCdw==} - dev: true - - /@algolia/requester-node-http@4.23.1: - resolution: {integrity: sha512-prpVKKc/WRAtZqZx3A6Ds+D6bl3jgnY4Nw8BhCO9yzwMu5oXaOFsZrzFRBeVUJbtOWMc/DMP38vY6DpdV6NSfw==} - dependencies: - '@algolia/requester-common': 4.23.1 - dev: true - - /@algolia/transporter@4.23.1: - resolution: {integrity: sha512-8ucVx0hV7yIeTZUFsix31UEIJFRauPriWlzLBbDy9gRHrK45WbMQ1S9FliDdoY5OvbFxi0/5OKRj0Dw1EkbcJA==} - dependencies: - '@algolia/cache-common': 4.23.1 - '@algolia/logger-common': 4.23.1 - '@algolia/requester-common': 4.23.1 -======= '@algolia/client-search': 4.23.2 algoliasearch: 4.23.2 dev: true @@ -575,22 +332,10 @@ packages: '@algolia/cache-common': 4.23.2 '@algolia/logger-common': 4.23.2 '@algolia/requester-common': 4.23.2 ->>>>>>> main dev: true /@alvarosabu/utils@3.2.0: resolution: {integrity: sha512-aoGWRfaQjOo9TUwrBA6W0zwTHktgrXy69GIFNILT4gHsqscw6+X8P6uoSlZVQFr887SPm8x3aDin5EBVq8y4pw==} -<<<<<<< HEAD - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: true -======= ->>>>>>> main /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} @@ -703,89 +448,19 @@ packages: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} dev: true -<<<<<<< HEAD - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} -======= /@babel/code-frame@7.24.2: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} ->>>>>>> main engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.2 picocolors: 1.0.0 dev: true -<<<<<<< HEAD - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 - dev: true - - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} -======= /@babel/compat-data@7.24.1: resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.24.3: - resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} ->>>>>>> main - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.1 - '@babel/helper-compilation-targets': 7.23.6 -<<<<<<< HEAD - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 - '@babel/parser': 7.24.1 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.24.3: resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} @@ -794,8 +469,6 @@ packages: '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 -======= ->>>>>>> main '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helpers': 7.24.1 '@babel/parser': 7.24.1 @@ -811,16 +484,6 @@ packages: - supports-color dev: true - /@babel/generator@7.24.1: - resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - /@babel/generator@7.24.1: resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} engines: {node: '>=6.9.0'} @@ -835,7 +498,7 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true /@babel/helper-compilation-targets@7.23.6: @@ -844,57 +507,11 @@ packages: dependencies: '@babel/compat-data': 7.24.1 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 dev: true -<<<<<<< HEAD - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} -======= - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 -======= - '@babel/core': 7.24.3 ->>>>>>> main - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 -<<<<<<< HEAD - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} @@ -907,8 +524,6 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 -======= ->>>>>>> main '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 @@ -924,34 +539,31 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true -<<<<<<< HEAD - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): -======= /@babel/helper-module-imports@7.24.3: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} @@ -959,44 +571,12 @@ packages: '@babel/types': 7.24.0 dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): ->>>>>>> main - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: -======= ->>>>>>> main '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.24.3 @@ -1009,12 +589,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.24.0 dev: true /@babel/helper-plugin-utils@7.24.0: @@ -1022,44 +597,12 @@ packages: engines: {node: '>=6.9.0'} dev: true -<<<<<<< HEAD - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} -======= - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: -======= ->>>>>>> main '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 @@ -1070,26 +613,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.24.0 dev: true /@babel/helper-string-parser@7.24.1: @@ -1105,31 +643,6 @@ packages: engines: {node: '>=6.9.0'} dev: true -<<<<<<< HEAD - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color - dev: true - -======= ->>>>>>> main /@babel/helpers@7.24.1: resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} engines: {node: '>=6.9.0'} @@ -1151,35 +664,6 @@ packages: picocolors: 1.0.0 dev: true -<<<<<<< HEAD - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - dev: true - - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.9 - dev: true - -======= ->>>>>>> main /@babel/parser@7.24.1: resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} @@ -1187,30 +671,12 @@ packages: dependencies: '@babel/types': 7.24.0 -<<<<<<< HEAD - /@babel/plugin-proposal-decorators@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==} -======= /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} ->>>>>>> main engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.6) - dev: true - - /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} -======= '@babel/core': 7.24.3 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 @@ -1219,81 +685,33 @@ packages: /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} ->>>>>>> main engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} -======= '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} ->>>>>>> main engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): -======= '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3): ->>>>>>> main resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} -======= '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.23.6): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} @@ -1304,111 +722,28 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} -======= - '@babel/core': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - dev: true - - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -======= ->>>>>>> main '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true -<<<<<<< HEAD - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} -======= - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: true - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -======= ->>>>>>> main '@babel/core': 7.24.3 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 dev: true -<<<<<<< HEAD - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} -======= - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) - dev: true - - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - dev: true - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} engines: {node: '>=6.9.0'} @@ -1422,67 +757,18 @@ packages: '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} -======= - '@babel/core': 7.24.3 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) - dev: true - - /@babel/preset-typescript@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} ->>>>>>> main - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - dev: true - /@babel/preset-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: -======= ->>>>>>> main '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) -<<<<<<< HEAD - dev: true - - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - dev: true - - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 -======= ->>>>>>> main dev: true /@babel/template@7.24.0: @@ -1494,48 +780,6 @@ packages: '@babel/types': 7.24.0 dev: true -<<<<<<< HEAD - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} -======= - /@babel/traverse@7.24.1: - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} ->>>>>>> main - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.1 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 -<<<<<<< HEAD - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} @@ -1546,8 +790,6 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 -======= ->>>>>>> main '@babel/parser': 7.24.1 '@babel/types': 7.24.0 debug: 4.3.4 @@ -1556,24 +798,6 @@ packages: - supports-color dev: true - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -1586,16 +810,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true -<<<<<<< HEAD - /@docsearch/css@3.6.0: - resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} - dev: true - - /@docsearch/js@3.6.0(@algolia/client-search@4.23.1)(search-insights@2.13.0): - resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==} - dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.1)(search-insights@2.13.0) -======= /@clack/core@0.3.4: resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} dependencies: @@ -1621,7 +835,6 @@ packages: resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==} dependencies: '@docsearch/react': 3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0) ->>>>>>> main preact: 10.20.1 transitivePeerDependencies: - '@algolia/client-search' @@ -1631,11 +844,7 @@ packages: - search-insights dev: true -<<<<<<< HEAD - /@docsearch/react@3.6.0(@algolia/client-search@4.23.1)(search-insights@2.13.0): -======= /@docsearch/react@3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0): ->>>>>>> main resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1652,17 +861,10 @@ packages: search-insights: optional: true dependencies: -<<<<<<< HEAD - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.1)(algoliasearch@4.23.1) - '@docsearch/css': 3.6.0 - algoliasearch: 4.23.1 -======= '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) '@docsearch/css': 3.6.0 algoliasearch: 4.23.2 ->>>>>>> main search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' @@ -2178,19 +1380,6 @@ packages: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils@2.1.20: - resolution: {integrity: sha512-t8TeKlYK/5i9yTY9VAGAE4P0qQHd/0vH+VSRO+bdpxlt8wqB6f2I0/IrciRsdeFZPMoL8IICgP7lgl2ZtbG8Tw==} - dependencies: - '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.7 - '@iconify/types': 2.0.0 - debug: 4.3.4 - kolorist: 1.8.0 - local-pkg: 0.5.0 - transitivePeerDependencies: - - supports-color - dev: true - /@iconify/utils@2.1.22: resolution: {integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA==} dependencies: @@ -2229,15 +1418,6 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2247,21 +1427,11 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -2270,13 +1440,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2291,40 +1454,29 @@ packages: call-bind: 1.0.7 dev: true - /@microsoft/api-extractor-model@7.28.3: - resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} + /@microsoft/api-extractor-model@7.28.13: + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0 + '@rushstack/node-core-library': 4.0.2 transitivePeerDependencies: - '@types/node' dev: true -<<<<<<< HEAD - /@microsoft/api-extractor@7.39.0: - resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} -======= /@microsoft/api-extractor@7.43.0: resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} ->>>>>>> main hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.3 + '@microsoft/api-extractor-model': 7.28.13 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 -<<<<<<< HEAD - '@rushstack/node-core-library': 3.62.0 - '@rushstack/rig-package': 0.5.1 - '@rushstack/ts-command-line': 4.17.1 - colors: 1.2.5 -======= '@rushstack/node-core-library': 4.0.2 '@rushstack/rig-package': 0.5.2 '@rushstack/terminal': 0.10.0 '@rushstack/ts-command-line': 4.19.1 ->>>>>>> main lodash: 4.17.21 + minimatch: 3.0.8 resolve: 1.22.8 semver: 7.5.4 source-map: 0.6.1 @@ -2521,11 +1673,7 @@ packages: conventional-changelog: 5.1.0 conventional-recommended-bump: 9.0.0 release-it: 17.1.1(typescript@5.4.3) -<<<<<<< HEAD - semver: 7.5.4 -======= semver: 7.6.0 ->>>>>>> main dev: true /@rollup/pluginutils@5.1.0: @@ -2542,101 +1690,62 @@ packages: picomatch: 2.3.1 dev: true -<<<<<<< HEAD - /@rollup/rollup-android-arm-eabi@4.13.1: - resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==} -======= /@rollup/rollup-android-arm-eabi@4.14.0: resolution: {integrity: sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==} ->>>>>>> main cpu: [arm] os: [android] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-android-arm64@4.13.1: - resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==} -======= /@rollup/rollup-android-arm64@4.14.0: resolution: {integrity: sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==} ->>>>>>> main cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-darwin-arm64@4.13.1: - resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==} -======= /@rollup/rollup-darwin-arm64@4.14.0: resolution: {integrity: sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==} ->>>>>>> main cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-darwin-x64@4.13.1: - resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==} -======= /@rollup/rollup-darwin-x64@4.14.0: resolution: {integrity: sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==} ->>>>>>> main cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-arm-gnueabihf@4.13.1: - resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==} -======= /@rollup/rollup-linux-arm-gnueabihf@4.14.0: resolution: {integrity: sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==} ->>>>>>> main cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-arm64-gnu@4.13.1: - resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==} -======= /@rollup/rollup-linux-arm64-gnu@4.14.0: resolution: {integrity: sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==} ->>>>>>> main cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-arm64-musl@4.13.1: - resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==} -======= /@rollup/rollup-linux-arm64-musl@4.14.0: resolution: {integrity: sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==} ->>>>>>> main cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-riscv64-gnu@4.13.1: - resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==} -======= /@rollup/rollup-linux-powerpc64le-gnu@4.14.0: resolution: {integrity: sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==} cpu: [ppc64le] @@ -2647,100 +1756,68 @@ packages: /@rollup/rollup-linux-riscv64-gnu@4.14.0: resolution: {integrity: sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==} ->>>>>>> main cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-s390x-gnu@4.13.1: - resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==} -======= /@rollup/rollup-linux-s390x-gnu@4.14.0: resolution: {integrity: sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==} ->>>>>>> main cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-x64-gnu@4.13.1: - resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==} -======= /@rollup/rollup-linux-x64-gnu@4.14.0: resolution: {integrity: sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==} ->>>>>>> main cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-linux-x64-musl@4.13.1: - resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==} -======= /@rollup/rollup-linux-x64-musl@4.14.0: resolution: {integrity: sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==} ->>>>>>> main cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-win32-arm64-msvc@4.13.1: - resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==} -======= /@rollup/rollup-win32-arm64-msvc@4.14.0: resolution: {integrity: sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==} ->>>>>>> main cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-win32-ia32-msvc@4.13.1: - resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==} -======= /@rollup/rollup-win32-ia32-msvc@4.14.0: resolution: {integrity: sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==} ->>>>>>> main cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true -<<<<<<< HEAD - /@rollup/rollup-win32-x64-msvc@4.13.1: - resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==} -======= /@rollup/rollup-win32-x64-msvc@4.14.0: resolution: {integrity: sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==} ->>>>>>> main cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@rushstack/node-core-library@3.62.0: - resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} + /@rushstack/node-core-library@4.0.2: + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true dependencies: - colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 @@ -2749,18 +1826,21 @@ packages: z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.5.1: - resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.17.1: - resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} + /@rushstack/terminal@0.10.0: + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: -<<<<<<< HEAD -======= '@rushstack/node-core-library': 4.0.2 supports-color: 8.1.1 dev: true @@ -2769,23 +1849,13 @@ packages: resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} dependencies: '@rushstack/terminal': 0.10.0 ->>>>>>> main '@types/argparse': 1.0.38 argparse: 1.0.10 - colors: 1.2.5 string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' dev: true -<<<<<<< HEAD - /@shikijs/core@1.2.1: - resolution: {integrity: sha512-KaIS0H4EQ3KI2d++TjYqRNgwp8E3M/68e9veR4QtInzA7kKFgcjeiJqb80fuXW+blDy5fmd11PN9g9soz/3ANQ==} - dev: true - - /@shikijs/transformers@1.2.1: - resolution: {integrity: sha512-H7cVtrdv6BW2kx83t2IQgP5ri1IA50mE3QnzgJ0AvOKCGtCEieXu0JIP3245cgjNLrL+LBwb8DtTXdky1iQL9Q==} - dependencies: - shiki: 1.2.1 -======= /@shikijs/core@1.2.4: resolution: {integrity: sha512-ClaUWpt8oTzjcF0MM1P81AeWyzc1sNSJlAjMG80CbwqbFqXSNz+NpQVUC0icobt3sZn43Sn27M4pHD/Jmp3zHw==} dev: true @@ -2794,7 +1864,6 @@ packages: resolution: {integrity: sha512-ysGkpsHxRxLmz8nGKeFdV+gKj1NXt+88sM/34kfKVWTWIXg5gsFOJxJBbG7k+fUR5JlD6sNh65W9qPXrbVE1wQ==} dependencies: shiki: 1.2.4 ->>>>>>> main dev: true /@sinclair/typebox@0.27.8: @@ -2898,11 +1967,7 @@ packages: resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} dev: true -<<<<<<< HEAD - /@tresjs/cientos@3.6.0(@tresjs/core@)(three@0.162.0)(tweakpane@4.0.3)(vue@3.4.21): -======= /@tresjs/cientos@3.6.0(@tresjs/core@)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21): ->>>>>>> main resolution: {integrity: sha512-VM6LamAFlcKufbrtbYN71ncuAw2JPVfKUC6Ey9+scq05qvHdQM8fU0WoppNZEtmIL7m2aUqroOZRnr9LXyZPCg==} peerDependencies: '@tresjs/core': '>=3.2' @@ -2912,21 +1977,12 @@ packages: dependencies: '@tresjs/core': 'link:' '@vueuse/core': 10.9.0(vue@3.4.21) -<<<<<<< HEAD - camera-controls: 2.7.3(three@0.162.0) - stats-gl: 1.0.7 - stats.js: 0.17.0 - three: 0.162.0 - three-custom-shader-material: 5.4.0(three@0.162.0) - three-stdlib: 2.28.7(three@0.162.0) -======= camera-controls: 2.8.3(three@0.163.0) stats-gl: 1.0.7 stats.js: 0.17.0 three: 0.163.0 three-custom-shader-material: 5.4.0(three@0.163.0) three-stdlib: 2.29.6(three@0.163.0) ->>>>>>> main tweakpane: 4.0.3 vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: @@ -2935,11 +1991,7 @@ packages: - react dev: false -<<<<<<< HEAD - /@tresjs/cientos@3.8.0(@tresjs/core@3.7.0)(three@0.162.0)(tweakpane@4.0.3)(vue@3.4.21): -======= - /@tresjs/cientos@3.8.0(@tresjs/core@)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21): ->>>>>>> main + /@tresjs/cientos@3.8.0(@tresjs/core@3.5.1)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21): resolution: {integrity: sha512-m3lyrBHrHkwkDG28B/vQQUeQ9FlG5C50bkULYEoQXrpIAM8toC11DpxY6VMMvbFc4qhZA5QdTZIlznJ8ZDopFQ==} peerDependencies: '@tresjs/core': '>=3.2' @@ -2947,17 +1999,7 @@ packages: tweakpane: '>=3.0.0' vue: '>=3.3' dependencies: -<<<<<<< HEAD - '@tresjs/core': 3.7.0(three@0.162.0)(vue@3.4.21) - '@vueuse/core': 10.9.0(vue@3.4.21) - camera-controls: 2.8.3(three@0.162.0) - stats-gl: 2.2.7 - stats.js: 0.17.0 - three: 0.162.0 - three-custom-shader-material: 5.4.0(three@0.162.0) - three-stdlib: 2.29.6(three@0.162.0) -======= - '@tresjs/core': 'link:' + '@tresjs/core': 3.5.1(three@0.163.0)(vue@3.4.21) '@vueuse/core': 10.9.0(vue@3.4.21) camera-controls: 2.8.3(three@0.163.0) stats-gl: 2.2.8 @@ -2965,7 +2007,6 @@ packages: three: 0.163.0 three-custom-shader-material: 5.4.0(three@0.163.0) three-stdlib: 2.29.6(three@0.163.0) ->>>>>>> main tweakpane: 4.0.3 vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: @@ -2974,11 +2015,7 @@ packages: - react dev: true -<<<<<<< HEAD - /@tresjs/core@3.5.1(three@0.162.0)(vue@3.4.21): -======= /@tresjs/core@3.5.1(three@0.163.0)(vue@3.4.21): ->>>>>>> main resolution: {integrity: sha512-j7fHT3X8NamQk+n5A20r/UUkInHWQOJr5dzzcuOCdD6s3FFc3WMYtbRq+cJN8FR8mS0vpSK6h9s82com8cmRNA==} peerDependencies: three: '>=0.133' @@ -2986,156 +2023,12 @@ packages: dependencies: '@alvarosabu/utils': 3.2.0 '@vueuse/core': 10.9.0(vue@3.4.21) -<<<<<<< HEAD - three: 0.162.0 - vue: 3.4.21(typescript@5.4.3) - transitivePeerDependencies: - - '@vue/composition-api' - dev: true - - /@tresjs/core@3.7.0(three@0.162.0)(vue@3.4.21): - resolution: {integrity: sha512-Hg6VK7RQuGiXyLlbB+7FdPyS4KERxIpnU8EO/UzmN4/Bfr6I9Kuo1F0LF+5BBFyxBPqc7sD1Dcy7Epj8We9ETg==} - peerDependencies: - three: '>=0.133' - vue: '>=3.3' - dependencies: - '@alvarosabu/utils': 3.2.0 - '@vueuse/core': 10.9.0(vue@3.4.21) - three: 0.162.0 -======= three: 0.163.0 ->>>>>>> main vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: - '@vue/composition-api' dev: true - /@tresjs/eslint-config-base@0.2.1(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): - resolution: {integrity: sha512-9fkwDaNu4nLKujeERi5d1S7+ZdZpxBE+g/jUbM4ywhn/+5P7Qv8dXlo1vB05LteX5cTBnZxHQTFrJGK+sMcFdg==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - eslint: 8.57.0 - eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) -<<<<<<< HEAD - eslint-plugin-jsonc: 2.11.2(eslint@8.57.0) -======= - eslint-plugin-jsonc: 2.14.1(eslint@8.57.0) ->>>>>>> main - eslint-plugin-markdown: 3.0.1(eslint@8.57.0) - eslint-plugin-n: 16.5.0(eslint@8.57.0) - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.57.0) -<<<<<<< HEAD - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0) - eslint-plugin-yml: 1.11.0(eslint@8.57.0) -======= - eslint-plugin-unused-imports: 3.1.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0) - eslint-plugin-yml: 1.13.2(eslint@8.57.0) ->>>>>>> main - jsonc-eslint-parser: 2.4.0 - yaml-eslint-parser: 1.2.2 - transitivePeerDependencies: - - '@typescript-eslint/eslint-plugin' - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - -<<<<<<< HEAD - /@tresjs/eslint-config-base@0.2.1(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): -======= - /@tresjs/eslint-config-base@0.2.1(@typescript-eslint/eslint-plugin@7.5.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): ->>>>>>> main - resolution: {integrity: sha512-9fkwDaNu4nLKujeERi5d1S7+ZdZpxBE+g/jUbM4ywhn/+5P7Qv8dXlo1vB05LteX5cTBnZxHQTFrJGK+sMcFdg==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - eslint: 8.57.0 - eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) -<<<<<<< HEAD - eslint-plugin-jsonc: 2.11.2(eslint@8.57.0) - eslint-plugin-markdown: 3.0.1(eslint@8.57.0) - eslint-plugin-n: 16.5.0(eslint@8.57.0) - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.57.0) - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0) - eslint-plugin-yml: 1.11.0(eslint@8.57.0) -======= - eslint-plugin-jsonc: 2.14.1(eslint@8.57.0) - eslint-plugin-markdown: 3.0.1(eslint@8.57.0) - eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.57.0) - eslint-plugin-unused-imports: 3.1.0(@typescript-eslint/eslint-plugin@7.5.0)(eslint@8.57.0) - eslint-plugin-yml: 1.13.2(eslint@8.57.0) ->>>>>>> main - jsonc-eslint-parser: 2.4.0 - yaml-eslint-parser: 1.2.2 - transitivePeerDependencies: - - '@typescript-eslint/eslint-plugin' - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /@tresjs/eslint-config-ts@0.2.1(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-RnDZMq5hqtDQH1rbiKOQhbRmayF9EI3IV6A3gCmD+LG9Nm7/zmC8lPlAcmEl08dAi97bnt29G4GxTD/Wt6xhwg==} - peerDependencies: - eslint: '>=7.4.0' - typescript: '>=3.9' - dependencies: - '@tresjs/eslint-config-base': 0.2.1(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - typescript: 5.4.3 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - -<<<<<<< HEAD - /@tresjs/eslint-config-vue@0.2.1(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0)(typescript@5.4.3): -======= - /@tresjs/eslint-config-vue@0.2.1(@typescript-eslint/eslint-plugin@7.5.0)(eslint@8.57.0)(typescript@5.4.3): ->>>>>>> main - resolution: {integrity: sha512-rKny0RaV1/2Wrb7qO+SbrYWKwDChDPckJT4LO787MnO0+hOHRKPu2ADGi6tGRIlna6v2Pj/q288p92Y37Qz0wA==} - peerDependencies: - eslint: '>=7.4.0' - typescript: '>=3.9' - dependencies: -<<<<<<< HEAD - '@tresjs/eslint-config-base': 0.2.1(@typescript-eslint/eslint-plugin@7.4.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) -======= - '@tresjs/eslint-config-base': 0.2.1(@typescript-eslint/eslint-plugin@7.5.0)(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) ->>>>>>> main - '@tresjs/eslint-config-ts': 0.2.1(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - eslint-plugin-vue: 9.24.0(eslint@8.57.0) - local-pkg: 0.4.3 - typescript: 5.4.3 - transitivePeerDependencies: - - '@typescript-eslint/eslint-plugin' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - -<<<<<<< HEAD - /@tresjs/leches@0.15.0-next.3(three@0.162.0)(vite@5.2.6)(vue@3.4.21): -======= /@tresjs/eslint-config@1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0): resolution: {integrity: sha512-m28JMAHfJ/jSESh5o38EdPfD27HD+ptRiUSh6lgF6CY8mQ5QreFlTzUcYsaBqvoCC1PnKzUyGBBomscXj5X5cw==} peerDependencies: @@ -3164,27 +2057,17 @@ packages: dev: true /@tresjs/leches@0.15.0-next.3(three@0.163.0)(vite@5.2.7)(vue@3.4.21): ->>>>>>> main resolution: {integrity: sha512-kI8DovuzZ/mnSY3ifEiKJ1fd3aBoM5hYSfX0uwlJ6KWblVafrhds1J8j5aoFq6Kx0pjDVsY72fL8itAfm0ZrzQ==} peerDependencies: three: '>=0.133' vue: '>=3.3.4' dependencies: -<<<<<<< HEAD - '@tresjs/core': 3.5.1(three@0.162.0)(vue@3.4.21) - '@types/three': 0.158.3 - '@unocss/core': 0.57.7 - '@vueuse/components': 10.7.0(vue@3.4.21) - three: 0.162.0 - vite-plugin-css-injected-by-js: 3.3.1(vite@5.2.6) -======= '@tresjs/core': 3.5.1(three@0.163.0)(vue@3.4.21) '@types/three': 0.158.3 '@unocss/core': 0.57.7 '@vueuse/components': 10.9.0(vue@3.4.21) three: 0.163.0 vite-plugin-css-injected-by-js: 3.5.0(vite@5.2.7) ->>>>>>> main vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: - '@vue/composition-api' @@ -3229,22 +2112,14 @@ packages: /@types/fs-extra@8.1.5: resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: -<<<<<<< HEAD - '@types/node': 20.10.5 -======= '@types/node': 20.11.30 ->>>>>>> main dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 -<<<<<<< HEAD - '@types/node': 20.10.5 -======= '@types/node': 20.11.30 ->>>>>>> main dev: true /@types/http-cache-semantics@4.0.4: @@ -3259,10 +2134,6 @@ packages: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - /@types/linkify-it@3.0.5: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} dev: true @@ -3288,13 +2159,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true -<<<<<<< HEAD - /@types/node@20.10.5: - resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} -======= /@types/node@20.11.30: resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} ->>>>>>> main dependencies: undici-types: 5.26.5 dev: true @@ -3323,13 +2189,8 @@ packages: meshoptimizer: 0.18.1 dev: true -<<<<<<< HEAD - /@types/three@0.162.0: - resolution: {integrity: sha512-0j5yZcVukVIhrhSIC7+LmBPkkMoMuEJ1AfYBZfgNytdYqYREMuiyXWhYOMeZLBElTEAlJIZn7r2W3vqTIgjWlg==} -======= /@types/three@0.163.0: resolution: {integrity: sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==} ->>>>>>> main dependencies: '@tweenjs/tween.js': 23.1.1 '@types/stats.js': 0.17.3 @@ -3348,23 +2209,23 @@ packages: /@types/webxr@0.5.14: resolution: {integrity: sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA==} - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.5.0 + '@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.5.0 debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 @@ -3377,76 +2238,8 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} -======= - /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==} ->>>>>>> main - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 -<<<<<<< HEAD - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 -======= - '@typescript-eslint/parser': 7.5.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.5.0 - '@typescript-eslint/type-utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.5.0 ->>>>>>> main - debug: 4.3.4 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.57.0 - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - -<<<<<<< HEAD - /@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} -======= /@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.3): resolution: {integrity: sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==} ->>>>>>> main engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3455,17 +2248,10 @@ packages: typescript: optional: true dependencies: -<<<<<<< HEAD - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 -======= '@typescript-eslint/scope-manager': 7.5.0 '@typescript-eslint/types': 7.5.0 '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) '@typescript-eslint/visitor-keys': 7.5.0 ->>>>>>> main debug: 4.3.4 eslint: 8.57.0 typescript: 5.4.3 @@ -3481,50 +2267,16 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true -<<<<<<< HEAD - /@typescript-eslint/scope-manager@7.4.0: - resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 -======= /@typescript-eslint/scope-manager@7.5.0: resolution: {integrity: sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.5.0 '@typescript-eslint/visitor-keys': 7.5.0 ->>>>>>> main dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - debug: 4.3.4 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - -<<<<<<< HEAD - /@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} -======= /@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.3): resolution: {integrity: sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==} ->>>>>>> main engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3533,13 +2285,8 @@ packages: typescript: optional: true dependencies: -<<<<<<< HEAD - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.3) -======= '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) '@typescript-eslint/utils': 7.5.0(eslint@8.57.0)(typescript@5.4.3) ->>>>>>> main debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.3) @@ -3553,13 +2300,8 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true -<<<<<<< HEAD - /@typescript-eslint/types@7.4.0: - resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} -======= /@typescript-eslint/types@7.5.0: resolution: {integrity: sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==} ->>>>>>> main engines: {node: ^18.18.0 || >=20.0.0} dev: true @@ -3585,13 +2327,8 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3): - resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} -======= /@typescript-eslint/typescript-estree@7.5.0(typescript@5.4.3): resolution: {integrity: sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==} ->>>>>>> main engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -3599,13 +2336,8 @@ packages: typescript: optional: true dependencies: -<<<<<<< HEAD - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 -======= '@typescript-eslint/types': 7.5.0 '@typescript-eslint/visitor-keys': 7.5.0 ->>>>>>> main debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3636,13 +2368,8 @@ packages: - typescript dev: true -<<<<<<< HEAD - /@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.3): - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} -======= /@typescript-eslint/utils@7.5.0(eslint@8.57.0)(typescript@5.4.3): resolution: {integrity: sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==} ->>>>>>> main engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -3650,15 +2377,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 -<<<<<<< HEAD - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) -======= '@typescript-eslint/scope-manager': 7.5.0 '@typescript-eslint/types': 7.5.0 '@typescript-eslint/typescript-estree': 7.5.0(typescript@5.4.3) ->>>>>>> main eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -3674,19 +2395,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true -<<<<<<< HEAD - /@typescript-eslint/visitor-keys@7.4.0: - resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.4.0 -======= /@typescript-eslint/visitor-keys@7.5.0: resolution: {integrity: sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: '@typescript-eslint/types': 7.5.0 ->>>>>>> main eslint-visitor-keys: 3.4.3 dev: true @@ -3694,88 +2407,22 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true -<<<<<<< HEAD - /@unocss/astro@0.58.4(vite@5.2.6): - resolution: {integrity: sha512-feS8+f3oPmCeR1XF7isQjs3Z9ojM5Ssv0vCNR/dexPFdROfccK/7sIu1YnHWtVg1trPc1kMfI8XJRqfrHMdd5w==} -======= /@unocss/astro@0.58.7(vite@5.2.7): resolution: {integrity: sha512-htqhe+Qn9UUnND214LlwS8a9Ib0hzO+IxY79cz1GDYoDV+Z4ONXCkUxLLlnnBM/HupWKOu+bdBWWVGIOHAniig==} ->>>>>>> main peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: vite: optional: true dependencies: -<<<<<<< HEAD - '@unocss/core': 0.58.4 - '@unocss/reset': 0.58.4 - '@unocss/vite': 0.58.4(vite@5.2.6) - vite: 5.2.6 -======= '@unocss/core': 0.58.7 '@unocss/reset': 0.58.7 '@unocss/vite': 0.58.7(vite@5.2.7) vite: 5.2.7 ->>>>>>> main - transitivePeerDependencies: - - rollup - dev: true - -<<<<<<< HEAD - /@unocss/astro@0.58.7(vite@5.2.6): - resolution: {integrity: sha512-htqhe+Qn9UUnND214LlwS8a9Ib0hzO+IxY79cz1GDYoDV+Z4ONXCkUxLLlnnBM/HupWKOu+bdBWWVGIOHAniig==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - vite: - optional: true - dependencies: - '@unocss/core': 0.58.7 - '@unocss/reset': 0.58.7 - '@unocss/vite': 0.58.7(vite@5.2.6) - vite: 5.2.6 transitivePeerDependencies: - rollup dev: true - /@unocss/cli@0.58.4: - resolution: {integrity: sha512-8dAs1TzzWCtb3FxoTsVtR2+JGkdmchuP0RvGlSywADf5FqYn9nbP0m3z4STtpPavHO9JaGbabStyjS0nA8Ck6w==} -======= - /@unocss/cli@0.58.7: - resolution: {integrity: sha512-Vr5LABxFvZa8K71qVOnP7FkSA14/xEqhVOO+KZzcZafdW3TCvWa/dr3Lr5mDUufY82s5/5KGFosVQWQymA8HMg==} ->>>>>>> main - engines: {node: '>=14'} - hasBin: true - dependencies: - '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.1.0 -<<<<<<< HEAD - '@unocss/config': 0.58.4 - '@unocss/core': 0.58.4 - '@unocss/preset-uno': 0.58.4 -======= - '@unocss/config': 0.58.7 - '@unocss/core': 0.58.7 - '@unocss/preset-uno': 0.58.7 ->>>>>>> main - cac: 6.7.14 - chokidar: 3.5.3 - colorette: 2.0.20 - consola: 3.2.3 - fast-glob: 3.3.2 -<<<<<<< HEAD - magic-string: 0.30.5 -======= - magic-string: 0.30.8 ->>>>>>> main - pathe: 1.1.2 - perfect-debounce: 1.0.0 - transitivePeerDependencies: - - rollup - dev: true - -<<<<<<< HEAD /@unocss/cli@0.58.7: resolution: {integrity: sha512-Vr5LABxFvZa8K71qVOnP7FkSA14/xEqhVOO+KZzcZafdW3TCvWa/dr3Lr5mDUufY82s5/5KGFosVQWQymA8HMg==} engines: {node: '>=14'} @@ -3798,24 +2445,10 @@ packages: - rollup dev: true - /@unocss/config@0.58.4: - resolution: {integrity: sha512-b/inDCOnhUPzobhj+SxRI7xeSwoAQU+3D3J5JoWZNPBI4OaJdwpuz40uLXl9VsPz5N6dc8/qa+FrSsgCjUcLTg==} - engines: {node: '>=14'} - dependencies: - '@unocss/core': 0.58.4 - unconfig: 0.3.11 - dev: true - - /@unocss/config@0.58.7: - resolution: {integrity: sha512-ZMSFWJI8DfE/4HiIU+hkTSKUtEkennRn+raej5HCGTfy5xpdYCm9Zdrw/cYqkN2LPHM8o076Z2sD6H4MV5HrvA==} - engines: {node: '>=14'} - dependencies: -======= /@unocss/config@0.58.7: resolution: {integrity: sha512-ZMSFWJI8DfE/4HiIU+hkTSKUtEkennRn+raej5HCGTfy5xpdYCm9Zdrw/cYqkN2LPHM8o076Z2sD6H4MV5HrvA==} engines: {node: '>=14'} dependencies: ->>>>>>> main '@unocss/core': 0.58.7 unconfig: 0.3.11 dev: true @@ -3824,33 +2457,6 @@ packages: resolution: {integrity: sha512-1d36M0CV3yC80J0pqOa5rH1BX6g2iZdtKmIb3oSBN4AWnMCSrrJEPBrUikyMq2TEQTrYWJIVDzv5A9hBUat3TA==} dev: true -<<<<<<< HEAD - /@unocss/core@0.58.4: - resolution: {integrity: sha512-wh4pxXUCkhC+C/0ct74PMYeZgX+oWuHj2mnvr09nM0WmvOm1HeeISrDCCBGcxmKbErUk+D1v3JgzXF7b6j2l4g==} - dev: true - - /@unocss/core@0.58.7: - resolution: {integrity: sha512-Df5ytibV0MB7kWLggzLHsJUj08Of2oqXmPg7QjRUghMvCT3dl2LUIZXiztYPMH0F4x0cPebNoa/pavNt8xz9eQ==} - dev: true - - /@unocss/extractor-arbitrary-variants@0.58.4: - resolution: {integrity: sha512-TQlVtSQk8YdBU9KuTA5k6JBJ8d/aPrIsCWjDPfBvAqDvrll/dzwBCLoLTQMdCHFjCXCOYWKPum1ET+Wn9R+XbA==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/extractor-arbitrary-variants@0.58.7: - resolution: {integrity: sha512-wEuilON0u/e1milNp1UBWGps3Hdtm9qBfmc2YmsHN8KhpTSSCluzbrLSYfF++tU5iWmVWR2514Lc2waVDhuiwg==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/inspector@0.58.4: - resolution: {integrity: sha512-BbsaIMqP6dqa3qCfkC0nkvjCg11JRigvFPU4319imTPcTHQNQSg35t2mVFPGZ+QYHlU/3ouBeogUQfJDHBmtVQ==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/rule-utils': 0.58.4 -======= /@unocss/core@0.58.7: resolution: {integrity: sha512-Df5ytibV0MB7kWLggzLHsJUj08Of2oqXmPg7QjRUghMvCT3dl2LUIZXiztYPMH0F4x0cPebNoa/pavNt8xz9eQ==} dev: true @@ -3866,41 +2472,10 @@ packages: dependencies: '@unocss/core': 0.58.7 '@unocss/rule-utils': 0.58.7 ->>>>>>> main gzip-size: 6.0.0 sirv: 2.0.4 dev: true -<<<<<<< HEAD - /@unocss/inspector@0.58.7: - resolution: {integrity: sha512-5vYsAuOj4ODgCm2Hmfhgcih+MdjsOxAHpUUDcZKAuVkr5j4dmrQnjWmS0fafR5vcjQch6T1JTsPE9x/Ws51UIw==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/rule-utils': 0.58.7 - gzip-size: 6.0.0 - sirv: 2.0.4 - dev: true - - /@unocss/postcss@0.58.4(postcss@8.4.38): - resolution: {integrity: sha512-pg2qCGakV1TyMApPdvuvqqmPDhgogPWF14J97BT5zIfGYITAJSmBsm7d3+06w6EuqIS+vcYRw+qCV3oX6qTeiA==} -======= - /@unocss/postcss@0.58.7(postcss@8.4.38): - resolution: {integrity: sha512-4UhYTj7AaCDJKPEa9GX9L9dnH+6ci04i9ZYdNdu+Pvbki2Q2wAa2FwqLwH7+6WgWm10b9AXVacExw+4hC2reOg==} ->>>>>>> main - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - dependencies: -<<<<<<< HEAD - '@unocss/config': 0.58.4 - '@unocss/core': 0.58.4 - '@unocss/rule-utils': 0.58.4 - css-tree: 2.3.1 - fast-glob: 3.3.2 - magic-string: 0.30.5 - postcss: 8.4.38 - dev: true - /@unocss/postcss@0.58.7(postcss@8.4.38): resolution: {integrity: sha512-4UhYTj7AaCDJKPEa9GX9L9dnH+6ci04i9ZYdNdu+Pvbki2Q2wAa2FwqLwH7+6WgWm10b9AXVacExw+4hC2reOg==} engines: {node: '>=14'} @@ -3916,45 +2491,12 @@ packages: postcss: 8.4.38 dev: true - /@unocss/preset-attributify@0.58.4: - resolution: {integrity: sha512-r7pDXgcOgGMmrMoqM4/w20KKn4PxF+/vpElatAGXW3V/tHJWFOLGzk+wYeCMgMxeC+vPzqyJkjTfoqYlZrlokQ==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/preset-attributify@0.58.7: - resolution: {integrity: sha512-WmhrRSOAhbKn+q7A65Kg/49YDZOqfKxj+VZvngwjzDmSfZcr9BHhc67eg9IOF4OPHdKw/3rhSvA+FTMGre2Lpw==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/preset-icons@0.58.4: - resolution: {integrity: sha512-xdOe3PLfEWS4y+rA7Gxh/kDI82VkW0PbdoYO2FBwXH7a0JegdUDD5zuOTsTKAIymvQ7eVH53WXN9mcuhfNmdvQ==} - dependencies: - '@iconify/utils': 2.1.20 - '@unocss/core': 0.58.4 - ofetch: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: true - -======= - '@unocss/config': 0.58.7 - '@unocss/core': 0.58.7 - '@unocss/rule-utils': 0.58.7 - css-tree: 2.3.1 - fast-glob: 3.3.2 - magic-string: 0.30.8 - postcss: 8.4.38 - dev: true - /@unocss/preset-attributify@0.58.7: resolution: {integrity: sha512-WmhrRSOAhbKn+q7A65Kg/49YDZOqfKxj+VZvngwjzDmSfZcr9BHhc67eg9IOF4OPHdKw/3rhSvA+FTMGre2Lpw==} dependencies: '@unocss/core': 0.58.7 dev: true ->>>>>>> main /@unocss/preset-icons@0.58.7: resolution: {integrity: sha512-GeFaWiWGDktRs9TKqT4gb78Cjo7qlatOTijfJ1Zoyd3QMfbg7mRJPZGgHnLtpwYju+QKxG618fwlGvzARKhNfg==} dependencies: @@ -3965,137 +2507,6 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /@unocss/preset-mini@0.58.4: - resolution: {integrity: sha512-cpIWUYxLi4VCkkjxpNJOVqH9D32NX1ebRFaoAVnvCRsoj5TRsZJSdxs0WMN7reHT/CUHh0Wh6d3TfMCFxzbZ4g==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/extractor-arbitrary-variants': 0.58.4 - '@unocss/rule-utils': 0.58.4 - dev: true - - /@unocss/preset-mini@0.58.7: - resolution: {integrity: sha512-ktfrMlOtnks9j1r1ZJFzPcmCbWRjOfXh7UwoGYhH7c3Fi9Zbn1HI9+wblroEBstvbGUZGyaH5Ht+0rCmRrg5HQ==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/extractor-arbitrary-variants': 0.58.7 - '@unocss/rule-utils': 0.58.7 - dev: true - - /@unocss/preset-tagify@0.58.4: - resolution: {integrity: sha512-1E3vQvg5Qy4tbgovvrV0JaIXFfcdhK4NCSz+MuUk5ZYgKGVDh4IEw0WPuic534nlLm9+YFqyCSLLyIs3bT/GYQ==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/preset-tagify@0.58.7: - resolution: {integrity: sha512-IDR9+QDgPjcANRIWzlmubPPtgYTXGxWFqrEfRyz7ZQ4YLiA2sSLpVyOwOBW5mP7Bl2hF5oGlTKYyprk4pRzyUA==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/preset-typography@0.58.4: - resolution: {integrity: sha512-0Opt3Y0At4F03092iwGgz7HswRC2ElBXHR+IO9wWxSbldtpdmKzFJ/GBHEalzQjacWnyyzmRjabjA2quoQ8FQA==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/preset-mini': 0.58.4 - dev: true - - /@unocss/preset-typography@0.58.7: - resolution: {integrity: sha512-GCZGrFGBJO/k9widlpRvCKoouRaprgvNtt8mKpv38ToDSWexMZcaOTZHpKUPgljmjJ5As7ASwmDvjv6uiM5uYg==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/preset-mini': 0.58.7 - dev: true - - /@unocss/preset-uno@0.58.4: - resolution: {integrity: sha512-FWBPGIt0UcQHu58l75kvhB4vF2v+s2m0OW9DnIrPm3aY7Qj3q4yA2wdahR37qSsH+6vR3JP4+mV9WBrGjIsjrQ==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/preset-mini': 0.58.4 - '@unocss/preset-wind': 0.58.4 - '@unocss/rule-utils': 0.58.4 - dev: true - - /@unocss/preset-uno@0.58.7: - resolution: {integrity: sha512-oirPRtIailoewLvim/VjcxHZrBotRzBNaFZFMD1GLwScAYrzS8DWJ3pozNn7+s2E80ZUBfgekRTgvUKAFMPSCw==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/preset-mini': 0.58.7 - '@unocss/preset-wind': 0.58.7 - '@unocss/rule-utils': 0.58.7 - dev: true - - /@unocss/preset-web-fonts@0.58.4: - resolution: {integrity: sha512-vcy20fIK37GdhesRpiWGvCvkJDQsSiRF1jxw3dy8J5n9kFpIV8DQoPWUIE0ePF4i5ky2dHSDxKaNOP1bxHdKGA==} - dependencies: - '@unocss/core': 0.58.4 - ofetch: 1.3.3 - dev: true - - /@unocss/preset-web-fonts@0.58.7: - resolution: {integrity: sha512-97BhHYFudIVmMmLIZl3nA6puFLr2EEgG3xxR8Sa2Ox2sFL46D6oZrsxg9qr73QdJNOU3qk7HtnCn0+rozDrixg==} - dependencies: - '@unocss/core': 0.58.7 - ofetch: 1.3.4 - dev: true - - /@unocss/preset-wind@0.58.4: - resolution: {integrity: sha512-e2F0HsqPXw+nD85MKIZ63mx5yUx5g8iPOtMw9/eEUeK67HrD+jFxeLq0hAM3ou3a4589QIzeg23LXAkM7gCzvg==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/preset-mini': 0.58.4 - '@unocss/rule-utils': 0.58.4 - dev: true - - /@unocss/preset-wind@0.58.7: - resolution: {integrity: sha512-rELMKcd/cwMnw6fPf/dmg63u41fRXJoXDO5rlO/+Fa8DF4/r8KJTUbjJbZfcOnh3n8jHz3NUz+QigdRBuDTEuw==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/preset-mini': 0.58.7 - '@unocss/rule-utils': 0.58.7 - dev: true - - /@unocss/reset@0.58.4: - resolution: {integrity: sha512-ZZTrAdl4WWmMjQdOqcOSWdgFH6kdFKZjPu4c6Ijxk7KvY2BW3nttTTBa7IYeuXFHVfcExUFqlOgRurt+NeWYyQ==} - dev: true - - /@unocss/reset@0.58.7: - resolution: {integrity: sha512-KiN5u5D4zJcU0Tg+wjgTWYIm8VEfHpi7t2a3YfNCLo9s/75Ty4tlYB9StEShYmVMCXBOu0mK1CwqQTNaFpfM1w==} - dev: true - - /@unocss/rule-utils@0.58.4: - resolution: {integrity: sha512-52Jp4I+joGTaDm7ehB/7uZ2kJL+9BZcYRDUVk4IDacDH5W9yxf1F75LzYT8jJVWXD/HIhiS0r9V6qhcBq2OWZw==} - engines: {node: '>=14'} - dependencies: - '@unocss/core': 0.58.4 - magic-string: 0.30.5 - dev: true - - /@unocss/rule-utils@0.58.7: - resolution: {integrity: sha512-SbMwAUSgx5v4TXy+MXiWbqzoMjVHSeMaJpJOruU9PmtrOuZmqeajffMtI6pLtGlgrEL76frLRyMmSErxhyNelw==} - engines: {node: '>=14'} - dependencies: - '@unocss/core': 0.58.7 - magic-string: 0.30.8 - dev: true - - /@unocss/scope@0.58.4: - resolution: {integrity: sha512-JrX98xoYnv0HN41WyzlvCCU1T3jnDOry+V8mm2dB9DvByzxI484X6gtKbOXlJFAPwOlZPU5Bru/XTDaL6yQQww==} - dev: true - - /@unocss/scope@0.58.7: - resolution: {integrity: sha512-DaAHFT3azxq5eFiTRrDAqk8TSDlo6x5ImBowzdNO4B2QMt+o1X9uhbe8Qt+WlG3MOwhti87JT8ooNA1pzi3Iig==} - dev: true - - /@unocss/transformer-attributify-jsx-babel@0.58.4: - resolution: {integrity: sha512-yJd+OxAdgAxSQHVrqC6z19ibPqwwWO7J0TFf2caiP3hidSJ0iOvxcC0h62YCMr9dg4MsCpXaiHmGzxXbWGJ9nQ==} - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@unocss/core': 0.58.4 -======= /@unocss/preset-mini@0.58.7: resolution: {integrity: sha512-ktfrMlOtnks9j1r1ZJFzPcmCbWRjOfXh7UwoGYhH7c3Fi9Zbn1HI9+wblroEBstvbGUZGyaH5Ht+0rCmRrg5HQ==} dependencies: @@ -4164,97 +2575,10 @@ packages: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) '@unocss/core': 0.58.7 ->>>>>>> main transitivePeerDependencies: - supports-color dev: true -<<<<<<< HEAD - /@unocss/transformer-attributify-jsx-babel@0.58.7: - resolution: {integrity: sha512-IxEPQG7Kn+NgYEogOSKfqfGMQR7WU8X2DctaGBoQlizMiDr+q9DXM1dgGU0bXMxnSpRF8DYFHvgHefRnNUUVPg==} - dependencies: - '@babel/core': 7.24.3 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) - '@unocss/core': 0.58.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@unocss/transformer-attributify-jsx@0.58.4: - resolution: {integrity: sha512-Y4YMVkgY/EF7x0llV8Y42WGs8b77hbXkPstRLNeRD5x8KBNKnjYUXADwhTBEKXjDR8/y5Ewie8u43i1nbh1XuA==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/transformer-attributify-jsx@0.58.7: - resolution: {integrity: sha512-6kVTHvcTdlKpvXuXRgUPKFTTWFxJH0OL6N77x2WZgbDQc40mv95JIUCVBA8EnpRyGGTQi3yasiXIS7Ur2UmsbA==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/transformer-compile-class@0.58.4: - resolution: {integrity: sha512-GPz462ogvtb64W0iweuB0Dcm1snGsGte0RlVpFUeG2eWlVqKMRvNRtYuive2Ky2zSZKefWJQBGk3Ti+7CM4wFA==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/transformer-compile-class@0.58.7: - resolution: {integrity: sha512-+IWWA9/hmaZIjxB4JY3fuWuK4fAMV/uoi0T3kANDOnK/HUmX5pUF9oTzC3LBa+1SwzZiMoTJgiQEGKv1qa2QjQ==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/transformer-directives@0.58.4: - resolution: {integrity: sha512-5g2XVhwpmu2IrGHqPwxh+S3ZtkC/AwAtLIBLWB1QNhY3HVzAAaOzcif6uarngrCTTDQSDmsjzm8TSAq26LtCmQ==} - dependencies: - '@unocss/core': 0.58.4 - '@unocss/rule-utils': 0.58.4 - css-tree: 2.3.1 - dev: true - - /@unocss/transformer-directives@0.58.7: - resolution: {integrity: sha512-vMn86ARgrhCd+bZf1qvwBWhvQnOkAwOXbFGHM2cuuC0VVGJQcRE+dwTnUEJ5iqKGUNFWPJ/7NaV47kh58YITcg==} - dependencies: - '@unocss/core': 0.58.7 - '@unocss/rule-utils': 0.58.7 - css-tree: 2.3.1 - dev: true - - /@unocss/transformer-variant-group@0.58.4: - resolution: {integrity: sha512-zpJ4TMor7aJ3SoLJm4jNBOSqikyXUdQEO1AxkILd9Zcn7JWRgudfFXiXnFP+WGJcs9mMLoUiISxzT8SKNCckfA==} - dependencies: - '@unocss/core': 0.58.4 - dev: true - - /@unocss/transformer-variant-group@0.58.7: - resolution: {integrity: sha512-9yGvrecxvY6wEc1tV4AsUDMNbj8xWk6aJ3LyZNzxOzmxmNUNAIK+y81/Hp7djn+w0ck6ss/uo6Ug7tGX+0bKUw==} - dependencies: - '@unocss/core': 0.58.7 - dev: true - - /@unocss/vite@0.58.4(vite@5.2.6): - resolution: {integrity: sha512-TqD5fIXv6NF3v10FFrCII//GRbkou6Dn/OzW+d4T5f0KM5+T6DutljpYUdGo0+2QXKDroUWLAspFUaZUx8iwVw==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - dependencies: - '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.1.0 - '@unocss/config': 0.58.4 - '@unocss/core': 0.58.4 - '@unocss/inspector': 0.58.4 - '@unocss/scope': 0.58.4 - '@unocss/transformer-directives': 0.58.4 - chokidar: 3.5.3 - fast-glob: 3.3.2 - magic-string: 0.30.5 - vite: 5.2.6 - transitivePeerDependencies: - - rollup - dev: true - - /@unocss/vite@0.58.7(vite@5.2.6): -======= /@unocss/transformer-attributify-jsx@0.58.7: resolution: {integrity: sha512-6kVTHvcTdlKpvXuXRgUPKFTTWFxJH0OL6N77x2WZgbDQc40mv95JIUCVBA8EnpRyGGTQi3yasiXIS7Ur2UmsbA==} dependencies: @@ -4282,7 +2606,6 @@ packages: dev: true /@unocss/vite@0.58.7(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-S8TJojR1/7O9Sfykj2k4yOq6gZOnjMNZq5ug/6edA11Q/gz2WrT/sx6aPcfIm3xVBnmLxaHfy3r06W+SiIbZcg==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 @@ -4297,35 +2620,16 @@ packages: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.8 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - rollup dev: true -<<<<<<< HEAD - /@vite-plugin-vue-devtools/core@1.0.0-rc.6(vite@5.2.6): -======= /@vite-plugin-vue-devtools/core@1.0.0-rc.6(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-9A7BEvW6tPgLJK+bRyjWCMcXs/mWAdyrcSH1hNr+b7d5lEWoyBrm9d8s0UGEXLnRoJAfHhrAx525wMUGZI1QNA==} peerDependencies: vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/parser': 7.23.6 - birpc: 0.2.14 - estree-walker: 2.0.2 - magic-string: 0.30.8 - vite: 5.2.6 - vite-hot-client: 0.2.3(vite@5.2.6) - dev: true - - /@vitejs/plugin-vue@5.0.4(vite@5.2.6)(vue@3.4.21): -======= '@babel/parser': 7.24.1 birpc: 0.2.17 estree-walker: 2.0.2 @@ -4335,18 +2639,13 @@ packages: dev: true /@vitejs/plugin-vue@5.0.4(vite@5.2.7)(vue@3.4.21): ->>>>>>> main resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main vue: 3.4.21(typescript@5.4.3) dev: true @@ -4449,14 +2748,6 @@ packages: path-browserify: 1.0.1 dev: true -<<<<<<< HEAD - /@vue/babel-helper-vue-transform-on@1.1.5: - resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} - dev: true - - /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.6): - resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} -======= /@volar/typescript@2.1.6: resolution: {integrity: sha512-JgPGhORHqXuyC3r6skPmPHIZj4LoMmGlYErFTuPNBq9Nhc9VTv7ctHY7A3jMN3ngKEfRrfnUcwXHztvdSQqNfw==} dependencies: @@ -4470,19 +2761,12 @@ packages: /@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.3): resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} ->>>>>>> main peerDependencies: '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/helper-module-imports': 7.22.15 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.23.6) - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - '@vue/babel-helper-vue-transform-on': 1.1.5 -======= '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 @@ -4492,7 +2776,6 @@ packages: '@babel/types': 7.24.0 '@vue/babel-helper-vue-transform-on': 1.2.2 '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.3) ->>>>>>> main camelcase: 6.3.0 html-tags: 3.3.1 svg-tags: 1.0.0 @@ -4500,15 +2783,6 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /@vue/compiler-core@3.3.13: - resolution: {integrity: sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==} - dependencies: - '@babel/parser': 7.23.6 - '@vue/shared': 3.3.13 - estree-walker: 2.0.2 - source-map-js: 1.0.2 -======= /@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.3): resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} peerDependencies: @@ -4520,7 +2794,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/parser': 7.24.1 '@vue/compiler-sfc': 3.4.21 ->>>>>>> main dev: true /@vue/compiler-core@3.4.21: @@ -4530,17 +2803,7 @@ packages: '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 -<<<<<<< HEAD - - /@vue/compiler-dom@3.3.13: - resolution: {integrity: sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==} - dependencies: - '@vue/compiler-core': 3.3.13 - '@vue/shared': 3.3.13 - dev: true -======= ->>>>>>> main + source-map-js: 1.2.0 /@vue/compiler-dom@3.4.21: resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} @@ -4567,44 +2830,24 @@ packages: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 - /@vue/devtools-api@6.5.1: - resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - dev: false - /@vue/devtools-api@6.6.1: resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} dev: false -<<<<<<< HEAD - /@vue/devtools-api@7.0.24(vue@3.4.21): - resolution: {integrity: sha512-4dsRfL+7CnRZ9TgkmFNHRc7fKSE6v74GNojwxop+F5lotUTxNDbN7HTYg/vJ7DfJtwKFYGQjMFbHxEDZQ4Sahg==} - dependencies: - '@vue/devtools-kit': 7.0.24(vue@3.4.21) -======= /@vue/devtools-api@7.0.25(vue@3.4.21): resolution: {integrity: sha512-fL6DlRp4MSXCLYcqYvKU7QhQZWE3Hfu7X8pC25BS74coJi7uJeSWs4tmrITcwFihNmC9S5GPiffkMdckkeWjzg==} dependencies: '@vue/devtools-kit': 7.0.25(vue@3.4.21) ->>>>>>> main transitivePeerDependencies: - vue dev: true -<<<<<<< HEAD - /@vue/devtools-kit@7.0.24(vue@3.4.21): - resolution: {integrity: sha512-6XD4ZRjbnk8XC5IM/GfuqB9O9UlmUU53pybuxg0/xBI9pxQfH3mOu5Gpyb55cG18uMW4c7hdEOgkxwFpUgYIrg==} - peerDependencies: - vue: ^3.0.0 - dependencies: - '@vue/devtools-shared': 7.0.24 -======= /@vue/devtools-kit@7.0.25(vue@3.4.21): resolution: {integrity: sha512-wbLkSnOTsKHPb1mB9koFHUoSAF8Dp6Ii/ocR2+DeXFY4oKqIjCeJb/4Lihk4rgqEhCy1WwxLfTgNDo83VvDYkQ==} peerDependencies: vue: ^3.0.0 dependencies: '@vue/devtools-shared': 7.0.25 ->>>>>>> main hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 @@ -4612,40 +2855,12 @@ packages: vue: 3.4.21(typescript@5.4.3) dev: true -<<<<<<< HEAD - /@vue/devtools-shared@7.0.24: - resolution: {integrity: sha512-hocNGlaQuc0s3hLNky64zXQK6DjQcIGEI0TJbizEAH7l5eZ6BCPB3P19ofu9HyUbbIn/PTJWqyLT8clzWqo0Xw==} -======= /@vue/devtools-shared@7.0.25: resolution: {integrity: sha512-5+XYhcHSXuJSguYnNwL6/e6VTmXwCfryWQOkffh9ZU2zMByybqqqBrMWqvBkqTmMFCjPdzulo66xXbVbwLaElQ==} ->>>>>>> main dependencies: rfdc: 1.3.1 dev: true -<<<<<<< HEAD - /@vue/language-core@1.8.25(typescript@5.4.3): - resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.3.13 - '@vue/shared': 3.3.13 - computeds: 0.0.1 - minimatch: 9.0.3 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - typescript: 5.4.3 - vue-template-compiler: 2.7.15 - dev: true - -======= ->>>>>>> main /@vue/language-core@1.8.27(typescript@5.4.3): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: @@ -4663,8 +2878,6 @@ packages: muggle-string: 0.3.1 path-browserify: 1.0.1 typescript: 5.4.3 -<<<<<<< HEAD -======= vue-template-compiler: 2.7.16 dev: true @@ -4683,7 +2896,6 @@ packages: minimatch: 9.0.3 path-browserify: 1.0.1 typescript: 5.4.3 ->>>>>>> main vue-template-compiler: 2.7.16 dev: true @@ -4713,13 +2925,6 @@ packages: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 vue: 3.4.21(typescript@5.4.3) -<<<<<<< HEAD - - /@vue/shared@3.3.13: - resolution: {integrity: sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==} - dev: true -======= ->>>>>>> main /@vue/shared@3.4.21: resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} @@ -4731,23 +2936,11 @@ packages: vue-component-type-helpers: 2.0.7 dev: true - /@vueuse/components@10.7.0(vue@3.4.21): - resolution: {integrity: sha512-ycyF+fZtipP/8WVWZ5y6Cb9twJ0EeVHIqcqkCcTpmAJdheRjorT8v6cHk3h144HHTMgIfBWC6TaSukDG7QFmsw==} + /@vueuse/components@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==} dependencies: - '@vueuse/core': 10.7.0(vue@3.4.21) - '@vueuse/shared': 10.7.0(vue@3.4.21) - vue-demi: 0.14.7(vue@3.4.21) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/core@10.7.0(vue@3.4.21): - resolution: {integrity: sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==} - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.7.0 - '@vueuse/shared': 10.7.0(vue@3.4.21) + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.21) vue-demi: 0.14.7(vue@3.4.21) transitivePeerDependencies: - '@vue/composition-api' @@ -4815,22 +3008,9 @@ packages: - vue dev: true - /@vueuse/metadata@10.7.0: - resolution: {integrity: sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==} - dev: true - /@vueuse/metadata@10.9.0: resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} - /@vueuse/shared@10.7.0(vue@3.4.21): - resolution: {integrity: sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==} - dependencies: - vue-demi: 0.14.7(vue@3.4.21) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - /@vueuse/shared@10.9.0(vue@3.4.21): resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} dependencies: @@ -4845,16 +3025,11 @@ packages: peerDependencies: pug: ^3.0.2 dependencies: -<<<<<<< HEAD - '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.6 -======= '@babel/parser': 7.24.1 '@babel/traverse': 7.24.1 ->>>>>>> main pug: 3.0.2 resolve: 1.22.8 - vue-template-compiler: 2.7.15 + vue-template-compiler: 2.7.16 transitivePeerDependencies: - supports-color dev: true @@ -4891,12 +3066,6 @@ packages: hasBin: true dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -4925,26 +3094,6 @@ packages: uri-js: 4.4.1 dev: true -<<<<<<< HEAD - /algoliasearch@4.23.1: - resolution: {integrity: sha512-LNK5n23zDXVf8kaLMZrVDEy4ecxIFUDEsQlx+He1l+TCmP8eiheLVMi5eyZlU6qmmq3UWCxZmp6hzCXS/hvXEw==} - dependencies: - '@algolia/cache-browser-local-storage': 4.23.1 - '@algolia/cache-common': 4.23.1 - '@algolia/cache-in-memory': 4.23.1 - '@algolia/client-account': 4.23.1 - '@algolia/client-analytics': 4.23.1 - '@algolia/client-common': 4.23.1 - '@algolia/client-personalization': 4.23.1 - '@algolia/client-search': 4.23.1 - '@algolia/logger-common': 4.23.1 - '@algolia/logger-console': 4.23.1 - '@algolia/recommend': 4.23.1 - '@algolia/requester-browser-xhr': 4.23.1 - '@algolia/requester-common': 4.23.1 - '@algolia/requester-node-http': 4.23.1 - '@algolia/transporter': 4.23.1 -======= /algoliasearch@4.23.2: resolution: {integrity: sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ==} dependencies: @@ -4963,7 +3112,6 @@ packages: '@algolia/requester-common': 4.23.2 '@algolia/requester-node-http': 4.23.2 '@algolia/transporter': 4.23.2 ->>>>>>> main dev: true /ansi-align@3.0.1: @@ -5048,67 +3196,11 @@ packages: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 -<<<<<<< HEAD -======= - es-object-atoms: 1.0.0 ->>>>>>> main - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: true - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true -<<<<<<< HEAD - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} -======= - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} ->>>>>>> main - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 -<<<<<<< HEAD -======= - es-errors: 1.3.0 - es-object-atoms: 1.0.0 ->>>>>>> main - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.4 - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 - es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.map@1.0.7: resolution: {integrity: sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==} engines: {node: '>= 0.4'} @@ -5205,8 +3297,8 @@ packages: engines: {node: '>=8'} dev: true - /birpc@0.2.14: - resolution: {integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==} + /birpc@0.2.17: + resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} dev: true /bl@4.1.0: @@ -5262,20 +3354,15 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: -<<<<<<< HEAD - caniuse-lite: 1.0.30001570 - electron-to-chromium: 1.4.615 -======= caniuse-lite: 1.0.30001600 electron-to-chromium: 1.4.717 ->>>>>>> main node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true /buffer-from@1.1.2: @@ -5294,12 +3381,6 @@ packages: engines: {node: '>=6'} dev: true - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.6.0 - dev: true - /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -5382,35 +3463,15 @@ packages: engines: {node: '>=14.16'} dev: true -<<<<<<< HEAD - /camera-controls@2.7.3(three@0.162.0): - resolution: {integrity: sha512-L4mxjBd3u8qiOLozdWrH2P8ZybSsDXBF7iyNyqNEFJhPUkovmuARWR8JTc1B/qlclOIg6FvZZA/0uAZMMim0mw==} - peerDependencies: - three: '>=0.126.1' - dependencies: - three: 0.162.0 - dev: false - - /camera-controls@2.8.3(three@0.162.0): -======= /camera-controls@2.8.3(three@0.163.0): ->>>>>>> main resolution: {integrity: sha512-zFjqUR6onLkG+z1A6vAWfzovxZxWVSvp6e5t3lfZgfgPZtX3n74aykNAUaoRbq8Y3tOxadHkDjbfGDOP9hFf2w==} peerDependencies: three: '>=0.126.1' dependencies: -<<<<<<< HEAD - three: 0.162.0 - dev: true - - /caniuse-lite@1.0.30001570: - resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} -======= three: 0.163.0 /caniuse-lite@1.0.30001600: resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} ->>>>>>> main dev: true /chai@4.4.1: @@ -5476,21 +3537,6 @@ packages: get-func-name: 2.0.2 dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -5603,11 +3649,6 @@ packages: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: true - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -5773,7 +3814,7 @@ packages: handlebars: 4.7.8 json-stringify-safe: 5.0.1 meow: 12.1.1 - semver: 7.5.4 + semver: 7.6.0 split2: 4.2.0 dev: true @@ -6122,10 +4163,6 @@ packages: resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} dev: true - /destr@2.0.2: - resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} - dev: true - /destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} dev: true @@ -6142,13 +4179,6 @@ packages: path-type: 4.0.0 dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -6201,13 +4231,8 @@ packages: is-obj: 2.0.0 dev: true - /draco3d@1.5.6: - resolution: {integrity: sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==} - dev: false - /draco3d@1.5.7: resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} - dev: true /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -6228,13 +4253,8 @@ packages: semver: 7.6.0 dev: true -<<<<<<< HEAD - /electron-to-chromium@1.4.615: - resolution: {integrity: sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==} -======= /electron-to-chromium@1.4.717: resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==} ->>>>>>> main dev: true /emoji-regex@10.3.0: @@ -6374,16 +4394,6 @@ packages: hasown: 2.0.2 dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: -<<<<<<< HEAD - hasown: 2.0.0 -======= - hasown: 2.0.2 ->>>>>>> main - dev: true - /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -6455,14 +4465,6 @@ packages: '@esbuild/win32-x64': 0.20.2 dev: true -<<<<<<< HEAD - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - -======= ->>>>>>> main /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -6500,20 +4502,13 @@ packages: source-map: 0.6.1 dev: true -<<<<<<< HEAD - /eslint-compat-utils@0.1.2(eslint@8.57.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} -======= /eslint-compat-utils@0.5.0(eslint@8.57.0): resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} ->>>>>>> main engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: eslint: 8.57.0 -<<<<<<< HEAD -======= semver: 7.6.0 dev: true @@ -6538,7 +4533,6 @@ packages: dependencies: eslint: 8.57.0 prettier-linter-helpers: 1.0.0 ->>>>>>> main dev: true /eslint-import-resolver-node@0.3.9: @@ -6551,10 +4545,6 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} -======= /eslint-merge-processors@0.1.0(eslint@8.57.0): resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} peerDependencies: @@ -6563,36 +4553,6 @@ packages: eslint: 8.57.0 dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} ->>>>>>> main - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) - debug: 3.2.7 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-parser-plain@0.1.0: resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} dev: true @@ -6643,12 +4603,6 @@ packages: synckit: 0.8.8 dev: true - /eslint-plugin-html@7.1.0: - resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} - dependencies: - htmlparser2: 8.0.2 - dev: true - /eslint-plugin-import-x@0.5.0(eslint@8.57.0)(typescript@5.4.3): resolution: {integrity: sha512-C7R8Z4IzxmsoOPMtSzwuOBW5FH6iRlxHR6iTks+MzVlrk3r3TUxokkWTx3ypdj9nGOEP+CG/5e6ebZzHbxgbbQ==} engines: {node: '>=16'} @@ -6669,61 +4623,6 @@ packages: - typescript dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) -<<<<<<< HEAD - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 -======= - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 ->>>>>>> main - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 -<<<<<<< HEAD - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.0 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 -======= - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 ->>>>>>> main - semver: 6.3.1 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - -<<<<<<< HEAD - /eslint-plugin-jsonc@2.11.2(eslint@8.57.0): - resolution: {integrity: sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==} -======= /eslint-plugin-jsdoc@48.2.3(eslint@8.57.0): resolution: {integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA==} engines: {node: '>=18'} @@ -6744,26 +4643,6 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc@2.14.1(eslint@8.57.0): - resolution: {integrity: sha512-Tei6G4N7pZulP5MHi0EIdtseiCqUPkDMd0O8Zrw4muMIlsjJ5/B9X+U3Pfo6B7l0mTL9LN9FwuWT70dRJ6z7tg==} ->>>>>>> main - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 -<<<<<<< HEAD - eslint-compat-utils: 0.1.2(eslint@8.57.0) -======= - eslint-compat-utils: 0.5.0(eslint@8.57.0) - espree: 9.6.1 - graphemer: 1.4.0 - jsonc-eslint-parser: 2.4.0 - natural-compare: 1.4.0 - synckit: 0.6.2 - dev: true - /eslint-plugin-jsonc@2.15.0(eslint@8.57.0): resolution: {integrity: sha512-wAphMVgTQPAKAYV8d/QEkEYDg8uer9nMQ85N17IUiJcAWLxJs83/Exe59dEH9yKUpvpLf46H+wR7/U7lZ3/NpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6773,29 +4652,13 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) eslint: 8.57.0 eslint-compat-utils: 0.5.0(eslint@8.57.0) ->>>>>>> main espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 + synckit: 0.6.2 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.57.0): - resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.57.0 - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - dev: true - -<<<<<<< HEAD - /eslint-plugin-n@16.5.0(eslint@8.57.0): - resolution: {integrity: sha512-Hw02Bj1QrZIlKyj471Tb1jSReTl4ghIMHGuBGiMVmw+s0jOPbI4CBuYpGbZr+tdQ+VAvSK6FDSta3J4ib/SKHQ==} -======= /eslint-plugin-markdown@4.0.1(eslint@8.57.0): resolution: {integrity: sha512-5/MnGvYU0i8MbHH5cg8S+Vl3DL+bqRNYshk1xUO86DilNBaxtTkhH+5FD0/yO03AmlI6+lfNFdk2yOw72EPzpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6808,32 +4671,6 @@ packages: - supports-color dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} ->>>>>>> main - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.0.1 - eslint: 8.57.0 -<<<<<<< HEAD - eslint-plugin-es-x: 7.5.0(eslint@8.57.0) - get-tsconfig: 4.7.2 -======= - eslint-plugin-es-x: 7.6.0(eslint@8.57.0) - get-tsconfig: 4.7.3 - globals: 13.24.0 ->>>>>>> main - ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.6.0 - dev: true - /eslint-plugin-n@17.1.0(eslint@8.57.0): resolution: {integrity: sha512-+MTiTej3B07+8vS/RfSMD1w4O9VVR9BSJT9kSa9QUsBlXzKi5PZc+lB3w+iu/2eIS3drFU7zCikSrD8Yn8PEBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6884,15 +4721,6 @@ packages: - typescript dev: true - /eslint-plugin-promise@6.1.1(eslint@8.57.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.57.0 - dev: true - /eslint-plugin-toml@0.11.0(eslint@8.57.0): resolution: {integrity: sha512-sau+YvPU4fWTjB+qtBt3n8WS87aoDCs+BVbSUAemGaIsRNbvR9uEk+Tt892iLHTGvp/DPWYoCX4/8DoyAbB+sQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6908,34 +4736,6 @@ packages: - supports-color dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.57.0): - resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} - engines: {node: '>=16'} - peerDependencies: - eslint: '>=8.44.0' - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - ci-info: 3.9.0 - clean-regexp: 1.0.0 - eslint: 8.57.0 - esquery: 1.5.0 - indent-string: 4.0.0 - is-builtin-module: 3.2.1 - jsesc: 3.0.2 - lodash: 4.17.21 - pluralize: 8.0.0 - read-pkg-up: 7.0.1 - regexp-tree: 0.1.27 - regjsparser: 0.10.0 - semver: 7.6.0 - strip-indent: 3.0.0 - dev: true - -<<<<<<< HEAD - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0): - resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} -======= /eslint-plugin-unicorn@52.0.0(eslint@8.57.0): resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} @@ -6953,62 +4753,31 @@ packages: indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 - pluralize: 8.0.0 - read-pkg-up: 7.0.1 - regexp-tree: 0.1.27 - regjsparser: 0.10.0 - semver: 7.6.0 - strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0): - resolution: {integrity: sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==} ->>>>>>> main - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 - eslint: ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3) - eslint: 8.57.0 - eslint-rule-composer: 0.3.0 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.0 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color dev: true -<<<<<<< HEAD - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@7.4.0)(eslint@8.57.0): - resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 - eslint: ^8.0.0 -======= /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.5.0)(eslint@8.57.0): resolution: {integrity: sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': 6 - 7 eslint: '8' ->>>>>>> main peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true dependencies: -<<<<<<< HEAD - '@typescript-eslint/eslint-plugin': 7.4.0(@typescript-eslint/parser@7.4.0)(eslint@8.57.0)(typescript@5.4.3) -======= '@typescript-eslint/eslint-plugin': 7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3) ->>>>>>> main eslint: 8.57.0 eslint-rule-composer: 0.3.0 dev: true -<<<<<<< HEAD -======= /eslint-plugin-vitest@0.4.1(@typescript-eslint/eslint-plugin@7.5.0)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0): resolution: {integrity: sha512-+PnZ2u/BS+f5FiuHXz4zKsHPcMKHie+K+1Uvu/x91ovkCMEOJqEI8E9Tw1Wzx2QRz4MHOBHYf1ypO8N1K0aNAA==} engines: {node: ^18.0.0 || >= 20.0.0} @@ -7031,30 +4800,6 @@ packages: - typescript dev: true ->>>>>>> main - /eslint-plugin-vue@9.24.0(eslint@8.57.0): - resolution: {integrity: sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 - globals: 13.24.0 - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - vue-eslint-parser: 9.4.2(eslint@8.57.0) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - -<<<<<<< HEAD - /eslint-plugin-yml@1.11.0(eslint@8.57.0): - resolution: {integrity: sha512-NBZP1NDGy0u38pY5ieix75jxS9GNOJy9xd4gQa0rU4gWbfEsVhKDwuFaQ6RJpDbv6Lq5TtcAZS/YnAc0oeRw0w==} -======= /eslint-plugin-vue@9.24.1(eslint@8.57.0): resolution: {integrity: sha512-wk3SuwmS1pZdcuJlokGYEi/buDOwD6KltvhIZyOnpJ/378dcQ4zchu9PAMbbLAaydCz1iYc5AozszcOOgZIIOg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -7074,27 +4819,6 @@ packages: - supports-color dev: true - /eslint-plugin-yml@1.13.2(eslint@8.57.0): - resolution: {integrity: sha512-1i71VhmsG5UxE41rIJmJjhlTTxYy7upAY5Hqj8AdBc7rfJzRIZr3a2spuOS8+N7ZDCWsHAWY3J6lzQNQHDv6Uw==} ->>>>>>> main - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - debug: 4.3.4 - eslint: 8.57.0 -<<<<<<< HEAD - eslint-compat-utils: 0.1.2(eslint@8.57.0) -======= - eslint-compat-utils: 0.5.0(eslint@8.57.0) ->>>>>>> main - lodash: 4.17.21 - natural-compare: 1.4.0 - yaml-eslint-parser: 1.2.2 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-yml@1.14.0(eslint@8.57.0): resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} engines: {node: ^14.17.0 || >=16.0.0} @@ -7571,12 +5295,6 @@ packages: resolve-pkg-maps: 1.0.0 dev: true - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - /get-uri@6.0.3: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} engines: {node: '>= 14'} @@ -7605,7 +5323,7 @@ packages: hasBin: true dependencies: meow: 12.1.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /git-up@7.0.0: @@ -7642,7 +5360,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -7703,7 +5421,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.3.2 glob: 7.2.3 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -7849,13 +5567,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -7863,16 +5574,6 @@ packages: has-symbols: 1.0.3 dev: true -<<<<<<< HEAD - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - -======= ->>>>>>> main /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -7897,7 +5598,7 @@ packages: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - lru-cache: 10.1.0 + lru-cache: 10.2.0 dev: true /html-encoding-sniffer@4.0.0: @@ -7916,15 +5617,6 @@ packages: engines: {node: '>=8'} dev: true - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - dev: true - /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true @@ -7990,11 +5682,6 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true - /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -8159,11 +5846,7 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: -<<<<<<< HEAD - hasown: 2.0.0 -======= hasown: 2.0.2 ->>>>>>> main dev: true /is-data-view@1.0.1: @@ -8346,7 +6029,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-symbol@1.0.4: @@ -8522,14 +6205,11 @@ packages: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} dev: true -<<<<<<< HEAD -======= /jsdoc-type-pratt-parser@4.0.0: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} dev: true ->>>>>>> main /jsdom@24.0.0: resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} engines: {node: '>=18'} @@ -8608,13 +6288,6 @@ packages: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -8631,8 +6304,8 @@ packages: semver: 7.6.0 dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true /jsonfile@4.0.0: @@ -8704,7 +6377,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.4.2 + mlly: 1.6.1 pkg-types: 1.0.3 dev: true @@ -8792,11 +6465,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} - engines: {node: 14 || >=16.14} - dev: true - /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} @@ -8825,16 +6493,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true -<<<<<<< HEAD - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - -======= ->>>>>>> main /magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} @@ -8948,6 +6606,12 @@ packages: engines: {node: '>=4'} dev: true + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -8992,15 +6656,6 @@ packages: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} dev: true - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} - dependencies: - acorn: 8.11.2 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.3.2 - dev: true - /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: @@ -9074,13 +6729,6 @@ packages: resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} dev: true -<<<<<<< HEAD - /node-fetch-native@1.4.1: - resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} - dev: true - -======= ->>>>>>> main /node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} dev: true @@ -9121,7 +6769,7 @@ packages: dependencies: hosted-git-info: 7.0.1 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -9187,58 +6835,6 @@ packages: object-keys: 1.1.1 dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 -<<<<<<< HEAD - dev: true - - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 - get-intrinsic: 1.2.4 - dev: true - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} -======= - es-object-atoms: 1.0.0 - dev: true - - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} ->>>>>>> main - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.2 - dev: true - - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} - dependencies: - destr: 2.0.2 - node-fetch-native: 1.4.1 - ufo: 1.3.2 - dev: true - /ofetch@1.3.4: resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} dependencies: @@ -9605,8 +7201,8 @@ packages: /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 + jsonc-parser: 3.2.1 + mlly: 1.6.1 pathe: 1.1.2 dev: true @@ -9861,11 +7457,7 @@ packages: dependencies: find-up: 6.3.0 read-pkg: 8.1.0 -<<<<<<< HEAD - type-fest: 4.8.3 -======= type-fest: 4.14.0 ->>>>>>> main dev: true /read-pkg-up@7.0.1: @@ -9894,11 +7486,7 @@ packages: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.0 parse-json: 7.1.1 -<<<<<<< HEAD - type-fest: 4.8.3 -======= type-fest: 4.14.0 ->>>>>>> main dev: true /readable-stream@1.0.34: @@ -10119,34 +7707,13 @@ packages: yargs: 17.7.2 dev: true -<<<<<<< HEAD - /rollup@4.13.1: - resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==} -======= /rollup@4.14.0: resolution: {integrity: sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==} ->>>>>>> main engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: -<<<<<<< HEAD - '@rollup/rollup-android-arm-eabi': 4.13.1 - '@rollup/rollup-android-arm64': 4.13.1 - '@rollup/rollup-darwin-arm64': 4.13.1 - '@rollup/rollup-darwin-x64': 4.13.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.1 - '@rollup/rollup-linux-arm64-gnu': 4.13.1 - '@rollup/rollup-linux-arm64-musl': 4.13.1 - '@rollup/rollup-linux-riscv64-gnu': 4.13.1 - '@rollup/rollup-linux-s390x-gnu': 4.13.1 - '@rollup/rollup-linux-x64-gnu': 4.13.1 - '@rollup/rollup-linux-x64-musl': 4.13.1 - '@rollup/rollup-win32-arm64-msvc': 4.13.1 - '@rollup/rollup-win32-ia32-msvc': 4.13.1 - '@rollup/rollup-win32-x64-msvc': 4.13.1 -======= '@rollup/rollup-android-arm-eabi': 4.14.0 '@rollup/rollup-android-arm64': 4.14.0 '@rollup/rollup-darwin-arm64': 4.14.0 @@ -10162,7 +7729,6 @@ packages: '@rollup/rollup-win32-arm64-msvc': 4.14.0 '@rollup/rollup-win32-ia32-msvc': 4.14.0 '@rollup/rollup-win32-x64-msvc': 4.14.0 ->>>>>>> main fsevents: 2.3.3 dev: true @@ -10233,8 +7799,8 @@ packages: xmlchars: 2.2.0 dev: true - /scule@1.1.1: - resolution: {integrity: sha512-sHtm/SsIK9BUBI3EFT/Gnp9VoKfY6QLvlkvAE6YK7454IF8FSgJEAnJpVdSC7K5/pjI5NfxhzBLW2JAfYA/shQ==} + /scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} dev: true /search-insights@2.13.0: @@ -10318,17 +7884,10 @@ packages: rechoir: 0.6.2 dev: true -<<<<<<< HEAD - /shiki@1.2.1: - resolution: {integrity: sha512-u+XW6o0vCkUNlneZb914dLO+AayEIwK5tI62WeS//R5HIXBFiYaj/Hc5xcq27Yh83Grr4JbNtUBV8W6zyK4hWg==} - dependencies: - '@shikijs/core': 1.2.1 -======= /shiki@1.2.4: resolution: {integrity: sha512-Q9n9jKiOjJCRPztA9POn3/uZXNySHDNKAsPNpmtHDcFyi6ZQhx5vQKZW3Nhrwn8TWW3RudSRk66zqY603EZDeg==} dependencies: '@shikijs/core': 1.2.4 ->>>>>>> main dev: true /side-channel@1.0.6: @@ -10401,11 +7960,6 @@ packages: smart-buffer: 4.2.0 dev: true - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - dev: true - /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -10424,24 +7978,20 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 + spdx-license-ids: 3.0.17 dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.16 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 dev: true -<<<<<<< HEAD - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} -======= /spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} dependencies: @@ -10451,7 +8001,6 @@ packages: /spdx-license-ids@3.0.17: resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} ->>>>>>> main dev: true /speakingurl@14.0.1: @@ -10480,15 +8029,10 @@ packages: resolution: {integrity: sha512-vZI82CjefSxLC1bjw36z28v0+QE9rJKymGlXtfWu+ipW70ZEAwa4EbO4LxluAfLfpqiaAS04NzpYBRLDeAwYWQ==} dev: false -<<<<<<< HEAD - /stats-gl@2.2.7: - resolution: {integrity: sha512-3EjvpmVgUic2YxCM+dxwg68B0tzWqMCAmflmdbqEKuqwZL+huYieqV14crm80NB7r2F4mWaYcLLlcpbhteEagw==} -======= /stats-gl@2.2.8: resolution: {integrity: sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==} dependencies: '@types/three': 0.163.0 ->>>>>>> main dev: true /stats.js@0.17.0: @@ -10592,11 +8136,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -10650,6 +8189,13 @@ packages: has-flag: 4.0.0 dev: true + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -10659,8 +8205,8 @@ packages: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: true - /svgo@3.1.0: - resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} + /svgo@3.2.0: + resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -10677,8 +8223,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true -<<<<<<< HEAD -======= /synckit@0.6.2: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} @@ -10694,7 +8238,6 @@ packages: tslib: 2.6.2 dev: true ->>>>>>> main /tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} dev: true @@ -10722,11 +8265,7 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true -<<<<<<< HEAD - /three-custom-shader-material@5.4.0(three@0.162.0): -======= /three-custom-shader-material@5.4.0(three@0.163.0): ->>>>>>> main resolution: {integrity: sha512-Yn1lFlKOk3Vul3npEGAmbbFUZ5S2+yjPgM2XqJEZEYRSUUH2vk+WVYrtTB6Bcq15wa7hLUXAKoctAvbRmBmbYA==} peerDependencies: '@react-three/fiber': '>=8.0' @@ -10742,29 +8281,9 @@ packages: glsl-token-string: 1.0.1 glsl-tokenizer: 2.1.5 object-hash: 3.0.0 -<<<<<<< HEAD - three: 0.162.0 - - /three-stdlib@2.28.7(three@0.162.0): - resolution: {integrity: sha512-E7NuztilCswBKnEoyqydvA7N4dy0cf/gLA0bKrrg6+Q6j4WtusGa/+t9oK2HVq47S1AHRH2CvFHpdIGNjPKo/A==} - peerDependencies: - three: '>=0.128.0' - dependencies: - '@types/draco3d': 1.4.9 - '@types/offscreencanvas': 2019.7.3 - '@types/webxr': 0.5.14 - draco3d: 1.5.6 - fflate: 0.6.10 - potpack: 1.0.2 - three: 0.162.0 - dev: false - - /three-stdlib@2.29.6(three@0.162.0): -======= three: 0.163.0 /three-stdlib@2.29.6(three@0.163.0): ->>>>>>> main resolution: {integrity: sha512-nj9bHkzhhwfmqQcM/keC2RDb0bHhbw6bRXTy81ehzi8F1rtp6pJ5eS0/vl1Eg5RMFqXOMyxJ6sDHPoLU+IrVZg==} peerDependencies: three: '>=0.128.0' @@ -10775,18 +8294,10 @@ packages: draco3d: 1.5.7 fflate: 0.6.10 potpack: 1.0.2 -<<<<<<< HEAD - three: 0.162.0 - dev: true - - /three@0.162.0: - resolution: {integrity: sha512-xfCYj4RnlozReCmUd+XQzj6/5OjDNHBy5nT6rVwrOKGENAvpXe2z1jL+DZYaMu4/9pNsjH/4Os/VvS9IrH7IOQ==} -======= three: 0.163.0 /three@0.163.0: resolution: {integrity: sha512-HlMgCb2TF/dTLRtknBnjUTsR8FsDqBY43itYop2+Zg822I+Kd0Ua2vs8CvfBVefXkBdNDrLMoRTGCIIpfCuDew==} ->>>>>>> main /through2@0.6.5: resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} @@ -10877,15 +8388,6 @@ packages: typescript: 5.4.3 dev: true - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -10951,13 +8453,8 @@ packages: engines: {node: '>=14.16'} dev: true -<<<<<<< HEAD - /type-fest@4.8.3: - resolution: {integrity: sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==} -======= /type-fest@4.14.0: resolution: {integrity: sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==} ->>>>>>> main engines: {node: '>=16'} dev: true @@ -11021,12 +8518,6 @@ packages: hasBin: true dev: true - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.4.3: resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} @@ -11036,13 +8527,6 @@ packages: resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} dev: true -<<<<<<< HEAD - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true - -======= ->>>>>>> main /ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true @@ -11089,29 +8573,22 @@ packages: engines: {node: '>=18'} dev: true - /unimport@3.6.1: - resolution: {integrity: sha512-zKzbp8AQ+l8QK3XrONtUBdgBbMI8TkGh8hBYF77ZkVqMLLIAHwGSwJRFolPQMBx/5pezeRKvmu2gzlqnxRZeqQ==} + /unimport@3.7.1: + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} dependencies: '@rollup/pluginutils': 5.1.0 + acorn: 8.11.3 escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 -<<<<<<< HEAD - magic-string: 0.30.5 - mlly: 1.4.2 -======= magic-string: 0.30.8 mlly: 1.6.1 ->>>>>>> main pathe: 1.1.2 pkg-types: 1.0.3 - scule: 1.1.1 + scule: 1.3.0 strip-literal: 1.3.0 -<<<<<<< HEAD - unplugin: 1.10.0 -======= unplugin: 1.10.1 ->>>>>>> main transitivePeerDependencies: - rollup dev: true @@ -11148,19 +8625,11 @@ packages: engines: {node: '>= 10.0.0'} dev: true -<<<<<<< HEAD - /unocss@0.58.4(postcss@8.4.38)(vite@5.2.6): - resolution: {integrity: sha512-JYeQddAIObJPr6nuxahOgku0MIzjIaQ2P73KtJr0zSuzx6kiq20jf67FgDIOP1Ks6s7iJd7Ga3yuY2h49XjDjg==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 0.58.4 -======= /unocss@0.58.7(postcss@8.4.38)(vite@5.2.7): resolution: {integrity: sha512-WZEG5+RWlMvuMX8qOpZI9PAwBlFpRMnGlOtQV3M6BHsUbEPvC7IPx1fr4I22XizctRfNftUG3MWe5l74CcoD7Q==} engines: {node: '>=14'} peerDependencies: '@unocss/webpack': 0.58.7 ->>>>>>> main vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: '@unocss/webpack': @@ -11168,29 +8637,6 @@ packages: vite: optional: true dependencies: -<<<<<<< HEAD - '@unocss/astro': 0.58.4(vite@5.2.6) - '@unocss/cli': 0.58.4 - '@unocss/core': 0.58.4 - '@unocss/extractor-arbitrary-variants': 0.58.4 - '@unocss/postcss': 0.58.4(postcss@8.4.38) - '@unocss/preset-attributify': 0.58.4 - '@unocss/preset-icons': 0.58.4 - '@unocss/preset-mini': 0.58.4 - '@unocss/preset-tagify': 0.58.4 - '@unocss/preset-typography': 0.58.4 - '@unocss/preset-uno': 0.58.4 - '@unocss/preset-web-fonts': 0.58.4 - '@unocss/preset-wind': 0.58.4 - '@unocss/reset': 0.58.4 - '@unocss/transformer-attributify-jsx': 0.58.4 - '@unocss/transformer-attributify-jsx-babel': 0.58.4 - '@unocss/transformer-compile-class': 0.58.4 - '@unocss/transformer-directives': 0.58.4 - '@unocss/transformer-variant-group': 0.58.4 - '@unocss/vite': 0.58.4(vite@5.2.6) - vite: 5.2.6 -======= '@unocss/astro': 0.58.7(vite@5.2.7) '@unocss/cli': 0.58.7 '@unocss/core': 0.58.7 @@ -11212,54 +8658,14 @@ packages: '@unocss/transformer-variant-group': 0.58.7 '@unocss/vite': 0.58.7(vite@5.2.7) vite: 5.2.7 ->>>>>>> main - transitivePeerDependencies: - - postcss - - rollup - - supports-color - dev: true - - /unocss@0.58.7(postcss@8.4.38)(vite@5.2.6): - resolution: {integrity: sha512-WZEG5+RWlMvuMX8qOpZI9PAwBlFpRMnGlOtQV3M6BHsUbEPvC7IPx1fr4I22XizctRfNftUG3MWe5l74CcoD7Q==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 0.58.7 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - vite: - optional: true - dependencies: - '@unocss/astro': 0.58.7(vite@5.2.6) - '@unocss/cli': 0.58.7 - '@unocss/core': 0.58.7 - '@unocss/extractor-arbitrary-variants': 0.58.7 - '@unocss/postcss': 0.58.7(postcss@8.4.38) - '@unocss/preset-attributify': 0.58.7 - '@unocss/preset-icons': 0.58.7 - '@unocss/preset-mini': 0.58.7 - '@unocss/preset-tagify': 0.58.7 - '@unocss/preset-typography': 0.58.7 - '@unocss/preset-uno': 0.58.7 - '@unocss/preset-web-fonts': 0.58.7 - '@unocss/preset-wind': 0.58.7 - '@unocss/reset': 0.58.7 - '@unocss/transformer-attributify-jsx': 0.58.7 - '@unocss/transformer-attributify-jsx-babel': 0.58.7 - '@unocss/transformer-compile-class': 0.58.7 - '@unocss/transformer-directives': 0.58.7 - '@unocss/transformer-variant-group': 0.58.7 - '@unocss/vite': 0.58.7(vite@5.2.6) - vite: 5.2.6 transitivePeerDependencies: - postcss - rollup - supports-color dev: true - /unplugin-auto-import@0.17.2(@vueuse/core@10.9.0): - resolution: {integrity: sha512-Eu/xWI6SH4jTWXvzOfXQWAxRtiz/gMObm7wXtgMj7wBjHQKLgHTmHd4R4oha87KYGah1aKMqiqDeAxiPmfSoTg==} + /unplugin-auto-import@0.17.5(@vueuse/core@10.9.0): + resolution: {integrity: sha512-fHNDkDSxv3PGagX1wmKBYBkgaM4AKAgZmdJw/bxjhNljx9KSXSgHpGfX0MwUrq9qw6q1bhHIZVWyOwoY2koo4w==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': ^3.2.2 @@ -11275,17 +8681,10 @@ packages: '@vueuse/core': 10.9.0(vue@3.4.21) fast-glob: 3.3.2 local-pkg: 0.5.0 -<<<<<<< HEAD - magic-string: 0.30.5 - minimatch: 9.0.3 - unimport: 3.6.1 - unplugin: 1.10.0 -======= magic-string: 0.30.8 minimatch: 9.0.3 unimport: 3.7.1 unplugin: 1.10.1 ->>>>>>> main transitivePeerDependencies: - rollup dev: true @@ -11305,34 +8704,22 @@ packages: dependencies: '@antfu/utils': 0.7.7 '@rollup/pluginutils': 5.1.0 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.4 fast-glob: 3.3.2 local-pkg: 0.4.3 -<<<<<<< HEAD - magic-string: 0.30.5 - minimatch: 9.0.3 - resolve: 1.22.8 - unplugin: 1.10.0 -======= magic-string: 0.30.8 minimatch: 9.0.3 resolve: 1.22.8 unplugin: 1.10.1 ->>>>>>> main vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: - rollup - supports-color dev: true -<<<<<<< HEAD - /unplugin@1.10.0: - resolution: {integrity: sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==} -======= /unplugin@1.10.1: resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} ->>>>>>> main engines: {node: '>=14.0.0'} dependencies: acorn: 8.11.3 @@ -11346,14 +8733,14 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 dev: true @@ -11418,20 +8805,12 @@ packages: engines: {node: '>= 0.10'} dev: true -<<<<<<< HEAD - /vite-hot-client@0.2.3(vite@5.2.6): -======= /vite-hot-client@0.2.3(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main dev: true /vite-node@1.4.0: @@ -11443,11 +8822,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - '@types/node' - less @@ -11463,18 +8838,6 @@ packages: resolution: {integrity: sha512-Bww2Xd5tOGsZ1yZ9rQiGneryvsL1u86znPrqeQjCsXPsG72pnSdV5lcQA+cy8UNDguMqyTJiCevlNUbLnT85UA==} dev: true -<<<<<<< HEAD - /vite-plugin-css-injected-by-js@3.3.1(vite@5.2.6): - resolution: {integrity: sha512-PjM/X45DR3/V1K1fTRs8HtZHEQ55kIfdrn+dzaqNBFrOYO073SeSNCxp4j7gSYhV9NffVHaEnOL4myoko0ePAg==} - peerDependencies: - vite: '>2.0.0-0' - dependencies: - vite: 5.2.6 - dev: true - - /vite-plugin-dts@3.7.3(typescript@5.4.3)(vite@5.2.6): - resolution: {integrity: sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==} -======= /vite-plugin-css-injected-by-js@3.5.0(vite@5.2.7): resolution: {integrity: sha512-d0QaHH9kS93J25SwRqJNEfE29PSuQS5jn51y9N9i2Yoq0FRO7rjuTeLvjM5zwklZlRrIn6SUdtOEDKyHokgJZg==} peerDependencies: @@ -11485,7 +8848,6 @@ packages: /vite-plugin-dts@3.8.1(typescript@5.4.3)(vite@5.2.7): resolution: {integrity: sha512-zEYyQxH7lKto1VTKZHF3ZZeOPkkJgnMrePY4VxDHfDSvDjmYMMfWjZxYmNwW8QxbaItWJQhhXY+geAbyNphI7g==} ->>>>>>> main engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -11494,23 +8856,14 @@ packages: vite: optional: true dependencies: -<<<<<<< HEAD - '@microsoft/api-extractor': 7.39.0 -======= '@microsoft/api-extractor': 7.43.0 ->>>>>>> main '@rollup/pluginutils': 5.1.0 '@vue/language-core': 1.8.27(typescript@5.4.3) debug: 4.3.4 kolorist: 1.8.0 -<<<<<<< HEAD - typescript: 5.4.3 - vite: 5.2.6 -======= magic-string: 0.30.8 typescript: 5.4.3 vite: 5.2.7 ->>>>>>> main vue-tsc: 1.8.27(typescript@5.4.3) transitivePeerDependencies: - '@types/node' @@ -11518,32 +8871,19 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /vite-plugin-glsl@1.2.1(vite@5.2.6): - resolution: {integrity: sha512-yBpBHWfdiRVMxN3yIKx4qmwuqMwoMAnEMipVI0NbdIieyRFO8hpW8VTFHYi3W75h7CkvsotteP9C4pln51OE0A==} -======= /vite-plugin-glsl@1.3.0(vite@5.2.7): resolution: {integrity: sha512-SzEoLet9Bp5VSozjrhUiSc3xX1+u7rCTjXAsq4qWM3u8UjilI76A9ucX/T+CRGQCe25j50GSY+9mKSGUVPET1w==} ->>>>>>> main engines: {node: '>= 16.15.1', npm: '>= 8.11.0'} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: '@rollup/pluginutils': 5.1.0 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - rollup dev: true -<<<<<<< HEAD - /vite-plugin-inspect@0.7.42(vite@5.2.6): -======= /vite-plugin-inspect@0.7.42(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==} engines: {node: '>=14'} peerDependencies: @@ -11561,21 +8901,13 @@ packages: open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.4 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - rollup - supports-color dev: true -<<<<<<< HEAD - /vite-plugin-inspect@0.8.3(vite@5.2.6): -======= /vite-plugin-inspect@0.8.3(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: @@ -11594,80 +8926,47 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - rollup - supports-color dev: true -<<<<<<< HEAD - /vite-plugin-qrcode@0.2.3(vite@5.2.6): -======= /vite-plugin-qrcode@0.2.3(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-TFzhf20v29hnh2XEoZ2kxg8Ff/ui36pR7PGDaHaKEmsQaRagv31XacHxbw5O07HcC1Mkr4tKcYb+PFASSceHmw==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: qrcode-terminal: 0.12.0 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main dev: true /vite-plugin-require-transform@1.0.21: resolution: {integrity: sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==} dependencies: -<<<<<<< HEAD - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 -======= '@babel/generator': 7.24.1 '@babel/parser': 7.24.1 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 ->>>>>>> main transitivePeerDependencies: - supports-color dev: true -<<<<<<< HEAD - /vite-plugin-vue-devtools@1.0.0-rc.6(pug@3.0.2)(vite@5.2.6): -======= /vite-plugin-vue-devtools@1.0.0-rc.6(pug@3.0.2)(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-mtWRTz1VwBEZcb6rosgiDvXHZunxPxgBaPsORbJECZGkjZFRig7NIEwiRXgSgpx+DAiEzBoX+FLsNnGgVq+VuA==} engines: {node: '>=v14.21.3'} peerDependencies: vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 dependencies: -<<<<<<< HEAD - '@vite-plugin-vue-devtools/core': 1.0.0-rc.6(vite@5.2.6) -======= '@vite-plugin-vue-devtools/core': 1.0.0-rc.6(vite@5.2.7) ->>>>>>> main '@webfansplz/vuedoc-parser': 0.0.4(pug@3.0.2) - birpc: 0.2.14 + birpc: 0.2.17 execa: 8.0.1 sirv: 2.0.4 -<<<<<<< HEAD - vite: 5.2.6 - vite-plugin-inspect: 0.7.42(vite@5.2.6) - vite-plugin-vue-inspector: 4.0.2(vite@5.2.6) -======= vite: 5.2.7 vite-plugin-inspect: 0.7.42(vite@5.2.7) vite-plugin-vue-inspector: 4.0.2(vite@5.2.7) ->>>>>>> main transitivePeerDependencies: - '@nuxt/kit' - pug @@ -11675,27 +8974,11 @@ packages: - supports-color dev: true -<<<<<<< HEAD - /vite-plugin-vue-inspector@4.0.2(vite@5.2.6): -======= /vite-plugin-vue-inspector@4.0.2(vite@5.2.7): ->>>>>>> main resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 dependencies: -<<<<<<< HEAD - '@babel/core': 7.23.6 - '@babel/plugin-proposal-decorators': 7.23.6(@babel/core@7.23.6) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) - '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.6) - '@vue/compiler-dom': 3.4.21 - kolorist: 1.8.0 - magic-string: 0.30.8 - vite: 5.2.6 -======= '@babel/core': 7.24.3 '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) @@ -11706,7 +8989,6 @@ packages: kolorist: 1.8.0 magic-string: 0.30.8 vite: 5.2.7 ->>>>>>> main transitivePeerDependencies: - supports-color dev: true @@ -11716,21 +8998,12 @@ packages: peerDependencies: vue: '>=3.2.13' dependencies: -<<<<<<< HEAD - svgo: 3.1.0 - vue: 3.4.21(typescript@5.4.3) - dev: true - - /vite@5.2.6: - resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==} -======= svgo: 3.2.0 vue: 3.4.21(typescript@5.4.3) dev: true /vite@5.2.7: resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} ->>>>>>> main engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -11759,22 +9032,13 @@ packages: dependencies: esbuild: 0.20.2 postcss: 8.4.38 -<<<<<<< HEAD - rollup: 4.13.1 -======= rollup: 4.14.0 ->>>>>>> main optionalDependencies: fsevents: 2.3.3 dev: true -<<<<<<< HEAD - /vitepress@1.0.1(@algolia/client-search@4.23.1)(postcss@8.4.38)(search-insights@2.13.0)(typescript@5.4.3): - resolution: {integrity: sha512-eNr5pOBppYUUjEhv8S0S2t9Tv95LQ6mMeHj6ivaGwfHxpov70Vduuwl/QQMDRznKDSaP0WKV7a82Pb4JVOaqEw==} -======= /vitepress@1.0.2(@algolia/client-search@4.23.2)(postcss@8.4.38)(search-insights@2.13.0)(typescript@5.4.3): resolution: {integrity: sha512-bEj9yTEdWyewJFOhEREZF+mXuAgOq27etuJZT6DZSp+J3XpQstXMJc5piSVwhZBtuj8OfA0iXy+jdP1c71KMYQ==} ->>>>>>> main hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -11786,34 +9050,20 @@ packages: optional: true dependencies: '@docsearch/css': 3.6.0 -<<<<<<< HEAD - '@docsearch/js': 3.6.0(@algolia/client-search@4.23.1)(search-insights@2.13.0) - '@shikijs/core': 1.2.1 - '@shikijs/transformers': 1.2.1 - '@types/markdown-it': 13.0.7 - '@vitejs/plugin-vue': 5.0.4(vite@5.2.6)(vue@3.4.21) - '@vue/devtools-api': 7.0.24(vue@3.4.21) -======= '@docsearch/js': 3.6.0(@algolia/client-search@4.23.2)(search-insights@2.13.0) '@shikijs/core': 1.2.4 '@shikijs/transformers': 1.2.4 '@types/markdown-it': 13.0.7 '@vitejs/plugin-vue': 5.0.4(vite@5.2.7)(vue@3.4.21) '@vue/devtools-api': 7.0.25(vue@3.4.21) ->>>>>>> main '@vueuse/core': 10.9.0(vue@3.4.21) '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.21) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 postcss: 8.4.38 -<<<<<<< HEAD - shiki: 1.2.1 - vite: 5.2.6 -======= shiki: 1.2.4 vite: 5.2.7 ->>>>>>> main vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: - '@algolia/client-search' @@ -11887,11 +9137,7 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.3 -<<<<<<< HEAD - vite: 5.2.6 -======= vite: 5.2.7 ->>>>>>> main vite-node: 1.4.0 why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -11945,26 +9191,15 @@ packages: - supports-color dev: true - /vue-router@4.2.5(vue@3.4.21): - resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + /vue-router@4.3.0(vue@3.4.21): + resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} peerDependencies: vue: ^3.2.0 dependencies: -<<<<<<< HEAD - '@vue/devtools-api': 6.5.1 -======= '@vue/devtools-api': 6.6.1 ->>>>>>> main vue: 3.4.21(typescript@5.4.3) dev: false - /vue-template-compiler@2.7.15: - resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==} - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - dev: true - /vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} dependencies: @@ -11972,21 +9207,6 @@ packages: he: 1.2.0 dev: true -<<<<<<< HEAD - /vue-tsc@1.8.25(typescript@5.4.3): - resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} - hasBin: true - peerDependencies: - typescript: '*' - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.25(typescript@5.4.3) - semver: 7.5.4 - typescript: 5.4.3 - dev: true - -======= ->>>>>>> main /vue-tsc@1.8.27(typescript@5.4.3): resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true @@ -11999,8 +9219,6 @@ packages: typescript: 5.4.3 dev: true -<<<<<<< HEAD -======= /vue-tsc@2.0.7(typescript@5.4.3): resolution: {integrity: sha512-LYa0nInkfcDBB7y8jQ9FQ4riJTRNTdh98zK/hzt4gEpBZQmf30dPhP+odzCa+cedGz6B/guvJEd0BavZaRptjg==} hasBin: true @@ -12013,7 +9231,6 @@ packages: typescript: 5.4.3 dev: true ->>>>>>> main /vue@3.4.21(typescript@5.4.3): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: @@ -12246,20 +9463,13 @@ packages: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 -<<<<<<< HEAD - yaml: 2.3.4 - dev: true - - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} -======= yaml: 2.4.1 dev: true /yaml@2.4.1: resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} ->>>>>>> main engines: {node: '>= 14'} + hasBin: true dev: true /yargs-parser@20.2.9: @@ -12290,7 +9500,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/src/composables/useRenderer/index.ts b/src/composables/useRenderer/index.ts index 4bac5dd58..2abc2f2ba 100644 --- a/src/composables/useRenderer/index.ts +++ b/src/composables/useRenderer/index.ts @@ -94,12 +94,7 @@ export interface UseRendererOptions extends TransformToMaybeRefOrGetter renderMode?: MaybeRefOrGetter<'always' | 'on-demand' | 'manual'> } -/** - * Reactive three.js WebGLRenderer instance - * - * @param canvas - * @param {UseRendererOptions} [options] - */ + export function useRenderer( { scene, diff --git a/src/core/nodeOpts.test.ts b/src/core/nodeOpts.test.ts index c893e3d0d..5478cc908 100644 --- a/src/core/nodeOpts.test.ts +++ b/src/core/nodeOpts.test.ts @@ -101,12 +101,12 @@ describe('nodeOps', () => { root: { registerCamera: () => { }, registerObjectAtPointerEventHandler: () => { }, - } + }, } const child = new Mesh() child.__tres = { - root: null + root: null, } // Fake vnodes @@ -145,7 +145,7 @@ describe('nodeOps', () => { node.__tres = { root: { invalidate: () => { }, - } + }, } const prop = 'visible' const nextValue = false @@ -163,7 +163,7 @@ describe('nodeOps', () => { node.__tres = { root: { invalidate: () => { }, - } + }, } const prop = 'position-x' const nextValue = 5 @@ -181,7 +181,7 @@ describe('nodeOps', () => { node.__tres = { root: { invalidate: () => { }, - } + }, } const prop = 'cast-shadow' const nextValue = true @@ -195,19 +195,19 @@ describe('nodeOps', () => { it('patchProp should preserve ALL_CAPS_CASE in pierced props', () => { // Issue: https://github.com/Tresjs/tres/issues/605 - const {createElement, patchProp} = nodeOps() + const { createElement, patchProp } = nodeOps() const node = createElement('TresMeshStandardMaterial', null, null, {}) const allCapsKey = 'STANDARD' const allCapsUnderscoresKey = 'USE_UVS' const allCapsValue = 'hello' const allCapsUnderscoresValue = 'goodbye' - patchProp(node, 'defines-' + allCapsKey, null, allCapsValue) - patchProp(node, 'defines-' + allCapsUnderscoresKey, null, allCapsUnderscoresValue) + patchProp(node, `defines-${allCapsKey}`, null, allCapsValue) + patchProp(node, `defines-${allCapsUnderscoresKey}`, null, allCapsUnderscoresValue) expect(node.defines[allCapsKey]).equals(allCapsValue) expect(node.defines[allCapsUnderscoresKey]).equals(allCapsUnderscoresValue) - }) + }) it('parentNode: returns parent of a node', async () => { // Setup diff --git a/src/types/index.ts b/src/types/index.ts index bebacb372..0efe51b38 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -55,7 +55,7 @@ export interface TresObject3D extends THREE.Object3D { material?: THREE.Material & TresBaseObject } -export type TresObject = +export type TresObject = TresBaseObject & (TresObject3D | THREE.BufferGeometry | THREE.Material | THREE.Fog) & { __tres: LocalState } export interface TresScene extends THREE.Scene { From bc12f0bf44283c8e8ad8213bc174f483b91bb288 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 12 Apr 2024 18:59:40 +0200 Subject: [PATCH 25/52] chore: rebuild pnpm-lock --- pnpm-lock.yaml | 285 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 269 insertions(+), 16 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c89a89477..2dc82a453 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,7 +29,7 @@ importers: version: 3.8.0(@tresjs/core@3.5.1)(three@0.163.0)(tweakpane@4.0.3)(vue@3.4.21) '@tresjs/eslint-config': specifier: ^1.0.0 - version: 1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0) + version: 1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.4)(vitest@1.4.0) '@types/three': specifier: ^0.163.0 version: 0.163.0 @@ -80,7 +80,7 @@ importers: version: 1.1.2 release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.4.3) + version: 17.1.1(typescript@5.4.4) rollup-plugin-analyzer: specifier: ^4.0.0 version: 4.0.0 @@ -95,7 +95,7 @@ importers: version: 0.163.0 unocss: specifier: ^0.58.7 - version: 0.58.7(postcss@8.4.38)(vite@5.2.7) + version: 0.58.7(postcss@8.4.38)(vite@5.2.8) unplugin: specifier: ^1.10.0 version: 1.10.1 @@ -113,7 +113,7 @@ importers: version: 3.8.1(typescript@5.4.4)(vite@5.2.8) vite-plugin-inspect: specifier: ^0.8.3 - version: 0.8.3(vite@5.2.7) + version: 0.8.3(vite@5.2.8) vite-plugin-require-transform: specifier: ^1.0.21 version: 1.0.21 @@ -128,7 +128,7 @@ importers: version: 1.4.0(@vitest/ui@1.4.0)(jsdom@24.0.0) vue: specifier: ^3.4.21 - version: 3.4.21(typescript@5.4.3) + version: 3.4.21(typescript@5.4.4) vue-demi: specifier: ^0.14.7 version: 0.14.7(vue@3.4.21) @@ -141,7 +141,7 @@ importers: devDependencies: unocss: specifier: ^0.58.3 - version: 0.58.7(postcss@8.4.38)(vite@5.2.7) + version: 0.58.3(postcss@8.4.38)(vite@5.2.8) vite-svg-loader: specifier: ^5.1.0 version: 5.1.0(vue@3.4.21) @@ -474,7 +474,7 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helpers': 7.24.1 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 @@ -673,6 +673,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.0 + dev: true /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} @@ -680,7 +681,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.24.0 - dev: true /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} @@ -2040,7 +2040,7 @@ packages: - '@vue/composition-api' dev: true - /@tresjs/eslint-config@1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.3)(vitest@1.4.0): + /@tresjs/eslint-config@1.0.0(@vue/compiler-sfc@3.4.21)(eslint@8.57.0)(typescript@5.4.4)(vitest@1.4.0): resolution: {integrity: sha512-m28JMAHfJ/jSESh5o38EdPfD27HD+ptRiUSh6lgF6CY8mQ5QreFlTzUcYsaBqvoCC1PnKzUyGBBomscXj5X5cw==} peerDependencies: eslint: 8.x @@ -2220,7 +2220,7 @@ packages: /@types/webxr@0.5.14: resolution: {integrity: sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA==} - /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/eslint-plugin@7.5.0(@typescript-eslint/parser@7.5.0)(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2249,7 +2249,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/parser@7.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2286,7 +2286,7 @@ packages: '@typescript-eslint/visitor-keys': 7.5.0 dev: true - /@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.3): + /@typescript-eslint/type-utils@7.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2418,6 +2418,22 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true + /@unocss/astro@0.58.3(vite@5.2.8): + resolution: {integrity: sha512-qJL+XkWYJhEIX4AmOtbfb2Zu4holTDpRscfvVci4T+2VWjyE3mgtsyNzi9ZChe/hdEPRa7g26gSpNQeMhjh/Kw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@unocss/core': 0.58.3 + '@unocss/reset': 0.58.3 + '@unocss/vite': 0.58.3(vite@5.2.8) + vite: 5.2.8 + transitivePeerDependencies: + - rollup + dev: true + /@unocss/astro@0.58.7(vite@5.2.8): resolution: {integrity: sha512-htqhe+Qn9UUnND214LlwS8a9Ib0hzO+IxY79cz1GDYoDV+Z4ONXCkUxLLlnnBM/HupWKOu+bdBWWVGIOHAniig==} peerDependencies: @@ -2434,6 +2450,28 @@ packages: - rollup dev: true + /@unocss/cli@0.58.3: + resolution: {integrity: sha512-veGdHhwm7GRvruXCMdqoFu3wVozr7ELEVWsFB6GpqWdGYIJ1i72M18l72UHDA2+TuDillZONnAQ5AvX9x/sYAw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0 + '@unocss/config': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/preset-uno': 0.58.3 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.8 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + dev: true + /@unocss/cli@0.58.7: resolution: {integrity: sha512-Vr5LABxFvZa8K71qVOnP7FkSA14/xEqhVOO+KZzcZafdW3TCvWa/dr3Lr5mDUufY82s5/5KGFosVQWQymA8HMg==} engines: {node: '>=14'} @@ -2456,6 +2494,14 @@ packages: - rollup dev: true + /@unocss/config@0.58.3: + resolution: {integrity: sha512-8BQDoLzf/BkyfnkQsjnXI84oj+Spqkr7Bf2AbOGcX14vof0qqHSDvJXQV1e0u7jv2QETe2D1+PI4fnkJCumaRw==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.58.3 + unconfig: 0.3.11 + dev: true + /@unocss/config@0.58.7: resolution: {integrity: sha512-ZMSFWJI8DfE/4HiIU+hkTSKUtEkennRn+raej5HCGTfy5xpdYCm9Zdrw/cYqkN2LPHM8o076Z2sD6H4MV5HrvA==} engines: {node: '>=14'} @@ -2468,16 +2514,35 @@ packages: resolution: {integrity: sha512-1d36M0CV3yC80J0pqOa5rH1BX6g2iZdtKmIb3oSBN4AWnMCSrrJEPBrUikyMq2TEQTrYWJIVDzv5A9hBUat3TA==} dev: true + /@unocss/core@0.58.3: + resolution: {integrity: sha512-9hTxzsrSLh+07ql/lGhE+8ZbE9MTTeZeMx131cPf2jDJUxAZooLE5pBCoK0k77ZJGcribRrwPGkUScBNOK0cYQ==} + dev: true + /@unocss/core@0.58.7: resolution: {integrity: sha512-Df5ytibV0MB7kWLggzLHsJUj08Of2oqXmPg7QjRUghMvCT3dl2LUIZXiztYPMH0F4x0cPebNoa/pavNt8xz9eQ==} dev: true + /@unocss/extractor-arbitrary-variants@0.58.3: + resolution: {integrity: sha512-QszC2atLcvzyoZFsjgtMBbILN4lrYI60iVRWdii+GGiKVtoIaKRWiA/3WERkvYGVPseVWOMflUpfxNeq+s9zUw==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/extractor-arbitrary-variants@0.58.7: resolution: {integrity: sha512-wEuilON0u/e1milNp1UBWGps3Hdtm9qBfmc2YmsHN8KhpTSSCluzbrLSYfF++tU5iWmVWR2514Lc2waVDhuiwg==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/inspector@0.58.3: + resolution: {integrity: sha512-FqkoHiO23lGGcQ+qJbE1Kb8+kPJWc/LxBz3B4Ehml1vQryncNh4p+3sczVn5YVTfPDGBXBCkP05Q+PJRKabPXQ==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/rule-utils': 0.58.3 + gzip-size: 6.0.0 + sirv: 2.0.4 + dev: true + /@unocss/inspector@0.58.7: resolution: {integrity: sha512-5vYsAuOj4ODgCm2Hmfhgcih+MdjsOxAHpUUDcZKAuVkr5j4dmrQnjWmS0fafR5vcjQch6T1JTsPE9x/Ws51UIw==} dependencies: @@ -2487,6 +2552,21 @@ packages: sirv: 2.0.4 dev: true + /@unocss/postcss@0.58.3(postcss@8.4.38): + resolution: {integrity: sha512-y1WQNvLUidypCu/tr6oJfaV4pjd8Lsk1N27ASEVsvockOH3MekRYpHtJfTl2fMk+1Y98AHv7hPAVjM2NlvhDow==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + dependencies: + '@unocss/config': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/rule-utils': 0.58.3 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.8 + postcss: 8.4.38 + dev: true + /@unocss/postcss@0.58.7(postcss@8.4.38): resolution: {integrity: sha512-4UhYTj7AaCDJKPEa9GX9L9dnH+6ci04i9ZYdNdu+Pvbki2Q2wAa2FwqLwH7+6WgWm10b9AXVacExw+4hC2reOg==} engines: {node: '>=14'} @@ -2502,12 +2582,28 @@ packages: postcss: 8.4.38 dev: true + /@unocss/preset-attributify@0.58.3: + resolution: {integrity: sha512-iDXNfnSC0SI51UnMltHmMcPr2SYYkimo86i+SBQqc/WBGcCF7fFqFj8G2WsZfwHvU9SdAHF8tYIwNq06w1WSeg==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/preset-attributify@0.58.7: resolution: {integrity: sha512-WmhrRSOAhbKn+q7A65Kg/49YDZOqfKxj+VZvngwjzDmSfZcr9BHhc67eg9IOF4OPHdKw/3rhSvA+FTMGre2Lpw==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/preset-icons@0.58.3: + resolution: {integrity: sha512-SA4Eu4rOQ9+zUgIyK6RacS01ygm0PJWkqKlD8ccrBqEyZapqiU+vLL+v6X8YVjoZjR+5CVgcMD5Km7zEQgqXQw==} + dependencies: + '@iconify/utils': 2.1.22 + '@unocss/core': 0.58.3 + ofetch: 1.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /@unocss/preset-icons@0.58.7: resolution: {integrity: sha512-GeFaWiWGDktRs9TKqT4gb78Cjo7qlatOTijfJ1Zoyd3QMfbg7mRJPZGgHnLtpwYju+QKxG618fwlGvzARKhNfg==} dependencies: @@ -2518,6 +2614,14 @@ packages: - supports-color dev: true + /@unocss/preset-mini@0.58.3: + resolution: {integrity: sha512-vPC97vZPY6J9uZ+KmK4x7atKFlZJPH4tR7+SmzTmguaGIHZJG8k1cjBCg+5M7P4MaxINRMukUQS8/mM/uWFqvQ==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/extractor-arbitrary-variants': 0.58.3 + '@unocss/rule-utils': 0.58.3 + dev: true + /@unocss/preset-mini@0.58.7: resolution: {integrity: sha512-ktfrMlOtnks9j1r1ZJFzPcmCbWRjOfXh7UwoGYhH7c3Fi9Zbn1HI9+wblroEBstvbGUZGyaH5Ht+0rCmRrg5HQ==} dependencies: @@ -2526,12 +2630,25 @@ packages: '@unocss/rule-utils': 0.58.7 dev: true + /@unocss/preset-tagify@0.58.3: + resolution: {integrity: sha512-9CEh4p8M8zFuNFzmPIs1paExWRcwr0Gp6lSMffFnqaVToeRBgEH7VnRj6/R3ZPAmQ2rEemZ1+3eOQlsspEE6aw==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/preset-tagify@0.58.7: resolution: {integrity: sha512-IDR9+QDgPjcANRIWzlmubPPtgYTXGxWFqrEfRyz7ZQ4YLiA2sSLpVyOwOBW5mP7Bl2hF5oGlTKYyprk4pRzyUA==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/preset-typography@0.58.3: + resolution: {integrity: sha512-hOQa2Sjkxo5v+jMwPXYv1MpHSrirf73FKPqwwHlvEUSCq9iweGDOU/MVOc5fI9qCg0SrfWhIvrZb4ASlgAuzWQ==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/preset-mini': 0.58.3 + dev: true + /@unocss/preset-typography@0.58.7: resolution: {integrity: sha512-GCZGrFGBJO/k9widlpRvCKoouRaprgvNtt8mKpv38ToDSWexMZcaOTZHpKUPgljmjJ5As7ASwmDvjv6uiM5uYg==} dependencies: @@ -2539,6 +2656,15 @@ packages: '@unocss/preset-mini': 0.58.7 dev: true + /@unocss/preset-uno@0.58.3: + resolution: {integrity: sha512-E/g2BS4KXS9E/4OqyJSt0xSB6gbbk2VGjgIXrpcSXuDr2S2F29XLVlhJA5HJBADPlEfbo41z7Mk3LA3nQPWxQQ==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/preset-mini': 0.58.3 + '@unocss/preset-wind': 0.58.3 + '@unocss/rule-utils': 0.58.3 + dev: true + /@unocss/preset-uno@0.58.7: resolution: {integrity: sha512-oirPRtIailoewLvim/VjcxHZrBotRzBNaFZFMD1GLwScAYrzS8DWJ3pozNn7+s2E80ZUBfgekRTgvUKAFMPSCw==} dependencies: @@ -2548,6 +2674,13 @@ packages: '@unocss/rule-utils': 0.58.7 dev: true + /@unocss/preset-web-fonts@0.58.3: + resolution: {integrity: sha512-g+ru8gX74uZVSfKgdSGp46XQ+wMr66Hp3wtI01yyu9wqmJRAVWQmeehFYZ0hDnGgX20veYSbG+ybZfxIKeTy6w==} + dependencies: + '@unocss/core': 0.58.3 + ofetch: 1.3.4 + dev: true + /@unocss/preset-web-fonts@0.58.7: resolution: {integrity: sha512-97BhHYFudIVmMmLIZl3nA6puFLr2EEgG3xxR8Sa2Ox2sFL46D6oZrsxg9qr73QdJNOU3qk7HtnCn0+rozDrixg==} dependencies: @@ -2555,6 +2688,14 @@ packages: ofetch: 1.3.4 dev: true + /@unocss/preset-wind@0.58.3: + resolution: {integrity: sha512-/YhvKDFGnTNvKxNaBv1dazHaqNmBM0Ulh0U9lhycGz11qsJTQSl/Y9ZP64fVC7fuo+Uiaj8AN/9gpmpVrCgt4A==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/preset-mini': 0.58.3 + '@unocss/rule-utils': 0.58.3 + dev: true + /@unocss/preset-wind@0.58.7: resolution: {integrity: sha512-rELMKcd/cwMnw6fPf/dmg63u41fRXJoXDO5rlO/+Fa8DF4/r8KJTUbjJbZfcOnh3n8jHz3NUz+QigdRBuDTEuw==} dependencies: @@ -2563,10 +2704,22 @@ packages: '@unocss/rule-utils': 0.58.7 dev: true + /@unocss/reset@0.58.3: + resolution: {integrity: sha512-Q2KiRQlam2iYsTZgKdvnXEfUN4TA2oVpGIVD9Wa0ggs0XlYj5aOo0g0+4Tgqqn+YaviZQeJKnDs/JWE+ygHhZA==} + dev: true + /@unocss/reset@0.58.7: resolution: {integrity: sha512-KiN5u5D4zJcU0Tg+wjgTWYIm8VEfHpi7t2a3YfNCLo9s/75Ty4tlYB9StEShYmVMCXBOu0mK1CwqQTNaFpfM1w==} dev: true + /@unocss/rule-utils@0.58.3: + resolution: {integrity: sha512-0Px9gIW+VOKetZuYET19uamIRpk7A9c8sCzQuGlNvCLXKEWamqXz5asLtnvPzw6SwCXEQDgWXE9i+aeoXaM0Jg==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.58.7 + magic-string: 0.30.8 + dev: true + /@unocss/rule-utils@0.58.7: resolution: {integrity: sha512-SbMwAUSgx5v4TXy+MXiWbqzoMjVHSeMaJpJOruU9PmtrOuZmqeajffMtI6pLtGlgrEL76frLRyMmSErxhyNelw==} engines: {node: '>=14'} @@ -2575,10 +2728,25 @@ packages: magic-string: 0.30.8 dev: true + /@unocss/scope@0.58.3: + resolution: {integrity: sha512-Bkf6sk/0wry+fa5P8eLnzjC4pdrRlBY29g4F64qjsMBR0gk0stFRNzeoMOk412gmJXWjjlAQgNYiBZDHoPghZw==} + dev: true + /@unocss/scope@0.58.7: resolution: {integrity: sha512-DaAHFT3azxq5eFiTRrDAqk8TSDlo6x5ImBowzdNO4B2QMt+o1X9uhbe8Qt+WlG3MOwhti87JT8ooNA1pzi3Iig==} dev: true + /@unocss/transformer-attributify-jsx-babel@0.58.3: + resolution: {integrity: sha512-ar+s1rUVHpTy5Yz31WP4DGF2IHxyD4sk/t9ayvR2nOZddAZipdLGSShG03GLkRv4h2/r0x+BIyJGdwAC0BgVZQ==} + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) + '@unocss/core': 0.58.3 + transitivePeerDependencies: + - supports-color + dev: true + /@unocss/transformer-attributify-jsx-babel@0.58.7: resolution: {integrity: sha512-IxEPQG7Kn+NgYEogOSKfqfGMQR7WU8X2DctaGBoQlizMiDr+q9DXM1dgGU0bXMxnSpRF8DYFHvgHefRnNUUVPg==} dependencies: @@ -2590,18 +2758,38 @@ packages: - supports-color dev: true + /@unocss/transformer-attributify-jsx@0.58.3: + resolution: {integrity: sha512-H6wLJ5aAdHz8K/Z9/7OfiCBpOmKM7Gah2YtooT/Vfxu66bGehZO4QF6fcla6St53HifNvZ5odhlzqVEyHvQEaQ==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/transformer-attributify-jsx@0.58.7: resolution: {integrity: sha512-6kVTHvcTdlKpvXuXRgUPKFTTWFxJH0OL6N77x2WZgbDQc40mv95JIUCVBA8EnpRyGGTQi3yasiXIS7Ur2UmsbA==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/transformer-compile-class@0.58.3: + resolution: {integrity: sha512-VmnByb3N8uGAEXjnfhra3DzKq8ZeVCL30n46GG5RTC03MK0rZmKVOmBOBIB99rmSV+D/WVrb12Gf4fHsoLca7g==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/transformer-compile-class@0.58.7: resolution: {integrity: sha512-+IWWA9/hmaZIjxB4JY3fuWuK4fAMV/uoi0T3kANDOnK/HUmX5pUF9oTzC3LBa+1SwzZiMoTJgiQEGKv1qa2QjQ==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/transformer-directives@0.58.3: + resolution: {integrity: sha512-JMfeA8GJz106UqafqsCDp6BBEU7TozZHpLw414CKZjOW1CuMmaKEGrlr2UCjCYgM1vH7KEFKRMwTRUEV3NvywQ==} + dependencies: + '@unocss/core': 0.58.3 + '@unocss/rule-utils': 0.58.3 + css-tree: 2.3.1 + dev: true + /@unocss/transformer-directives@0.58.7: resolution: {integrity: sha512-vMn86ARgrhCd+bZf1qvwBWhvQnOkAwOXbFGHM2cuuC0VVGJQcRE+dwTnUEJ5iqKGUNFWPJ/7NaV47kh58YITcg==} dependencies: @@ -2610,12 +2798,38 @@ packages: css-tree: 2.3.1 dev: true + /@unocss/transformer-variant-group@0.58.3: + resolution: {integrity: sha512-/8CyzLwzpJC5cdiA/Wd5/Pg+HEIK+xxJJ3/VXoo93OPNCCbA9/h6DPwDh1ogKk15c6b5H75Ow6zKq1rYQAz2EA==} + dependencies: + '@unocss/core': 0.58.3 + dev: true + /@unocss/transformer-variant-group@0.58.7: resolution: {integrity: sha512-9yGvrecxvY6wEc1tV4AsUDMNbj8xWk6aJ3LyZNzxOzmxmNUNAIK+y81/Hp7djn+w0ck6ss/uo6Ug7tGX+0bKUw==} dependencies: '@unocss/core': 0.58.7 dev: true + /@unocss/vite@0.58.3(vite@5.2.8): + resolution: {integrity: sha512-gmB2//z7lDEK7Bw5HbHTSQ3abOM0iveAY/W3L3FFXpvduoxMQyuI5dDk0hOCtzhAWeJoynnVN4MBGVmXM4Y/Mg==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0 + '@unocss/config': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/inspector': 0.58.3 + '@unocss/scope': 0.58.3 + '@unocss/transformer-directives': 0.58.3 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.8 + vite: 5.2.8 + transitivePeerDependencies: + - rollup + dev: true + /@unocss/vite@0.58.7(vite@5.2.8): resolution: {integrity: sha512-S8TJojR1/7O9Sfykj2k4yOq6gZOnjMNZq5ug/6edA11Q/gz2WrT/sx6aPcfIm3xVBnmLxaHfy3r06W+SiIbZcg==} peerDependencies: @@ -2803,14 +3017,14 @@ packages: '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/compiler-sfc': 3.4.21 dev: true /@vue/compiler-core@3.4.21: resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -2825,7 +3039,7 @@ packages: /@vue/compiler-sfc@3.4.21: resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-ssr': 3.4.21 @@ -4614,7 +4828,7 @@ packages: synckit: 0.8.8 dev: true - /eslint-plugin-import-x@0.5.0(eslint@8.57.0)(typescript@5.4.3): + /eslint-plugin-import-x@0.5.0(eslint@8.57.0)(typescript@5.4.4): resolution: {integrity: sha512-C7R8Z4IzxmsoOPMtSzwuOBW5FH6iRlxHR6iTks+MzVlrk3r3TUxokkWTx3ypdj9nGOEP+CG/5e6ebZzHbxgbbQ==} engines: {node: '>=16'} peerDependencies: @@ -8642,6 +8856,45 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unocss@0.58.3(postcss@8.4.38)(vite@5.2.8): + resolution: {integrity: sha512-2rnvghfiIDRQ2cOrmN4P7J7xV2p3yBK+bPAt1aoUxCXcszkLczAnQzh9c7IZ+p70kSVstK45cJTYV6TMzOLF7Q==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.3 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + dependencies: + '@unocss/astro': 0.58.3(vite@5.2.8) + '@unocss/cli': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/extractor-arbitrary-variants': 0.58.3 + '@unocss/postcss': 0.58.3(postcss@8.4.38) + '@unocss/preset-attributify': 0.58.3 + '@unocss/preset-icons': 0.58.3 + '@unocss/preset-mini': 0.58.3 + '@unocss/preset-tagify': 0.58.3 + '@unocss/preset-typography': 0.58.3 + '@unocss/preset-uno': 0.58.3 + '@unocss/preset-web-fonts': 0.58.3 + '@unocss/preset-wind': 0.58.3 + '@unocss/reset': 0.58.3 + '@unocss/transformer-attributify-jsx': 0.58.3 + '@unocss/transformer-attributify-jsx-babel': 0.58.3 + '@unocss/transformer-compile-class': 0.58.3 + '@unocss/transformer-directives': 0.58.3 + '@unocss/transformer-variant-group': 0.58.3 + '@unocss/vite': 0.58.3(vite@5.2.8) + vite: 5.2.8 + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: true + /unocss@0.58.7(postcss@8.4.38)(vite@5.2.8): resolution: {integrity: sha512-WZEG5+RWlMvuMX8qOpZI9PAwBlFpRMnGlOtQV3M6BHsUbEPvC7IPx1fr4I22XizctRfNftUG3MWe5l74CcoD7Q==} engines: {node: '>=14'} From e3874f9833a269ecaee8ba779e32e3d2441079a0 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 12 Apr 2024 19:00:39 +0200 Subject: [PATCH 26/52] test(nodeOps): clean up tests --- .../{nodeOpts.test.ts => nodeOps.test.ts} | 81 ++++++++----------- 1 file changed, 35 insertions(+), 46 deletions(-) rename src/core/{nodeOpts.test.ts => nodeOps.test.ts} (69%) diff --git a/src/core/nodeOpts.test.ts b/src/core/nodeOps.test.ts similarity index 69% rename from src/core/nodeOpts.test.ts rename to src/core/nodeOps.test.ts index 5478cc908..cdcd8ca7f 100644 --- a/src/core/nodeOpts.test.ts +++ b/src/core/nodeOps.test.ts @@ -1,13 +1,17 @@ +import { describe, beforeAll, it, expect } from 'vitest' import * as THREE from 'three' import { Mesh, Scene } from 'three' import type { TresObject } from '../types' -import { nodeOps } from './nodeOps' +import { nodeOps as getNodeOps } from './nodeOps' import { extend } from './catalogue' +let nodeOps = getNodeOps() + describe('nodeOps', () => { beforeAll(() => { // Setup extend(THREE) + nodeOps = getNodeOps() }) it('createElement should create an instance with given tag', async () => { // Setup @@ -15,10 +19,10 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.isObject3D).toBeTruthy() + expect(instance?.isObject3D).toBeTruthy() expect(instance).toBeInstanceOf(Mesh) }) @@ -28,13 +32,13 @@ describe('nodeOps', () => { const props = { args: [10, 3, 16, 100] } // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.parameters.radius).toBe(10) - expect(instance.parameters.tube).toBe(3) - expect(instance.parameters.radialSegments).toBe(16) - expect(instance.parameters.tubularSegments).toBe(100) + expect(instance?.parameters.radius).toBe(10) + expect(instance?.parameters.tube).toBe(3) + expect(instance?.parameters.radialSegments).toBe(16) + expect(instance?.parameters.tubularSegments).toBe(100) }) it.skip('createElement should create an camera instance', async () => { @@ -43,10 +47,10 @@ describe('nodeOps', () => { const props = { args: [75, 2, 0.1, 5] } // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.isCamera).toBeTruthy() + expect(instance?.isCamera).toBeTruthy() expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) }) @@ -60,10 +64,10 @@ describe('nodeOps', () => { consoleWarnSpy.mockImplementation(() => { }) // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.isCamera).toBeTruthy() + expect(instance?.isCamera).toBeTruthy() expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) expect(consoleWarnSpy).toHaveBeenCalled() }) @@ -74,11 +78,11 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.isMaterial).toBeTruthy() - expect(instance.attach).toBe('material') + expect(instance?.isMaterial).toBeTruthy() + expect(instance?.attach).toBe('material') }) it('createElement should add attach geometry property if instance is a geometry', () => { @@ -87,11 +91,11 @@ describe('nodeOps', () => { const props = { args: [] } // Test - const instance = nodeOps().createElement(tag, false, null, props) + const instance = nodeOps.createElement(tag, undefined, undefined, props) // Assert - expect(instance.isBufferGeometry).toBeTruthy() - expect(instance.attach).toBe('geometry') + expect(instance?.isBufferGeometry).toBeTruthy() + expect(instance?.attach).toBe('geometry') }) it('insert should insert child into parent', async () => { @@ -115,7 +119,7 @@ describe('nodeOps', () => { } // Test - nodeOps().insert(child, parent, null) + nodeOps.insert(child, parent, null) // Assert expect(parent.children.includes(child)).toBeTruthy() @@ -130,10 +134,10 @@ describe('nodeOps', () => { child.__vnode = { type: 'TresMesh', } - nodeOps().insert(child, parent) + nodeOps.insert(child, parent) // Test - nodeOps().remove(child) + nodeOps.remove(child) // Assert expect(!parent.children.includes(child)).toBeTruthy() @@ -141,17 +145,12 @@ describe('nodeOps', () => { it('patchProp should patch property of node', async () => { // Setup - const node: TresObject = new Mesh() - node.__tres = { - root: { - invalidate: () => { }, - }, - } + const node = nodeOps.createElement('Mesh')! const prop = 'visible' const nextValue = false // Test - nodeOps().patchProp(node, prop, null, nextValue) + nodeOps.patchProp(node, prop, null, nextValue) // Assert expect(node.visible === nextValue) @@ -159,17 +158,12 @@ describe('nodeOps', () => { it('patchProp should patch traverse pierced props', async () => { // Setup - const node: TresObject = new Mesh() - node.__tres = { - root: { - invalidate: () => { }, - }, - } + const node = nodeOps.createElement('Mesh')! const prop = 'position-x' const nextValue = 5 // Test - nodeOps().patchProp(node, prop, null, nextValue) + nodeOps.patchProp(node, prop, null, nextValue) // Assert expect(node.position.x === nextValue) @@ -177,17 +171,12 @@ describe('nodeOps', () => { it('patchProp it should not patch traverse pierced props of existing dashed properties', async () => { // Setup - const node: TresObject = new Mesh() - node.__tres = { - root: { - invalidate: () => { }, - }, - } + const node = nodeOps.createElement('Mesh')! const prop = 'cast-shadow' const nextValue = true // Test - nodeOps().patchProp(node, prop, null, nextValue) + nodeOps.patchProp(node, prop, null, nextValue) // Assert expect(node.castShadow === nextValue) @@ -195,8 +184,8 @@ describe('nodeOps', () => { it('patchProp should preserve ALL_CAPS_CASE in pierced props', () => { // Issue: https://github.com/Tresjs/tres/issues/605 - const { createElement, patchProp } = nodeOps() - const node = createElement('TresMeshStandardMaterial', null, null, {}) + const { createElement, patchProp } = nodeOps + const node = createElement('TresMeshStandardMaterial', undefined, undefined, {})! const allCapsKey = 'STANDARD' const allCapsUnderscoresKey = 'USE_UVS' const allCapsValue = 'hello' @@ -212,12 +201,12 @@ describe('nodeOps', () => { it('parentNode: returns parent of a node', async () => { // Setup const parent: TresObject = new Scene() - const child: TresObject = new Mesh() + const child: TresObject = nodeOps.createElement('Mesh')! parent.children.push(child) child.parent = parent // Test - const parentNode = nodeOps().parentNode(child) + const parentNode = nodeOps.parentNode(child) // Assert expect(parentNode === parent) From 0cf177117dc4029ca6056fe0142a01f729cc6fed Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 12 Apr 2024 19:08:35 +0200 Subject: [PATCH 27/52] test(nodeOps): organize tests --- src/core/nodeOps.test.ts | 300 ++++++++++++++++++++------------------- 1 file changed, 155 insertions(+), 145 deletions(-) diff --git a/src/core/nodeOps.test.ts b/src/core/nodeOps.test.ts index cdcd8ca7f..3efec4e80 100644 --- a/src/core/nodeOps.test.ts +++ b/src/core/nodeOps.test.ts @@ -1,4 +1,4 @@ -import { describe, beforeAll, it, expect } from 'vitest' +import { beforeAll, describe, expect, it } from 'vitest' import * as THREE from 'three' import { Mesh, Scene } from 'three' import type { TresObject } from '../types' @@ -13,202 +13,212 @@ describe('nodeOps', () => { extend(THREE) nodeOps = getNodeOps() }) - it('createElement should create an instance with given tag', async () => { + describe('createElement', () => { + it('creates an instance with given tag', async () => { // Setup - const tag = 'TresMesh' - const props = { args: [] } + const tag = 'TresMesh' + const props = { args: [] } - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.isObject3D).toBeTruthy() - expect(instance).toBeInstanceOf(Mesh) - }) + // Assert + expect(instance?.isObject3D).toBeTruthy() + expect(instance).toBeInstanceOf(Mesh) + }) - it('createElement should create an instance with given tag and props', async () => { + it('creates an instance with given tag and props', async () => { // Setup - const tag = 'TresTorusGeometry' - const props = { args: [10, 3, 16, 100] } + const tag = 'TresTorusGeometry' + const props = { args: [10, 3, 16, 100] } - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.parameters.radius).toBe(10) - expect(instance?.parameters.tube).toBe(3) - expect(instance?.parameters.radialSegments).toBe(16) - expect(instance?.parameters.tubularSegments).toBe(100) - }) + // Assert + expect(instance?.parameters.radius).toBe(10) + expect(instance?.parameters.tube).toBe(3) + expect(instance?.parameters.radialSegments).toBe(16) + expect(instance?.parameters.tubularSegments).toBe(100) + }) - it.skip('createElement should create an camera instance', async () => { + it.skip('creates an camera instance', async () => { // Setup - const tag = 'TresPerspectiveCamera' - const props = { args: [75, 2, 0.1, 5] } + const tag = 'TresPerspectiveCamera' + const props = { args: [75, 2, 0.1, 5] } - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.isCamera).toBeTruthy() - expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) - }) + // Assert + expect(instance?.isCamera).toBeTruthy() + expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) + }) - it.skip('createElement should log a warning if the camera doesnt have a position', async () => { + it.skip('logs a warning if the camera doesnt have a position', async () => { // Setup - const tag = 'TresPerspectiveCamera' - const props = { args: [75, 2, 0.1, 5] } + const tag = 'TresPerspectiveCamera' + const props = { args: [75, 2, 0.1, 5] } - // Spy - const consoleWarnSpy = vi.spyOn(console, 'warn') - consoleWarnSpy.mockImplementation(() => { }) + // Spy + const consoleWarnSpy = vi.spyOn(console, 'warn') + consoleWarnSpy.mockImplementation(() => { }) - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.isCamera).toBeTruthy() - expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) - expect(consoleWarnSpy).toHaveBeenCalled() - }) + // Assert + expect(instance?.isCamera).toBeTruthy() + expect(instance).toBeInstanceOf(THREE.PerspectiveCamera) + expect(consoleWarnSpy).toHaveBeenCalled() + }) - it('createElement should add attach material property if instance is a material', () => { + it('adds material with "attach" property if instance is a material', () => { // Setup - const tag = 'TresMeshStandardMaterial' - const props = { args: [] } + const tag = 'TresMeshStandardMaterial' + const props = { args: [] } - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.isMaterial).toBeTruthy() - expect(instance?.attach).toBe('material') - }) + // Assert + expect(instance?.isMaterial).toBeTruthy() + expect(instance?.attach).toBe('material') + }) - it('createElement should add attach geometry property if instance is a geometry', () => { + it('adds attach geometry property if instance is a geometry', () => { // Setup - const tag = 'TresTorusGeometry' - const props = { args: [] } + const tag = 'TresTorusGeometry' + const props = { args: [] } - // Test - const instance = nodeOps.createElement(tag, undefined, undefined, props) + // Test + const instance = nodeOps.createElement(tag, undefined, undefined, props) - // Assert - expect(instance?.isBufferGeometry).toBeTruthy() - expect(instance?.attach).toBe('geometry') + // Assert + expect(instance?.isBufferGeometry).toBeTruthy() + expect(instance?.attach).toBe('geometry') + }) }) - it('insert should insert child into parent', async () => { + describe('insert', () => { + it('inserts child into parent', async () => { // Setup - const parent = new Scene() - parent.__tres = { - root: { - registerCamera: () => { }, - registerObjectAtPointerEventHandler: () => { }, - }, - } - const child = new Mesh() - - child.__tres = { - root: null, - } - - // Fake vnodes - child.__vnode = { - type: 'TresMesh', - } - - // Test - nodeOps.insert(child, parent, null) - - // Assert - expect(parent.children.includes(child)).toBeTruthy() + const parent = new Scene() + parent.__tres = { + root: { + registerCamera: () => { }, + registerObjectAtPointerEventHandler: () => { }, + }, + } + const child = new Mesh() + + child.__tres = { + root: null, + } + + // Fake vnodes + child.__vnode = { + type: 'TresMesh', + } + + // Test + nodeOps.insert(child, parent, null) + + // Assert + expect(parent.children.includes(child)).toBeTruthy() + }) }) - it.skip('remove: removes child from parent', async () => { + describe('remove', () => { + it.skip('removes child from parent', async () => { // Setup - const parent = new Scene() as unknown as TresObject - const child = new Mesh() as unknown as TresObject + const parent = new Scene() as unknown as TresObject + const child = new Mesh() as unknown as TresObject - // Fake vnodes - child.__vnode = { - type: 'TresMesh', - } - nodeOps.insert(child, parent) + // Fake vnodes + child.__vnode = { + type: 'TresMesh', + } + nodeOps.insert(child, parent) - // Test - nodeOps.remove(child) + // Test + nodeOps.remove(child) - // Assert - expect(!parent.children.includes(child)).toBeTruthy() + // Assert + expect(!parent.children.includes(child)).toBeTruthy() + }) }) - it('patchProp should patch property of node', async () => { + describe('patchProp', () => { + it('patches property of node', async () => { // Setup - const node = nodeOps.createElement('Mesh')! - const prop = 'visible' - const nextValue = false + const node = nodeOps.createElement('Mesh')! + const prop = 'visible' + const nextValue = false - // Test - nodeOps.patchProp(node, prop, null, nextValue) + // Test + nodeOps.patchProp(node, prop, null, nextValue) - // Assert - expect(node.visible === nextValue) - }) + // Assert + expect(node.visible === nextValue) + }) - it('patchProp should patch traverse pierced props', async () => { + it('patches/traverses pierced props', async () => { // Setup - const node = nodeOps.createElement('Mesh')! - const prop = 'position-x' - const nextValue = 5 + const node = nodeOps.createElement('Mesh')! + const prop = 'position-x' + const nextValue = 5 - // Test - nodeOps.patchProp(node, prop, null, nextValue) + // Test + nodeOps.patchProp(node, prop, null, nextValue) - // Assert - expect(node.position.x === nextValue) - }) + // Assert + expect(node.position.x === nextValue) + }) - it('patchProp it should not patch traverse pierced props of existing dashed properties', async () => { + it('does not patch/traverse pierced props of existing dashed properties', async () => { // Setup - const node = nodeOps.createElement('Mesh')! - const prop = 'cast-shadow' - const nextValue = true + const node = nodeOps.createElement('Mesh')! + const prop = 'cast-shadow' + const nextValue = true - // Test - nodeOps.patchProp(node, prop, null, nextValue) + // Test + nodeOps.patchProp(node, prop, null, nextValue) - // Assert - expect(node.castShadow === nextValue) - }) + // Assert + expect(node.castShadow === nextValue) + }) - it('patchProp should preserve ALL_CAPS_CASE in pierced props', () => { + it('preserves ALL_CAPS_CASE in pierced props', () => { // Issue: https://github.com/Tresjs/tres/issues/605 - const { createElement, patchProp } = nodeOps - const node = createElement('TresMeshStandardMaterial', undefined, undefined, {})! - const allCapsKey = 'STANDARD' - const allCapsUnderscoresKey = 'USE_UVS' - const allCapsValue = 'hello' - const allCapsUnderscoresValue = 'goodbye' - - patchProp(node, `defines-${allCapsKey}`, null, allCapsValue) - patchProp(node, `defines-${allCapsUnderscoresKey}`, null, allCapsUnderscoresValue) - - expect(node.defines[allCapsKey]).equals(allCapsValue) - expect(node.defines[allCapsUnderscoresKey]).equals(allCapsUnderscoresValue) + const { createElement, patchProp } = nodeOps + const node = createElement('TresMeshStandardMaterial', undefined, undefined, {})! + const allCapsKey = 'STANDARD' + const allCapsUnderscoresKey = 'USE_UVS' + const allCapsValue = 'hello' + const allCapsUnderscoresValue = 'goodbye' + + patchProp(node, `defines-${allCapsKey}`, null, allCapsValue) + patchProp(node, `defines-${allCapsUnderscoresKey}`, null, allCapsUnderscoresValue) + + expect(node.defines[allCapsKey]).equals(allCapsValue) + expect(node.defines[allCapsUnderscoresKey]).equals(allCapsUnderscoresValue) + }) }) - it('parentNode: returns parent of a node', async () => { + describe('parentNode', () => { + it('returns parent of a node', async () => { // Setup - const parent: TresObject = new Scene() - const child: TresObject = nodeOps.createElement('Mesh')! - parent.children.push(child) - child.parent = parent + const parent: TresObject = new Scene() + const child: TresObject = nodeOps.createElement('Mesh')! + parent.children.push(child) + child.parent = parent - // Test - const parentNode = nodeOps.parentNode(child) + // Test + const parentNode = nodeOps.parentNode(child) - // Assert - expect(parentNode === parent) + // Assert + expect(parentNode === parent) + }) }) }) From 576cf6ce76f15262fdb569b4dc0c3cff84ea43b1 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 12 Apr 2024 20:30:00 +0200 Subject: [PATCH 28/52] test: add coverage plugin --- package.json | 1 + pnpm-lock.yaml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/package.json b/package.json index f61a0aacd..27591a24e 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "@typescript-eslint/parser": "^7.5.0", "@vitejs/plugin-vue": "^5.0.4", "@vitest/coverage-c8": "^0.33.0", + "@vitest/coverage-v8": "^1.5.0", "@vitest/ui": "^1.4.0", "@vue/test-utils": "^2.4.5", "eslint": "^8.57.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2dc82a453..85287df65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,6 +45,9 @@ importers: '@vitest/coverage-c8': specifier: ^0.33.0 version: 0.33.0(vitest@1.4.0) + '@vitest/coverage-v8': + specifier: ^1.5.0 + version: 1.5.0(vitest@1.4.0) '@vitest/ui': specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) @@ -2888,6 +2891,29 @@ packages: vitest: 1.4.0(@vitest/ui@1.4.0)(jsdom@24.0.0) dev: true + /@vitest/coverage-v8@1.5.0(vitest@1.4.0): + resolution: {integrity: sha512-1igVwlcqw1QUMdfcMlzzY4coikSIBN944pkueGi0pawrX5I5Z+9hxdTR+w3Sg6Q3eZhvdMAs8ZaF9JuTG1uYOQ==} + peerDependencies: + vitest: 1.5.0 + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.7 + magic-string: 0.30.8 + magicast: 0.3.4 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + test-exclude: 6.0.0 + vitest: 1.4.0(@vitest/ui@1.4.0)(jsdom@24.0.0) + transitivePeerDependencies: + - supports-color + dev: true + /@vitest/expect@1.4.0: resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} dependencies: @@ -6359,6 +6385,17 @@ packages: supports-color: 7.2.0 dev: true + /istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} @@ -6730,6 +6767,14 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + dependencies: + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + source-map-js: 1.2.0 + dev: true + /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} From fbcaa413b4b162a19d69bf8b1b24ee11caa88094 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 13 Apr 2024 02:49:24 +0200 Subject: [PATCH 29/52] test: add coverage to package.json script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 27591a24e..4b53e8fac 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "playground": "cd playground && npm run dev", "test": "vitest", "test:ci": "vitest run", - "test:ui": "vitest --ui", + "test:ui": "vitest --ui --coverage.enabled=true", "release": "release-it", "coverage": "vitest run --coverage", "lint": "eslint .", From 6fd8c08b547144734ebf638e44153e4285951c98 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 13 Apr 2024 09:33:51 +0200 Subject: [PATCH 30/52] test(nodeOps): improve test coverage --- src/core/nodeOps.test.ts | 243 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 229 insertions(+), 14 deletions(-) diff --git a/src/core/nodeOps.test.ts b/src/core/nodeOps.test.ts index 3efec4e80..18c300dfb 100644 --- a/src/core/nodeOps.test.ts +++ b/src/core/nodeOps.test.ts @@ -1,18 +1,39 @@ -import { beforeAll, describe, expect, it } from 'vitest' +import { beforeAll, describe, expect, it, vi } from 'vitest' import * as THREE from 'three' +import type { Vector3 } from 'three' import { Mesh, Scene } from 'three' import type { TresObject } from '../types' import { nodeOps as getNodeOps } from './nodeOps' import { extend } from './catalogue' let nodeOps = getNodeOps() +const pool = [] describe('nodeOps', () => { beforeAll(() => { - // Setup extend(THREE) nodeOps = getNodeOps() + const ce = nodeOps.createElement + // NOTE: Overwrite createElement in order to push + // all objects into a pool, later to be disposed. + nodeOps.createElement = (a, b, c, d) => { + const v = ce(a, b, c, d) + pool.push(v) + return v + } + }, + ) + + afterAll(() => { + // NOTE: Dispose disposable objects. + for (const obj of pool) { + if (obj && 'dispose' in obj && typeof obj.dispose === 'function') { + obj.dispose() + } + } + pool.length = 0 }) + describe('createElement', () => { it('creates an instance with given tag', async () => { // Setup @@ -73,6 +94,40 @@ describe('nodeOps', () => { expect(consoleWarnSpy).toHaveBeenCalled() }) + it('throws an error if passed a "primitive" tag without an "object" prop', () => { + expect(() => { + nodeOps.createElement('primitive', undefined, undefined, {}) + }).toThrowError() + }) + + it('returns null if passed the tag "template"', () => { + expect(nodeOps.createElement('template', undefined, undefined, {})).equals(null) + }) + + it('returns null if passed an HTML tag', () => { + for (const htmlTag of ['div', 'h1', 'hr', 'p']) { + expect(nodeOps.createElement(htmlTag, undefined, undefined, {})).equals(null) + } + }) + + it('it sets a non-zero position on a camera if no position is provided', () => { + const camera = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, {}) + const position: Vector3 = camera.position + assert(['x', 'y', 'z'].some(coord => position[coord] !== 0)) + }) + + it('it calls `camera.lookAt(0, 0, 0)` on a camera if no "look-at" prop is provided', () => { + for (const position of [[1, 2, 3], [1, 0, 0], [3, 4, 5], [-1, 2, -10]]) { + const cameraA = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, { position }) + const cameraB = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, { position, lookAt: [0, 0, 0] }) + assert(cameraA.rotation.equals(cameraB.rotation)) + } + }) + + it('throws an error if tag does not exist in catalogue', () => { + expect(() => { nodeOps.createElement('THIS_TAG_DOES_NOT_EXIST', undefined, undefined, {}) }).toThrow() + }) + it('adds material with "attach" property if instance is a material', () => { // Setup const tag = 'TresMeshStandardMaterial' @@ -127,25 +182,66 @@ describe('nodeOps', () => { // Assert expect(parent.children.includes(child)).toBeTruthy() }) + + it('does not insert a falsy child', () => { + const parent = nodeOps.createElement('Object3D', undefined, undefined, {}) + for (const falsyChild of [undefined, null]) { + nodeOps.insert(falsyChild, parent) + expect(parent.children.length).toBe(0) + expect(() => nodeOps.insert(falsyChild, parent)).not.toThrow() + } + }) + + it('inserts Fog as a property', () => { + const parent = nodeOps.createElement('Object3D', undefined, undefined, {}) + const fog = nodeOps.createElement('Fog', undefined, undefined, {}) + nodeOps.insert(fog, parent) + expect(parent.fog).toBe(fog) + }) + + it('if "attach" prop is provided, sets `parent[attach]`', () => { + const parent = nodeOps.createElement('Object3D', undefined, undefined, {}) + for (const attach of ['material', 'foo', 'bar', 'baz']) { + const child = nodeOps.createElement('MeshNormalMaterial', undefined, undefined, {}) + child.attach = attach + nodeOps.insert(child, parent) + expect(parent[attach]).toBe(child) + expect(parent.children.length).toBe(0) + } + }) }) describe('remove', () => { - it.skip('removes child from parent', async () => { - // Setup - const parent = new Scene() as unknown as TresObject - const child = new Mesh() as unknown as TresObject + it('removes child from parent', async () => { + const parent = mockTresObjectRootInObject(new Scene() as unknown as TresObject) + const child = mockTresObjectRootInObject(new Mesh() as unknown as TresObject) + nodeOps.insert(child, parent) + nodeOps.remove(child) + expect(!parent.children.includes(child)).toBeTruthy() + }) - // Fake vnodes - child.__vnode = { - type: 'TresMesh', + it('silently does not remove a falsy child', () => { + for (const child of [undefined, null]) { + expect(() => nodeOps.remove(child)).not.toThrow() } - nodeOps.insert(child, parent) + }) - // Test - nodeOps.remove(child) + it('calls dispose on materials', () => { + const parent = mockTresObjectRootInObject(nodeOps.createElement('Mesh', undefined, undefined, {})) + const material = nodeOps.createElement('MeshNormalMaterial', undefined, undefined, {}) + const spy = vi.spyOn(material, 'dispose') + nodeOps.insert(material, parent) + nodeOps.remove(parent) + expect(spy).toHaveBeenCalledOnce() + }) - // Assert - expect(!parent.children.includes(child)).toBeTruthy() + it('calls dispose on geometries', () => { + const parent = mockTresObjectRootInObject(nodeOps.createElement('Mesh', undefined, undefined, {})) + const geometry = nodeOps.createElement('SphereGeometry', undefined, undefined, {}) + const spy = vi.spyOn(geometry, 'dispose') + nodeOps.insert(geometry, parent) + nodeOps.remove(parent) + expect(spy).toHaveBeenCalledOnce() }) }) @@ -204,6 +300,104 @@ describe('nodeOps', () => { expect(node.defines[allCapsKey]).equals(allCapsValue) expect(node.defines[allCapsUnderscoresKey]).equals(allCapsUnderscoresValue) }) + + it('calls object methods', () => { + const camera = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, {}) + const spy = vi.spyOn(camera, 'lookAt') + nodeOps.patchProp(camera, 'look-at', undefined, new THREE.Vector3(0, 0, 0)) + nodeOps.patchProp(camera, 'look-at', undefined, new THREE.Vector3(1, 0, 0)) + nodeOps.patchProp(camera, 'look-at', undefined, new THREE.Vector3(1, 2, 0)) + expect(spy).toHaveBeenCalledTimes(3) + }) + + it('calls `copy` if property and passed value are of same type', () => { + const camera = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, {}) + const spy = vi.spyOn(camera.position, 'copy') + nodeOps.patchProp(camera, 'position', undefined, new THREE.Vector3(1)) + nodeOps.patchProp(camera, 'position', undefined, new THREE.Vector3(2)) + nodeOps.patchProp(camera, 'position', undefined, new THREE.Vector3(3)) + expect(spy).toHaveBeenCalledTimes(3) + }) + + it('calls `setScalar` method', () => { + const camera = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, {}) + const spy = vi.spyOn(camera.position, 'setScalar') + nodeOps.patchProp(camera, 'position', undefined, 1) + nodeOps.patchProp(camera, 'position', undefined, 2) + nodeOps.patchProp(camera, 'position', undefined, 3) + expect(spy).toHaveBeenCalledTimes(3) + }) + + describe('patch `:object` on primitives', () => { + it('replaces original object', () => { + const material0 = new THREE.MeshNormalMaterial() + const material1 = new THREE.MeshNormalMaterial() + const primitive = nodeOps.createElement('primitive', undefined, undefined, { object: material0 }) + nodeOps.patchProp(primitive, 'object', material0, material1) + expect(primitive.object).toBe(material1) + }) + it('does not copy UUID', () => { + const material0 = new THREE.MeshNormalMaterial() + const material1 = new THREE.MeshNormalMaterial() + const primitive = nodeOps.createElement('primitive', undefined, undefined, { object: material0 }) + nodeOps.patchProp(primitive, 'object', material0, material1) + expect(material0.uuid).not.toBe(material1.uuid) + }) + }) + + describe('patch `:args`', () => { + it('updates values appropriately', () => { + const args0 = [{ color: new THREE.Color('red') }] + const args1 = [{ color: new THREE.Color('blue') }] + const material = nodeOps.createElement('MeshBasicMaterial', undefined, undefined, { args: args0 }) + expect(material.color.getHexString()).toBe('ff0000') + nodeOps.patchProp(material, 'args', args0, args1) + expect(material.color.getHexString()).toBe('0000ff') + }) + it('creates a new instance', () => { + const args0 = [1, 1] + const args1 = [2, 3] + const geometry = nodeOps.createElement('TresBoxGeometry', undefined, undefined, { args: args0 }) + const uuid = geometry.uuid + nodeOps.patchProp(geometry, 'args', args0, args1) + expect(geometry.uuid).not.toBe(uuid) + }) + }) + + describe('if property has a `set` method', () => { + it('calls `set`', () => { + const object3d = nodeOps.createElement('Object3D', undefined, undefined, {}) + const spy = vi.spyOn(object3d.layers, 'set') + const COUNT = 4 + for (let i = 0; i < COUNT; i++) { + const v = Math.floor(Math.random() * 32) + nodeOps.patchProp(object3d, 'layers', undefined, v) + } + expect(spy).toBeCalledTimes(COUNT) + }) + + it('calls `set` with value if !Array.isArray(value)', () => { + const s = v => JSON.stringify(v) + const object3d = nodeOps.createElement('Object3D', undefined, undefined, {}) + let result = -1 + object3d.layers.set = v => result = v + for (let i = 0; i < 3; i++) { + const v = Math.floor(Math.random() * 32) + nodeOps.patchProp(object3d, 'layers', undefined, v) + expect(s(result)).toBe(s(v)) + } + }) + it('spreads value if it is an array', () => { + const s = v => JSON.stringify(v) + const camera = nodeOps.createElement('TresPerspectiveCamera', undefined, undefined, {}) + const result = [] + camera.position.set = (x, y, z) => result.push({ x, y, z }) + nodeOps.patchProp(camera, 'position', undefined, [0, 0, 0]) + nodeOps.patchProp(camera, 'position', undefined, [1, 2, 3]) + nodeOps.patchProp(camera, 'position', undefined, [4, 5, 6]) + expect(s(result)).toBe(s([{ x: 0, y: 0, z: 0 }, { x: 1, y: 2, z: 3 }, { x: 4, y: 5, z: 6 }])) + }) + }) }) describe('parentNode', () => { @@ -222,3 +416,24 @@ describe('nodeOps', () => { }) }) }) + +// NOTE: +// This is tightly bound to implementation and likely to change. +// +// src/core/nodeOps.ts will throw if some implementation details are not +// present, making tests unpassable. +// +// TODO: +// * Refactor src/core/nodeOps.ts, so that this function can be removed. +// * Remove this function. +// +function mockTresObjectRootInObject(obj) { + if (!('__tres' in obj)) { + obj.__tres = {} + } + obj.__tres.root = { + deregisterObjectAtPointerEventHandler: () => {}, + deregisterBlockingObjectAtPointerEventHandler: () => {}, + } + return obj +} From cdf6b6fefbd58dbf1dfbe396f219ac6f7c6fc92d Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Thu, 18 Apr 2024 10:45:06 +0200 Subject: [PATCH 31/52] feat: devtools renderer improvements (#614) * feat: renderer programs when selecting scene on devtools * feat: renderer.info * chore: fix lint * docs: devtools update * chore: fix lint issues --- docs/debug/devtools.md | 6 ++++ docs/public/devtools-v4.png | Bin 0 -> 62379 bytes src/devtools/plugin.ts | 56 +++++++++++++++++------------------- 3 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 docs/public/devtools-v4.png diff --git a/docs/debug/devtools.md b/docs/debug/devtools.md index cc9b854e1..53fcecd41 100644 --- a/docs/debug/devtools.md +++ b/docs/debug/devtools.md @@ -24,3 +24,9 @@ From we are introducing the TresJS Devtools, a customize ![](/devtools-scene-inspector.png) Enjoy the new Devtools and let us know what you think! 🎉 + +## Renderer info + +From `v4` it's possible to see the renderer information in the Devtools when inspecting the root object (Scene). This is useful to know what renderer is being used and its properties including the programs (shaders) and the capabilities of the renderer. + +![](/devtools-v4.png) diff --git a/docs/public/devtools-v4.png b/docs/public/devtools-v4.png new file mode 100644 index 0000000000000000000000000000000000000000..36b79be870f76bb0caf5419335e036308d182a06 GIT binary patch literal 62379 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 { return node } -function buildGraph(object: TresObject, node: SceneGraphObject) { +function buildGraph(object: TresObject, node: SceneGraphObject, filter: string = '') { object.children.forEach((child: TresObject) => { - if (child.type === 'HightlightMesh') { - return - } + if (child.type === 'HightlightMesh') { return } + if (filter && !child.type.includes(filter) && !child.name.includes(filter)) { return } + const childNode = createNode(child) node.children.push(childNode) - buildGraph(child, childNode) + buildGraph(child, childNode, filter) }) } @@ -146,33 +146,9 @@ export function registerTresDevtools(app: DevtoolsApp, tres: TresContext) { if (payload.inspectorId === INSPECTOR_ID) { // Your logic here const root = createNode(tres.scene.value) - buildGraph(tres.scene.value, root) + buildGraph(tres.scene.value, root, payload.filter) state.sceneGraph = root payload.rootNodes = [root] - /* payload.rootNodes = [ - { - id: 'root', - label: 'Root ', - children: [ - { - id: 'child', - label: `Child ${payload.filter}`, - tags: [ - { - label: 'active', - textColor: 0x000000, - backgroundColor: 0xFF984F, - }, - { - label: 'test', - textColor: 0xffffff, - backgroundColor: 0x000000, - }, - ], - }, - ], - }, - ] */ } }) let highlightMesh: Mesh | null = null @@ -282,6 +258,26 @@ export function registerTresDevtools(app: DevtoolsApp, tres: TresContext) { }, ], } + + if (instance.isScene) { + payload.state.info = { + memory: calculateMemoryUsage(instance), + objects: instance.children.length, + calls: tres.renderer.value.info.render.calls, + triangles: tres.renderer.value.info.render.triangles, + points: tres.renderer.value.info.render.points, + lines: tres.renderer.value.info.render.lines, + } + payload.state.programs = tres.renderer.value.info.programs?.map(program => ({ + key: program.name || program.type, + value: { + ...program, + vertexShader: program.vertexShader, + attributes: program.getAttributes(), + uniforms: program.getUniforms(), + }, + })) + } } }) From b536ab19d1f4082c2db926e24d8c52f92949964b Mon Sep 17 00:00:00 2001 From: Garrett Walker Date: Mon, 22 Apr 2024 12:38:57 -0500 Subject: [PATCH 32/52] feat(events)!: pointerevents manager and state (#529) * new file: playground/src/components/Box.vue new file: playground/src/pages/raycaster/Propogation.vue * Started work on interactive Event Propogation playground example modified: src/components/TresCanvas.vue * Import and use `useEventStore` * defineEmits for all expected pointer events so we may emit propogated events off of the canvasa modified: src/composables/index.ts new file: src/composables/useEventStore/index.ts * Started work on an event store. I'm not sure this counts as a store just yet * Wired up majority of pointer events * Added event propogation * Does not require using userData scene props or nodeOps for registering objects to scene modified: src/composables/useRaycaster/index.ts * Added new event listeners to power newly supported pointer events. We now check whole scene/children when calling intersectObjects. * Created new EventHooks for new events * Added `forceUpdate` function that allows for pointer-move events to work without mouth movement (good for when camera is moving but mouse is not) modified: src/core/nodeOps.ts * Added supported events to array so they don't get received as props * (temporarily) unhook current pointer event solution to iterate on useEventStore modified: src/utils/index.ts * Added Camel-to-kebab case util * Support multiple event listeners, add support for .stop event modifier * Set stopProgation variable to false by default, whoops * fix typo * fix: remove `createGlobalState` from `useEventStore`, allowing events to work while multiple TresCanvas' are being used * fix(perf): remove extraneous intersectObjects/getIntersects calls by moving intersects into a ref that is updated on pointer-move * chore(lint): fix lint issues * feat: enhance events manager to include duplicates checking, pointer-missed support, and forced updating Per file changelog: modified: playground/src/components/Box.vue * Added a pointer-missed handler for testing modified: playground/src/pages/TheBasic.vue * uses forceUpdate from EventManager to fire events even when the mouse hasn't moved modified: playground/src/pages/raycaster/Propagation.vue * Didn't mean to undo the lint changes, adds a pointer-missed event on the canvas for extra testing modified: src/components/TresCanvas.vue * Adds `pointer-missed` as possible event for canvas emits modified: src/composables/index.ts * Update export deleted: src/composables/useEventStore/index.ts * Rename `useEventStore` to `useTresEventManager` modified: src/composables/useRaycaster/index.ts * Check for empty intersects on hit test, wire up pointerMissed events eventHook * Fix forceUpdate to call onPointerMove instead of triggering an EventHook modified: src/composables/useTresContextProvider/index.ts * Add TresEventManager type new file: src/composables/useTresEventManager/index.ts * add onPointerMissed * create (de)registerPointerMissedObj methods so we can track objects in the scene listening to this event * Note: These are passed to nodeOps via TresContext * Implement duplicates checking for eventPropogation modified: src/core/nodeOps.ts * register/deregister pointerMissed objects * chore: lint * docs: new event docs * chore: fix lint * feat: enhance event object details and use in Box example to change material color. Add ability to force event system updates even when mouse hasn't moved. Enhance pointer-enter/leave events. Update types Box.vue * Added pointer-missed handler * set the materials flash color using the object coming off of the event instead of a ref UseRaycaster * Flesh out event details to include * all mouse event properties * intersections * tres camera * camera raycaster * source event * mouse position delta * stopPropagating stub * and unprojectedPoint (this needs work, cant get the math to work) UseTresContextProvider * Add TresEventManager type to TresContext useTresEventManager * Add forceUpdate method to allow apps to force an event system update even when the mouse hasnt moved * Add pointerMissed event * Properly implement pointer-enter/pointer-leave events * Before now, pointer-enter | leave were only called on first object in intersection, now we execute the events for all entered/left objects * Use stopPropagating property included on event object * chore: lint * chore: fix lint issues --------- Co-authored-by: alvarosabu --- docs/api/events.md | 64 ++++-- playground/components.d.ts | 2 + playground/src/components/Box.vue | 44 ++++ playground/src/pages/basic/index.vue | 14 +- playground/src/pages/events/Propagation.vue | 188 +++++++++++++++++ playground/src/pages/events/index.vue | 117 ++++++----- playground/src/router/index.ts | 5 + src/components/TresCanvas.vue | 24 ++- src/composables/index.ts | 1 + src/composables/useRaycaster/index.ts | 149 ++++++++++++-- .../useTresContextProvider/index.ts | 2 + src/composables/useTresEventManager/index.ts | 194 ++++++++++++++++++ src/core/nodeOps.ts | 79 ++++--- src/utils/index.ts | 6 + 14 files changed, 776 insertions(+), 113 deletions(-) create mode 100644 playground/src/components/Box.vue create mode 100644 playground/src/pages/events/Propagation.vue create mode 100644 src/composables/useTresEventManager/index.ts diff --git a/docs/api/events.md b/docs/api/events.md index c83019df8..b2e874981 100644 --- a/docs/api/events.md +++ b/docs/api/events.md @@ -6,22 +6,62 @@ ## Pointer Events +The following pointer events are available on `v3` and previous: + +- `click` +- `pointer-move` +- `pointer-enter` +- `pointer-leave` + +From `v4.x` on, the following pointer events are been added to the list: + +- `context-menu` (right click) +- `double-click` +- `pointer-down` +- `pointer-up` +- `wheel` +- `pointer-missed` + ```html ``` -| Event | fires when ... | Event Handler Parameter Type(s) | -| ------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| click | ... the events pointerdown and pointerup fired on the same object one after the other | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | -| pointer-move | ... the pointer is moving above the object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | -| pointer-enter | ... the pointer is entering the object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | -| pointer-leave | ... the pointer is leaves the object | [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +|

Event
| fires when ... | Event Handler Parameter Type(s) | +| ---------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| click | the events pointerdown and pointerup fired on the same object one after the other | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| contextMenu | the user triggers a context menu, often by right-clicking | [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| double-click | the user clicks the mouse button twice in quick succession on the same object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| wheel | the mouse wheel or similar device is rotated | [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent) | +| pointer-down | the pointer is pressed down over the object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| pointer-up | the pointer is released over the object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| pointer-leave | the pointer is leaves the object | [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| pointer-move | the pointer is moving above the object | [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16), [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | +| pointer-missed | the pointer interaction is attempted but misses the object | [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent) | + +## Event Propagation (Bubbling 🫧) + +Propagation of events on 3D scenes works differently than in the DOM because objects can **occlude each other in 3D**. The `intersections` array contains all the objects that the raycaster intersects with, sorted by distance from the camera. The first object in the array is the closest one to the camera. -The returned [Intersection](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/three/src/core/Raycaster.d.ts#L16) includes the [Object3D](https://threejs.org/docs/index.html?q=object#api/en/core/Object3D) that triggered the event. You can access it via `intersection.object`. +When an event is triggered, the event is propagated to the closest object in the `intersections` array. If the event is not handled by the object, it will be propagated to the next object in the array. -By default, objects positioned in front of others with event handlers do not prevent those events from being triggered. This behavior can be achieved by using the prop `blocks-pointer-events`. +`event.stopPropagation()` can be used to stop the event from propagating to the next object in the array, stoping the event from bubbling up and reaching to farther objects (the oens behind the first one). + +```html + +``` diff --git a/playground/components.d.ts b/playground/components.d.ts index 5a90ef3a9..ac52f4c96 100644 --- a/playground/components.d.ts +++ b/playground/components.d.ts @@ -10,6 +10,7 @@ declare module 'vue' { AkuAku: typeof import('./src/components/AkuAku.vue')['default'] AnimatedModel: typeof import('./src/components/AnimatedModel.vue')['default'] BlenderCube: typeof import('./src/components/BlenderCube.vue')['default'] + Box: typeof import('./src/components/Box.vue')['default'] CameraOperator: typeof import('./src/components/CameraOperator.vue')['default'] Cameras: typeof import('./src/components/Cameras.vue')['default'] copy: typeof import('./src/components/TheBasic copy.vue')['default'] @@ -17,6 +18,7 @@ declare module 'vue' { DebugUI: typeof import('./src/components/DebugUI.vue')['default'] DeleteMe: typeof import('./src/components/DeleteMe.vue')['default'] DynamicModel: typeof import('./src/components/DynamicModel.vue')['default'] + EventsPropogation: typeof import('./src/components/EventsPropogation.vue')['default'] FBXModels: typeof import('./src/components/FBXModels.vue')['default'] Gltf: typeof import('./src/components/gltf/index.vue')['default'] GraphPane: typeof import('./src/components/GraphPane.vue')['default'] diff --git a/playground/src/components/Box.vue b/playground/src/components/Box.vue new file mode 100644 index 000000000..02f1a097e --- /dev/null +++ b/playground/src/components/Box.vue @@ -0,0 +1,44 @@ + + + diff --git a/playground/src/pages/basic/index.vue b/playground/src/pages/basic/index.vue index daf5fea2b..1c45ce0ff 100644 --- a/playground/src/pages/basic/index.vue +++ b/playground/src/pages/basic/index.vue @@ -14,6 +14,7 @@ const state = reactive({ toneMapping: NoToneMapping, }) +const canvasRef = ref() const sphereRef = ref() const { onLoop } = useRenderLoop() @@ -21,6 +22,9 @@ const { onLoop } = useRenderLoop() onLoop(({ elapsed }) => { if (!sphereRef.value) { return } sphereRef.value.position.y += Math.sin(elapsed) * 0.01 + + // Update events without needing the mouse to move + canvasRef.value?.context?.eventManager.forceUpdate() }) function onPointerEnter(ev) { @@ -29,6 +33,10 @@ function onPointerEnter(ev) { } } +function onPointerOut(ev) { + ev.object.material.color.set('teal') +} + const sphereExists = ref(true) @@ -37,7 +45,10 @@ const sphereExists = ref(true) v-model="sphereExists" type="checkbox" /> - + diff --git a/playground/src/pages/events/Propagation.vue b/playground/src/pages/events/Propagation.vue new file mode 100644 index 000000000..a9847cf7a --- /dev/null +++ b/playground/src/pages/events/Propagation.vue @@ -0,0 +1,188 @@ + + + diff --git a/playground/src/pages/events/index.vue b/playground/src/pages/events/index.vue index 773e4f764..08a145879 100644 --- a/playground/src/pages/events/index.vue +++ b/playground/src/pages/events/index.vue @@ -1,8 +1,11 @@ +