diff --git a/.changeset/mean-cycles-cover.md b/.changeset/mean-cycles-cover.md new file mode 100644 index 0000000..736598f --- /dev/null +++ b/.changeset/mean-cycles-cover.md @@ -0,0 +1,7 @@ +--- +'core': feat +'embedding': feat +'examples': patch +--- + +Add the `Shader Editor` to edit shader code and take it effect in realtime diff --git a/.changeset/quick-pugs-grab.md b/.changeset/quick-pugs-grab.md new file mode 100644 index 0000000..6f2ab2a --- /dev/null +++ b/.changeset/quick-pugs-grab.md @@ -0,0 +1,6 @@ +--- +'embedding': minor +'core': minor +--- + +Integrate the [Spector.js](https://spector.babylonjs.com/) debug tool diff --git a/.changeset/twenty-items-relax.md b/.changeset/twenty-items-relax.md new file mode 100644 index 0000000..0fdff65 --- /dev/null +++ b/.changeset/twenty-items-relax.md @@ -0,0 +1,6 @@ +--- +'embedding': patch +'core': patch +--- + +Improve the scene panel diff --git a/.eslintignore b/.eslintignore index 2acc46e..1f4722a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,3 +3,5 @@ node_modules dist public pnpm-lock.yaml +.changeset +!.changeset/config.json diff --git a/.prettierignore b/.prettierignore index 2acc46e..1f4722a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,5 @@ node_modules dist public pnpm-lock.yaml +.changeset +!.changeset/config.json diff --git a/README.md b/README.md index e932217..a3f66f6 100644 --- a/README.md +++ b/README.md @@ -44,16 +44,27 @@ pnpm add three-devtools -D #### 2. initialize `three-devtools` in your code +**⚠️ Be cautious, you must make sure that `three-devtools` has been initialized before initializing `three.js`, otherwise `three-devtools` cannot hook three.js correctly.** + +##### Option 1: If you want to enable some feature(such as object highlighting on pick), you have to pass the `THREE` module to the `initialize` method: + ```js import * as THREE from 'three'; import { ThreeJsDevTools } from 'three-devtools'; -// Make sure `three-devtools` has initialized before initializing `three.js` ThreeJsDevTools.initialize({ three: THREE, }); ``` +##### Option 2: If you don't need those feature, you can just call the `initialize` method without passing the `THREE` module: + +```js +import { ThreeJsDevTools } from 'three-devtools'; + +ThreeJsDevTools.initialize(); +``` + ### Legacy Project Without Bundling It's coming soon. diff --git a/packages/core/package.json b/packages/core/package.json index 41bc9ef..614fc1e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -19,11 +19,14 @@ "dependencies": { "@ant-design/icons": "^5.0.1", "@swc/plugin-styled-components": "^1.5.49", + "@uiw/codemirror-extensions-langs": "^4.19.16", + "@uiw/react-codemirror": "^4.19.16", "antd": "^5.3.2", "lodash-es": "^4.17.21", "mitt": "^3.0.0", "react-use": "^17.4.0", "shared": "workspace:*", + "spectorjs": "^0.9.29", "styled-components": "^5.3.9", "ts-toolbelt": "^9.6.0", "valtio": "^1.10.3" diff --git a/packages/core/src/Drawer/Drawer.ts b/packages/core/src/Drawer/Drawer.ts index 3f5fb4b..a9172eb 100644 --- a/packages/core/src/Drawer/Drawer.ts +++ b/packages/core/src/Drawer/Drawer.ts @@ -3,16 +3,20 @@ import { ThreeJsClientAdapter } from '../ThreeJsClientAdapter'; export class Drawer { public static drawWireframeBox(object: THREE.Mesh, parent: THREE.Group) { - const line = new ThreeJsClientAdapter.USER_THREE.BoxHelper(object, '#f3ca67'); + if (ThreeJsClientAdapter.USER_THREE) { + const line = new ThreeJsClientAdapter.USER_THREE.BoxHelper(object, '#f3ca67'); - line.name = `wireframe-${object.uuid}`; - if ( - line.material && - line.material instanceof ThreeJsClientAdapter.USER_THREE.LineBasicMaterial - ) { - line.material.linewidth = 2; - } + line.name = `wireframe-${object.uuid}`; + if ( + line.material && + line.material instanceof ThreeJsClientAdapter.USER_THREE.LineBasicMaterial + ) { + line.material.linewidth = 2; + } - parent.add(line); + parent.add(line); + } else { + console.log('USER_THREE not defined'); + } } } diff --git a/packages/core/src/Drawer/MaterialEditor.tsx b/packages/core/src/Drawer/MaterialEditor.tsx new file mode 100644 index 0000000..ea61d94 --- /dev/null +++ b/packages/core/src/Drawer/MaterialEditor.tsx @@ -0,0 +1,400 @@ +import type { Material, ShaderMaterial, WebGLRenderer, WebGLProgram } from 'three'; +import { Button, Modal, Tabs } from 'antd'; +import ReactCodeMirror from '@uiw/react-codemirror'; +import { useState } from 'react'; +import TabPane from 'antd/es/tabs/TabPane'; +import { langs } from '@uiw/codemirror-extensions-langs'; +import { ThreeJsClientAdapter } from '../ThreeJsClientAdapter'; + +export interface IProgramInfo extends WebGLProgram { + // rollback the original shader + originalVertexShader: string; + originalFragmentShader: string; +} + +interface ICodeProps { + vs: string; + fs: string; + editor: MaterialEditor; + program: IProgramInfo; + mat: ShaderMaterial; +} + +function Code(props: ICodeProps) { + const { editor, vs, fs, program, mat } = props; + const [vsCode, setVsCode] = useState(vs); + const [fsCode, setFsCode] = useState(fs); + const tabPaneStyle = { + maxHeight: 550, + overflowY: 'auto', + }; + + const onCancel = () => { + editor.modal.destroy(); + }; + + const onOk = () => { + if (editor.isMaterialFromThreeJs) { + editor.updateProgramsInfo(program.id, vsCode, fsCode); + } else { + editor.updateShaderMaterial(mat, vsCode, fsCode); + } + + onCancel(); + }; + + return ( +
+ + + { + setVsCode(value); + }} + /> + + + { + setFsCode(value); + }} + /> + + +
+
+ + + +
+
+
+ ); +} + +export class MaterialEditor { + private render: WebGLRenderer; + + public modal: Modal; + + programInfoList: IProgramInfo[] = []; + + isMaterialFromThreeJs: boolean; + + constructor() { + // + } + + initCtx(render: WebGLRenderer) { + this.render = render; + } + + setCurrentProgramsInfo() { + const gl = this.render.getContext(); + const programs = this.render.info.programs || []; + + for (let i = 0; i < programs.length; i++) { + const programThreeWrapped = programs[i]; + const vs = gl.getShaderSource(programThreeWrapped.vertexShader); + const fs = gl.getShaderSource(programThreeWrapped.fragmentShader); + + programThreeWrapped.originalVertexShader = vs; + programThreeWrapped.originalFragmentShader = fs; + + this.programInfoList.push(programThreeWrapped); + } + } + + /** + * @param id program id + * @param vs edited vertex shader + * @param fs edited fragment shader + */ + updateProgramsInfo(id: number, vs: string, fs: string) { + const gl = this.render.getContext(); + const program = this.programInfoList.find(programInfo => programInfo.id === id); + const uniforms = program.getUniforms(); + this.reCompileShaderProgram(gl, program, uniforms, vs, fs); + } + + updateShaderMaterial(material: ShaderMaterial, vs: string, fs: string) { + material.vertexShader = vs; + material.fragmentShader = fs; + material.needsUpdate = true; + } + + /** + * threejs store the origin uniform addr, so we need to reset the addr after recompile the shader + * @param gl + * @param programInfo + * @param uniforms + * @param vs + * @param fs + */ + reCompileShaderProgram( + gl: WebGLRenderingContext, + programInfo: IProgramInfo, + uniforms: { seq: any[] }, + vs: string, + fs: string + ) { + const originalMapValue: Partial = {}; + let uniformLen = gl.getProgramParameter(programInfo.program, gl.ACTIVE_UNIFORMS); + const { program } = programInfo; + + for (let i = 0; i < uniformLen; ++i) { + const info = gl.getActiveUniform(program, i); + const newAddr = gl.getUniformLocation(program, info.name); + const originV = gl.getUniform(program, newAddr); + originalMapValue[info.name] = originV; + } + + this.reLink(gl, programInfo, vs, fs); + + const structUniforms = [uniforms]; + const flatUniforms = []; + + while (structUniforms.length) { + const structUniform = structUniforms.shift(); + + for (let i = 0; i < structUniform.seq.length; i++) { + const uniform = structUniform.seq[i]; + + if (uniform.seq) { + structUniforms.push(uniform); + } else { + flatUniforms.push(uniform); + } + } + } + + uniformLen = gl.getProgramParameter(programInfo.program, gl.ACTIVE_UNIFORMS); + for (let i = 0; i < uniformLen; ++i) { + const info = gl.getActiveUniform(programInfo.program, i); + const newAddr = gl.getUniformLocation(programInfo.program, info.name); + + flatUniforms.forEach(uniform => { + if (info.name.includes(uniform.id)) { + // make sure we use the right program + gl.useProgram(programInfo.program); + + // reset the addr that threejs store + uniform.addr = newAddr; + + switch (info.type) { + case gl.FLOAT_MAT4: + gl.uniformMatrix4fv(newAddr, false, originalMapValue[info.name]); + break; + case gl.FLOAT_MAT3: + gl.uniformMatrix3fv(newAddr, false, originalMapValue[info.name]); + break; + case gl.FLOAT_VEC3: + gl.uniform3fv(newAddr, originalMapValue[info.name]); + break; + case gl.FLOAT_VEC2: + gl.uniform2fv(newAddr, originalMapValue[info.name]); + break; + case gl.FLOAT: + gl.uniform1f(newAddr, originalMapValue[info.name]); + break; + case gl.INT: + gl.uniform1i(newAddr, originalMapValue[info.name]); + break; + case gl.SAMPLER_2D: + gl.uniform1i(newAddr, originalMapValue[info.name]); + break; + case gl.BOOL: + gl.uniform1i(newAddr, originalMapValue[info.name]); + break; + default: + console.warn('unknown uniform type', info.type); + break; + } + } + }); + } + } + + clearShaders(program: WebGLProgram) { + const gl = this.render.getContext(); + const shaders = gl.getAttachedShaders(program); + + // delete the old shader + shaders.forEach(shader => { + gl.detachShader(program, shader); + gl.deleteShader(shader); + }); + } + + // relink the program with new shader source code + reLink(gl: WebGLRenderingContext, programInfo: IProgramInfo, vs: string, fs: string) { + const { program } = programInfo; + this.clearShaders(program); + + let vsShader = this.createShader(gl, gl.VERTEX_SHADER, vs); + let fsShader = this.createShader(gl, gl.FRAGMENT_SHADER, fs); + + gl.attachShader(program, vsShader); + gl.attachShader(program, fsShader); + + gl.linkProgram(program); + + const success = gl.getProgramParameter(program, gl.LINK_STATUS); + if (!success) { + const errorLog = gl.getProgramInfoLog(program); + console.error('compile shader error', errorLog); + + // rollback + this.clearShaders(program); + vsShader = this.createShader(gl, gl.VERTEX_SHADER, programInfo.originalVertexShader); + fsShader = this.createShader(gl, gl.FRAGMENT_SHADER, programInfo.originalFragmentShader); + gl.attachShader(program, vsShader); + gl.attachShader(program, fsShader); + gl.linkProgram(program); + } + + programInfo.vertexShader = vsShader; + programInfo.fragmentShader = fsShader; + } + + createShader( + gl: WebGLRenderingContext, + type: gl.VERTEX_SHADER | gl.FRAGMENT_SHADER, + string: string + ) { + const shader = gl.createShader(type); + + gl.shaderSource(shader, string); + gl.compileShader(shader); + + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!success) { + const errorLog = gl.getShaderInfoLog(shader); + console.error(errorLog); + } + + return shader; + } + + /** + * since we can't get the corresponding shader program by material + * we need to find the program by name, which is the same as material name + * @param materialName material name + */ + showEditor(materialName: string) { + this.setCurrentProgramsInfo(); + const shaderProgram = this.programInfoList.find( + programInfo => programInfo.name === materialName + ); + + if (shaderProgram) { + this.modal = Modal.info(); + this.modal.update({ + width: 800, + height: 600, + title: 'Material Editor', + icon: null, + bodyStyle: { + maxHeight: '700px', + justifyContent: 'center', + overflowY: 'auto', + }, + content: ( + + ), + footer: null, + keyboard: false, + }); + } else { + console.error( + 'can not find shader program by type, make sure you set material.type correctly', + materialName + ); + } + } + + showEditorByMaterial(material: ShaderMaterial) { + this.isMaterialFromThreeJs = Object.keys(MaterialEditor.shaderIDs).find( + k => material.type === k + ); + + if (this.isMaterialFromThreeJs) { + // threejs material + this.showEditor(material.type); + } else { + // user defined material + this.modal = Modal.info(); + this.modal.update({ + width: 800, + height: 600, + title: 'Material Editor', + icon: null, + bodyStyle: { + maxHeight: '700px', + justifyContent: 'center', + overflowY: 'auto', + }, + content: ( + + ), + footer: null, + keyboard: false, + }); + } + } + + static shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'toon', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite', + }; +} diff --git a/packages/core/src/Drawer/Picker.ts b/packages/core/src/Drawer/Picker.ts index cdbbba2..c0fd4fa 100644 --- a/packages/core/src/Drawer/Picker.ts +++ b/packages/core/src/Drawer/Picker.ts @@ -11,10 +11,12 @@ export class Picker { private scene?: THREE.Scene; init(scene: THREE.Scene) { - this.scene = scene; - this.debugGroup = new ThreeJsClientAdapter.USER_THREE.Group(); - this.debugGroup.name = DEBUG_GROUP_NAME; - this.scene.add(this.debugGroup); + if (ThreeJsClientAdapter.USER_THREE) { + this.scene = scene; + this.debugGroup = new ThreeJsClientAdapter.USER_THREE.Group(); + this.debugGroup.name = DEBUG_GROUP_NAME; + this.scene.add(this.debugGroup); + } } highlight(object: THREE.Mesh) { diff --git a/packages/core/src/Drawer/ThreeHelper.ts b/packages/core/src/Drawer/ThreeHelper.ts index 9df8d8f..3af0e76 100644 --- a/packages/core/src/Drawer/ThreeHelper.ts +++ b/packages/core/src/Drawer/ThreeHelper.ts @@ -1,5 +1,4 @@ -import * as THREE from 'three'; -import { ThreeJsClientAdapter } from '../ThreeJsClientAdapter'; +import type * as THREE from 'three'; export class ThreeHelper { static removeAllChildren(group: THREE.Group | THREE.Scene) { @@ -24,7 +23,7 @@ export class ThreeHelper { static disposeMaterial(material: THREE.Material) { if (!material) return; - if ('map' in material && material.map instanceof ThreeJsClientAdapter.USER_THREE.Texture) { + if ('map' in material && material.map) { material.map.dispose(); } material.dispose(); diff --git a/packages/core/src/PropertiesPanel/GeneralPanel.tsx b/packages/core/src/PropertiesPanel/GeneralPanel.tsx index 0281ad9..5ba4582 100644 --- a/packages/core/src/PropertiesPanel/GeneralPanel.tsx +++ b/packages/core/src/PropertiesPanel/GeneralPanel.tsx @@ -1,10 +1,12 @@ import { Card, Descriptions } from 'antd'; -import type { Object3D } from 'three'; +import type { Mesh } from 'three'; +import { EditOutlined } from '@ant-design/icons'; import { VectorProperty } from './Properties/VectorProperty'; import BooleanProperty, { CustomBooleanProperty } from './Properties/BooleanProperty'; import { Object3DWithOnBeforeRenderFlag } from './types'; +import { materialEditor } from '../store/threeJsData'; -export default function GeneralPanel({ object }: { object: Object3D }) { +export default function GeneralPanel({ object }: { object: Mesh }) { return ( @@ -12,6 +14,24 @@ export default function GeneralPanel({ object }: { object: Object3D }) { {object.id} {object.uuid} {object.name || '-'} + + {/* Material Editor */} + + {object?.material?.type || '-'} + { + if (object?.material) { + materialEditor.showEditorByMaterial(object?.material); + } + }} + /> + + diff --git a/packages/core/src/PropertiesPanel/Properties/VectorProperty.tsx b/packages/core/src/PropertiesPanel/Properties/VectorProperty.tsx index 6260b6c..88a5f75 100644 --- a/packages/core/src/PropertiesPanel/Properties/VectorProperty.tsx +++ b/packages/core/src/PropertiesPanel/Properties/VectorProperty.tsx @@ -1,9 +1,8 @@ import { Input, Space } from 'antd'; import type { Object3D } from 'three'; import styled from 'styled-components'; -import { ChangeEvent, useMemo, useState } from 'react'; +import { ChangeEvent, useState } from 'react'; import { observerLayer } from '../../store/threeJsData'; -import { ThreeJsClientAdapter } from '../../ThreeJsClientAdapter'; const StyledSpace = styled(Space)` display: flex; @@ -27,38 +26,27 @@ interface IVec3Props { export function VectorProperty(props: IVec3Props) { const { fieldName, object } = props; - const prop = useMemo(() => { - const node = observerLayer.findNode(object.uuid); - if (!node) return null; - const value = object[fieldName]; - return (value && value instanceof ThreeJsClientAdapter.USER_THREE.Vector3) || - value instanceof ThreeJsClientAdapter.USER_THREE.Euler - ? value - : null; - }, [fieldName, object]); - - const [x, setX] = useState(object[fieldName].x); - const [y, setY] = useState(object[fieldName].y); - const [z, setZ] = useState(object[fieldName].z); + const vec3 = object[fieldName]; + const cloneV3 = object[fieldName].clone(); + const [x, setX] = useState(vec3.x); + const [y, setY] = useState(vec3.y); + const [z, setZ] = useState(vec3.z); const [useNativeV, setUseNativeV] = useState(true); - if (!prop) return null; const updateVec = (k: 'x' | 'y' | 'z') => { - if (prop) { - if (k === 'x') { - prop.x = Number.isNaN(+x) ? prop.x : x; - setX(prop.x); - } else if (k === 'y') { - prop.y = Number.isNaN(+y) ? prop.y : y; - setX(prop.y); - } else if (k === 'z') { - prop.z = Number.isNaN(+z) ? prop.z : z; - setZ(prop.z); - } - - observerLayer.refreshUI(); - setUseNativeV(true); + if (k === 'x') { + vec3.x = Number.isNaN(+x) ? cloneV3.x : +x; + setX(vec3.x); + } else if (k === 'y') { + vec3.y = Number.isNaN(+y) ? cloneV3.y : +y; + setY(vec3.y); + } else if (k === 'z') { + vec3.z = Number.isNaN(+z) ? cloneV3.z : +z; + setZ(vec3.z); } + + observerLayer.refreshUI(); + setUseNativeV(true); }; const onChange = (k: 'x' | 'y' | 'z', e: ChangeEvent) => { @@ -79,7 +67,7 @@ export function VectorProperty(props: IVec3Props) { X: onChange('x', v)} onBlur={() => updateVec('x')} onPressEnter={() => updateVec('x')} @@ -88,7 +76,7 @@ export function VectorProperty(props: IVec3Props) { Y: onChange('y', v)} onBlur={() => updateVec('y')} onPressEnter={() => updateVec('y')} @@ -97,7 +85,7 @@ export function VectorProperty(props: IVec3Props) { Z: onChange('z', v)} onBlur={() => updateVec('z')} onPressEnter={() => updateVec('z')} diff --git a/packages/core/src/SceneTree/SceneTree.tsx b/packages/core/src/SceneTree/SceneTree.tsx index 53a2018..ff661c6 100644 --- a/packages/core/src/SceneTree/SceneTree.tsx +++ b/packages/core/src/SceneTree/SceneTree.tsx @@ -1,8 +1,22 @@ import type { Object3D, Scene } from 'three'; import { Card, Tree, TreeProps } from 'antd'; -import { DeleteOutlined, RedoOutlined, EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons'; +import { + DeleteOutlined, + RedoOutlined, + EyeOutlined, + EyeInvisibleOutlined, + SwapOutlined, + BugOutlined, +} from '@ant-design/icons'; import styled from 'styled-components'; -import { observerLayer, picker, setSelectedObject } from '../store/threeJsData'; +import * as SPECTOR from 'spectorjs'; +import { + observerLayer, + picker, + setSelectedObject, + switchScene, + threeJsData, +} from '../store/threeJsData'; import { DEBUG_GROUP_NAME } from '../Drawer/Picker'; type SceneTreeData = Exclude[number] & { @@ -10,6 +24,9 @@ type SceneTreeData = Exclude[number] & { object: Object3D; }; +const spector = new SPECTOR.Spector(); +let isShowSpector = false; + function getTreeData(scene: Object3D): SceneTreeData[] { return scene.children .filter(o => o.name !== DEBUG_GROUP_NAME) @@ -17,13 +34,27 @@ function getTreeData(scene: Object3D): SceneTreeData[] { title: (
- {child.type + (child.name ? ` [${child.name}]` : '')} -
+ + {child.type + (child.name ? ` [${child.name}]` : '')} + +
{child.visible ? ( { @@ -65,6 +96,40 @@ const Header = ( Scene Tree
+ { + if (isShowSpector) { + // spector has no api to hide ui, so we just hide it by css + // find classname include captureMenuComponent + const captureMenuComponent = document.getElementsByClassName('captureMenuComponent')[0]; + (captureMenuComponent.parentNode as HTMLElement).style.display = 'none'; + isShowSpector = false; + } else { + const captureMenuComponent = document.getElementsByClassName('captureMenuComponent')[0]; + if (captureMenuComponent) { + (captureMenuComponent.parentNode as HTMLElement).style.display = 'block'; + } else { + spector.displayUI(); + } + isShowSpector = true; + } + }} + /> + { + switchScene(); + }} + /> picker.removeDebugGroup()} @@ -86,6 +151,9 @@ export default function SceneTree({ scene }: { scene: Scene }) { return ( + style={{ + overflowX: 'auto', + }} treeData={getTreeData(scene)} onSelect={(_, { selectedNodes }) => { if (selectedNodes[0]?.object) { diff --git a/packages/core/src/ThreeJsClientAdapter.ts b/packages/core/src/ThreeJsClientAdapter.ts index e41066d..54cede8 100644 --- a/packages/core/src/ThreeJsClientAdapter.ts +++ b/packages/core/src/ThreeJsClientAdapter.ts @@ -14,7 +14,7 @@ export class ThreeJsClientAdapter { return ThreeJsClientAdapter.#instance!; } - static USER_THREE: typeof THREE; + static USER_THREE?: typeof THREE; emitter = mitt<{ connected: { version: string }; diff --git a/packages/core/src/store/threeJsData.ts b/packages/core/src/store/threeJsData.ts index 816a43b..d9a4816 100644 --- a/packages/core/src/store/threeJsData.ts +++ b/packages/core/src/store/threeJsData.ts @@ -1,9 +1,10 @@ import { ref } from 'valtio'; -import type { Object3D, Renderer, Scene, Mesh } from 'three'; +import type { Object3D, Renderer, Scene, Mesh, WebGLRenderer } from 'three'; import { matchThreeJsObject } from 'shared'; import { ThreeJsClientAdapter } from '../ThreeJsClientAdapter'; import { Observer } from '../ObserverLayer/Observer'; import { Picker } from '../Drawer/Picker'; +import { MaterialEditor } from '../Drawer/MaterialEditor'; export enum ConnectionStatus { Connected = 'Connected', @@ -15,13 +16,14 @@ export const threeJsData = { version: null as string | null, renderers: [] as Renderer[], scenes: [] as Scene[], - activeRenderer: null as Renderer | null, + activeRenderer: null as WebGLRenderer | null, activeScene: null as Scene | null, selectedObject: null as Object3D | null, }; export const observerLayer = new Observer(); export const picker = new Picker(); +export const materialEditor = new MaterialEditor(); ThreeJsClientAdapter.instance.on('connected', ({ version }) => { threeJsData.status = ConnectionStatus.Connected; @@ -34,10 +36,13 @@ ThreeJsClientAdapter.instance.on('observer', ({ target }) => { onMatchRenderer: renderer => { threeJsData.renderers.push(ref(renderer)); threeJsData.activeRenderer = ref(renderer); + + materialEditor.initCtx(renderer); }, onMatchScene: scene => { threeJsData.scenes.push(ref(scene)); threeJsData.activeScene = ref(scene); + observerLayer.addScene(scene); picker.init(scene); }, @@ -63,3 +68,16 @@ export function setSelectedObject(object: Object3D | null) { if (object) picker.highlight(object as Mesh); } + +/** + * switch active scene + */ +export function switchScene() { + if (threeJsData.scenes.length > 1) { + const index = threeJsData.scenes.findIndex(scene => scene === threeJsData.activeScene); + // make index in the range of [0, threeJsData.scenes.length - 1] + const nextIndex = (index + 1) % threeJsData.scenes.length; + threeJsData.activeScene = threeJsData.scenes[nextIndex]; + observerLayer.refreshUI(); + } +} diff --git a/packages/embedding/src/index.tsx b/packages/embedding/src/index.tsx index a7a7d98..f0d7cfa 100644 --- a/packages/embedding/src/index.tsx +++ b/packages/embedding/src/index.tsx @@ -14,8 +14,11 @@ const ROOT_ID = '__THREE_JS_DEVTOOLS__'; export class ThreeJsDevTools { static USER_THREE: THREE; - static initialize(props: IInitProps) { - ThreeJsClientAdapter.USER_THREE = props.three; + static initialize(props: IInitProps = {}) { + if (props.three) { + ThreeJsClientAdapter.USER_THREE = props.three; + } + // @ts-ignore if (import.meta.env.DEV) { // In development mode, we inject the devtools into the `examples` app directly diff --git a/packages/examples/src/main.tsx b/packages/examples/src/main.tsx index 16819e3..59f2e70 100644 --- a/packages/examples/src/main.tsx +++ b/packages/examples/src/main.tsx @@ -5,13 +5,11 @@ import { ThreeJsDevTools, App as EmbeddingApp } from 'embedding'; import * as THREE from 'three'; import { App } from './App'; -ThreeJsDevTools.initialize({ - three: THREE, -}); +ThreeJsDevTools.initialize(); ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( - +
- +
); diff --git a/packages/examples/src/scene.ts b/packages/examples/src/scene.ts index c9db973..4b8ded2 100644 --- a/packages/examples/src/scene.ts +++ b/packages/examples/src/scene.ts @@ -7,48 +7,73 @@ import { MeshStandardMaterial, HemisphereLight, } from 'three'; +import * as THREE from 'three'; +import Stats from 'three/addons/libs/stats.module.js'; +import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; +import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js'; +import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; +import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js'; export class DefaultScene { - constructor() { + constructor() {} + + init() { + this.mixer = null; + + this.clock = new THREE.Clock(); + this.container = document.getElementById('container'); + + this.renderer = new THREE.WebGLRenderer({ antialias: true }); + this.renderer.setPixelRatio(window.devicePixelRatio); this.renderer.setSize(window.innerWidth, window.innerHeight); - this.camera.position.z = 5; - const geometry = new BoxGeometry(1, 1, 1); - const material = new MeshStandardMaterial({ color: 0xffffff }); - const light = new HemisphereLight(0xffffff, 0x000000, 1); - light.position.set(5, 5, 5); - this.cube = new Mesh(geometry, material) - - for (let i = 0; i < 5; i ++) { - const m = new Mesh(geometry, material); - m.position.set(i, i, i); - this.scene.add(m) - } - - this.scene.add(this.cube); - this.scene.add(light); - this.onResize = this.onResize.bind(this); - } - private readonly scene = new Scene(); + const pmremGenerator = new THREE.PMREMGenerator(this.renderer); - private readonly camera = new PerspectiveCamera( - 75, - window.innerWidth / window.innerHeight, - 0.1, - 1000 - ); + this.scene = new THREE.Scene(); + this.scene.background = new THREE.Color(0xbfe3dd); + this.scene.environment = pmremGenerator.fromScene(new RoomEnvironment(), 0.04).texture; - private renderer = new WebGLRenderer(); + this.camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 100); + this.camera.position.set(5, 2, 8); - private readonly cube: Mesh; + const controls = (this.controls = new OrbitControls(this.camera, this.renderer.domElement)); + controls.target.set(0, 0.5, 0); + controls.update(); + controls.enablePan = false; + controls.enableDamping = true; - private container?: HTMLElement; + const dracoLoader = new DRACOLoader(); + dracoLoader.setDecoderPath('https://threejs.org/examples/jsm/libs/draco/gltf/'); + + const loader = new GLTFLoader(); + loader.setDRACOLoader(dracoLoader); + loader.load( + 'https://threejs.org/examples/models/gltf/LittlestTokyo.glb', + gltf => { + const model = gltf.scene; + model.position.set(1, 1, 0); + model.scale.set(0.01, 0.01, 0.01); + this.scene.add(model); + + this.mixer = new THREE.AnimationMixer(model); + this.mixer.clipAction(gltf.animations[0]).play(); + this.animate(); + }, + undefined, + e => { + console.error(e); + } + ); + } animate() { requestAnimationFrame(this.animate.bind(this)); - this.cube.rotation.x += 0.01; - this.cube.rotation.y += 0.01; + const delta = this.clock.getDelta(); + + this.mixer.update(delta); + this.controls.update(); + this.stats.update(); this.renderer.render(this.scene, this.camera); } @@ -61,9 +86,11 @@ export class DefaultScene { mount(container: HTMLElement) { this.container = container; + this.stats = new Stats(); + container.appendChild(this.stats.dom); + this.init(); + window.addEventListener('resize', this.onResize.bind(this), false); container.appendChild(this.renderer.domElement); - this.animate(); - window.addEventListener('resize', this.onResize, false); } unmount() { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ca1a34..2754155 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,7 +102,7 @@ importers: version: link:../tsconfig vite: specifier: ^4.2.0 - version: 4.2.0(@types/node@18.15.13) + version: 4.2.0(@types/node@18.15.3) vite-plugin-web-extension: specifier: ^3.0.2 version: 3.0.2(vite@4.2.0) @@ -115,6 +115,12 @@ importers: '@swc/plugin-styled-components': specifier: ^1.5.49 version: 1.5.49 + '@uiw/codemirror-extensions-langs': + specifier: ^4.19.16 + version: 4.19.16(@codemirror/language-data@6.3.1)(@codemirror/legacy-modes@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@uiw/react-codemirror': + specifier: ^4.19.16 + version: 4.19.16(@babel/runtime@7.21.0)(@codemirror/autocomplete@6.6.0)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.1)(@codemirror/search@6.4.0)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.10.0)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0) antd: specifier: ^5.3.2 version: 5.3.2(react-dom@18.2.0)(react@18.2.0) @@ -130,6 +136,9 @@ importers: shared: specifier: workspace:* version: link:../shared + spectorjs: + specifier: ^0.9.29 + version: 0.9.29 styled-components: specifier: ^5.3.9 version: 5.3.9(react-dom@18.2.0)(react-is@16.13.1)(react@18.2.0) @@ -203,7 +212,7 @@ importers: version: 4.17.7 '@types/node': specifier: ^18.15.13 - version: 18.15.13 + version: 18.16.0 '@types/react': specifier: ^18.0.28 version: 18.0.28 @@ -230,7 +239,7 @@ importers: version: 3.8.0 vite: specifier: ^4.2.0 - version: 4.2.0(@types/node@18.15.13) + version: 4.2.0(@types/node@18.16.0) publishDirectory: ./dist packages/eslint-config-custom: @@ -298,7 +307,7 @@ importers: version: 3.2.0(vite@4.2.0) vite: specifier: ^4.2.0 - version: 4.2.0(@types/node@18.15.13) + version: 4.2.0(@types/node@18.15.3) packages/shared: dependencies: @@ -410,7 +419,7 @@ packages: '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.3.2 - csstype: 3.1.2 + csstype: 3.1.1 rc-util: 5.29.2(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -784,6 +793,296 @@ packages: prettier: 2.8.4 dev: true + /@codemirror/autocomplete@6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2): + resolution: {integrity: sha512-SjbgWSwNKbyQOiVXtG8DXG2z29zTbmzpGccxMqakVo+vqK8fx3Ai0Ee7is3JqX6dxJOoK0GfP3LfeUK53Ltv7w==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + dev: false + + /@codemirror/commands@6.2.3: + resolution: {integrity: sha512-9uf0g9m2wZyrIim1SavcxMdwsu8wc/y5uSw6JRUBYIGWrN+RY4vSru/BqB+MyNWqx4C2uRhQ/Kh7Pw8lAyT3qQ==} + dependencies: + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + dev: false + + /@codemirror/lang-angular@0.1.0: + resolution: {integrity: sha512-vTjoHjzJmLrrMFmf/tojwp+O0P+R9mgWtjjaKDNDoY58PzOPg7ldMEBqIzABBc+/2mYPD85SG7O5byfBxc83eA==} + dependencies: + '@codemirror/lang-html': 6.4.3 + '@codemirror/lang-javascript': 6.1.8 + '@codemirror/language': 6.6.0 + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.4 + dev: false + + /@codemirror/lang-cpp@6.0.2: + resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==} + dependencies: + '@codemirror/language': 6.6.0 + '@lezer/cpp': 1.1.0 + dev: false + + /@codemirror/lang-css@6.2.0(@codemirror/view@6.10.0): + resolution: {integrity: sha512-oyIdJM29AyRPM3+PPq1I2oIk8NpUfEN3kAM05XWDDs6o3gSneIKaVJifT2P+fqONLou2uIgXynFyMUDQvo/szA==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/common': 1.0.2 + '@lezer/css': 1.1.2 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/lang-html@6.4.3: + resolution: {integrity: sha512-VKzQXEC8nL69Jg2hvAFPBwOdZNvL8tMFOrdFwWpU+wc6a6KEkndJ/19R5xSaglNX6v2bttm8uIEFYxdQDcIZVQ==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.10.0) + '@codemirror/lang-javascript': 6.1.8 + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + '@lezer/css': 1.1.2 + '@lezer/html': 1.3.4 + dev: false + + /@codemirror/lang-java@6.0.1: + resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} + dependencies: + '@codemirror/language': 6.6.0 + '@lezer/java': 1.0.3 + dev: false + + /@codemirror/lang-javascript@6.1.8: + resolution: {integrity: sha512-5cIA6IOkslTu1DtldcYnj7hsBm3p+cD37qSaKvW1kV16M6q9ysKvKrveCOWgbrj4+ilSWRL2JtSLudbeB158xg==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/language': 6.6.0 + '@codemirror/lint': 6.2.1 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + '@lezer/javascript': 1.4.3 + dev: false + + /@codemirror/lang-json@6.0.1: + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} + dependencies: + '@codemirror/language': 6.6.0 + '@lezer/json': 1.0.0 + dev: false + + /@codemirror/lang-less@6.0.1(@codemirror/view@6.10.0): + resolution: {integrity: sha512-ABcsKBjLbyPZwPR5gePpc8jEKCQrFF4pby2WlMVdmJOOr7OWwwyz8DZonPx/cKDE00hfoSLc8F7yAcn/d6+rTQ==} + dependencies: + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.10.0) + '@codemirror/language': 6.6.0 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/lang-lezer@6.0.1: + resolution: {integrity: sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==} + dependencies: + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/common': 1.0.2 + '@lezer/lezer': 1.1.1 + dev: false + + /@codemirror/lang-markdown@6.1.1: + resolution: {integrity: sha512-n87Ms6Y5UYb1UkFu8sRzTLfq/yyF1y2AYiWvaVdbBQi5WDj1tFk5N+AKA+WC0Jcjc1VxvrCCM0iizjdYYi9sFQ==} + dependencies: + '@codemirror/lang-html': 6.4.3 + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + '@lezer/markdown': 1.0.2 + dev: false + + /@codemirror/lang-php@6.0.1: + resolution: {integrity: sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==} + dependencies: + '@codemirror/lang-html': 6.4.3 + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/common': 1.0.2 + '@lezer/php': 1.0.1 + dev: false + + /@codemirror/lang-python@6.1.2(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2): + resolution: {integrity: sha512-nbQfifLBZstpt6Oo4XxA2LOzlSp4b/7Bc5cmodG1R+Cs5PLLCTUvsMNWDnziiCfTOG/SW1rVzXq/GbIr6WXlcw==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/language': 6.6.0 + '@lezer/python': 1.1.6 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + dev: false + + /@codemirror/lang-rust@6.0.1: + resolution: {integrity: sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==} + dependencies: + '@codemirror/language': 6.6.0 + '@lezer/rust': 1.0.0 + dev: false + + /@codemirror/lang-sass@6.0.1(@codemirror/view@6.10.0): + resolution: {integrity: sha512-USy9zqtdLYxSuqq0s4peMoQi+BDzyOyO7chUzli+X2xVCjmBhc3CsWQ4kkDU0NYtCHHFQRkcFO8770eaOwZqfw==} + dependencies: + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.10.0) + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/common': 1.0.2 + '@lezer/sass': 1.0.1 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/lang-sql@6.5.0(@codemirror/view@6.10.0)(@lezer/common@1.0.2): + resolution: {integrity: sha512-ztJ+5lk0yWf4E7sQQqsidPYJa0a/511Ln/IaI3A+fGv6z0SrGDG0Lu6SAehczcehrhgNwMhPlerJMeXw7vZs2g==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + transitivePeerDependencies: + - '@codemirror/view' + - '@lezer/common' + dev: false + + /@codemirror/lang-vue@0.1.1: + resolution: {integrity: sha512-GIfc/MemCFKUdNSYGTFZDN8XsD2z0DUY7DgrK34on0dzdZ/CawZbi+SADYfVzWoPPdxngHzLhqlR5pSOqyPCvA==} + dependencies: + '@codemirror/lang-html': 6.4.3 + '@codemirror/lang-javascript': 6.1.8 + '@codemirror/language': 6.6.0 + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@codemirror/lang-wast@6.0.1: + resolution: {integrity: sha512-sQLsqhRjl2MWG3rxZysX+2XAyed48KhLBHLgq9xcKxIJu3npH/G+BIXW5NM5mHeDUjG0jcGh9BcjP0NfMStuzA==} + dependencies: + '@codemirror/language': 6.6.0 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@codemirror/lang-xml@6.0.2(@codemirror/view@6.10.0): + resolution: {integrity: sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@lezer/common': 1.0.2 + '@lezer/xml': 1.0.1 + transitivePeerDependencies: + - '@codemirror/view' + dev: false + + /@codemirror/language-data@6.3.1(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2): + resolution: {integrity: sha512-p6jhJmvhGe1TG1EGNhwH7nFWWFSTJ8NDKnB2fVx5g3t+PpO0+63R7GJNxjS0TmmH3cdMxZbzejsik+rlEh1EyQ==} + dependencies: + '@codemirror/lang-angular': 0.1.0 + '@codemirror/lang-cpp': 6.0.2 + '@codemirror/lang-css': 6.2.0(@codemirror/view@6.10.0) + '@codemirror/lang-html': 6.4.3 + '@codemirror/lang-java': 6.0.1 + '@codemirror/lang-javascript': 6.1.8 + '@codemirror/lang-json': 6.0.1 + '@codemirror/lang-less': 6.0.1(@codemirror/view@6.10.0) + '@codemirror/lang-markdown': 6.1.1 + '@codemirror/lang-php': 6.0.1 + '@codemirror/lang-python': 6.1.2(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/lang-rust': 6.0.1 + '@codemirror/lang-sass': 6.0.1(@codemirror/view@6.10.0) + '@codemirror/lang-sql': 6.5.0(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/lang-vue': 0.1.1 + '@codemirror/lang-wast': 6.0.1 + '@codemirror/lang-xml': 6.0.2(@codemirror/view@6.10.0) + '@codemirror/language': 6.6.0 + '@codemirror/legacy-modes': 6.3.2 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + dev: false + + /@codemirror/language@6.6.0: + resolution: {integrity: sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + style-mod: 4.0.3 + dev: false + + /@codemirror/legacy-modes@6.3.2: + resolution: {integrity: sha512-ki5sqNKWzKi5AKvpVE6Cna4Q+SgxYuYVLAZFSsMjGBWx5qSVa+D+xipix65GS3f2syTfAD9pXKMX4i4p49eneQ==} + dependencies: + '@codemirror/language': 6.6.0 + dev: false + + /@codemirror/lint@6.2.1: + resolution: {integrity: sha512-y1muai5U/uUPAGRyHMx9mHuHLypPcHWxzlZGknp/U5Mdb5Ol8Q5ZLp67UqyTbNFJJ3unVxZ8iX3g1fMN79S1JQ==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + crelt: 1.0.5 + dev: false + + /@codemirror/search@6.4.0: + resolution: {integrity: sha512-zMDgaBXah+nMLK2dHz9GdCnGbQu+oaGRXS1qviqNZkvOCv/whp5XZFyoikLp/23PM9RBcbuKUUISUmQHM1eRHw==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + crelt: 1.0.5 + dev: false + + /@codemirror/state@6.2.0: + resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} + dev: false + + /@codemirror/theme-one-dark@6.1.2: + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} + dependencies: + '@codemirror/language': 6.6.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + '@lezer/highlight': 1.1.4 + dev: false + + /@codemirror/view@6.10.0: + resolution: {integrity: sha512-Oea3rvE4JQLMmLsy2b54yxXQJgJM9xKpUQIpF/LGgKUTH2lA06GAmEtKKWn5OUnbW3jrH1hHeUd8DJEgePMOeQ==} + dependencies: + '@codemirror/state': 6.2.0 + style-mod: 4.0.3 + w3c-keyname: 2.2.6 + dev: false + /@commitlint/cli@17.4.4: resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==} engines: {node: '>=v14'} @@ -870,15 +1169,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.13 + '@types/node': 18.15.3 chalk: 4.1.2 cosmiconfig: 8.1.2 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.13)(cosmiconfig@8.1.2)(ts-node@10.9.1)(typescript@4.9.5) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.3)(cosmiconfig@8.1.2)(ts-node@10.9.1)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.15.13)(typescript@5.0.2) + ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.0.2) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -1392,6 +1691,114 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@lezer/common@1.0.2: + resolution: {integrity: sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==} + dev: false + + /@lezer/cpp@1.1.0: + resolution: {integrity: sha512-zUHrjNFuY/DOZCkOBJ6qItQIkcopHM/Zv/QOE0a4XNG3HDNahxTNu5fQYl8dIuKCpxCqRdMl5cEwl5zekFc7BA==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/css@1.1.2: + resolution: {integrity: sha512-5TKMAReXukfEmIiZprDlGfZVfOOCyEStFi1YLzxclm9H3G/HHI49/2wzlRT6bQw5r7PoZVEtjTItEkb/UuZQyg==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/highlight@1.1.4: + resolution: {integrity: sha512-IECkFmw2l7sFcYXrV8iT9GeY4W0fU4CxX0WMwhmhMIVjoDdD1Hr6q3G2NqVtLg/yVe5n7i4menG3tJ2r4eCrPQ==} + dependencies: + '@lezer/common': 1.0.2 + dev: false + + /@lezer/html@1.3.4: + resolution: {integrity: sha512-HdJYMVZcT4YsMo7lW3ipL4NoyS2T67kMPuSVS5TgLGqmaCjEU/D6xv7zsa1ktvTK5lwk7zzF1e3eU6gBZIPm5g==} + dependencies: + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/java@1.0.3: + resolution: {integrity: sha512-kKN17wmgP1cgHb8juR4pwVSPMKkDMzY/lAPbBsZ1fpXwbk2sg3N1kIrf0q+LefxgrANaQb/eNO7+m2QPruTFng==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/javascript@1.4.3: + resolution: {integrity: sha512-k7Eo9z9B1supZ5cCD4ilQv/RZVN30eUQL+gGbr6ybrEY3avBAL5MDiYi2aa23Aj0A79ry4rJRvPAwE2TM8bd+A==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/json@1.0.0: + resolution: {integrity: sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/lezer@1.1.1: + resolution: {integrity: sha512-jwoPZUnnrxsbgCqffX9x4SsiGWfKQ5ru3k+74JrJCTJuGiVrnEnfqVyPJAy11FhKi3InK/qUHNj1MHub6dmawg==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/lr@1.3.4: + resolution: {integrity: sha512-7o+e4og/QoC/6btozDPJqnzBhUaD1fMfmvnEKQO1wRRiTse1WxaJ3OMEXZJnkgT6HCcTVOctSoXK9jGJw2oe9g==} + dependencies: + '@lezer/common': 1.0.2 + dev: false + + /@lezer/markdown@1.0.2: + resolution: {integrity: sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A==} + dependencies: + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.4 + dev: false + + /@lezer/php@1.0.1: + resolution: {integrity: sha512-aqdCQJOXJ66De22vzdwnuC502hIaG9EnPK2rSi+ebXyUd+j7GAX1mRjWZOVOmf3GST1YUfUCu6WXDiEgDGOVwA==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/python@1.1.6: + resolution: {integrity: sha512-TJ/kaaJYHQMXphV2GcIi/0pSt400A9yFU6FWn/3mCYDwe0UCeEyAKP1IxTfqlfnWWDl9cZf/vzWPOrw5775yDw==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/rust@1.0.0: + resolution: {integrity: sha512-IpGAxIjNxYmX9ra6GfQTSPegdCAWNeq23WNmrsMMQI7YNSvKtYxO4TX5rgZUmbhEucWn0KTBMeDEPXg99YKtTA==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/sass@1.0.1: + resolution: {integrity: sha512-S/aYAzABzMqWLfKKqV89pCWME4yjZYC6xzD02l44wbmb0sHxmN9/8aE4GULrKFzFaGazHdXcGEbPZ4zzB6yqwQ==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + + /@lezer/xml@1.0.1: + resolution: {integrity: sha512-jMDXrV953sDAUEMI25VNrI9dz94Ai96FfeglytFINhhwQ867HKlCE2jt3AwZTCT7M528WxdDWv/Ty8e9wizwmQ==} + dependencies: + '@lezer/highlight': 1.1.4 + '@lezer/lr': 1.3.4 + dev: false + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -1424,7 +1831,7 @@ packages: run-parallel: 1.2.0 /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + resolution: {integrity: sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=} engines: {node: '>= 8'} /@nodelib/fs.walk@1.2.8: @@ -4077,7 +4484,7 @@ packages: dev: true /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + resolution: {integrity: sha1-fokQr2hXYBMVWSQ28DCqo+2Xg8M=} dependencies: ci-info: 3.8.0 dev: true @@ -4109,19 +4516,23 @@ packages: dev: true /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + resolution: {integrity: sha1-7nceK6Sz3Fs3KTXVSf2WF780W4w=} dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.15.13: - resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + /@types/node@18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} + dev: true + + /@types/node@18.16.0: + resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} dev: true /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + resolution: {integrity: sha1-0zV0eaD9/dWQf+Z+F+CoXJBuEwE=} dev: true /@types/prop-types@15.7.5: @@ -4139,7 +4550,7 @@ packages: dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 - csstype: 3.1.2 + csstype: 3.1.1 dev: true /@types/scheduler@0.16.2: @@ -4147,7 +4558,7 @@ packages: dev: true /@types/semver@6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + resolution: {integrity: sha1-V5js8b7JTqpk2znuUoCOwGkzFao=} dev: true /@types/semver@7.3.13: @@ -4159,7 +4570,7 @@ packages: dependencies: '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.0.28 - csstype: 3.1.2 + csstype: 3.1.1 dev: true /@types/three@0.149.0: @@ -4179,7 +4590,7 @@ packages: /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} dependencies: - '@types/node': 18.15.13 + '@types/node': 18.15.3 dev: true /@typescript-eslint/eslint-plugin@5.55.0(@typescript-eslint/parser@5.55.0)(eslint@8.36.0)(typescript@5.0.2): @@ -4312,13 +4723,87 @@ packages: eslint-visitor-keys: 3.3.0 dev: false + /@uiw/codemirror-extensions-basic-setup@4.19.16(@codemirror/autocomplete@6.6.0)(@codemirror/commands@6.2.3)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.1)(@codemirror/search@6.4.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0): + resolution: {integrity: sha512-Xm0RDpyYVZ/8hWqaBs3+wZwi4uLwZUBwp/uCt89X80FeR6mr3BFuC+a+gcDO4dBu3l+WQE3jJdhjKjB2TCY/PQ==} + peerDependencies: + '@codemirror/autocomplete': '>=6.0.0' + '@codemirror/commands': '>=6.0.0' + '@codemirror/language': '>=6.0.0' + '@codemirror/lint': '>=6.0.0' + '@codemirror/search': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/commands': 6.2.3 + '@codemirror/language': 6.6.0 + '@codemirror/lint': 6.2.1 + '@codemirror/search': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + dev: false + + /@uiw/codemirror-extensions-langs@4.19.16(@codemirror/language-data@6.3.1)(@codemirror/legacy-modes@6.3.2)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2): + resolution: {integrity: sha512-uQ76uSawnT9Xy++SLCo1RzHKCZlRddBM5Swq4jS5qocT+rCrbHRSmiHcLDIXymquLEBJyZT12jFiaxIFMctABA==} + peerDependencies: + '@codemirror/language-data': '>=6.0.0' + '@codemirror/legacy-modes': '>=6.0.0' + dependencies: + '@codemirror/lang-cpp': 6.0.2 + '@codemirror/lang-html': 6.4.3 + '@codemirror/lang-java': 6.0.1 + '@codemirror/lang-javascript': 6.1.8 + '@codemirror/lang-json': 6.0.1 + '@codemirror/lang-lezer': 6.0.1 + '@codemirror/lang-markdown': 6.1.1 + '@codemirror/lang-php': 6.0.1 + '@codemirror/lang-python': 6.1.2(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/lang-rust': 6.0.1 + '@codemirror/lang-sql': 6.5.0(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/lang-wast': 6.0.1 + '@codemirror/lang-xml': 6.0.2(@codemirror/view@6.10.0) + '@codemirror/language-data': 6.3.1(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/legacy-modes': 6.3.2 + transitivePeerDependencies: + - '@codemirror/state' + - '@codemirror/view' + - '@lezer/common' + dev: false + + /@uiw/react-codemirror@4.19.16(@babel/runtime@7.21.0)(@codemirror/autocomplete@6.6.0)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.1)(@codemirror/search@6.4.0)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.10.0)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uElraR7Mvwz2oZKrmtF5hmIB8dAlIiU65nfg484e/V9k4PV6/5KtPUQL3JPO4clH2pcd+TQqRTQrFFkP/D25ew==} + peerDependencies: + '@babel/runtime': '>=7.11.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/theme-one-dark': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + codemirror: '>=6.0.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@babel/runtime': 7.21.0 + '@codemirror/commands': 6.2.3 + '@codemirror/state': 6.2.0 + '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/view': 6.10.0 + '@uiw/codemirror-extensions-basic-setup': 4.19.16(@codemirror/autocomplete@6.6.0)(@codemirror/commands@6.2.3)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.1)(@codemirror/search@6.4.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0) + codemirror: 6.0.1(@lezer/common@1.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' + dev: false + /@vitejs/plugin-react-swc@3.2.0(vite@4.2.0): resolution: {integrity: sha512-IcBoXL/mcH7JdQr/nfDlDwTdIaH8Rg7LpfQDF4nAht+juHWIuv6WhpKPCSfY4+zztAaB07qdBoFz1XCZsgo3pQ==} peerDependencies: vite: ^4 dependencies: '@swc/core': 1.3.41 - vite: 4.2.0(@types/node@18.15.13) + vite: 4.2.0(@types/node@18.15.3) dev: true /@xobotyi/scrollbar-width@1.9.5: @@ -4481,22 +4966,22 @@ packages: dev: true /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + resolution: {integrity: sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=} engines: {node: '>=8'} /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + resolution: {integrity: sha1-MYPjj66aZdfLXlOUXNWJfQJgoGo=} engines: {node: '>=12'} dev: true /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + resolution: {integrity: sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 @@ -4576,7 +5061,7 @@ packages: dev: true /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: {integrity: sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=} dependencies: sprintf-js: 1.0.3 dev: true @@ -4621,7 +5106,7 @@ packages: dev: false /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + resolution: {integrity: sha1-t5hCCtvrHego2ErNii4j0+/oXo0=} engines: {node: '>=8'} /array-union@3.0.1: @@ -4659,7 +5144,7 @@ packages: dev: false /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} engines: {node: '>=0.10.0'} dev: true @@ -4763,7 +5248,7 @@ packages: dev: true /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + resolution: {integrity: sha1-E6NaEQTN1Ip7dL+HWPlqHuYT+Z0=} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 @@ -4804,13 +5289,13 @@ packages: dev: true /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + resolution: {integrity: sha1-NFThpGLujVmeI23zNs2epPiv4Qc=} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 /breakword@1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} + resolution: {integrity: sha1-/UIKQX9VAWc2tbYVFhyuHI+BmBA=} dependencies: wcwidth: 1.0.1 dev: true @@ -4824,7 +5309,7 @@ packages: dev: true /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: {integrity: sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=} dev: true /buffer@6.0.3: @@ -4874,7 +5359,7 @@ packages: engines: {node: '>=6'} /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + resolution: {integrity: sha1-XnVda6UaoiPsfT1S8ld4IQ+dw8A=} engines: {node: '>=8'} dependencies: camelcase: 5.3.1 @@ -4883,7 +5368,7 @@ packages: dev: true /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + resolution: {integrity: sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=} engines: {node: '>=6'} dev: true @@ -4901,7 +5386,7 @@ packages: dev: true /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + resolution: {integrity: sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=} engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 @@ -4909,7 +5394,7 @@ packages: supports-color: 5.5.0 /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + resolution: {integrity: sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 @@ -4921,7 +5406,7 @@ packages: dev: true /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + resolution: {integrity: sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=} dev: true /charenc@0.0.2: @@ -4957,7 +5442,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 18.15.13 + '@types/node': 18.15.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.3.0 @@ -5012,7 +5497,7 @@ packages: dev: true /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + resolution: {integrity: sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 @@ -5029,7 +5514,7 @@ packages: dev: true /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} engines: {node: '>=0.8'} dev: true @@ -5038,22 +5523,36 @@ packages: engines: {node: '>=6'} dev: false + /codemirror@6.0.1(@lezer/common@1.0.2): + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + dependencies: + '@codemirror/autocomplete': 6.6.0(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.10.0)(@lezer/common@1.0.2) + '@codemirror/commands': 6.2.3 + '@codemirror/language': 6.6.0 + '@codemirror/lint': 6.2.1 + '@codemirror/search': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.10.0 + transitivePeerDependencies: + - '@lezer/common' + dev: false + /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: {integrity: sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=} dependencies: color-name: 1.1.3 /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + resolution: {integrity: sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: {integrity: sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=} /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} @@ -5195,7 +5694,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.13)(cosmiconfig@8.1.2)(ts-node@10.9.1)(typescript@4.9.5): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.3)(cosmiconfig@8.1.2)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -5204,9 +5703,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.13 + '@types/node': 18.15.3 cosmiconfig: 8.1.2 - ts-node: 10.9.1(@types/node@18.15.13)(typescript@5.0.2) + ts-node: 10.9.1(@types/node@18.15.3)(typescript@5.0.2) typescript: 4.9.5 dev: true @@ -5224,8 +5723,12 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true + /crelt@1.0.5: + resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} + dev: false + /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 @@ -5297,23 +5800,27 @@ packages: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true + /csstype@3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + resolution: {integrity: sha1-vELZQ7Ra6lKvqJaHQpHaS5EI//8=} dev: true /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + resolution: {integrity: sha1-fKYk1RchLrxSCjaHPDR4+mbvuvc=} dev: true /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + resolution: {integrity: sha1-xtdLrdpLSaeb9Ocvkczh4zuU3gA=} dev: true /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + resolution: {integrity: sha1-zSbB5F6uAM5qm3sn3LlJVeyVIH0=} engines: {node: '>= 0.1.90'} dependencies: csv-generate: 3.4.3 @@ -5344,7 +5851,7 @@ packages: dev: true /dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + resolution: {integrity: sha1-vKEdhn9dPxue2fc3vRWXDGXf9cg=} dev: true /dayjs@1.11.7: @@ -5398,7 +5905,7 @@ packages: dev: true /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} engines: {node: '>=0.10.0'} dev: true @@ -5484,7 +5991,7 @@ packages: dev: true /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + resolution: {integrity: sha1-WSSF67v2s7GrK+F1yDk9BMoNV+Y=} engines: {node: '>=8'} dev: true @@ -5494,7 +6001,7 @@ packages: dev: true /detect-newline@4.0.0: - resolution: {integrity: sha512-1aXUEPdfGdzVPFpzGJJNgq9o81bGg1s09uxTWsqBlo9PI332uyJRQq13+LK/UN4JfxJbFdCXonUFQ9R/p7yCtw==} + resolution: {integrity: sha1-RQrD+GTV9hEStTpSQSOwEsWVgbw=} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true @@ -5504,7 +6011,7 @@ packages: dev: true /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + resolution: {integrity: sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=} engines: {node: '>=8'} dependencies: path-type: 4.0.0 @@ -5530,7 +6037,7 @@ packages: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.21.0 - csstype: 3.1.2 + csstype: 3.1.1 dev: false /dom-serializer@2.0.0: @@ -5575,7 +6082,7 @@ packages: dev: true /dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + resolution: {integrity: sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=} engines: {node: '>=10'} dev: true @@ -5615,7 +6122,7 @@ packages: dev: true /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=} dev: true /emoji-regex@9.2.2: @@ -5628,7 +6135,7 @@ packages: dev: true /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + resolution: {integrity: sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 @@ -5640,7 +6147,7 @@ packages: dev: true /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + resolution: {integrity: sha1-tKxAZIEH/c3PriQvQovqihTU8b8=} dependencies: is-arrayish: 0.2.1 dev: true @@ -5765,7 +6272,7 @@ packages: dev: true /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + resolution: {integrity: sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=} engines: {node: '>=6'} dev: true @@ -5775,7 +6282,7 @@ packages: dev: true /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} /escape-string-regexp@4.0.0: @@ -6127,7 +6634,7 @@ packages: eslint-visitor-keys: 3.3.0 /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + resolution: {integrity: sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=} engines: {node: '>=4'} hasBin: true dev: true @@ -6221,7 +6728,7 @@ packages: dev: true /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + resolution: {integrity: sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=} engines: {node: '>=4'} dependencies: chardet: 0.7.0 @@ -6300,13 +6807,13 @@ packages: flat-cache: 3.0.4 /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + resolution: {integrity: sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 @@ -6314,7 +6821,7 @@ packages: dev: true /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + resolution: {integrity: sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 @@ -6408,7 +6915,7 @@ packages: dev: true /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + resolution: {integrity: sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=} engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 @@ -6417,7 +6924,7 @@ packages: dev: true /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + resolution: {integrity: sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=} engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 @@ -6474,7 +6981,7 @@ packages: dev: true /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + resolution: {integrity: sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=} engines: {node: 6.* || 8.* || >= 10.*} dev: true @@ -6531,7 +7038,7 @@ packages: dev: true /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 @@ -6687,7 +7194,7 @@ packages: dev: true /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + resolution: {integrity: sha1-HG7aXBaFxjlCdm15u0Cudzzs2IM=} engines: {node: '>=6'} dev: true @@ -6695,11 +7202,11 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + resolution: {integrity: sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=} engines: {node: '>=8'} /has-property-descriptors@1.0.0: @@ -6738,7 +7245,7 @@ packages: react-is: 16.13.1 /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + resolution: {integrity: sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=} dev: true /hosted-git-info@4.1.0: @@ -6812,7 +7319,7 @@ packages: dev: false /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + resolution: {integrity: sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 @@ -6854,7 +7361,7 @@ packages: engines: {node: '>=0.8.19'} /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + resolution: {integrity: sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=} engines: {node: '>=8'} dev: true @@ -6928,7 +7435,7 @@ packages: is-typed-array: 1.1.10 /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} dev: true /is-bigint@1.0.4: @@ -6952,7 +7459,7 @@ packages: engines: {node: '>= 0.4'} /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + resolution: {integrity: sha1-227L7RvWWcQ9rA9FZh52dBA9GGc=} hasBin: true dependencies: ci-info: 3.8.0 @@ -6980,12 +7487,12 @@ packages: engines: {node: '>=0.10.0'} /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=} engines: {node: '>=8'} dev: true /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + resolution: {integrity: sha1-+uMWfHKedGP4RhzlErCApJJoqog=} engines: {node: '>=12'} dev: true @@ -7027,7 +7534,7 @@ packages: has-tostringtag: 1.0.0 /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=} engines: {node: '>=0.12.0'} /is-obj@2.0.0: @@ -7040,7 +7547,7 @@ packages: engines: {node: '>=8'} /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} engines: {node: '>=0.10.0'} dev: true @@ -7141,7 +7648,7 @@ packages: dev: false /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + resolution: {integrity: sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=} engines: {node: '>=0.10.0'} dev: true @@ -7170,7 +7677,7 @@ packages: dev: true /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -7192,10 +7699,10 @@ packages: resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=} /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + resolution: {integrity: sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=} hasBin: true dependencies: argparse: 1.0.10 @@ -7229,7 +7736,7 @@ packages: dev: true /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=} dev: true /json-schema-traverse@0.4.1: @@ -7270,13 +7777,13 @@ packages: dev: true /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} optionalDependencies: graceful-fs: 4.2.11 dev: true /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + resolution: {integrity: sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=} dependencies: universalify: 2.0.0 optionalDependencies: @@ -7347,7 +7854,7 @@ packages: dev: true /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + resolution: {integrity: sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=} engines: {node: '>=0.10.0'} dev: true @@ -7414,7 +7921,7 @@ packages: dev: true /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + resolution: {integrity: sha1-7KKE910pZQeTCdwK2SVauy68FjI=} dev: true /lines-and-columns@2.0.3: @@ -7491,14 +7998,14 @@ packages: dev: false /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + resolution: {integrity: sha1-VTIeswn+u8WcSAHZMackUqaB0oY=} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 @@ -7575,14 +8082,14 @@ packages: dev: true /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + resolution: {integrity: sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=} engines: {node: '>=10'} dependencies: yallist: 4.0.0 @@ -7599,12 +8106,12 @@ packages: dev: true /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} dev: true /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + resolution: {integrity: sha1-kwT5Buk/qucIgNoQKp8d8OqLsFo=} engines: {node: '>=8'} dev: true @@ -7634,7 +8141,7 @@ packages: dev: true /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + resolution: {integrity: sha1-GtZMS3ayok37L2Nf3crfMg0lFGc=} engines: {node: '>=8'} dependencies: '@types/minimist': 1.2.2 @@ -7651,7 +8158,7 @@ packages: dev: true /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + resolution: {integrity: sha1-vL5FvaDuFynTUMA8/8g5WjbE6Jc=} engines: {node: '>=10'} dependencies: '@types/minimist': 1.2.2 @@ -7672,7 +8179,7 @@ packages: dev: true /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=} engines: {node: '>= 8'} /micromatch@4.0.5: @@ -7715,7 +8222,7 @@ packages: dev: true /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + resolution: {integrity: sha1-pj9oFnOzBXH76LwlaGrnRu76mGk=} engines: {node: '>=4'} dev: true @@ -7732,7 +8239,7 @@ packages: dev: true /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + resolution: {integrity: sha1-wGVXE8U6ii69d/+iR9NCxA8BBhk=} engines: {node: '>= 6'} dependencies: arrify: 1.0.1 @@ -7829,7 +8336,7 @@ packages: react-dom: '*' dependencies: css-tree: 1.1.3 - csstype: 3.1.2 + csstype: 3.1.1 fastest-stable-stringify: 2.0.2 inline-style-prefixer: 6.0.4 react: 18.2.0 @@ -7902,7 +8409,7 @@ packages: dev: true /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + resolution: {integrity: sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.1 @@ -7911,7 +8418,7 @@ packages: dev: true /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + resolution: {integrity: sha1-28w+LaWVCaCYNCKITNFy7v36Ul4=} engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 @@ -8074,7 +8581,7 @@ packages: dev: true /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} engines: {node: '>=0.10.0'} dev: true @@ -8093,7 +8600,7 @@ packages: dev: true /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + resolution: {integrity: sha1-GxRyVirnoPdC8PPT03GOpm/5wJw=} engines: {node: '>=8'} dependencies: p-map: 2.1.0 @@ -8105,45 +8612,45 @@ packages: dev: true /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + resolution: {integrity: sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + resolution: {integrity: sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs=} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + resolution: {integrity: sha1-o0KLtwiLOmApL2aRkni3wpetTwc=} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + resolution: {integrity: sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ=} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + resolution: {integrity: sha1-MQko/u+cnsxltosXaTAYpmXOoXU=} engines: {node: '>=6'} dev: true /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + resolution: {integrity: sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + resolution: {integrity: sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=} engines: {node: '>=6'} dev: true @@ -8168,7 +8675,7 @@ packages: callsites: 3.1.0 /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + resolution: {integrity: sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=} engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.18.6 @@ -8201,7 +8708,7 @@ packages: dev: true /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + resolution: {integrity: sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=} engines: {node: '>=8'} /path-is-absolute@1.0.1: @@ -8221,7 +8728,7 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + resolution: {integrity: sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=} engines: {node: '>=8'} /pend@1.2.0: @@ -8247,7 +8754,7 @@ packages: dev: true /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + resolution: {integrity: sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=} engines: {node: '>=6'} dev: true @@ -8280,7 +8787,7 @@ packages: dev: true /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + resolution: {integrity: sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=} engines: {node: '>=8'} dependencies: find-up: 4.1.0 @@ -8356,7 +8863,7 @@ packages: dev: false /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} dev: true /psl@1.9.0: @@ -8413,7 +8920,7 @@ packages: dev: true /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + resolution: {integrity: sha1-W4h48ROlgheEjGSCAmxz4bpXcn8=} engines: {node: '>=8'} dev: true @@ -9045,7 +9552,7 @@ packages: loose-envify: 1.4.0 /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + resolution: {integrity: sha1-86YTV1hFlzOuK5VjgFbhhU5+9Qc=} engines: {node: '>=8'} dependencies: find-up: 4.1.0 @@ -9054,7 +9561,7 @@ packages: dev: true /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + resolution: {integrity: sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=} engines: {node: '>=8'} dependencies: '@types/normalize-package-data': 2.4.1 @@ -9110,7 +9617,7 @@ packages: dev: true /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + resolution: {integrity: sha1-5Ve3mYMWu1PJ8fVvpiY1LGljBZ8=} engines: {node: '>=8'} dependencies: indent-string: 4.0.0 @@ -9184,7 +9691,7 @@ packages: dev: true /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} dev: true @@ -9194,7 +9701,7 @@ packages: dev: true /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + resolution: {integrity: sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=} dev: true /resize-observer-polyfill@1.5.1: @@ -9206,11 +9713,11 @@ packages: dev: true /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + resolution: {integrity: sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=} engines: {node: '>=4'} /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + resolution: {integrity: sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=} engines: {node: '>=8'} dev: true @@ -9327,7 +9834,7 @@ packages: dev: true /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=} dev: true /sax@1.2.4: @@ -9358,7 +9865,7 @@ packages: dev: true /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + resolution: {integrity: sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=} hasBin: true dev: true @@ -9375,7 +9882,7 @@ packages: lru-cache: 6.0.0 /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} dev: true /set-harmonic-interval@1.0.1: @@ -9400,7 +9907,7 @@ packages: dev: false /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 @@ -9413,12 +9920,12 @@ packages: shebang-regex: 3.0.0 /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} engines: {node: '>=0.10.0'} dev: true /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + resolution: {integrity: sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=} engines: {node: '>=8'} /shell-quote@1.7.3: @@ -9456,11 +9963,11 @@ packages: dev: true /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + resolution: {integrity: sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=} engines: {node: '>=8'} /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + resolution: {integrity: sha1-JCI3IXbExsWt214q2oha+YSzlqc=} engines: {node: '>=12'} dev: true @@ -9491,7 +9998,7 @@ packages: dev: true /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + resolution: {integrity: sha1-fiXT3Vi1HGykq6Op45FlDqYmmKQ=} engines: {node: '>=6'} hasBin: true dependencies: @@ -9510,7 +10017,7 @@ packages: dev: true /sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + resolution: {integrity: sha1-v/gz/oXKsUezR0LkWGNFPB4ZC0U=} dev: true /sort-package-json@2.4.1: @@ -9531,7 +10038,7 @@ packages: dev: true /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: {integrity: sha1-BP58f54e0tZiIzwoyys1ufY/bk8=} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 @@ -9543,7 +10050,7 @@ packages: dev: false /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=} engines: {node: '>=0.10.0'} /sourcemap-codec@1.4.8: @@ -9574,11 +10081,11 @@ packages: dev: true /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + resolution: {integrity: sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=} dev: true /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + resolution: {integrity: sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 @@ -9588,6 +10095,10 @@ packages: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true + /spectorjs@0.9.29: + resolution: {integrity: sha512-WYbtN+uNR8g6Sr002VbaC6upZJPmwKSBD2SSMhjwWRkGbWSOhKSokeQXz5c+OGsbj/KrWcoz37g2NGttI5PJRw==} + dev: false + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: @@ -9606,7 +10117,7 @@ packages: dev: true /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true /sshpk@1.17.0: @@ -9673,7 +10184,7 @@ packages: dev: true /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + resolution: {integrity: sha1-ocPs1y3b9QCqjTQrC53zj1qlmOM=} dependencies: mixme: 0.5.9 dev: true @@ -9688,7 +10199,7 @@ packages: dev: false /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=} engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 @@ -9753,13 +10264,13 @@ packages: dev: true /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + resolution: {integrity: sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 /strip-ansi@7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + resolution: {integrity: sha1-YXQKCM42th5Q5lZT8HBg0ACXX7I=} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 @@ -9781,7 +10292,7 @@ packages: dev: true /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} engines: {node: '>=4'} /strip-bom@5.0.0: @@ -9800,7 +10311,7 @@ packages: dev: true /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + resolution: {integrity: sha1-wy4c7pQLazQyx3G8LFS8znPNMAE=} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 @@ -9820,6 +10331,10 @@ packages: engines: {node: '>=14.16'} dev: true + /style-mod@4.0.3: + resolution: {integrity: sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==} + dev: false + /styled-components@5.3.9(react-dom@18.2.0)(react-is@16.13.1)(react@18.2.0): resolution: {integrity: sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A==} engines: {node: '>=10'} @@ -9848,13 +10363,13 @@ packages: dev: false /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + resolution: {integrity: sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + resolution: {integrity: sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 @@ -9864,7 +10379,7 @@ packages: engines: {node: '>= 0.4'} /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + resolution: {integrity: sha1-KmpUhAQywvtjIP6g9BVTHpAYn1Q=} engines: {node: '>=8'} dev: true @@ -9920,7 +10435,7 @@ packages: dev: true /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + resolution: {integrity: sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 @@ -9939,7 +10454,7 @@ packages: dev: false /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 @@ -9962,11 +10477,11 @@ packages: dev: true /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} dev: true /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + resolution: {integrity: sha1-Jgpdli2LdSQlsy86fbDcrNF2wUQ=} engines: {node: '>=8'} dev: true @@ -9974,7 +10489,7 @@ packages: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-node@10.9.1(@types/node@18.15.13)(typescript@5.0.2): + /ts-node@10.9.1(@types/node@18.15.3)(typescript@5.0.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -9993,7 +10508,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.13 + '@types/node': 18.15.3 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -10147,31 +10662,31 @@ packages: dev: true /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + resolution: {integrity: sha1-AXLLW86AsL1ULqNI21DH4hg02TQ=} engines: {node: '>=10'} dev: true /type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + resolution: {integrity: sha1-20vBUaSiz07r+a3V23VQjbbMhB8=} engines: {node: '>=10'} dev: true /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + resolution: {integrity: sha1-G/IH9LKPkVg2ZstfvTJ4hzAc1fQ=} engines: {node: '>=10'} /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + resolution: {integrity: sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=} engines: {node: '>=10'} dev: true /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + resolution: {integrity: sha1-jSojcNPfiG61yQraHFv2GIrPg4s=} engines: {node: '>=8'} dev: true /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + resolution: {integrity: sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=} engines: {node: '>=8'} dev: true @@ -10238,7 +10753,7 @@ packages: dev: true /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + resolution: {integrity: sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=} engines: {node: '>= 4.0.0'} dev: true @@ -10248,7 +10763,7 @@ packages: dev: true /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + resolution: {integrity: sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=} engines: {node: '>= 10.0.0'} dev: true @@ -10310,7 +10825,7 @@ packages: dev: true /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + resolution: {integrity: sha1-/JH2uce6FchX9MssXe/uw51PQQo=} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 @@ -10352,7 +10867,7 @@ packages: lodash.uniq: 4.5.0 lodash.uniqby: 4.7.0 md5: 2.3.0 - vite: 4.2.0(@types/node@18.15.13) + vite: 4.2.0(@types/node@18.15.3) web-ext: 7.5.0 webextension-polyfill: 0.10.0 yaml: 2.2.1 @@ -10365,7 +10880,41 @@ packages: - utf-8-validate dev: true - /vite@4.2.0(@types/node@18.15.13): + /vite@4.2.0(@types/node@18.15.3): + resolution: {integrity: sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.15.3 + esbuild: 0.17.12 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.19.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vite@4.2.0(@types/node@18.16.0): resolution: {integrity: sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -10390,7 +10939,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 @@ -10399,6 +10948,10 @@ packages: fsevents: 2.3.2 dev: true + /w3c-keyname@2.2.6: + resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} + dev: false + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -10408,7 +10961,7 @@ packages: dev: true /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} dependencies: defaults: 1.0.4 dev: true @@ -10468,11 +11021,11 @@ packages: resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} dev: true /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 @@ -10500,8 +11053,8 @@ packages: is-weakset: 2.0.2 dev: false - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true /which-pm@2.0.0: @@ -10532,7 +11085,7 @@ packages: dev: true /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + resolution: {integrity: sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=} hasBin: true dependencies: isexe: 2.0.0 @@ -10561,7 +11114,7 @@ packages: engines: {node: '>=0.10.0'} /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + resolution: {integrity: sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=} engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 @@ -10570,7 +11123,7 @@ packages: dev: true /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 @@ -10631,20 +11184,20 @@ packages: dev: true /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + resolution: {integrity: sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=} dev: true /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + resolution: {integrity: sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=} engines: {node: '>=10'} dev: true /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} dev: true /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=} /yaml@2.2.1: resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} @@ -10652,7 +11205,7 @@ packages: dev: true /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + resolution: {integrity: sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=} engines: {node: '>=6'} dependencies: camelcase: 5.3.1 @@ -10660,7 +11213,7 @@ packages: dev: true /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + resolution: {integrity: sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=} engines: {node: '>=10'} dev: true @@ -10670,7 +11223,7 @@ packages: dev: true /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + resolution: {integrity: sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg=} engines: {node: '>=8'} dependencies: cliui: 6.0.0 @@ -10681,7 +11234,7 @@ packages: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.0 + which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 dev: true @@ -10725,7 +11278,7 @@ packages: dev: true /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + resolution: {integrity: sha1-ApTrPe4FAo0x7hpfosVWpqrxChs=} engines: {node: '>=10'} /zip-dir@2.0.0: