diff --git a/ImmediateGLBufferAttribute.js b/ImmediateGLBufferAttribute.js new file mode 100644 index 0000000000..f861088cab --- /dev/null +++ b/ImmediateGLBufferAttribute.js @@ -0,0 +1,114 @@ +import * as THREE from 'three'; +import {getRenderer} from './renderer.js'; + +export class ImmediateGLBufferAttribute extends THREE.GLBufferAttribute { + constructor(array, itemSize, isIndex = false) { + const Type = array.constructor; + let glType; + switch (Type) { + case Float32Array: { + glType = WebGLRenderingContext.FLOAT; + break; + } + case Uint16Array: { + glType = WebGLRenderingContext.UNSIGNED_SHORT; + break; + } + case Int16Array: { + glType = WebGLRenderingContext.SHORT; + break; + } + case Uint32Array: { + glType = WebGLRenderingContext.UNSIGNED_INT; + break; + } + case Int32Array: { + glType = WebGLRenderingContext.INT; + break; + } + case Uint8Array: { + glType = WebGLRenderingContext.UNSIGNED_BYTE; + break; + } + case Int8Array: { + glType = WebGLRenderingContext.BYTE; + break; + } + default: { + throw new Error(`Unsupported array type: ${Type}`); + } + } + const renderer = getRenderer(); + const gl = renderer.getContext(); + const buffer = gl.createBuffer(); + { + const target = ImmediateGLBufferAttribute.getTarget(isIndex); + const oldBinding = gl.getParameter(ImmediateGLBufferAttribute.getTargetBinding(isIndex)); + gl.bindBuffer(target, buffer); + gl.bufferData(target, array.byteLength, gl.DYNAMIC_DRAW); + gl.bindBuffer(target, oldBinding); + } + super(buffer, glType, itemSize, Type.BYTES_PER_ELEMENT, array.length / itemSize); + + this.array = array; + this.isIndex = isIndex; + /* this.updateRange = { + offset: 0, + count: -1, + }; */ + } + static getTarget(isIndex) { + return isIndex ? WebGLRenderingContext.ELEMENT_ARRAY_BUFFER : WebGLRenderingContext.ARRAY_BUFFER; + } + getTarget() { + return ImmediateGLBufferAttribute.getTarget(this.isIndex); + } + static getTargetBinding(isIndex) { + return isIndex ? WebGLRenderingContext.ELEMENT_ARRAY_BUFFER_BINDING : WebGLRenderingContext.ARRAY_BUFFER_BINDING; + } + getTargetBinding() { + return ImmediateGLBufferAttribute.getTargetBinding(this.isIndex); + } + pushed = false; + static pushUpdate() { + const renderer = getRenderer(); + const gl = renderer.getContext(); + + const arrayBufferBinding = gl.getParameter(WebGLRenderingContext.ARRAY_BUFFER_BINDING); + const elementArrayBufferBinding = gl.getParameter(WebGLRenderingContext.ELEMENT_ARRAY_BUFFER_BINDING); + this.pushed = true; + + const popUpdate = () => { + gl.bindBuffer(WebGLRenderingContext.ARRAY_BUFFER, arrayBufferBinding); + gl.bindBuffer(WebGLRenderingContext.ELEMENT_ARRAY_BUFFER, elementArrayBufferBinding); + this.pushed = false; + }; + return popUpdate; + } + wrap(fn) { + let popUpdate = null; + if (!ImmediateGLBufferAttribute.pushed) { + popUpdate = ImmediateGLBufferAttribute.pushUpdate(); + } + + fn(); + + popUpdate && popUpdate(); + } + update(offset, count, array = this.array, srcOffset = offset) { + this.wrap(() => { + const renderer = getRenderer(); + const gl = renderer.getContext(); + const target = this.getTarget(); + + gl.bindBuffer(target, this.buffer); + gl.bufferSubData( + target, + offset * this.elementSize, + array, + srcOffset, + count + ); + }); + } +} \ No newline at end of file diff --git a/ai/lore/lore-ai.js b/ai/lore/lore-ai.js index f29430d4ef..25075c77f5 100644 --- a/ai/lore/lore-ai.js +++ b/ai/lore/lore-ai.js @@ -3,13 +3,35 @@ import { defaultPlayerBio, defaultObjectName, defaultObjectDescription, + makeLorePrompt, makeLoreStop, + postProcessResponse, + parseLoreResponses, + makeCommentPrompt, makeCommentStop, parseCommentResponse, - postProcessResponse, - parseLoreResponses, + + makeSelectTargetPrompt, + makeSelectTargetStop, + parseSelectTargetResponse, + + makeSelectCharacterPrompt, + makeSelectCharacterStop, + parseSelectCharacterResponse, + + makeChatPrompt, + makeChatStop, + parseChatResponse, + + makeOptionsPrompt, + makeOptionsStop, + parseOptionsResponse, + + makeCharacterIntroPrompt, + makeCharacterIntroStop, + parseCharacterIntroResponse, } from './lore-model.js' const numGenerateTries = 5; @@ -193,11 +215,11 @@ class AIScene { }); const stop = makeLoreStop(this.localCharacter, 0); let response = await this.generateFn(prompt, stop); - console.log('got lore', {prompt, response}); + // console.log('got lore', {prompt, response}); response = postProcessResponse(response, this.characters, dstCharacter); return response; } - async generateComment(name, dstCharacter = null) { + async generateLocationComment(name, dstCharacter = null) { const prompt = makeCommentPrompt({ settings: this.settings, dstCharacter, @@ -206,9 +228,76 @@ class AIScene { const stop = makeCommentStop(); let response = await this.generateFn(prompt, stop); response = parseCommentResponse(response); - console.log('got comment', {prompt, response}); + // console.log('got comment', {prompt, response}); + return response; + } + + // XXX needs better API + async generateSelectTargetComment(name, description) { + const prompt = makeSelectTargetPrompt({ + name, + description, + }); + console.log('select target prompt', {prompt}); + const stop = makeSelectTargetStop(); + let response = await this.generateFn(prompt, stop); + console.log('select target response', {prompt, response}); + response = parseSelectTargetResponse(response); + // console.log('got comment', {prompt, response}); return response; } + async generateSelectCharacterComment(name, description) { + const prompt = makeSelectCharacterPrompt({ + name, + description, + }); + console.log('select character prompt', {prompt}); + const stop = makeSelectCharacterStop(); + let response = await this.generateFn(prompt, stop); + console.log('select character response', {prompt, response}); + const response2 = parseSelectCharacterResponse(response); + console.log('select character parsed', {response2}); + return response2; + } + async generateChatMessage(messages, nextCharacter) { + const prompt = makeChatPrompt({ + messages, + nextCharacter, + }); + console.log('chat prompt', {prompt}); + const stop = makeChatStop(); + let response = await this.generateFn(prompt, stop); + console.log('chat response', {prompt, response}); + const response2 = parseChatResponse(response); + console.log('chat parsed', {response2}); + return response2; + } + async generateDialogueOptions(messages, nextCharacter) { + const prompt = makeOptionsPrompt({ + messages, + nextCharacter, + }); + console.log('dialogue options prompt', {prompt}); + const stop = makeOptionsStop(); + let response = await this.generateFn(prompt, stop); + console.log('dialogue options response', {prompt, response}); + const response2 = parseOptionsResponse(response); + console.log('dialogue options parsed', {response2}); + return response2; + } + async generateCharacterIntroPrompt(name, bio) { + const prompt = makeCharacterIntroPrompt({ + name, + bio, + }); + console.log('dialogue options prompt', {prompt}); + const stop = makeCharacterIntroStop(); + let response = await this.generateFn(prompt, stop); + console.log('dialogue options response', {prompt, response}); + const response2 = parseCharacterIntroResponse(response); + console.log('dialogue options parsed', {response2}); + return response2; + } } class LoreAI { @@ -218,7 +307,9 @@ class LoreAI { async generate(prompt, { stop, max_tokens = 100, - // temperature, + temperature, + frequency_penalty, + presence_penalty, // top_p, } = {}) { if (prompt) { @@ -228,6 +319,15 @@ class LoreAI { if (stop !== undefined) { query.stop = stop; } + if (temperature !== undefined) { + query.temperature = temperature; + } + if (frequency_penalty !== undefined) { + query.frequency_penalty = frequency_penalty; + } + if (presence_penalty !== undefined) { + query.presence_penalty = presence_penalty; + } query.temperature = temperature; query.top_p = top_p; @@ -286,7 +386,9 @@ class LoreAI { generateFn: (prompt, stop) => { return this.generate(prompt, { stop, - // temperature, + temperature: 1, + presence_penalty: 2, + frequency_penalty: 2, // top_p, }); }, diff --git a/app-manager.js b/app-manager.js index 309a8d911e..faa86a6ecd 100644 --- a/app-manager.js +++ b/app-manager.js @@ -26,6 +26,9 @@ const localData = { const localFrameOpts = { data: localData, }; +const frameEvent = new MessageEvent('frame', localFrameOpts); + +const physicsScene = physicsManager.getScene(); const appManagers = []; class AppManager extends EventTarget { @@ -51,7 +54,7 @@ class AppManager extends EventTarget { localData.timestamp = timestamp; localData.frame = frame; localData.timeDiff = timeDiff; - this.dispatchEvent(new MessageEvent('frame', localFrameOpts)); + this.dispatchEvent(frameEvent); } /* setPushingLocalUpdates(pushingLocalUpdates) { this.pushingLocalUpdates = pushingLocalUpdates; @@ -475,7 +478,7 @@ class AppManager extends EventTarget { if (removeIndex !== -1) { this.appsArray.delete(removeIndex, 1); } else { - console.warn('invalid remove instance id', {removeInstanceId, appsJson}); + console.warn('invalid remove instance id', {instanceId, appsJson}); debugger; } } @@ -532,34 +535,44 @@ class AppManager extends EventTarget { // srcAppManager.setBlindStateMode(true); // dstAppManager.setBlindStateMode(true); - if (srcAppManager.appsArray.doc === dstAppManager.appsArray.doc) { - this.unbindTrackedApp(instanceId); - - let dstTrackedApp = null; - srcAppManager.appsArray.doc.transact(() => { - const srcTrackedApp = srcAppManager.getTrackedApp(instanceId); - const contentId = srcTrackedApp.get('contentId'); - const position = srcTrackedApp.get('position'); - const quaternion = srcTrackedApp.get('quaternion'); - const scale = srcTrackedApp.get('scale'); - const components = srcTrackedApp.get('components'); - - srcAppManager.removeTrackedAppInternal(instanceId); - - dstTrackedApp = dstAppManager.addTrackedAppInternal( - instanceId, - contentId, - position, - quaternion, - scale, - components, - ); + this.unbindTrackedApp(instanceId); + + let dstTrackedApp = null; + + const wrapTxFn = (srcAppManager.appsArray.doc === dstAppManager.appsArray.doc) ? + innerFn => srcAppManager.appsArray.doc.transact(innerFn) + : + innerFn => dstAppManager.appsArray.doc.transact(() => { + srcAppManager.appsArray.doc.transact(innerFn); }); + wrapTxFn(() => { + const srcTrackedApp = srcAppManager.getTrackedApp(instanceId); + /* if (!srcTrackedApp) { + console.log('transplant app', {app, srcTrackedApp}); + debugger; + } */ + const contentId = srcTrackedApp.get('contentId'); + const position = srcTrackedApp.get('position'); + const quaternion = srcTrackedApp.get('quaternion'); + const scale = srcTrackedApp.get('scale'); + const components = srcTrackedApp.get('components'); - dstAppManager.bindTrackedApp(dstTrackedApp, app); - } else { + srcAppManager.removeTrackedAppInternal(instanceId); + + dstTrackedApp = dstAppManager.addTrackedAppInternal( + instanceId, + contentId, + position, + quaternion, + scale, + components, + ); + }); + + dstAppManager.bindTrackedApp(dstTrackedApp, app); + /* } else { throw new Error('cannot transplant apps between app manager with different state binding'); - } + } */ // srcAppManager.setBlindStateMode(false); // dstAppManager.setBlindStateMode(false); @@ -635,8 +648,8 @@ class AppManager extends EventTarget { child.updateMatrixWorld(); } - physicsManager.setTransform(physicsObject); - physicsManager.getBoundingBoxForPhysicsId(physicsObject.physicsId, physicsObject.physicsMesh.geometry.boundingBox); + physicsScene.setTransform(physicsObject); + physicsScene.getBoundingBoxForPhysicsId(physicsObject.physicsId, physicsObject.physicsMesh.geometry.boundingBox); } } } @@ -692,6 +705,8 @@ class AppManager extends EventTarget { } else { throw new Error('double destroy of app manager'); } + } else { + throw new Error('destroy of bound app manager'); } } } diff --git a/atlasing.js b/atlasing.js new file mode 100644 index 0000000000..29f3dc3730 --- /dev/null +++ b/atlasing.js @@ -0,0 +1,276 @@ +import * as THREE from 'three'; +import {MaxRectsPacker} from 'maxrects-packer'; +import {modUv} from './util.js'; +import {startTextureAtlasSize, maxTextureAtlasSize} from './constants.js'; + +// const localVector = new THREE.Vector3(); +// const localVector2 = new THREE.Vector3(); +const localVector2D = new THREE.Vector2(); +const localVector2D2 = new THREE.Vector2(); +// const localVector4D = new THREE.Vector4(); +// const localQuaternion = new THREE.Quaternion(); +// const localMatrix = new THREE.Matrix4(); + +export const mapWarpedUvs = (src, srcOffset, dst, dstOffset, tx, ty, tw, th, canvasSize) => { + const count = src.count; + for (let i = 0; i < count; i++) { + const srcIndex = srcOffset + i * 2; + const localDstOffset = dstOffset + i * 2; + + localVector2D.fromArray(src.array, srcIndex); + modUv(localVector2D); + localVector2D + .multiply( + localVector2D2.set(tw/canvasSize, th/canvasSize) + ) + .add( + localVector2D2.set(tx/canvasSize, ty/canvasSize) + ); + localVector2D.toArray(dst.array, localDstOffset); + } +}; + +const generateTextureAtlas = textureSpecs => { + const textureNames = Object.keys(textureSpecs); + const firstTextureArray = textureSpecs[textureNames[0]]; + + // compute texture sizes + const textureSizes = firstTextureArray.map((firstTexture, i) => { + /* const emissiveMap = emissiveMaps[i]; + const normalMap = normalMaps[i]; + const roughnessMap = roughnessMaps[i]; + const metalnessMap = metalnessMaps[i]; */ + + const maxSize = new THREE.Vector2(0, 0); + for (const textureName of textureNames) { + const map = textureSpecs[textureName][i]; + if (map) { + maxSize.x = Math.max(maxSize.x, map.image.width); + maxSize.y = Math.max(maxSize.y, map.image.height); + } + } + return maxSize; + }); + const textureUuids = firstTextureArray.map((firstTexture, i) => { + /* const emissiveMap = emissiveMaps[i]; + const normalMap = normalMaps[i]; + const roughnessMap = roughnessMaps[i]; + const metalnessMap = metalnessMaps[i]; */ + + const uuids = []; + for (const textureName of textureNames) { + const map = textureSpecs[textureName][i]; + uuids.push(map ? map.uuid : null); + } + return uuids.join(':'); + }); + + // generate atlas layouts + const _packAtlases = () => { + const _attemptPack = (textureSizes, atlasSize) => { + const maxRectsPacker = new MaxRectsPacker(atlasSize, atlasSize, 0); + const rectUuidCache = new Map(); + const rectIndexCache = new Map(); + textureSizes.forEach((textureSize, index) => { + const {x: width, y: height} = textureSize; + const hash = textureUuids[index]; + + let rect = rectUuidCache.get(hash); + if (!rect) { + rect = { + width, + height, + data: { + index, + }, + }; + rectUuidCache.set(hash, rect); + } + rectIndexCache.set(index, rect); + }); + const rects = Array.from(rectUuidCache.values()); + + maxRectsPacker.addArray(rects); + let oversized = maxRectsPacker.bins.length > 1; + maxRectsPacker.bins.forEach(bin => { + bin.rects.forEach(rect => { + if (rect.oversized) { + oversized = true; + } + }); + }); + if (!oversized) { + maxRectsPacker.rectIndexCache = rectIndexCache; + return maxRectsPacker; + } else { + return null; + } + }; + + const hasTextures = textureSizes.some(textureSize => textureSize.x > 0 || textureSize.y > 0); + if (hasTextures) { + let atlas; + let atlasSize = startTextureAtlasSize; + while (!(atlas = _attemptPack(textureSizes, atlasSize))) { + atlasSize *= 2; + } + return atlas; + } else { + return null; + } + }; + const atlas = _packAtlases(); + + // draw atlas images + const _drawAtlasImages = atlas => { + const _getTexturesKey = textures => textures.map(t => t ? t.uuid : '').join(','); + const _drawAtlasImage = (textureName, textures) => { + if (atlas && textures.some(t => t !== null)) { + const canvasSize = Math.min(atlas.width, maxTextureAtlasSize); + const canvasScale = canvasSize / atlas.width; + + const canvas = document.createElement('canvas'); + canvas.width = canvasSize; + canvas.height = canvasSize; + + const initializer = textureInitializers[textureName]; + if (initializer) { + initializer(canvas); + } + + const ctx = canvas.getContext('2d'); + atlas.bins.forEach(bin => { + bin.rects.forEach(rect => { + const {x, y, width: w, height: h, data: {index}} = rect; + const texture = textures[index]; + if (texture) { + const image = texture.image; + + // draw the image in the correct box on the canvas + const tx = x * canvasScale; + const ty = y * canvasScale; + const tw = w * canvasScale; + const th = h * canvasScale; + ctx.drawImage(image, 0, 0, image.width, image.height, tx, ty, tw, th); + } + }); + }); + + return canvas; + } else { + return null; + } + }; + + const atlasImages = {}; + const atlasImagesMap = new Map(); // cache to alias identical textures + for (const textureName of textureNames) { + const textures = textureSpecs[textureName]; + const key = _getTexturesKey(textures); + + // const textureName2 = textureName.replace(/s$/, ''); + + let atlasImage = atlasImagesMap.get(key); + if (atlasImage === undefined) { // cache miss + atlasImage = _drawAtlasImage(textureName, textures); + if (atlasImage !== null) { + atlasImage.key = key; + } + atlasImagesMap.set(key, atlasImage); + } + atlasImages[textureName] = atlasImage; + } + return atlasImages; + }; + const atlasImages = _drawAtlasImages(atlas); + + const atlasTextures = {}; + for (const textureName of textureNames) { + const atlasImage = atlasImages[textureName]; + if (atlasImage) { + const texture = new THREE.Texture(atlasImage); + texture.flipY = false; + texture.encoding = THREE.sRGBEncoding; + texture.needsUpdate = true; + atlasTextures[textureName] = texture; + } + } + + return { + atlas, + atlasImages, + atlasTextures, + }; +}; + +/* const textureTypes = [ + 'map', + 'normalMap', + 'roughnessMap', + 'metalnessMap', + 'emissiveMap', +]; */ +const _colorCanvas = (canvas, fillStyle) => { + const ctx = canvas.getContext('2d'); + ctx.fillStyle = fillStyle; + ctx.fillRect(0, 0, canvas.width, canvas.height); +}; +const textureInitializers = { + normalMap(canvas) { + _colorCanvas(canvas, 'rgb(128, 128, 255)'); + }, + roughnessMap(canvas) { + _colorCanvas(canvas, 'rgb(255, 255, 255)'); + }, + /* metalness(canvas) { + _colorCanvas(canvas, 'rgb(0, 0, 0)'); + }, */ +}; +export const createTextureAtlas = (meshes, { + textures = 'map', + attributes = ['position', 'normal', 'uv'], +} = {}) => { + const textureSpecs = {}; + for (const textureName of textures) { + textureSpecs[textureName] = meshes.map(mesh => mesh.material[textureName]); + } + const { + atlas, + atlasImages, + atlasTextures, + } = generateTextureAtlas(textureSpecs); + + const canvasSize = Math.min(atlas.width, maxTextureAtlasSize); + const canvasScale = canvasSize / atlas.width; + + // geometry + + const geometries = meshes.map((m, i) => { + const srcGeometry = m.geometry; + + const geometry = new THREE.BufferGeometry(); + for (const k of attributes) { + const attr = srcGeometry.attributes[k]; + geometry.setAttribute(k, attr); + } + geometry.setIndex(srcGeometry.index); + + const rect = atlas.rectIndexCache.get(i); + const {x, y, width: w, height: h} = rect; + const tx = x * canvasScale; + const ty = y * canvasScale; + const tw = w * canvasScale; + const th = h * canvasScale; + + mapWarpedUvs(geometry.attributes.uv, 0, geometry.attributes.uv, 0, tx, ty, tw, th, canvasSize); + + return geometry; + }); + + return { + atlas, + atlasImages, + atlasTextures, + geometries, + }; +}; \ No newline at end of file diff --git a/avatar-iconer.js b/avatar-iconer.js index d30b0ded73..165da46e9f 100644 --- a/avatar-iconer.js +++ b/avatar-iconer.js @@ -53,13 +53,9 @@ class AvatarIconer extends EventTarget { const cameraOffset = new THREE.Vector3(0, 0.05, -0.35); `, async function(start_url, width, height) { - const dstAvatarApp = await metaversefile.createAppAsync({ - start_url, - }); - - const player = npcManager.createNpc({ + const player = await npcManager.createNpcAsync({ name: 'avatar-iconer-npc', - avatarApp: dstAvatarApp, + avatarUrl: start_url, detached: true, }); @@ -80,7 +76,6 @@ class AvatarIconer extends EventTarget { })); player.destroy(); - dstAvatarApp.destroy(); return emotionCanvases; } @@ -95,7 +90,7 @@ class AvatarIconer extends EventTarget { if (srcAvatarApp) { const start_url = srcAvatarApp.contentId; - this.emotionCanvases = await this.getEmotionCanvases(start_url, this.width, this.height); + this.emotionCanvases = await this.getEmotionCanvases([start_url, this.width, this.height]); this.enabled = true; } else { diff --git a/avatar-screenshotter.js b/avatar-screenshotter.js index af340307bd..832ce73ff7 100644 --- a/avatar-screenshotter.js +++ b/avatar-screenshotter.js @@ -24,35 +24,13 @@ export const screenshotAvatarUrl = async ({ cameraOffset, emotion, }) => { - const app = await metaversefile.createAppAsync({ - start_url, - }); - return await screenshotAvatarApp({ - app, - width, - height, - canvas, - cameraOffset, - emotion, - }); -}; -export const screenshotAvatarApp = async ({ - app, - width = 300, - height = 300, - canvas, - cameraOffset, - emotion, -}) => { - // await Avatar.waitForLoad(); - - const player = npcManager.createNpc({ + const player = await npcManager.createNpcAsync({ name: 'sceenshot-npc', - avatarApp: app, + avatarUrl: start_url, detached: true, }); - return await screenshotPlayer({ + const result = await screenshotPlayer({ player, width, height, @@ -60,6 +38,8 @@ export const screenshotAvatarApp = async ({ cameraOffset, emotion, }); + player.destroy(); + return result; }; export const screenshotPlayer = async ({ player, @@ -154,7 +134,7 @@ export const screenshotPlayer = async ({ _render(); diorama.destroy(); - player.destroy(); + // player.destroy(); return writeCanvas; }; \ No newline at end of file diff --git a/avatars/AnimationMapping.js b/avatars/AnimationMapping.js index 5810ac8c69..6d8cc2b8b0 100644 --- a/avatars/AnimationMapping.js +++ b/avatars/AnimationMapping.js @@ -1,72 +1,73 @@ class AnimationMapping { - constructor(animationTrackName, boneName, isTop, isPosition) { + constructor(animationTrackName, boneName, isTop, isPosition, isArm) { this.animationTrackName = animationTrackName; this.boneName = boneName; this.isTop = isTop; this.isPosition = isPosition; + this.isArm = isArm; } clone() { - return new AnimationMapping(this.animationTrackName, this.boneName, this.isTop, this.isPosition); + return new AnimationMapping(this.animationTrackName, this.boneName, this.isTop, this.isPosition, this.isArm); } } export const animationMappingConfig = [ - new AnimationMapping('mixamorigHips.position', 'Hips', false, true), - new AnimationMapping('mixamorigHips.quaternion', 'Hips', false, false), - new AnimationMapping('mixamorigSpine.quaternion', 'Spine', true, false), - new AnimationMapping('mixamorigSpine1.quaternion', 'Chest', true, false), - new AnimationMapping('mixamorigSpine2.quaternion', 'UpperChest', true, false), - new AnimationMapping('mixamorigNeck.quaternion', 'Neck', true, false), - new AnimationMapping('mixamorigHead.quaternion', 'Head', true, false), + new AnimationMapping('mixamorigHips.position', 'Hips', false, true, false), + new AnimationMapping('mixamorigHips.quaternion', 'Hips', false, false, false), + new AnimationMapping('mixamorigSpine.quaternion', 'Spine', true, false, false), + new AnimationMapping('mixamorigSpine1.quaternion', 'Chest', true, false, false), + new AnimationMapping('mixamorigSpine2.quaternion', 'UpperChest', true, false, false), + new AnimationMapping('mixamorigNeck.quaternion', 'Neck', true, false, false), + new AnimationMapping('mixamorigHead.quaternion', 'Head', true, false, false), - new AnimationMapping('mixamorigLeftShoulder.quaternion', 'Left_shoulder', true, false), - new AnimationMapping('mixamorigLeftArm.quaternion', 'Left_arm', true, false), - new AnimationMapping('mixamorigLeftForeArm.quaternion', 'Left_elbow', true, false), - new AnimationMapping('mixamorigLeftHand.quaternion', 'Left_wrist', true, false), - new AnimationMapping('mixamorigLeftHandMiddle1.quaternion', 'Left_middleFinger1', true, false), - new AnimationMapping('mixamorigLeftHandMiddle2.quaternion', 'Left_middleFinger2', true, false), - new AnimationMapping('mixamorigLeftHandMiddle3.quaternion', 'Left_middleFinger3', true, false), - new AnimationMapping('mixamorigLeftHandThumb1.quaternion', 'Left_thumb0', true, false), - new AnimationMapping('mixamorigLeftHandThumb2.quaternion', 'Left_thumb1', true, false), - new AnimationMapping('mixamorigLeftHandThumb3.quaternion', 'Left_thumb2', true, false), - new AnimationMapping('mixamorigLeftHandIndex1.quaternion', 'Left_indexFinger1', true, false), - new AnimationMapping('mixamorigLeftHandIndex2.quaternion', 'Left_indexFinger2', true, false), - new AnimationMapping('mixamorigLeftHandIndex3.quaternion', 'Left_indexFinger3', true, false), - new AnimationMapping('mixamorigLeftHandRing1.quaternion', 'Left_ringFinger1', true, false), - new AnimationMapping('mixamorigLeftHandRing2.quaternion', 'Left_ringFinger2', true, false), - new AnimationMapping('mixamorigLeftHandRing3.quaternion', 'Left_ringFinger3', true, false), - new AnimationMapping('mixamorigLeftHandPinky1.quaternion', 'Left_littleFinger1', true, false), - new AnimationMapping('mixamorigLeftHandPinky2.quaternion', 'Left_littleFinger2', true, false), - new AnimationMapping('mixamorigLeftHandPinky3.quaternion', 'Left_littleFinger3', true, false), + new AnimationMapping('mixamorigLeftShoulder.quaternion', 'Left_shoulder', true, false, true), + new AnimationMapping('mixamorigLeftArm.quaternion', 'Left_arm', true, false, true), + new AnimationMapping('mixamorigLeftForeArm.quaternion', 'Left_elbow', true, false, true), + new AnimationMapping('mixamorigLeftHand.quaternion', 'Left_wrist', true, false, true), + new AnimationMapping('mixamorigLeftHandMiddle1.quaternion', 'Left_middleFinger1', true, false, true), + new AnimationMapping('mixamorigLeftHandMiddle2.quaternion', 'Left_middleFinger2', true, false, true), + new AnimationMapping('mixamorigLeftHandMiddle3.quaternion', 'Left_middleFinger3', true, false, true), + new AnimationMapping('mixamorigLeftHandThumb1.quaternion', 'Left_thumb0', true, false, true), + new AnimationMapping('mixamorigLeftHandThumb2.quaternion', 'Left_thumb1', true, false, true), + new AnimationMapping('mixamorigLeftHandThumb3.quaternion', 'Left_thumb2', true, false, true), + new AnimationMapping('mixamorigLeftHandIndex1.quaternion', 'Left_indexFinger1', true, false, true), + new AnimationMapping('mixamorigLeftHandIndex2.quaternion', 'Left_indexFinger2', true, false, true), + new AnimationMapping('mixamorigLeftHandIndex3.quaternion', 'Left_indexFinger3', true, false, true), + new AnimationMapping('mixamorigLeftHandRing1.quaternion', 'Left_ringFinger1', true, false, true), + new AnimationMapping('mixamorigLeftHandRing2.quaternion', 'Left_ringFinger2', true, false, true), + new AnimationMapping('mixamorigLeftHandRing3.quaternion', 'Left_ringFinger3', true, false, true), + new AnimationMapping('mixamorigLeftHandPinky1.quaternion', 'Left_littleFinger1', true, false, true), + new AnimationMapping('mixamorigLeftHandPinky2.quaternion', 'Left_littleFinger2', true, false, true), + new AnimationMapping('mixamorigLeftHandPinky3.quaternion', 'Left_littleFinger3', true, false, true), - new AnimationMapping('mixamorigRightShoulder.quaternion', 'Right_shoulder', true, false), - new AnimationMapping('mixamorigRightArm.quaternion', 'Right_arm', true, false), - new AnimationMapping('mixamorigRightForeArm.quaternion', 'Right_elbow', true, false), - new AnimationMapping('mixamorigRightHand.quaternion', 'Right_wrist', true, false), - new AnimationMapping('mixamorigRightHandMiddle1.quaternion', 'Right_middleFinger1', true, false), - new AnimationMapping('mixamorigRightHandMiddle2.quaternion', 'Right_middleFinger2', true, false), - new AnimationMapping('mixamorigRightHandMiddle3.quaternion', 'Right_middleFinger3', true, false), - new AnimationMapping('mixamorigRightHandThumb1.quaternion', 'Right_thumb0', true, false), - new AnimationMapping('mixamorigRightHandThumb2.quaternion', 'Right_thumb1', true, false), - new AnimationMapping('mixamorigRightHandThumb3.quaternion', 'Right_thumb2', true, false), - new AnimationMapping('mixamorigRightHandIndex1.quaternion', 'Right_indexFinger1', true, false), - new AnimationMapping('mixamorigRightHandIndex2.quaternion', 'Right_indexFinger2', true, false), - new AnimationMapping('mixamorigRightHandIndex3.quaternion', 'Right_indexFinger3', true, false), - new AnimationMapping('mixamorigRightHandRing1.quaternion', 'Right_ringFinger1', true, false), - new AnimationMapping('mixamorigRightHandRing2.quaternion', 'Right_ringFinger2', true, false), - new AnimationMapping('mixamorigRightHandRing3.quaternion', 'Right_ringFinger3', true, false), - new AnimationMapping('mixamorigRightHandPinky1.quaternion', 'Right_littleFinger1', true, false), - new AnimationMapping('mixamorigRightHandPinky2.quaternion', 'Right_littleFinger2', true, false), - new AnimationMapping('mixamorigRightHandPinky3.quaternion', 'Right_littleFinger3', true, false), + new AnimationMapping('mixamorigRightShoulder.quaternion', 'Right_shoulder', true, false, true), + new AnimationMapping('mixamorigRightArm.quaternion', 'Right_arm', true, false, true), + new AnimationMapping('mixamorigRightForeArm.quaternion', 'Right_elbow', true, false, true), + new AnimationMapping('mixamorigRightHand.quaternion', 'Right_wrist', true, false, true), + new AnimationMapping('mixamorigRightHandMiddle1.quaternion', 'Right_middleFinger1', true, false, true), + new AnimationMapping('mixamorigRightHandMiddle2.quaternion', 'Right_middleFinger2', true, false, true), + new AnimationMapping('mixamorigRightHandMiddle3.quaternion', 'Right_middleFinger3', true, false, true), + new AnimationMapping('mixamorigRightHandThumb1.quaternion', 'Right_thumb0', true, false, true), + new AnimationMapping('mixamorigRightHandThumb2.quaternion', 'Right_thumb1', true, false, true), + new AnimationMapping('mixamorigRightHandThumb3.quaternion', 'Right_thumb2', true, false, true), + new AnimationMapping('mixamorigRightHandIndex1.quaternion', 'Right_indexFinger1', true, false, true), + new AnimationMapping('mixamorigRightHandIndex2.quaternion', 'Right_indexFinger2', true, false, true), + new AnimationMapping('mixamorigRightHandIndex3.quaternion', 'Right_indexFinger3', true, false, true), + new AnimationMapping('mixamorigRightHandRing1.quaternion', 'Right_ringFinger1', true, false, true), + new AnimationMapping('mixamorigRightHandRing2.quaternion', 'Right_ringFinger2', true, false, true), + new AnimationMapping('mixamorigRightHandRing3.quaternion', 'Right_ringFinger3', true, false, true), + new AnimationMapping('mixamorigRightHandPinky1.quaternion', 'Right_littleFinger1', true, false, true), + new AnimationMapping('mixamorigRightHandPinky2.quaternion', 'Right_littleFinger2', true, false, true), + new AnimationMapping('mixamorigRightHandPinky3.quaternion', 'Right_littleFinger3', true, false, true), - new AnimationMapping('mixamorigRightUpLeg.quaternion', 'Right_leg', false, false), - new AnimationMapping('mixamorigRightLeg.quaternion', 'Right_knee', false, false), - new AnimationMapping('mixamorigRightFoot.quaternion', 'Right_ankle', false, false), - new AnimationMapping('mixamorigRightToeBase.quaternion', 'Right_toe', false, false), + new AnimationMapping('mixamorigRightUpLeg.quaternion', 'Right_leg', false, false, false), + new AnimationMapping('mixamorigRightLeg.quaternion', 'Right_knee', false, false, false), + new AnimationMapping('mixamorigRightFoot.quaternion', 'Right_ankle', false, false, false), + new AnimationMapping('mixamorigRightToeBase.quaternion', 'Right_toe', false, false, false), - new AnimationMapping('mixamorigLeftUpLeg.quaternion', 'Left_leg', false, false), - new AnimationMapping('mixamorigLeftLeg.quaternion', 'Left_knee', false, false), - new AnimationMapping('mixamorigLeftFoot.quaternion', 'Left_ankle', false, false), - new AnimationMapping('mixamorigLeftToeBase.quaternion', 'Left_toe', false, false), + new AnimationMapping('mixamorigLeftUpLeg.quaternion', 'Left_leg', false, false, false), + new AnimationMapping('mixamorigLeftLeg.quaternion', 'Left_knee', false, false, false), + new AnimationMapping('mixamorigLeftFoot.quaternion', 'Left_ankle', false, false, false), + new AnimationMapping('mixamorigLeftToeBase.quaternion', 'Left_toe', false, false, false), ]; diff --git a/avatars/animationHelpers.js b/avatars/animationHelpers.js index 3a1aa5195e..85cf1a55d8 100644 --- a/avatars/animationHelpers.js +++ b/avatars/animationHelpers.js @@ -53,6 +53,8 @@ const localQuaternion4 = new Quaternion(); const localQuaternion5 = new Quaternion(); const localQuaternion6 = new Quaternion(); +const identityQuaternion = new Quaternion(); + let animations; let animationStepIndices; // let animationsBaseModel; @@ -63,6 +65,7 @@ let aimAnimations; let sitAnimations; let danceAnimations; let emoteAnimations; +let pickUpAnimations; // let throwAnimations; // let crouchAnimations; let activateAnimations; @@ -74,6 +77,7 @@ let narutoRunAnimations; // let swordSideSlash; // let swordTopDownSlash; let hurtAnimations; +let holdAnimations; const defaultSitAnimation = 'chair'; // const defaultUseAnimation = 'combo'; @@ -322,6 +326,7 @@ export const loadPromise = (async () => { eat: animations.find(a => a.isEating), drink: animations.find(a => a.isDrinking), throw: animations.find(a => a.isThrow), + pickUpThrow: animations.find(a => a.isPickUpThrow), bowDraw: animations.find(a => a.isBowDraw), bowIdle: animations.find(a => a.isBowIdle), bowLoose: animations.find(a => a.isBowLoose), @@ -353,9 +358,19 @@ export const loadPromise = (async () => { victory: animations.find(a => a.isVictory), victorySoft: animations.find(a => a.isVictorySoft), }; - // throwAnimations = { - // throw: animations.find(a => a.isThrow), - // }; + pickUpAnimations = { + pickUp: animations.find(a => a.isPickUp), + pickUpIdle: animations.find(a => a.isPickUpIdle), + pickUpThrow: animations.find(a => a.isPickUpThrow), + putDown: animations.find(a => a.isPutDown), + pickUpZelda: animations.find(a => a.isPickUpZelda), + pickUpIdleZelda: animations.find(a => a.isPickUpIdleZelda), + putDownZelda: animations.find(a => a.isPutDownZelda), + }; + /* throwAnimations = { + throw: animations.find(a => a.isThrow), + pickUpThrow: animations.find(a => a.isPickUpThrow), + }; */ /* crouchAnimations = { crouch: animations.find(a => a.isCrouch), }; */ @@ -365,6 +380,7 @@ export const loadPromise = (async () => { grab_up: {animation: animations.index['grab_up.fbx'], speedFactor: 1.2}, grab_left: {animation: animations.index['grab_left.fbx'], speedFactor: 1.2}, grab_right: {animation: animations.index['grab_right.fbx'], speedFactor: 1.2}, + pick_up: {animation: animations.index['pick_up.fbx'], speedFactor: 1}, }; narutoRunAnimations = { narutoRun: animations.find(a => a.isNarutoRun), @@ -373,6 +389,9 @@ export const loadPromise = (async () => { pain_back: animations.index['pain_back.fbx'], pain_arch: animations.index['pain_arch.fbx'], }; + holdAnimations = { + pick_up_idle: animations.index['pick_up_idle.fbx'], + }; { const down10QuaternionArray = new Quaternion() .setFromAxisAngle(new Vector3(1, 0, 0), Math.PI * 0.1) @@ -743,6 +762,7 @@ export const _applyAnimation = (avatar, now, moveFactors) => { animationTrackName: k, dst, // isTop, + isArm, } = spec; const t2 = avatar.jumpTime / 1000 * 0.6 + 0.7; @@ -750,6 +770,14 @@ export const _applyAnimation = (avatar, now, moveFactors) => { const v2 = src2.evaluate(t2); dst.fromArray(v2); + + if (avatar.holdState && isArm) { + const holdAnimation = holdAnimations['pick_up_idle']; + const src2 = holdAnimation.interpolants[k]; + const t2 = (now / 1000) % holdAnimation.duration; + const v2 = src2.evaluate(t2); + dst.fromArray(v2); + } }; } if (avatar.sitState) { @@ -1094,6 +1122,67 @@ export const _applyAnimation = (avatar, now, moveFactors) => { avatar.useAnimation = ''; } }; + } else if (avatar.holdState) { + return spec => { + const { + animationTrackName: k, + dst, + lerpFn, + boneName, + isTop, + isPosition, + isArm, + } = spec; + + _handleDefault(spec); + + const holdAnimation = holdAnimations['pick_up_idle']; + const src2 = holdAnimation.interpolants[k]; + const t2 = (now / 1000) % holdAnimation.duration; + const v2 = src2.evaluate(t2); + + if (isTop) { + if (boneName === 'Left_arm' || boneName === 'Right_arm') { + dst.fromArray(v2); + } else { + if (isArm) { + dst + .slerp(identityQuaternion, walkRunFactor * 0.7 + crouchFactor * (1 - idleWalkFactor) * 0.5) + .premultiply(localQuaternion2.fromArray(v2)); + } else { + dst + .premultiply(localQuaternion2.fromArray(v2)); + } + } + } + }; + } else if (avatar.pickUpState) { + return spec => { + const { + animationTrackName: k, + dst, + /* lerpFn, + isTop, + isPosition, */ + } = spec; + + const pickUpAnimation = pickUpAnimations['pickUpZelda']; + const pickUpIdleAnimation = pickUpAnimations['pickUpIdleZelda']; + + const t2 = avatar.pickUpTime / 1000; + if (t2 < pickUpAnimation.duration) { + const src2 = pickUpAnimation.interpolants[k]; + const v2 = src2.evaluate(t2); + + dst.fromArray(v2); + } else { + const t3 = (t2 - pickUpAnimation.duration) % pickUpIdleAnimation.duration; + const src2 = pickUpIdleAnimation.interpolants[k]; + const v2 = src2.evaluate(t3); + + dst.fromArray(v2); + } + }; } return _handleDefault; }; @@ -1103,6 +1192,7 @@ export const _applyAnimation = (avatar, now, moveFactors) => { animationTrackName: k, dst, // isTop, + isArm, lerpFn, } = spec; @@ -1118,6 +1208,14 @@ export const _applyAnimation = (avatar, now, moveFactors) => { localQuaternion.fromArray(v2), f, ); + + if (avatar.holdState && isArm) { + const holdAnimation = holdAnimations['pick_up_idle']; + const src2 = holdAnimation.interpolants[k]; + const t2 = (now / 1000) % holdAnimation.duration; + const v2 = src2.evaluate(t2); + dst.fromArray(v2); + } } }; @@ -1134,8 +1232,9 @@ export const _applyAnimation = (avatar, now, moveFactors) => { let defaultAnimation = 'grab_forward'; - if (localPlayer.getAction('activate').animationName) { - defaultAnimation = localPlayer.getAction('activate').animationName; + const activateAction = localPlayer.getAction('activate'); + if (activateAction.animationName) { + defaultAnimation = activateAction.animationName; } const activateAnimation = activateAnimations[defaultAnimation].animation; diff --git a/avatars/avatars.js b/avatars/avatars.js index 21e9926653..2f0198ad38 100644 --- a/avatars/avatars.js +++ b/avatars/avatars.js @@ -913,6 +913,9 @@ class Avatar { this.sitAnimation = null; // this.activateState = false; this.activateTime = 0; + this.holdState = false; + this.pickUpState = false; + this.pickUpTime = 0; // this.danceState = false; this.danceFactor = 0; this.danceAnimation = null; diff --git a/avatars/microphone-worker.js b/avatars/microphone-worker.js index 70c0075e2d..78bf7a9612 100644 --- a/avatars/microphone-worker.js +++ b/avatars/microphone-worker.js @@ -2,7 +2,8 @@ class MicrophoneWorker extends EventTarget { constructor(options = {}) { super(); - this.audioWorkletNode = null; + const gainNode = new GainNode(options.audioContext); + this.gainNode = gainNode; const audioWorkletNode = new AudioWorkletNode(options.audioContext, 'volume-processor'); audioWorkletNode.port.postMessage(JSON.stringify({ @@ -30,13 +31,14 @@ class MicrophoneWorker extends EventTarget { }; this.audioWorkletNode = audioWorkletNode; - this.audioWorkletNode.connect(options.audioContext.gain); + + gainNode.connect(audioWorkletNode); + audioWorkletNode.connect(options.audioContext.gain); } getInput() { - return this.audioWorkletNode; + return this.gainNode; } close() { - // this.mediaStreamSource && this.mediaStreamSource.disconnect(); if (this.audioWorkletNode) { this.audioWorkletNode.disconnect(); this.audioWorkletNode.port.onmessage = null; diff --git a/avatars/util.mjs b/avatars/util.mjs index a3bffd3904..2ef2439db4 100644 --- a/avatars/util.mjs +++ b/avatars/util.mjs @@ -551,6 +551,13 @@ export const decorateAnimation = animation => { animation.isRunning = /fast run|running|left strafe(?: reverse)?\.|right strafe(?: reverse)?\./i.test(animation.name); animation.isActivate = /object/i.test(animation.name); animation.isNarutoRun = /naruto run/i.test(animation.name); + animation.isPickUp = /pick_up/i.test(animation.name); + animation.isPickUpIdle = /pick_up_idle/i.test(animation.name); + animation.isPickUpThrow = /pick_up_throw/i.test(animation.name); + animation.isPutDown = /put_down/i.test(animation.name); + animation.isPickUpZelda = /pick_up_zelda/i.test(animation.name); + animation.isPickUpIdleZelda = /pick_up_idle_zelda/i.test(animation.name); + animation.isPutDownZelda = /put_down_zelda/i.test(animation.name); animation.isReverse = /reverse/i.test(animation.name); // animation.isLanding = /landing/i.test(animation.name); // animation.isChargeJumpFall = /charge_jump_fall/i.test(animation.name); diff --git a/bin/basisu b/bin/basisu new file mode 100644 index 0000000000..c1aabb96f1 Binary files /dev/null and b/bin/basisu differ diff --git a/bin/basisu_opencl b/bin/basisu_opencl new file mode 100644 index 0000000000..50490a08d2 Binary files /dev/null and b/bin/basisu_opencl differ diff --git a/camera-manager.js b/camera-manager.js index 644cee373b..19de6f2373 100644 --- a/camera-manager.js +++ b/camera-manager.js @@ -1,33 +1,104 @@ import * as THREE from 'three'; -import {getRenderer, camera} from './renderer.js'; +import {getRenderer, camera, scene} from './renderer.js'; // import * as notifications from './notifications.js'; -import metaversefile from 'metaversefile'; import physicsManager from './physics-manager.js'; import {shakeAnimationSpeed} from './constants.js'; import Simplex from './simplex-noise.js'; +import {getLocalPlayer} from './players.js'; // import alea from './alea.js'; -import * as sounds from './sounds.js'; +// import * as sounds from './sounds.js'; import {minFov, maxFov, midFov} from './constants.js'; +// import { updateRaycasterFromMouseEvent } from './util.js'; +import easing from './easing.js'; + +const cubicBezier = easing(0, 1, 0, 1); +const cubicBezier2 = easing(0.5, 0, 0.5, 1); const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); const localVector3 = new THREE.Vector3(); +const localVector4 = new THREE.Vector3(); +const localVector5 = new THREE.Vector3(); +const localVector6 = new THREE.Vector3(); +const localVector7 = new THREE.Vector3(); +const localVector8 = new THREE.Vector3(); +const localVector9 = new THREE.Vector3(); +const localVector10 = new THREE.Vector3(); const localQuaternion = new THREE.Quaternion(); +const localQuaternion2 = new THREE.Quaternion(); +const localQuaternion3 = new THREE.Quaternion(); +const localQuaternion4 = new THREE.Quaternion(); const localEuler = new THREE.Euler(); +const localMatrix = new THREE.Matrix4(); + +/* +Anon: "Hey man, can I get your autograph?" +Drake: "Depends. What's it worth to you?" +Anon: "Your first born child" +Drake: "No thanks. I don't think your child would be worth very much." +*/ + +const zeroVector = new THREE.Vector3(0, 0, 0); +const upVector = new THREE.Vector3(0, 1, 0); +const cameraOffsetDefault = 0.65; +const maxFocusTime = 300; const cameraOffset = new THREE.Vector3(); let cameraOffsetTargetZ = cameraOffset.z; +let cameraOffsetLimitZ = Infinity; + +const physicsScene = physicsManager.getScene(); -let cameraOffsetZ = cameraOffset.z; +// let cameraOffsetZ = cameraOffset.z; const rayVectorZero = new THREE.Vector3(0,0,0); -const rayVectorUp = new THREE.Vector3(0,1,0); -const rayStartPos = new THREE.Vector3(0,0,0); -const rayDirection = new THREE.Vector3(0,0,0); -const rayOffsetPoint = new THREE.Vector3(0,0,0); -const rayMatrix = new THREE.Matrix4(); -const rayQuaternion = new THREE.Quaternion(); -const rayOriginArray = [new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)]; // 6 elements -const rayDirectionArray = [new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion()]; // 6 elements +// const rayVectorUp = new THREE.Vector3(0,1,0); +// const rayStartPos = new THREE.Vector3(0,0,0); +// const rayDirection = new THREE.Vector3(0,0,0); +// const rayOffsetPoint = new THREE.Vector3(0,0,0); +// const rayMatrix = new THREE.Matrix4(); +// const rayQuaternion = new THREE.Quaternion(); +// const rayOriginArray = [new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)]; // 6 elements +// const rayDirectionArray = [new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion(),new THREE.Quaternion()]; // 6 elements + +/* function getNormal(u, v) { + return localPlane.setFromCoplanarPoints(zeroVector, u, v).normal; +} */ +/* function signedAngleTo(u, v) { + // Get the signed angle between u and v, in the range [-pi, pi] + const angle = u.angleTo(v); + console.log('signed angle to', angle, u.dot(v)); + return (u.dot(v) >= 0 ? 1 : -1) * angle; +} */ +/* function signedAngleTo(a, b, v) { + const s = v.crossVectors(a, b).length(); + // s = length(cross_product(a, b)) + const c = a.dot(b); + const angle = Math.atan2(s, c); + console.log('get signed angle', s, c, angle); + return angle; +} */ + +const getSideOfY = (() => { + const localVector = new THREE.Vector3(); + const localVector2 = new THREE.Vector3(); + const localQuaternion = new THREE.Quaternion(); + const localPlane = new THREE.Plane(); + + function getSideOfY(a, b) { + localQuaternion.setFromRotationMatrix( + localMatrix.lookAt( + zeroVector, + a, + upVector + ) + ); + const rightVector = localVector.set(1, 0, 0).applyQuaternion(localQuaternion); + localPlane.setFromNormalAndCoplanarPoint(rightVector, a); + const distance = localPlane.distanceToPoint(b, localVector2); + return distance >= 0 ? 1 : -1; + } + return getSideOfY; +})(); // const lastCameraQuaternion = new THREE.Quaternion(); // let lastCameraZ = 0; @@ -47,15 +118,13 @@ class Shake extends THREE.Object3D { } } -function lerpNum(value1, value2, amount) { +/* function lerpNum(value1, value2, amount) { amount = amount < 0 ? 0 : amount; amount = amount > 1 ? 1 : amount; return value1 + (value2 - value1) * amount; } // Raycast from player to camera corner function initCameraRayParams(arrayIndex,originPoint) { - const localPlayer = metaversefile.useLocalPlayer(); - rayDirection.subVectors(localPlayer.position, originPoint).normalize(); rayMatrix.lookAt(rayDirection,rayVectorZero,rayVectorUp); @@ -71,8 +140,6 @@ function initCameraRayParams(arrayIndex,originPoint) { } // Raycast from player postition with small offset function initOffsetRayParams(arrayIndex,originPoint) { - const localPlayer = metaversefile.useLocalPlayer(); - rayDirection.subVectors(localPlayer.position, camera.position).normalize(); rayMatrix.lookAt(rayDirection,rayVectorZero,rayVectorUp); @@ -80,7 +147,25 @@ function initOffsetRayParams(arrayIndex,originPoint) { rayOriginArray[arrayIndex].copy(originPoint); rayDirectionArray[arrayIndex].copy(rayQuaternion); -} +} */ + +/* const redMesh = (() => { + const geometry = new THREE.BoxGeometry(0.1, 0.1, 0.1); + const material = new THREE.MeshBasicMaterial({color: 0xff0000}); + const mesh = new THREE.Mesh(geometry, material); + // mesh.visible = false; + return mesh; +})(); +scene.add(redMesh); + +const blueMesh = (() => { + const geometry = new THREE.BoxGeometry(0.1, 0.1, 0.1); + const material = new THREE.MeshBasicMaterial({color: 0x0000ff}); + const mesh = new THREE.Mesh(geometry, material); + // mesh.visible = false; + return mesh; +})(); +scene.add(blueMesh); */ class CameraManager extends EventTarget { constructor() { @@ -90,12 +175,24 @@ class CameraManager extends EventTarget { // this.pointerLockEpoch = 0; this.shakes = []; this.focus = false; - this.lastFocusChangeTime = 0; + this.lastFocusChangeTime = 0; // XXX this needs to be removed this.fovFactor = 0; this.lastNonzeroDirectionVector = new THREE.Vector3(0, 0, -1); - this.lastNonzeroDirectionVector = new THREE.Vector3(0, 0, -1); - this.fovFactor = 0; + this.targetType = 'dynamic'; + this.target = null; + this.target2 = null; + this.lastTarget = null; + this.targetPosition = new THREE.Vector3(0, 0, 0); + this.targetQuaternion = new THREE.Quaternion(); + this.targetFov = camera.fov; + this.sourcePosition = new THREE.Vector3(); + this.sourceQuaternion = new THREE.Quaternion(); + this.sourceFov = camera.fov; + this.lerpStartTime = 0; + this.lastTimestamp = 0; + this.cinematicScript = null; + this.cinematicScriptStartTime = -1; document.addEventListener('pointerlockchange', e => { let pointerLockElement = document.pointerLockElement; @@ -174,20 +271,37 @@ class CameraManager extends EventTarget { document.exitPointerLock(); } getMode() { - const f = -cameraOffset.z; - if (f < 0.5) { - return 'firstperson'; - } else { + if (this.target || this.cinematicScript) { return 'isometric'; + } else { + return cameraOffset.z > -0.5 ? 'firstperson' : 'isometric'; } } getCameraOffset() { return cameraOffset; } - handleWheelEvent(e) { - // e.preventDefault(); + handleMouseMove(e) { + const {movementX, movementY} = e; - cameraOffsetTargetZ = Math.min(cameraOffsetTargetZ - e.deltaY * 0.01, 0); + camera.position.add(localVector.copy(this.getCameraOffset()).applyQuaternion(camera.quaternion)); + + camera.rotation.y -= movementX * Math.PI * 2 * 0.0005; + camera.rotation.x -= movementY * Math.PI * 2 * 0.0005; + camera.rotation.x = Math.min(Math.max(camera.rotation.x, -Math.PI * 0.35), Math.PI / 2); + camera.quaternion.setFromEuler(camera.rotation); + + camera.position.sub(localVector.copy(this.getCameraOffset()).applyQuaternion(camera.quaternion)); + + camera.updateMatrixWorld(); + + if (!this.target) { + this.targetQuaternion.copy(camera.quaternion); + } + } + handleWheelEvent(e) { + if (!this.target) { + cameraOffsetTargetZ = Math.min(cameraOffset.z - e.deltaY * 0.01, 0); + } } addShake(position, intensity, radius, decay) { const startTime = performance.now(); @@ -218,11 +332,7 @@ class CameraManager extends EventTarget { setFocus(focus) { if (focus !== this.focus) { this.focus = focus; - this.lastFocusChangeTime = performance.now(); - - if (this.focus) { - sounds.playSoundName('zTargetCenter'); - } + // this.lastFocusChangeTime = performance.now(); this.dispatchEvent(new MessageEvent('focuschange', { data: { @@ -231,122 +341,277 @@ class CameraManager extends EventTarget { })); } } - updatePost(timestamp, timeDiff) { - // console.log('camera manager update post'); + setDynamicTarget(target = null, target2 = null) { + this.targetType = 'dynamic'; + this.target = target; + this.target2 = target2; - const localPlayer = metaversefile.useLocalPlayer(); - const renderer = getRenderer(); - const session = renderer.xr.getSession(); - const startMode = this.getMode(); + // console.log('set dynamic target', this.target, this.target2, new Error().stack); + + if (this.target) { + const _setCameraToDynamicTarget = () => { + this.target.matrixWorld.decompose(localVector, localQuaternion, localVector2); + + if (this.target2) { + this.target2.matrixWorld.decompose(localVector3, localQuaternion2, localVector4); + + const faceDirection = localVector5.set(0, 0, 1).applyQuaternion(localQuaternion); + const lookQuaternion = localQuaternion3.setFromRotationMatrix( + localMatrix.lookAt( + localVector, + localVector3, + upVector, + ) + ); + const lookDirection = localVector6.set(0, 0, -1).applyQuaternion(lookQuaternion); + + const sideOfY = getSideOfY(faceDirection, lookDirection); + const face = faceDirection.dot(lookDirection) >= 0 ? 1 : -1; + + const dollyPosition = localVector7.copy(localVector) + .add(localVector3) + .multiplyScalar(0.5); + + dollyPosition.add( + localVector8.set(sideOfY * -0.3, 0, 0).applyQuaternion(lookQuaternion) + ); + + const lookToDollyVector = localVector9.copy(dollyPosition).sub(localVector).normalize(); + + this.targetPosition.copy(localVector) + .add(lookToDollyVector); + this.targetQuaternion.setFromRotationMatrix( + localMatrix.lookAt( + lookToDollyVector, + zeroVector, + upVector + ) + ); + + if (face < 0) { + this.targetPosition.add(localVector10.set(0, 0, -0.8).applyQuaternion(this.targetQuaternion)); + this.targetQuaternion.multiply(localQuaternion4.setFromAxisAngle(upVector, Math.PI)); + this.targetPosition.add(localVector10.set(0, 0, 0.8).applyQuaternion(this.targetQuaternion)); + } else if (!this.lastTarget) { + this.targetPosition.add(localVector10.set(0, 0, -cameraOffsetDefault).applyQuaternion(this.targetQuaternion)); + this.targetQuaternion.multiply(localQuaternion4.setFromAxisAngle(upVector, sideOfY * -Math.PI * 0.87)); + this.targetPosition.add(localVector10.set(0, 0, cameraOffsetDefault).applyQuaternion(this.targetQuaternion)); + } + } else { + this.targetPosition.copy(localVector) + .add(localVector2.set(0, 0, 1).applyQuaternion(localQuaternion)); + this.targetQuaternion.copy(localQuaternion); + } - const _setCameraOffset = () => { - let newVal = cameraOffsetTargetZ; - let hasIntersection = false; + this.sourceFov = camera.fov; + this.targetFov = minFov; - // Camera - Top left - initCameraRayParams(0,rayStartPos.set(-1, 1, ( camera.near + camera.far ) / ( camera.near - camera.far )).unproject( camera )); + this.sourcePosition.copy(camera.position); + this.sourceQuaternion.copy(camera.quaternion); + const timestamp = performance.now(); + this.lerpStartTime = timestamp; + this.lastTimestamp = timestamp; - // Camera - Bottom left - initCameraRayParams(1,rayStartPos.set(-1, -1, ( camera.near + camera.far ) / ( camera.near - camera.far )).unproject( camera )); + // cameraOffsetZ = -cameraOffsetDefault; + cameraOffset.z = -cameraOffsetDefault; + }; + _setCameraToDynamicTarget(); + } else { + this.setCameraToNullTarget(); + } + } + setStaticTarget(target = null, target2 = null) { + this.targetType = 'static'; + this.target = target; + this.target2 = target2; - // Camera - Top right - initCameraRayParams(2,rayStartPos.set(1, 1, ( camera.near + camera.far ) / ( camera.near - camera.far )).unproject( camera )); + // console.log('set static target', this.target, this.target2, new Error().stack); - // Camera - Bottom right - initCameraRayParams(3,rayStartPos.set(1, -1, ( camera.near + camera.far ) / ( camera.near - camera.far )).unproject( camera )); + if (this.target) { + const _setCameraToStaticTarget = () => { + // this.target.matrixWorld.decompose(localVector, localQuaternion, localVector2); - // Player postition - offset to left - rayStartPos.copy(localPlayer.position); - rayOffsetPoint.set(-1, 0, 0); - rayOffsetPoint.applyQuaternion(camera.quaternion); - rayOffsetPoint.normalize(); - rayStartPos.add(rayOffsetPoint); - initOffsetRayParams(4,rayStartPos); - - // Player postition - offset to right - rayStartPos.copy(localPlayer.position); - rayOffsetPoint.set(1, 0, 0); - rayOffsetPoint.applyQuaternion(camera.quaternion); - rayOffsetPoint.normalize(); - rayStartPos.add(rayOffsetPoint); - initOffsetRayParams(5,rayStartPos); - - let collisionArray = physicsManager.raycastArray(rayOriginArray, rayDirectionArray, 6); - - // Check collision from player to camera corners - for(let i=0;i<4;i++) { - if ((collisionArray.hit[i] === 1) && (collisionArray.distance[i] <= -1 * newVal)) { - if (newVal < (-1 * (collisionArray.distance[i]-0.15))) { - newVal = (-1 * (collisionArray.distance[i]-0.15)); - hasIntersection = true; - //console.log(i + " " + collisionArray.distance[i]+ " " + collisionArray.hit[i]); + cameraOffsetTargetZ = -1; + cameraOffset.z = cameraOffsetTargetZ; + + const localPlayer = getLocalPlayer(); + const targetPosition = localVector.copy(localPlayer.position) + .add(localVector2.set(0, 0, -cameraOffsetTargetZ).applyQuaternion(localPlayer.quaternion)); + const targetQuaternion = localPlayer.quaternion; + // camera.position.lerp(targetPosition, 0.2); + // camera.quaternion.slerp(targetQuaternion, 0.2); + + this.sourcePosition.copy(camera.position); + this.sourceQuaternion.copy(camera.quaternion); + this.sourceFov = camera.fov; + this.targetPosition.copy(targetPosition); + this.targetQuaternion.copy(targetQuaternion); + this.targetFov = midFov; + const timestamp = performance.now(); + this.lerpStartTime = timestamp; + this.lastTimestamp = timestamp; + + // cameraOffsetZ = -cameraOffsetDefault; + // cameraOffset.z = -cameraOffsetDefault; + }; + _setCameraToStaticTarget(); + } else { + this.setCameraToNullTarget(); + } + } + setCameraToNullTarget() { + this.sourcePosition.copy(camera.position); + this.sourceQuaternion.copy(camera.quaternion); + this.sourceFov = camera.fov; + // this.targetPosition.copy(camera.position); + // this.targetQuaternion.copy(camera.quaternion); + this.targetFov = minFov; + const timestamp = performance.now(); + this.lerpStartTime = timestamp; + this.lastTimestamp = timestamp; + } + startCinematicScript(cinematicScript) { + this.cinematicScript = cinematicScript; + this.cinematicScriptStartTime = performance.now(); + } + updatePost(timestamp, timeDiff) { + const renderer = getRenderer(); + const session = renderer.xr.getSession(); + const localPlayer = getLocalPlayer(); + + if (this.target) { + const _setLerpDelta = (position, quaternion) => { + const lerpTime = 2000; + const lastTimeFactor = Math.min(Math.max(cubicBezier((this.lastTimestamp - this.lerpStartTime) / lerpTime), 0), 1); + const currentTimeFactor = Math.min(Math.max(cubicBezier((timestamp - this.lerpStartTime) / lerpTime), 0), 1); + if (lastTimeFactor !== currentTimeFactor) { + { + const lastLerp = localVector.copy(this.sourcePosition).lerp(this.targetPosition, lastTimeFactor); + const currentLerp = localVector2.copy(this.sourcePosition).lerp(this.targetPosition, currentTimeFactor); + position.add(currentLerp).sub(lastLerp); + } + { + const lastLerp = localQuaternion.copy(this.sourceQuaternion).slerp(this.targetQuaternion, lastTimeFactor); + const currentLerp = localQuaternion2.copy(this.sourceQuaternion).slerp(this.targetQuaternion, currentTimeFactor); + quaternion.premultiply(lastLerp.invert()).premultiply(currentLerp); } } - } - // Check collision from player pos and small offset to left and right - to camera center - let offsetCollisionCount = 0; - for(let i=4;i<6;i++) { - if ((collisionArray.hit[i] === 1) && (collisionArray.distance[i] <= (-1 * cameraOffsetTargetZ))) { - offsetCollisionCount++; - } - } + this.lastTimestamp = timestamp; + }; + _setLerpDelta(camera.position, camera.quaternion); + camera.updateMatrixWorld(); + } else if (this.cinematicScript) { + const timeDiff = timestamp - this.cinematicScriptStartTime; + // find the line in the script that we are currently on + let currentDuration = 0; + const currentLineIndex = (() => { + let i; + for (i = 0; i < this.cinematicScript.length; i++) { + const currentLine = this.cinematicScript[i]; + // const nextLine = this.cinematicScript[i + 1]; + + if (currentDuration + currentLine.duration > timeDiff) { + // return currentLine; + break; + } else { + currentDuration += currentLine.duration; + } - // Discard collision with small objects - if (hasIntersection && (offsetCollisionCount === 0)) { - hasIntersection = false; - newVal = cameraOffsetTargetZ; - } - - /* // Remove jitter when there is no movement - if (lastCameraQuaternion.equals(camera.quaternion) && lastCameraZ === cameraOffsetTargetZ) { - if (lastCameraValidZ < newVal) { - lastCameraValidZ = newVal; + // const lineDuration = this.cinematicScript[i].duration; + // currentDuration += lineDuration; + } + return i < this.cinematicScript.length ? i : -1; + })(); + + if (currentLineIndex !== -1) { + // calculate how far into the line we are, in 0..1 + const currentLine = this.cinematicScript[currentLineIndex]; + const {type} = currentLine; + switch (type) { + case 'set': { + camera.position.copy(currentLine.position); + camera.quaternion.copy(currentLine.quaternion); + camera.updateMatrixWorld(); + break; + } + case 'move': { + let factor = Math.min(Math.max((timeDiff - currentDuration) / currentLine.duration, 0), 1); + if (factor < 1) { + factor = cubicBezier2(factor); + const previousLine = this.cinematicScript[currentLineIndex - 1]; + + camera.position.copy(previousLine.position).lerp(currentLine.position, factor); + camera.quaternion.copy(previousLine.quaternion).slerp(currentLine.quaternion, factor); + camera.updateMatrixWorld(); + + // console.log('previous line', previousLine, camera.position.toArray().join(','), camera.quaternion.toArray().join(','), factor); + /* if (isNaN(camera.position.x)) { + debugger; + } */ + } else { + this.cinematicScript = null; + } + break; + } + default: { + throw new Error('unknown cinematic script line type: ' + type); + } } - if (newVal < lastCameraValidZ) - newVal = lastCameraValidZ; - } else { */ - // lastCameraQuaternion.copy(camera.quaternion); - // lastCameraZ = cameraOffsetTargetZ; - // lastCameraValidZ = cameraOffsetTargetZ; - // } - - // Slow zoom out if there is no intersection - cameraOffsetZ = lerpNum(cameraOffsetZ,newVal, 0.2); - - // Fast zoom in to the point of intersection - if (hasIntersection) { - cameraOffsetZ = newVal; - } - - const zDiff = Math.abs(cameraOffset.z - cameraOffsetZ); - if (zDiff === 0) { - // nothing } else { - // camera.position.add(localVector.copy(cameraOffset).applyQuaternion(camera.quaternion)); - cameraOffset.z = cameraOffsetZ; - // camera.position.sub(localVector.copy(cameraOffset).applyQuaternion(camera.quaternion)); - // camera.updateMatrixWorld(); + // console.log('no line', timeDiff, this.cinematicScript.slice()); + this.cinematicScript = null; } - }; - _setCameraOffset(); - - const endMode = this.getMode(); - if (endMode !== startMode) { - this.dispatchEvent(new MessageEvent('modechange', { - data: { - mode: endMode, - }, - })); - } + } else { + const _bumpCamera = () => { + const direction = localVector.set(0, 0, 1) + .applyQuaternion(camera.quaternion); + const backOffset = 1; + // const cameraBackThickness = 0.5; + + const sweepDistance = Math.max(-cameraOffsetTargetZ, 0); + + // console.log('offset', cameraOffsetTargetZ); + + cameraOffsetLimitZ = -Infinity; + + if (sweepDistance > 0) { + const halfExtents = localVector2.set(0.5, 0.5, 0.1); + const maxHits = 1; + + const result = physicsScene.sweepBox( + localVector3.copy(localPlayer.position) + .add(localVector4.copy(direction).multiplyScalar(backOffset)), + camera.quaternion, + halfExtents, + direction, + sweepDistance, + maxHits, + ); + if (result.length > 0) { + const distance = result[0].distance; + cameraOffsetLimitZ = distance < 0.5 ? 0 : -distance; + } + } + }; + _bumpCamera(); + + const _lerpCameraOffset = () => { + const lerpFactor = 0.15; + let cameraOffsetZ = Math.max(cameraOffsetTargetZ, cameraOffsetLimitZ); + if (cameraOffsetZ > -0.5) { + cameraOffsetZ = 0; + } + cameraOffset.z = cameraOffset.z * (1-lerpFactor) + cameraOffsetZ*lerpFactor; + }; + _lerpCameraOffset(); - const _setCameraToAvatar = () => { - if (!this.focus) { + const _setFreeCamera = () => { const avatarCameraOffset = session ? rayVectorZero : this.getCameraOffset(); const avatarHeight = localPlayer.avatar ? localPlayer.avatar.height : 0; const crouchOffset = avatarHeight * (1 - localPlayer.getCrouchFactor()) * 0.5; - - switch (endMode) { + + switch (this.getMode()) { case 'firstperson': { if (localPlayer.avatar) { const boneNeck = localPlayer.avatar.foundModelBones['Neck']; @@ -358,28 +623,28 @@ class CameraManager extends EventTarget { boneNeck.updateMatrixWorld(); if (boneEyeL && boneEyeR) { - boneEyeL.matrixWorld.decompose(localVector, localQuaternion, localVector3); - boneEyeR.matrixWorld.decompose(localVector2, localQuaternion, localVector3); - localVector3.copy(localVector.add(localVector2).multiplyScalar(0.5)); + boneEyeL.matrixWorld.decompose(localVector2, localQuaternion, localVector4); + boneEyeR.matrixWorld.decompose(localVector3, localQuaternion, localVector4); + localVector4.copy(localVector2.add(localVector3).multiplyScalar(0.5)); } else { - boneHead.matrixWorld.decompose(localVector, localQuaternion, localVector3); - localVector.add(localVector2.set(0, 0, 0.1).applyQuaternion(localQuaternion)); - localVector3.copy(localVector); + boneHead.matrixWorld.decompose(localVector2, localQuaternion, localVector4); + localVector2.add(localVector3.set(0, 0, 0.1).applyQuaternion(localQuaternion)); + localVector4.copy(localVector2); } } else { - localVector3.copy(localPlayer.position); + localVector4.copy(localPlayer.position); } - camera.position.copy(localVector3) - .sub(localVector.copy(avatarCameraOffset).applyQuaternion(camera.quaternion)); + this.targetPosition.copy(localVector4) + .sub(localVector2.copy(avatarCameraOffset).applyQuaternion(this.targetQuaternion)); break; } case 'isometric': { - camera.position.copy(localPlayer.position) + this.targetPosition.copy(localPlayer.position) .sub( - localVector.copy(avatarCameraOffset) - .applyQuaternion(camera.quaternion) + localVector2.copy(avatarCameraOffset) + .applyQuaternion(this.targetQuaternion) ); break; @@ -389,38 +654,35 @@ class CameraManager extends EventTarget { } } - camera.position.y -= crouchOffset; - } else { - cameraOffsetTargetZ = -1; + const factor = Math.min((timestamp - this.lerpStartTime) / maxFocusTime, 1); - const targetPosition = localVector.copy(localPlayer.position) - .add(localVector2.set(0, 0, -cameraOffsetTargetZ).applyQuaternion(localPlayer.quaternion)); - const targetQuaternion = localPlayer.quaternion; - camera.position.lerp(targetPosition, 0.2); - camera.quaternion.slerp(targetQuaternion, 0.2); - // camera.updateMatrixWorld(); - } + this.targetPosition.y -= crouchOffset; + camera.position.copy(this.sourcePosition) + .lerp(this.targetPosition, factor); + + localEuler.setFromQuaternion(this.targetQuaternion, 'YXZ'); + localEuler.z = 0; + camera.quaternion.copy(this.sourceQuaternion) + .slerp(localQuaternion.setFromEuler(localEuler), factor); + }; + _setFreeCamera(); }; - _setCameraToAvatar(); - + const _setCameraFov = () => { if (!renderer.xr.getSession()) { - const focusTime = (timestamp - this.lastFocusChangeTime) / 300; - if (focusTime < 1) { - // const fovInTime = 3; - // const fovOutTime = 0.3; + let newFov; + const focusTime = Math.min((timestamp - this.lerpStartTime) / maxFocusTime, 1); + if (focusTime < 1) { this.fovFactor = 0; - const a = this.focus ? minFov : midFov; - const b = this.focus ? midFov : minFov; - camera.fov = a * (1 - focusTime) + focusTime * b; - camera.updateProjectionMatrix(); + const a = this.sourceFov; + const b = this.targetFov; + newFov = a * (1 - focusTime) + focusTime * b; } else if (this.focus) { this.fovFactor = 0; - camera.fov = midFov; - camera.updateProjectionMatrix(); + newFov = midFov; } else { const fovInTime = 3; const fovOutTime = 0.3; @@ -437,8 +699,18 @@ class CameraManager extends EventTarget { } this.fovFactor = Math.min(Math.max(this.fovFactor, 0), 1); - camera.fov = minFov + Math.pow(this.fovFactor, 0.75) * (maxFov - minFov); + newFov = minFov + Math.pow(this.fovFactor, 0.75) * (maxFov - minFov); + } + + if (newFov !== camera.fov) { + camera.fov = newFov; camera.updateProjectionMatrix(); + + this.dispatchEvent(new MessageEvent('fovchange', { + data: { + fov: newFov, + }, + })); } } }; @@ -461,12 +733,13 @@ class CameraManager extends EventTarget { .normalize() .multiplyScalar(shakeFactor * randomValue()); camera.position.add(localVector); - // camera.updateMatrixWorld(); } }; _shakeCamera(); camera.updateMatrixWorld(); + + this.lastTarget = this.target; } }; const cameraManager = new CameraManager(); diff --git a/card-generator.js b/card-renderer.js similarity index 86% rename from card-generator.js rename to card-renderer.js index c0143c7a1e..48e9a6b55b 100644 --- a/card-generator.js +++ b/card-renderer.js @@ -61,7 +61,7 @@ const _getCanvasDataUrl = async canvas => { return url; }; -const _previewImage = (image, width, height) => { +/* const _previewImage = (image, width, height) => { image.style.cssText = `\ position: fixed; top: 0; @@ -71,26 +71,33 @@ const _previewImage = (image, width, height) => { `; // console.log('got image', image); document.body.appendChild(image); -}; +}; */ export const generateObjectUrlCard = async ({ start_url, width = 300, - height = 300, + // height = width, + flipY = false, + signal = null, }) => { const app = await metaversefile.createAppAsync({ start_url, }); - return await generateObjectCard({ + if (signal?.aborted) throw new Error(); + const result = await generateObjectCard({ app, width, - height, + // height, + flipY, }); + if (signal?.aborted) throw new Error(); + return result; }; export const generateObjectCard = async ({ app, width = 300, - height = 300, + // height = width, + flipY = false, }) => { const stats = generateStats(app.contentId); const { @@ -127,8 +134,9 @@ export const generateObjectCard = async ({ minterUsername, minterAvatarPreview, glyphImage, + flipY, }); - _previewImage(cardImg, width, height); + // _previewImage(cardImg, width, height); return cardImg; }; @@ -143,6 +151,7 @@ export const generateCard = async ({ minterUsername, minterAvatarPreview, glyphImage, + flipY, } = {}) => { description = description || 'A great mystery.'; @@ -254,6 +263,12 @@ export const generateCard = async ({ } } + /* const blob = new Blob([svg.outerHTML], { + type: 'image/svg+xml', + }); + const objectUrl = URL.createObjectURL(blob); + return objectUrl; */ + const image = await new Promise((accept, reject) => { const image = document.createElement('img'); image.onload = () => { @@ -266,8 +281,7 @@ export const generateCard = async ({ }; image.crossOrigin = 'Anonymous'; - const outerHTML = svg.outerHTML; - const blob = new Blob([outerHTML], { + const blob = new Blob([svg.outerHTML], { type: 'image/svg+xml', }); const url = URL.createObjectURL(blob); @@ -277,6 +291,8 @@ export const generateCard = async ({ URL.revokeObjectURL(url); } }); - - return image; + const imageBitmap = await createImageBitmap(image, { + imageOrientation: flipY ? 'flipY' : 'none', + }); + return imageBitmap; }; \ No newline at end of file diff --git a/cards-manager.js b/cards-manager.js new file mode 100644 index 0000000000..b6c44e4549 --- /dev/null +++ b/cards-manager.js @@ -0,0 +1,37 @@ +import offscreenEngineManager from './offscreen-engine-manager.js'; + +const _generateObjectUrlCardRemote = (() => { + let generateObjectUrlCardRemoteFn = null; + return async function() { + if (!generateObjectUrlCardRemoteFn) { + generateObjectUrlCardRemoteFn = offscreenEngineManager.createFunction([ + `\ + import {generateObjectUrlCard} from './card-renderer.js'; + `, + async function(o) { + const imageBitmap = await generateObjectUrlCard(o); + return imageBitmap; + } + ]); + } + const result = await generateObjectUrlCardRemoteFn.apply(this, arguments); + return result; + }; +})(); + +class CardsManager { + async getCardsImage(start_url, {width, flipY, signal} = {}) { + const imageBitmap = await _generateObjectUrlCardRemote([ + { + start_url, + width, + flipY, + } + ], { + signal, + }); + return imageBitmap; + } +} +const cardsManager = new CardsManager(); +export default cardsManager; \ No newline at end of file diff --git a/ceramic-admin.js b/ceramic-admin.js index 2abe059ebd..d3c63d1cbb 100644 --- a/ceramic-admin.js +++ b/ceramic-admin.js @@ -1,13 +1,13 @@ -import {DID} from 'dids'; -import CeramicClient from '@ceramicnetwork/http-client'; -import {IDX} from '@ceramicstudio/idx'; -import {ThreeIdConnect, EthereumAuthProvider} from '@3id/connect'; -import KeyDidResolver from 'key-did-resolver'; -import {Ed25519Provider} from 'key-did-provider-ed25519'; -import ThreeIdResolver from '@ceramicnetwork/3id-did-resolver'; -import {ModelManager} from '@glazed/devtools'; -import {getMainnetAddress} from './blockchain.js'; -import {ceramicNodeUrl} from './constants.js'; +// import {DID} from 'dids'; +// import CeramicClient from '@ceramicnetwork/http-client'; +// import {IDX} from '@ceramicstudio/idx'; +// import {ThreeIdConnect, EthereumAuthProvider} from '@3id/connect'; +// import KeyDidResolver from 'key-did-resolver'; +// import {Ed25519Provider} from 'key-did-provider-ed25519'; +// import ThreeIdResolver from '@ceramicnetwork/3id-did-resolver'; +// import {ModelManager} from '@glazed/devtools'; +// import {getMainnetAddress} from './blockchain.js'; +// import {ceramicNodeUrl} from './constants.js'; const keyString = ``; diff --git a/ceramic.js b/ceramic.js index c3ccf8a702..a865bf01e3 100644 --- a/ceramic.js +++ b/ceramic.js @@ -1,12 +1,12 @@ -import {DID} from 'dids'; -import CeramicClient from '@ceramicnetwork/http-client'; -import {IDX} from '@ceramicstudio/idx'; -import {ThreeIdConnect, EthereumAuthProvider} from '@3id/connect'; -import KeyDidResolver from 'key-did-resolver'; -import ThreeIdResolver from '@ceramicnetwork/3id-did-resolver'; -import {ModelManager} from '@glazed/devtools'; +// import {DID} from 'dids'; +// import CeramicClient from '@ceramicnetwork/http-client'; +// import {IDX} from '@ceramicstudio/idx'; +// import {ThreeIdConnect, EthereumAuthProvider} from '@3id/connect'; +// import KeyDidResolver from 'key-did-resolver'; +// import ThreeIdResolver from '@ceramicnetwork/3id-did-resolver'; +// import {ModelManager} from '@glazed/devtools'; import {getMainnetAddress} from './blockchain.js'; -import {ceramicNodeUrl, metaverseProfileDefinition} from './constants.js'; +// import {ceramicNodeUrl, metaverseProfileDefinition} from './constants.js'; const login = async () => { const address = await getMainnetAddress(); diff --git a/character-controller.js b/character-controller.js index e4385faeb0..2bebcdb3bf 100644 --- a/character-controller.js +++ b/character-controller.js @@ -7,7 +7,7 @@ import * as Z from 'zjs'; import {getRenderer, scene, camera, dolly} from './renderer.js'; import physicsManager from './physics-manager.js'; import {world} from './world.js'; -import cameraManager from './camera-manager.js'; +// import cameraManager from './camera-manager.js'; import physx from './physx.js'; import Avatar from './avatars/avatars.js'; import metaversefile from 'metaversefile'; @@ -24,28 +24,32 @@ import { avatarInterpolationTimeDelay, avatarInterpolationNumFrames, // groundFriction, - voiceEndpoint, + // defaultVoicePackName, numLoadoutSlots, } from './constants.js'; import {AppManager} from './app-manager.js'; import {CharacterPhysics} from './character-physics.js'; import {CharacterHups} from './character-hups.js'; import {CharacterSfx} from './character-sfx.js'; +import {CharacterHitter} from './character-hitter.js'; import {CharacterBehavior} from './character-behavior.js'; import {CharacterFx} from './character-fx.js'; import {VoicePack, VoicePackVoicer} from './voice-output/voice-pack-voicer.js'; -import {VoiceEndpoint, VoiceEndpointVoicer} from './voice-output/voice-endpoint-voicer.js'; +import {VoiceEndpoint, VoiceEndpointVoicer, getVoiceEndpointUrl} from './voice-output/voice-endpoint-voicer.js'; import {BinaryInterpolant, BiActionInterpolant, UniActionInterpolant, InfiniteActionInterpolant, PositionInterpolant, QuaternionInterpolant, FixedTimeStep} from './interpolants.js'; import {applyPlayerToAvatar, switchAvatar} from './player-avatar-binding.js'; import { defaultPlayerName, defaultPlayerBio, } from './ai/lore/lore-model.js'; -import * as sounds from './sounds.js'; +// import * as sounds from './sounds.js'; +import musicManager from './music-manager.js'; import {makeId, clone, unFrustumCull, enableShadows} from './util.js'; +import overrides from './overrides.js'; +// import * as voices from './voices.js'; const localVector = new THREE.Vector3(); -// const localVector2 = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); // const localQuaternion = new THREE.Quaternion(); // const localQuaternion2 = new THREE.Quaternion(); const localMatrix = new THREE.Matrix4(); @@ -53,6 +57,17 @@ const localMatrix2 = new THREE.Matrix4(); const localArray3 = [0, 0, 0]; const localArray4 = [0, 0, 0, 0]; +const zeroVector = new THREE.Vector3(0, 0, 0); +const upVector = new THREE.Vector3(0, 1, 0); + +const _getSession = () => { + const renderer = getRenderer(); + const session = renderer.xr.getSession(); + return session; +}; + +const physicsScene = physicsManager.getScene(); + function makeCancelFn() { let live = true; return { @@ -78,11 +93,11 @@ function loadPhysxCharacterController() { .add(new THREE.Vector3(0, -avatarHeight/2, 0)); if (this.characterController) { - physicsManager.destroyCharacterController(this.characterController); + physicsScene.destroyCharacterController(this.characterController); this.characterController = null; // this.characterControllerObject = null; } - this.characterController = physicsManager.createCharacterController( + this.characterController = physicsScene.createCharacterController( radius - contactOffset, height, contactOffset, @@ -101,7 +116,7 @@ function loadPhysxCharacterController() { .add(new THREE.Vector3(0, -avatarHeight/2, 0)); const physicsMaterial = new THREE.Vector3(0, 0, 0); - const physicsObject = physicsManager.addCapsuleGeometry( + const physicsObject = physicsScene.addCapsuleGeometry( position, localQuaternion.copy(this.quaternion) .premultiply( @@ -116,9 +131,9 @@ function loadPhysxCharacterController() { true ); physicsObject.name = 'characterCapsuleAux'; - physicsManager.setGravityEnabled(physicsObject, false); - physicsManager.setLinearLockFlags(physicsObject.physicsId, false, false, false); - physicsManager.setAngularLockFlags(physicsObject.physicsId, false, false, false); + physicsScene.setGravityEnabled(physicsObject, false); + physicsScene.setLinearLockFlags(physicsObject.physicsId, false, false, false); + physicsScene.setAngularLockFlags(physicsObject.physicsId, false, false, false); this.physicsObject = physicsObject; } */ @@ -141,19 +156,25 @@ class PlayerBase extends THREE.Object3D { this.leftHand, this.rightHand, ]; - + + this.detached = false; + this.avatar = null; this.appManager = new AppManager({ appsMap: null, }); this.appManager.addEventListener('appadd', e => { - const app = e.data; - scene.add(app); + if (!this.detached) { + const app = e.data; + scene.add(app); + } }); this.appManager.addEventListener('appremove', e => { - const app = e.data; - app.parent && app.parent.remove(app); + if (!this.detached) { + const app = e.data; + app.parent && app.parent.remove(app); + } }); this.eyeballTarget = new THREE.Vector3(); @@ -239,7 +260,7 @@ class PlayerBase extends THREE.Object3D { } setVoiceEndpoint(voiceId) { if (voiceId) { - const url = `${voiceEndpoint}?voice=${encodeURIComponent(voiceId)}`; + const url = getVoiceEndpointUrl(voiceId); this.voiceEndpoint = new VoiceEndpoint(url); } else { this.voiceEndpoint = null; @@ -262,6 +283,19 @@ class PlayerBase extends THREE.Object3D { throw new Error('invalid voice'); } } + async fetchThemeSong() { + const avatarApp = this.getAvatarApp(); + const npcComponent = avatarApp.getComponent('npc'); + const npcThemeSongUrl = npcComponent?.themeSongUrl; + return await PlayerBase.fetchThemeSong(npcThemeSongUrl); + } + static async fetchThemeSong(npcThemeSongUrl) { + if (npcThemeSongUrl) { + return await musicManager.fetchMusic(npcThemeSongUrl); + } else { + return null; + } + } getCrouchFactor() { return 1 - 0.4 * this.actionInterpolants.crouch.getNormalized(); /* let factor = 1; @@ -324,29 +358,38 @@ class PlayerBase extends THREE.Object3D { const _initPhysics = () => { const physicsObjects = app.getPhysicsObjects(); for (const physicsObject of physicsObjects) { - physx.physxWorker.disableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); - physx.physxWorker.disableGeometryPhysics(physx.physics, physicsObject.physicsId); + physicsScene.disableGeometryQueries(physicsObject.physicsId); + physicsScene.disableGeometry(physicsObject.physicsId); } }; _initPhysics(); - const _emitEvents = () => { + const wearComponent = app.getComponent('wear'); + const holdAnimation = wearComponent? wearComponent.holdAnimation : null; + const _addAction = () => { this.addAction({ type: 'wear', instanceId: app.instanceId, loadoutIndex, + holdAnimation, }); + }; + _addAction(); + + const _emitEvents = () => { app.dispatchEvent({ type: 'wearupdate', player: this, wear: true, loadoutIndex, + holdAnimation, }); this.dispatchEvent({ type: 'wearupdate', app, wear: true, loadoutIndex, + holdAnimation, }); }; _emitEvents(); @@ -354,6 +397,8 @@ class PlayerBase extends THREE.Object3D { } unwear(app, { destroy = false, + dropStartPosition = null, + dropDirection = null, } = {}) { const wearActionIndex = this.findActionIndex(({type, instanceId}) => { return type === 'wear' && instanceId === app.instanceId; @@ -363,8 +408,38 @@ class PlayerBase extends THREE.Object3D { const loadoutIndex = wearAction.loadoutIndex; const _setAppTransform = () => { - const wearComponent = app.getComponent('wear'); - if (wearComponent) { + if (dropStartPosition && dropDirection) { + const physicsObjects = app.getPhysicsObjects(); + if (physicsObjects.length > 0) { + const physicsObject = physicsObjects[0]; + + physicsObject.position.copy(dropStartPosition); + physicsObject.quaternion.copy(this.quaternion); + physicsObject.updateMatrixWorld(); + + physicsScene.setTransform(physicsObject, true); + physicsScene.setVelocity(physicsObject, localVector.copy(dropDirection).multiplyScalar(5).add(this.characterPhysics.velocity), true); + physicsScene.setAngularVelocity(physicsObject, zeroVector, true); + + app.position.copy(physicsObject.position); + app.quaternion.copy(physicsObject.quaternion); + app.scale.copy(physicsObject.scale); + app.matrix.copy(physicsObject.matrix); + app.matrixWorld.copy(physicsObject.matrixWorld); + } else { + app.position.copy(dropStartPosition); + app.quaternion.setFromRotationMatrix( + localMatrix.lookAt( + localVector.set(0, 0, 0), + localVector2.set(dropDirection.x, 0, dropDirection.z).normalize(), + upVector + ) + ); + app.scale.set(1, 1, 1); + app.updateMatrixWorld(); + } + app.lastMatrix.copy(app.matrixWorld); + } else { const avatarHeight = this.avatar ? this.avatar.height : 0; app.position.copy(this.position) .add(localVector.set(0, -avatarHeight + 0.5, -0.5).applyQuaternion(this.quaternion)); @@ -378,8 +453,8 @@ class PlayerBase extends THREE.Object3D { const _deinitPhysics = () => { const physicsObjects = app.getPhysicsObjects(); for (const physicsObject of physicsObjects) { - physx.physxWorker.enableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); - physx.physxWorker.enableGeometryPhysics(physx.physics, physicsObject.physicsId); + physicsScene.enableGeometryQueries(physicsObject.physicsId); + physicsScene.enableGeometry(physicsObject.physicsId); } }; _deinitPhysics(); @@ -453,11 +528,6 @@ class StatePlayer extends PlayerBase { if (this.isBound()) { this.playersArray = null; this.playerMap = null; - - for (const unbindFn of this.unbindFns) { - unbindFn(); - } - this.unbindFns.length = 0; } } detachState() { @@ -500,7 +570,7 @@ class StatePlayer extends PlayerBase { const observeAvatarFn = async () => { // we are in an observer and we want to perform a state transaction as a result // therefore we need to yeild out of the observer first or else the other transaction handlers will get confused about timing - await Promise.resolve(); + // await Promise.resolve(); const instanceId = this.getAvatarInstanceId(); if (lastAvatarInstanceId !== instanceId) { @@ -520,6 +590,12 @@ class StatePlayer extends PlayerBase { }; this.unbindFns.push(_cancelSyncAvatar); } + unbindCommonObservers() { + for (const unbindFn of this.unbindFns) { + unbindFn(); + } + this.unbindFns.length = 0; + } bindState(nextPlayersArray) { // latch old state const oldState = this.detachState(); @@ -527,6 +603,7 @@ class StatePlayer extends PlayerBase { // unbind this.unbindState(); this.appManager.unbindState(); + this.unbindCommonObservers(); // note: leave the old state as is. it is the host's responsibility to garbage collect us when we disconnect. @@ -582,8 +659,10 @@ class StatePlayer extends PlayerBase { }); loadPhysxCharacterController.call(this); - // console.log('disable actor', this.characterController); - physicsManager.disableGeometryQueries(this.characterController); + + if (this.isLocalPlayer) { + physicsScene.disableGeometryQueries(this.characterController); + } })(); this.dispatchEvent({ @@ -797,6 +876,7 @@ class InterpolatedPlayer extends StatePlayer { crouch: new BinaryInterpolant(() => this.hasAction('crouch'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), activate: new BinaryInterpolant(() => this.hasAction('activate'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), use: new BinaryInterpolant(() => this.hasAction('use'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), + pickUp: new BinaryInterpolant(() => this.hasAction('pickUp'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), aim: new BinaryInterpolant(() => this.hasAction('aim'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), narutoRun: new BinaryInterpolant(() => this.hasAction('narutoRun'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), fly: new BinaryInterpolant(() => this.hasAction('fly'), avatarInterpolationTimeDelay, avatarInterpolationNumFrames), @@ -816,6 +896,7 @@ class InterpolatedPlayer extends StatePlayer { crouch: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.crouch.snapshot(timeDiff);}, avatarInterpolationFrameRate), activate: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.activate.snapshot(timeDiff);}, avatarInterpolationFrameRate), use: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.use.snapshot(timeDiff);}, avatarInterpolationFrameRate), + pickUp: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.pickUp.snapshot(timeDiff);}, avatarInterpolationFrameRate), aim: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.aim.snapshot(timeDiff);}, avatarInterpolationFrameRate), narutoRun: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.narutoRun.snapshot(timeDiff);}, avatarInterpolationFrameRate), fly: new FixedTimeStep(timeDiff => {this.actionBinaryInterpolants.fly.snapshot(timeDiff);}, avatarInterpolationFrameRate), @@ -835,6 +916,7 @@ class InterpolatedPlayer extends StatePlayer { crouch: new BiActionInterpolant(() => this.actionBinaryInterpolants.crouch.get(), 0, crouchMaxTime), activate: new UniActionInterpolant(() => this.actionBinaryInterpolants.activate.get(), 0, activateMaxTime), use: new InfiniteActionInterpolant(() => this.actionBinaryInterpolants.use.get(), 0), + pickUp: new InfiniteActionInterpolant(() => this.actionBinaryInterpolants.pickUp.get(), 0), unuse: new InfiniteActionInterpolant(() => !this.actionBinaryInterpolants.use.get(), 0), aim: new InfiniteActionInterpolant(() => this.actionBinaryInterpolants.aim.get(), 0), narutoRun: new InfiniteActionInterpolant(() => this.actionBinaryInterpolants.narutoRun.get(), 0), @@ -886,6 +968,7 @@ class UninterpolatedPlayer extends StatePlayer { crouch: new BiActionInterpolant(() => this.hasAction('crouch'), 0, crouchMaxTime), activate: new UniActionInterpolant(() => this.hasAction('activate'), 0, activateMaxTime), use: new InfiniteActionInterpolant(() => this.hasAction('use'), 0), + pickUp: new InfiniteActionInterpolant(() => this.hasAction('pickUp'), 0), unuse: new InfiniteActionInterpolant(() => !this.hasAction('use'), 0), aim: new InfiniteActionInterpolant(() => this.hasAction('aim'), 0), aimRightTransition: new BiActionInterpolant(() => this.hasAction('aim') && this.hands[0].enabled, 0, aimTransitionMaxTime), @@ -920,7 +1003,9 @@ class LocalPlayer extends UninterpolatedPlayer { constructor(opts) { super(opts); - this.isLocalPlayer = true; + this.isLocalPlayer = !opts.npc; + this.isNpcPlayer = !!opts.npc; + this.detached = !!opts.detached; this.name = defaultPlayerName; this.bio = defaultPlayerBio; @@ -928,8 +1013,16 @@ class LocalPlayer extends UninterpolatedPlayer { this.characterHups = new CharacterHups(this); this.characterSfx = new CharacterSfx(this); this.characterFx = new CharacterFx(this); + this.characterHitter = new CharacterHitter(this); this.characterBehavior = new CharacterBehavior(this); + } + async setPlayerSpec(playerSpec) { + const p = this.setAvatarUrl(playerSpec.avatarUrl); + overrides.userVoiceEndpoint.set(playerSpec.voice ?? null); + overrides.userVoicePack.set(playerSpec.voicePack ?? null); + + await p; } async setAvatarUrl(u) { const localAvatarEpoch = ++this.avatarEpoch; @@ -938,15 +1031,18 @@ class LocalPlayer extends UninterpolatedPlayer { this.appManager.removeTrackedApp(avatarApp.instanceId); return; } - - this.setAvatarApp(avatarApp); + this.#setAvatarAppFromOwnAppManager(avatarApp); } getAvatarApp() { const avatar = this.getAvatarState(); const instanceId = avatar.get('instanceId'); return this.appManager.getAppByInstanceId(instanceId); } - setAvatarApp(app) { + /* importAvatarApp(app, srcAppManager) { + srcAppManager.transplantApp(app, this.appManager); + this.#setAvatarAppFromOwnAppManager(app); + } */ + #setAvatarAppFromOwnAppManager(app) { const self = this; this.playersArray.doc.transact(function tx() { const avatar = self.getAvatarState(); @@ -1009,9 +1105,8 @@ class LocalPlayer extends UninterpolatedPlayer { this.appManager.bindState(this.getAppsState()); } grab(app, hand = 'left') { - const renderer = getRenderer(); const localPlayer = metaversefile.useLocalPlayer(); - const {position, quaternion} = renderer.xr.getSession() ? + const {position, quaternion} = _getSession() ? localPlayer[hand === 'left' ? 'leftHand' : 'rightHand'] : camera; @@ -1032,8 +1127,8 @@ class LocalPlayer extends UninterpolatedPlayer { const physicsObjects = app.getPhysicsObjects(); for (const physicsObject of physicsObjects) { - //physx.physxWorker.disableGeometryPhysics(physx.physics, physicsObject.physicsId); - physx.physxWorker.disableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); + //physicsScene.disableGeometry(physicsObject.physicsId); + physicsScene.disableGeometryQueries(physicsObject.physicsId); } app.dispatchEvent({ @@ -1050,8 +1145,7 @@ class LocalPlayer extends UninterpolatedPlayer { const app = metaversefile.getAppByInstanceId(action.instanceId); const physicsObjects = app.getPhysicsObjects(); for (const physicsObject of physicsObjects) { - //physx.physxWorker.enableGeometryPhysics(physx.physics, physicsObject.physicsId); - physx.physxWorker.enableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); + physicsScene.enableGeometryQueries(physicsObject.physicsId); } this.removeActionIndex(i + removeOffset); removeOffset -= 1; @@ -1088,11 +1182,6 @@ class LocalPlayer extends UninterpolatedPlayer { this.appManager.updatePhysics(); } - getSession() { - const renderer = getRenderer(); - const session = renderer.xr.getSession(); - return session; - } updatePhysics(timestamp, timeDiff) { if (this.avatar) { const timeDiffS = timeDiff / 1000; @@ -1104,11 +1193,12 @@ class LocalPlayer extends UninterpolatedPlayer { const timeDiffS = timeDiff / 1000; this.characterSfx.update(timestamp, timeDiffS); this.characterFx.update(timestamp, timeDiffS); + this.characterHitter.update(timestamp, timeDiffS); this.characterBehavior.update(timestamp, timeDiffS); this.updateInterpolation(timeDiff); - const session = this.getSession(); + const session = _getSession(); const mirrors = metaversefile.getMirrors(); applyPlayerToAvatar(this, session, this.avatar, mirrors); @@ -1117,10 +1207,7 @@ class LocalPlayer extends UninterpolatedPlayer { this.characterHups.update(timestamp); } } - resetPhysics() { - this.characterPhysics.reset(); - } - teleportTo = (() => { + /* teleportTo = (() => { const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); const localQuaternion = new THREE.Quaternion(); @@ -1152,7 +1239,7 @@ class LocalPlayer extends UninterpolatedPlayer { this.resetPhysics(); }; - })() + })() */ destroy() { this.characterPhysics.destroy(); this.characterHups.destroy(); @@ -1200,12 +1287,10 @@ class RemotePlayer extends InterpolatedPlayer { this.syncAvatar(); } } -class StaticUninterpolatedPlayer extends PlayerBase { +/* class StaticUninterpolatedPlayer extends UninterpolatedPlayer { constructor(opts) { super(opts); - UninterpolatedPlayer.init.apply(this, arguments); - this.actions = []; } getActionsState() { @@ -1257,101 +1342,18 @@ class StaticUninterpolatedPlayer extends PlayerBase { } } updateInterpolation = UninterpolatedPlayer.prototype.updateInterpolation; -} -class NpcPlayer extends StaticUninterpolatedPlayer { +} */ +/* class NpcPlayer extends LocalPlayer { constructor(opts) { super(opts); + this.isLocalPlayer = false; this.isNpcPlayer = true; - this.avatarApp = null; - - this.characterPhysics = new CharacterPhysics(this); - this.characterHups = new CharacterHups(this); - this.characterSfx = new CharacterSfx(this); - this.characterFx = new CharacterFx(this); - this.characterBehavior = new CharacterBehavior(this); } - getAvatarApp() { - return this.avatarApp; - } - setAvatarApp(app) { - app.toggleBoneUpdates(true); - const {skinnedVrm} = app; - const avatar = new Avatar(skinnedVrm, { - fingers: true, - hair: true, - visemes: true, - debug: false, - }); - - unFrustumCull(app); - enableShadows(app); - - this.avatar = avatar; - this.avatarApp = app; - - loadPhysxCharacterController.call(this); - // loadPhysxAuxCharacterCapsule.call(this); - } - getSession() { - return null; - } - updatePhysics = LocalPlayer.prototype.updatePhysics; - updateAvatar = LocalPlayer.prototype.updateAvatar; - /* detachState() { - return null; - } - attachState(oldState) { - let index = -1; - for (let i = 0; i < this.playersArray.length; i++) { - const player = this.playersArray.get(i, Z.Map); - if (player.get('playerId') === this.playerId) { - index = i; - break; - } - } - if (index !== -1) { - this.playerMap = this.playersArray.get(index, Z.Map); - } else { - console.warn('binding to nonexistent player object', this.playersArray.toJSON()); - } - - const observePlayerFn = e => { - this.position.fromArray(this.playerMap.get('position')); - this.quaternion.fromArray(this.playerMap.get('quaternion')); - }; - this.playerMap.observe(observePlayerFn); - this.unbindFns.push(this.playerMap.unobserve.bind(this.playerMap, observePlayerFn)); - - this.appManager.bindState(this.getAppsState()); - this.appManager.syncApps(); - - this.syncAvatar(); - } */ - destroy() { - /* const npcs = metaversefile.useNpcs(); - const index = npcs.indexOf(this); - if (index !== -1) { - npcs.splice(index, 1); - } */ - - this.characterPhysics.destroy(); - this.characterHups.destroy(); - this.characterSfx.destroy(); - this.characterFx.destroy(); - this.characterBehavior.destroy(); - - if (this.avatarApp) { - this.avatarApp.toggleBoneUpdates(false); - } - - super.destroy(); - } - updateInterpolation = UninterpolatedPlayer.prototype.updateInterpolation; -} +} */ export { LocalPlayer, RemotePlayer, - NpcPlayer, + // NpcPlayer, }; \ No newline at end of file diff --git a/character-hitter.js b/character-hitter.js new file mode 100644 index 0000000000..ef6268503d --- /dev/null +++ b/character-hitter.js @@ -0,0 +1,214 @@ +import * as THREE from 'three'; +import {scene, camera} from './renderer.js'; +import physics from './physics-manager.js'; +// import physx from './physx.js'; +import Avatar from './avatars/avatars.js'; +import metaversefile from 'metaversefile'; +import * as metaverseModules from './metaverse-modules.js'; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localQuaternion = new THREE.Quaternion(); +const localEuler = new THREE.Euler(); +const localMatrix = new THREE.Matrix4(); + +// + +const physicsScene = physics.getScene(); +// const y180Quaternion = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI); + +// + +const hitAttemptEventData = { + type: '', + args: null, +}; +const hitAttemptEvent = new MessageEvent('hitattempt', { + data: hitAttemptEventData, +}); + +export class CharacterHitter { + constructor(player) { + this.player = player; + + this.lastHitTime = -Infinity; + } + attemptHit({ + type, + args, + timestamp = performance.now(), + }) { + hitAttemptEventData.type = type; + hitAttemptEventData.args = args; + hitManager.dispatchEvent(hitAttemptEvent); + + switch (type) { + case 'sword': { + const { + hitRadius, + hitHalfHeight, + position, + quaternion, + } = args; + const collision = physicsScene.getCollisionObject( + hitRadius, + hitHalfHeight, + position, + quaternion, + ); + if (collision) { + const collisionId = collision.objectId; + const result = metaversefile.getPairByPhysicsId(collisionId); + if (result) { + const [app, physicsObject] = result; + const timeDiff = timestamp - this.lastHitTime; + if (timeDiff > 1000) { + const useAction = this.player.getAction('use'); + const damage = typeof useAction.damage === 'number' ? useAction.damage : 10; + const hitDirection = app.position.clone() + .sub(this.player.position); + hitDirection.y = 0; + hitDirection.normalize(); + + const damageMeshOffsetDistance = 1.5; + const hitPosition = localVector.copy(this.player.position) + .add(localVector2.set(0, 0, -damageMeshOffsetDistance).applyQuaternion(this.player.quaternion)) + .clone(); + localEuler.setFromQuaternion(camera.quaternion, 'YXZ'); + localEuler.x = 0; + localEuler.z = 0; + const hitQuaternion = localQuaternion.setFromEuler(localEuler); + + // const willDie = app.willDieFrom(damage); + app.hit(damage, { + type: 'sword', + collisionId, + physicsObject, + hitPosition, + hitQuaternion, + hitDirection, + // willDie, + }); + + this.lastHitTime = timestamp; + + return collision; + } + } + } + return null; + } + case 'bullet': { + const result = physics.raycast(args.position, args.quaternion); + if (result) { + const _performHit = () => { + const targetApp = metaversefile.getAppByPhysicsId(result.objectId); + if (targetApp) { + const damage = 2; + + const hitPosition = new THREE.Vector3().fromArray(result.point); + const hitQuaternion = new THREE.Quaternion().setFromRotationMatrix( + localMatrix.lookAt( + this.player.position, + hitPosition, + localVector.set(0, 1, 0) + ) + ); + + const hitDirection = targetApp.position.clone() + .sub(this.player.position); + // hitDirection.y = 0; + hitDirection.normalize(); + + // const willDie = targetApp.willDieFrom(damage); + targetApp.hit(damage, { + type: 'bullet', + collisionId: result.objectId, + hitPosition, + hitDirection, + hitQuaternion, + // willDie, + }); + } else { + console.warn('no app with physics id', result.objectId); + } + }; + _performHit(); + + return result + } + return null; + } + default: { + throw new Error('unknown hit type :' + type); + } + } + } + getHit(damage) { + const newAction = { + type: 'hurt', + animation: Math.random() < 0.5 ? 'pain_arch' : 'pain_back', + }; + const hurtAction = this.player.addAction(newAction); + + const emotions = [ + // 'joy', + // 'fun', + 'sorrow', + 'angry', + // 'neutral', + 'surprise', + ]; + const emotion = emotions[Math.floor(Math.random() * emotions.length)]; + const faceposeAction = this.player.addAction({ + type: 'facepose', + emotion, + value: 1, + }); + + const gruntTypes = [ + 'hurt', + 'scream', + 'attack', + 'angry', + 'gasp', + ]; + const gruntType = gruntTypes[Math.floor(Math.random() * gruntTypes.length)]; + // console.log('play grunt', emotion, gruntType); + this.player.characterSfx.playGrunt(gruntType); + + { + const damageMeshApp = metaversefile.createApp(); + (async () => { + await metaverseModules.waitForLoad(); + const {modules} = metaversefile.useDefaultModules(); + const m = modules['damageMesh']; + await damageMeshApp.addModule(m); + })(); + damageMeshApp.position.copy(this.player.position); + localEuler.setFromQuaternion(camera.quaternion, 'YXZ'); + localEuler.x = 0; + localEuler.z = 0; + damageMeshApp.quaternion.setFromEuler(localEuler); + damageMeshApp.updateMatrixWorld(); + scene.add(damageMeshApp); + } + + const animations = Avatar.getAnimations(); + const hurtAnimation = animations.find(a => a.isHurt); + const hurtAnimationDuration = hurtAnimation.duration; + setTimeout(() => { + const hurtActionIndex = this.player.indexOfAction(hurtAction); + this.player.removeActionIndex(hurtActionIndex); + }, hurtAnimationDuration * 1000); + setTimeout(() => { + const faceposeActionIndex = this.player.indexOfAction(faceposeAction); + this.player.removeActionIndex(faceposeActionIndex); + }, 1000); + } + update() { + // nothing + } +} +const hitManager = new EventTarget(); +export default hitManager; \ No newline at end of file diff --git a/character-physics.js b/character-physics.js index a71e02783a..342da76694 100644 --- a/character-physics.js +++ b/character-physics.js @@ -36,6 +36,8 @@ const rightHandOffset = new THREE.Vector3(-0.2, -0.2, -0.4); const z22Quaternion = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 0, 1), -Math.PI/8); const groundStickOffset = 0.03; +const physicsScene = physicsManager.getScene(); + class CharacterPhysics { constructor(player) { this.player = player; @@ -50,7 +52,7 @@ class CharacterPhysics { setPosition(p) { localVector.copy(p); localVector.y -= this.player.avatar.height * 0.5; - physicsManager.setCharacterControllerPosition(this.player.characterController, localVector); + physicsScene.setCharacterControllerPosition(this.player.characterController, localVector); } /* apply the currently held keys to the character */ applyWasd(keysDirection) { @@ -61,7 +63,7 @@ class CharacterPhysics { applyGravity(timeDiffS) { // if (this.player) { if (this.player.hasAction('jump') && !this.player.hasAction('fly')) { - localVector.copy(physicsManager.getGravity()) + localVector.copy(physicsScene.getGravity()) .multiplyScalar(timeDiffS); this.velocity.add(localVector); } @@ -84,7 +86,7 @@ class CharacterPhysics { localVector3.copy(this.velocity) .multiplyScalar(timeDiffS); // console.log('got local vector', this.velocity.toArray().join(','), localVector3.toArray().join(','), timeDiffS); - const flags = physicsManager.moveCharacterController( + const flags = physicsScene.moveCharacterController( this.player.characterController, localVector3, minDist, @@ -96,7 +98,7 @@ class CharacterPhysics { if (!grounded && !this.player.getAction('jump') && !this.player.getAction('fly')) { // prevent jump when go down slope const oldY = this.player.characterController.position.y; - const flags = physicsManager.moveCharacterController( + const flags = physicsScene.moveCharacterController( this.player.characterController, localVector3.set(0, -groundStickOffset, 0), minDist, @@ -183,9 +185,19 @@ class CharacterPhysics { const objInstanceId = sitAction.controllingId; const controlledApp = metaversefileApi.getAppByInstanceId(objInstanceId); - const sitPos = sitAction.controllingBone ? sitAction.controllingBone : controlledApp; const sitComponent = controlledApp.getComponent('sit'); + + // Patch fix to fix vehicles and mounts for now + let rideMesh = null; + controlledApp.glb.scene.traverse(o => { + if (rideMesh === null && o.isSkinnedMesh) { + rideMesh = o; + } + }); + + // NOTE: We had a problem with sending the entire bone in the message buffer, so we're just sending the bone name + const sitPos = sitComponent.sitBone ? rideMesh.skeleton.bones.find(bone => bone.name === sitComponent.sitBone) : controlledApp; const { sitOffset = [0, 0, 0], // damping, @@ -209,7 +221,7 @@ class CharacterPhysics { localVector.add(this.sitOffset); localVector.y += this.player.avatar.height * 0.5; - physicsManager.setCharacterControllerPosition(this.player.characterController, localVector); + physicsScene.setCharacterControllerPosition(this.player.characterController, localVector); localVector.y += this.player.avatar.height * 0.5; localQuaternion.premultiply(localQuaternion2.setFromAxisAngle(localVector3.set(0, 1, 0), Math.PI)); diff --git a/character-sfx.js b/character-sfx.js index bf0cad064b..e83390407f 100644 --- a/character-sfx.js +++ b/character-sfx.js @@ -78,16 +78,17 @@ class CharacterSfx { this.willGasp = false; this.oldNarutoRunSound = null; - this.lastEmote = null; - const wearupdate = e => { - sounds.playSoundName(e.wear ? 'itemEquip' : 'itemUnequip'); - }; - player.addEventListener('wearupdate', wearupdate); - this.cleanup = () => { - player.removeEventListener('wearupdate', wearupdate); - }; + if (this.player.isLocalPlayer) { + const wearupdate = e => { + sounds.playSoundName(e.wear ? 'itemEquip' : 'itemUnequip'); + }; + player.addEventListener('wearupdate', wearupdate); + this.cleanup = () => { + player.removeEventListener('wearupdate', wearupdate); + }; + } } update(timestamp, timeDiffS) { if (!this.player.avatar) { @@ -366,8 +367,8 @@ class CharacterSfx { if (this.player.voicePack) { // ensure voice pack loaded let voiceFiles, offset, duration; switch (type) { - case 'pain': { - voiceFiles = this.player.voicePack.actionVoices.filter(f => /pain/i.test(f.name)); + case 'hurt': { + voiceFiles = this.player.voicePack.actionVoices.filter(f => /hurt/i.test(f.name)); break; } case 'scream': { @@ -521,7 +522,7 @@ class CharacterSfx { } } destroy() { - this.cleanup(); + this.cleanup && this.cleanup(); } } diff --git a/constants.js b/constants.js index ea7018b6c9..6af9a79af0 100644 --- a/constants.js +++ b/constants.js @@ -14,9 +14,9 @@ export const rarityColors = { }; const chainName = (() => { - if (typeof window !== 'undefined' && /^test\./.test(location.hostname)) { + if (typeof globalThis !== 'undefined' && /^test\./.test(location.hostname)) { return 'testnet'; - } else if (typeof window !== 'undefined' && /^polygon\./.test(location.hostname)) { + } else if (typeof globalThis !== 'undefined' && /^polygon\./.test(location.hostname)) { return 'polygon'; } else { return 'mainnet'; @@ -34,13 +34,13 @@ export const polygonVigilKey = `0937c004ab133135c86586b55ca212a6c9ecd224`; // -const origin = window.location.protocol + '//' + window.location.hostname; +const origin = globalThis.location.protocol + '//' + globalThis.location.hostname; let _inappPreviewHost = ''; switch ( origin ) { case 'https://local.webaverse.com': { - _inappPreviewHost = `https://local.webaverse.online:${window.location.port}`; + _inappPreviewHost = `https://local.webaverse.online:${globalThis.location.port}`; break; } case 'https://dev.webaverse.com': { @@ -91,7 +91,8 @@ export const crouchMaxTime = 200; export const activateMaxTime = 750; export const useMaxTime = 750; export const aimMaxTime = 1000; -export const throwReleaseTime = 750; +export const throwReleaseTime = 220; +export const throwAnimationDuration = 1.4166666269302368; export const minFov = 60; export const maxFov = 120; export const midFov = 90; @@ -108,11 +109,13 @@ export const avatarInterpolationNumFrames = 4; export const eatFrameIndices = [500, 800, 1100]; export const drinkFrameIndices = [400, 700, 1000]; +export const defaultMaxId = 8192; + export const defaultMusicVolume = 0.35; export const voicePacksUrl = `https://webaverse.github.io/voicepacks/all_packs.json`; -export const voiceEndpoint = `https://voice.webaverse.com/tts`; +export const voiceEndpointBaseUrl = `https://voice.webaverse.com/tts`; export const voiceEndpointsUrl = `https://raw.githubusercontent.com/webaverse/tiktalknet/main/model_lists/all_models.json`; export const chatTextSpeed = 15; @@ -121,10 +124,30 @@ export const shakeAnimationSpeed = 30; export const hotbarSize = 60; export const infoboxSize = 100; +export const startTextureAtlasSize = 512; +export const maxTextureAtlasSize = 4096; + export const numLoadoutSlots = 8; export const defaultDioramaSize = 512; +export const defaultChunkSize = 16; +export const defaultWorldSeed = 100; + +export const defaultVoiceEndpoint = `Sweetie Belle`; +export const defaultVoicePackName = `ShiShi voice pack`; -export const defaultAvatarUrl = './avatars/scillia_drophunter_v15_vian.vrm'; +// export const defaultAvatarUrl = './avatars/scilly_drophunter_v30.5_Guilty.vrm'; +// export const defaultAvatarUrl = './avatars/scilly_drophunter_v31_Guilty.vrm'; +// export const defaultAvatarUrl = './avatars/ann_liskwitch_v3.1_guiltyallShapeKeys.vrm'; // export const defaultAvatarUrl = './avatars/scillia_drophunter_v25_gloria_vian.vrm'; // export const defaultAvatarUrl = './avatars/ann.vrm'; +export const defaultPlayerSpec = { + name: 'Scillia', + previewUrl: './images/characters/upstreet/small/scillia.png', + avatarUrl: './avatars/scilly_drophunter_v31.6_Guilty.vrm', + voice: defaultVoiceEndpoint, + voicePack: defaultVoicePackName, + class: 'Drop Hunter', + bio: `Her nickname is Scilly or SLY. 13/F drop hunter. She is an adventurer, swordfighter and fan of potions. She is exceptionally skilled and can go Super Saiyan.`, + themeSongUrl: `https://webaverse.github.io/music/themes/149274046-smooth-adventure-quest.mp3`, +}; \ No newline at end of file diff --git a/dc-worker-manager.js b/dc-worker-manager.js new file mode 100644 index 0000000000..b23fda59f9 --- /dev/null +++ b/dc-worker-manager.js @@ -0,0 +1,370 @@ +// import * as THREE from 'three'; +import {chunkMinForPosition, getLockChunkId} from './util.js'; +import {LockManager, abortError} from './lock-manager.js'; + +// + +const defaultNumDcWorkers = 1; + +// + +let taskIds = 0; + +// + +export class DcWorkerManager { + constructor({ + chunkSize, + seed, + instance, + numWorkers = defaultNumDcWorkers, + } = {}) { + this.chunkSize = chunkSize; + this.seed = seed; + this.instance = instance; + this.numWorkers = numWorkers; + + this.workers = []; + this.nextWorker = 0; + this.locks = new LockManager(); + this.loadPromise = null; + + // trigger load + this.waitForLoad(); + } + waitForLoad() { + if (!this.loadPromise) { + this.loadPromise = (async () => { + // create workers + const workers = Array(this.numWorkers); + for (let i = 0; i < this.numWorkers; i++) { + const worker = new Worker('./dc-worker.js?import', { + type: 'module', + }); + const cbs = new Map(); + worker.onmessage = (e) => { + const {taskId} = e.data; + const cb = cbs.get(taskId); + if (cb) { + cbs.delete(taskId); + cb(e.data); + } else { + // console.warn('dropped canceled message', e.data); + // debugger; + } + }; + worker.onerror = (err) => { + console.log('dc worker load error', err); + }; + worker.request = (method, args, {signal} = {}) => { + return new Promise((resolve, reject) => { + const {instance} = this; + const taskId = ++taskIds; + + const onabort = e => { + worker.request('cancelTask', { + taskId, + }); + + reject(abortError); + cbs.delete(taskId); + }; + signal && signal.addEventListener('abort', onabort); + + cbs.set(taskId, (data) => { + signal && signal.removeEventListener('abort', onabort); + + const {error, result} = data; + if (error) { + reject(error); + } else { + resolve(result); + } + }); + worker.postMessage({ + method, + args, + instance, + taskId, + }); + }); + }; + workers[i] = worker; + } + + /* // connect ports + const _makePorts = () => { + const result = Array(this.numWorkers); + for (let i = 0; i < this.numWorkers; i++) { + const messageChannel = new MessageChannel(); + result[i] = [messageChannel.port1, messageChannel.port2]; + } + return result; + }; + for (let i = 0; i < this.numWorkers; i++) { + const worker1 = workers[i]; + const ports = _makePorts(); + for (let j = 0; j < this.numWorkers; j++) { + if (i !== j) { + const worker2 = workers[j]; + const [port1, port2] = ports[j]; + + worker1.postMessage( + { + method: 'port', + args: { + port: port1, + }, + }, + [port1] + ); + worker2.postMessage( + { + method: 'port', + args: { + port: port2, + }, + }, + [port2] + ); + } + } + } */ + + // initialize + // note: deliberately don't wait for this; let it start in the background + Promise.all( + workers.map(async (worker) => { + await Promise.all([ + worker.request('initialize', { + chunkSize: this.chunkSize, + seed: this.seed, + }), + worker.request('ensureInstance', { + instance: this.instance, + }), + ]); + }) + ); + + this.workers = workers; + })(); + } + return this.loadPromise; + } + getNextWorker() { + const { workers } = this; + const worker = workers[this.nextWorker]; + this.nextWorker = (this.nextWorker + 1) % workers.length; + return worker; + } + async setClipRange(range, {signal} = {}) { + await Promise.all( + this.workers.map((worker) => { + return worker.request('setClipRange', { + instance: this.instance, + range: [range.min.toArray(), range.max.toArray()], + }, {signal}); + }) + ); + } + + async createTracker(lod, minLodRange, trackY, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('createTracker', { + instance: this.instance, + lod, + minLodRange, + trackY, + }, {signal}); + return result; + } + async destroyTracker(tracker, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('destroyTracker', { + instance: this.instance, + tracker, + }, {signal}); + return result; + } + async trackerUpdate(tracker, position, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('trackerUpdate', { + instance: this.instance, + tracker, + position: position.toArray(), + }, {signal}); + return result; + } + + async generateTerrainChunk(chunkPosition, lodArray, {signal} = {}) { + // const chunkId = getLockChunkId(chunkPosition); + // return await this.locks.request(chunkId, async lock => { + const worker = this.getNextWorker(); + const result = await worker.request('generateTerrainChunk', { + instance: this.instance, + chunkPosition: chunkPosition.toArray(), + lodArray, + }, {signal}); + // signal.throwIfAborted(); + return result; + // }); + } + async generateTerrainChunkRenderable(chunkPosition, lodArray, {signal} = {}) { + // const chunkId = getLockChunkId(chunkPosition); + // return await this.locks.request(chunkId, {signal}, async lock => { + const worker = this.getNextWorker(); + const result = await worker.request('generateTerrainChunkRenderable', { + instance: this.instance, + chunkPosition: chunkPosition.toArray(), + lodArray, + }, {signal}); + // signal.throwIfAborted(); + return result; + // }); + } + async generateLiquidChunk(chunkPosition, lodArray, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('generateLiquidChunk', { + instance: this.instance, + chunkPosition: chunkPosition.toArray(), + lodArray, + }, {signal}); + // signal.throwIfAborted(); + return result; + } + async getChunkHeightfield(x, z, lod, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('getChunkHeightfield', { + x, z, + lod, + }, {signal}); + return result; + } + /* async getHeightfieldRange(x, z, w, h, lod) { + const worker = this.getNextWorker(); + const result = await worker.request('getHeightfieldRange', { + instance: this.instance, + x, + z, + w, + h, + lod, + }); + return result; + } + async getSkylightFieldRange(x, y, z, w, h, d, lod) { + const worker = this.getNextWorker(); + const result = await worker.request('getSkylightFieldRange', { + instance: this.instance, + x, + y, + z, + w, + h, + d, + lod, + }); + return result; + } + async getAoFieldRange(x, y, z, w, h, d, lod) { + const worker = this.getNextWorker(); + const result = await worker.request('getAoFieldRange', { + instance: this.instance, + x, + y, + z, + w, + h, + d, + lod, + }); + return result; + } */ + async createGrassSplat(x, z, lod, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('createGrassSplat', { + instance: this.instance, + x, + z, + lod, + }, {signal}); + return result; + } + async createVegetationSplat(x, z, lod, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('createVegetationSplat', { + instance: this.instance, + x, + z, + lod, + }, {signal}); + return result; + } + async createMobSplat(x, z, lod, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('createMobSplat', { + instance: this.instance, + x, + z, + lod, + }, {signal}); + return result; + } + async drawCubeDamage(position, quaternion, scale, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('drawCubeDamage', { + instance: this.instance, + position: position.toArray(), + quaternion: quaternion.toArray(), + scale: scale.toArray(), + }, {signal}); + return result; + } + async eraseCubeDamage(position, quaterion, scale, {signal} = {}) { + const worker = this.getNextWorker(); + const result = await worker.request('eraseCubeDamage', { + instance: this.instance, + position: position.toArray(), + quaternion: quaternion.toArray(), + scale: scale.toArray(), + }, {signal}); + return result; + } + async drawSphereDamage(position, radius, {signal} = {}) { + // const chunkPosition = chunkMinForPosition( + // position.x, + // position.y, + // position.z, + // this.chunkSize + // ); + // const chunkId = getLockChunkId(chunkPosition); + // return await this.locks.request(chunkId, async lock => { + const worker = this.getNextWorker(); + const result = await worker.request('drawSphereDamage', { + instance: this.instance, + position: position.toArray(), + radius, + }, {signal}); + return result; + // }); + } + async eraseSphereDamage(position, radius, {signal} = {}) { + const chunkPosition = chunkMinForPosition( + position.x, + position.y, + position.z, + this.chunkSize + ); + const chunkId = getLockChunkId(chunkPosition); + // return await this.locks.request(chunkId, async lock => { + const worker = this.getNextWorker(); + const result = await worker.request('eraseSphereDamage', { + instance: this.instance, + position: position.toArray(), + radius, + }, {signal}); + return result; + // }); + } +} diff --git a/dc-worker.js b/dc-worker.js new file mode 100644 index 0000000000..7093e1ac23 --- /dev/null +++ b/dc-worker.js @@ -0,0 +1,621 @@ +import * as THREE from 'three'; +import dc from './dual-contouring.js'; +import { makePromise } from './util.js'; +import { defaultChunkSize } from './constants.js'; + +// + +const chunkWorldSize = defaultChunkSize; + +// + +const localVector = new THREE.Vector3(); + +// + +// const ports = []; + +// + +const _cloneTerrainMeshData = (meshData) => { + if (meshData) { + const sizeRequired = meshData.positions.length * meshData.positions.constructor.BYTES_PER_ELEMENT + + meshData.normals.length * meshData.normals.constructor.BYTES_PER_ELEMENT + + // meshData.biomes.length * meshData.biomes.constructor.BYTES_PER_ELEMENT + + meshData.biomesWeights.length * meshData.biomesWeights.constructor.BYTES_PER_ELEMENT + + meshData.biomesUvs1.length * meshData.biomesUvs1.constructor.BYTES_PER_ELEMENT + + meshData.biomesUvs2.length * meshData.biomesUvs2.constructor.BYTES_PER_ELEMENT + + meshData.indices.length * meshData.indices.constructor.BYTES_PER_ELEMENT + + meshData.skylights.length * meshData.skylights.constructor.BYTES_PER_ELEMENT + + meshData.aos.length * meshData.aos.constructor.BYTES_PER_ELEMENT; + const arrayBuffer = new ArrayBuffer(sizeRequired); + let index = 0; + + const positions = new meshData.positions.constructor(arrayBuffer, index, meshData.positions.length); + positions.set(meshData.positions); + index += meshData.positions.length * meshData.positions.constructor.BYTES_PER_ELEMENT; + + const normals = new meshData.normals.constructor(arrayBuffer, index, meshData.normals.length); + normals.set(meshData.normals); + index += meshData.normals.length * meshData.normals.constructor.BYTES_PER_ELEMENT; + + // const biomes = new meshData.biomes.constructor(arrayBuffer, index, meshData.biomes.length); + // biomes.set(meshData.biomes); + // index += meshData.biomes.length * meshData.biomes.constructor.BYTES_PER_ELEMENT; + + const biomesWeights = new meshData.biomesWeights.constructor(arrayBuffer, index, meshData.biomesWeights.length); + biomesWeights.set(meshData.biomesWeights); + index += meshData.biomesWeights.length * meshData.biomesWeights.constructor.BYTES_PER_ELEMENT; + + const biomesUvs1 = new meshData.biomesUvs1.constructor(arrayBuffer, index, meshData.biomesUvs1.length); + biomesUvs1.set(meshData.biomesUvs1); + index += meshData.biomesUvs1.length * meshData.biomesUvs1.constructor.BYTES_PER_ELEMENT; + + const biomesUvs2 = new meshData.biomesUvs2.constructor(arrayBuffer, index, meshData.biomesUvs2.length); + biomesUvs2.set(meshData.biomesUvs2); + index += meshData.biomesUvs2.length * meshData.biomesUvs2.constructor.BYTES_PER_ELEMENT; + + const indices = new meshData.indices.constructor(arrayBuffer, index, meshData.indices.length); + indices.set(meshData.indices); + index += meshData.indices.length * meshData.indices.constructor.BYTES_PER_ELEMENT; + + const skylights = new meshData.skylights.constructor(arrayBuffer, index, meshData.skylights.length); + skylights.set(meshData.skylights); + index += meshData.skylights.length * meshData.skylights.constructor.BYTES_PER_ELEMENT; + + const aos = new meshData.aos.constructor(arrayBuffer, index, meshData.aos.length); + aos.set(meshData.aos); + index += meshData.aos.length * meshData.aos.constructor.BYTES_PER_ELEMENT; + + return { + // bufferAddress: arrayBuffer.byteOffset, + arrayBuffer, + positions, + normals, + // biomes, + biomesWeights, + biomesUvs1, + biomesUvs2, + indices, + skylights, + aos, + }; + } else { + return null; + } +}; +const _cloneLiquidMeshData = (meshData) => { + if (meshData) { + /* return { + arrayBuffer: new ArrayBuffer(1), + positions: meshData.positions.slice(), + normals: meshData.normals.slice(), + biomes: meshData.biomes.slice(), + biomesWeights: meshData.biomesWeights.slice(), + indices: meshData.indices.slice(), + }; */ + + const sizeRequired = meshData.positions.length * meshData.positions.constructor.BYTES_PER_ELEMENT + + meshData.normals.length * meshData.normals.constructor.BYTES_PER_ELEMENT + + meshData.biomes.length * meshData.biomes.constructor.BYTES_PER_ELEMENT + + meshData.indices.length * meshData.indices.constructor.BYTES_PER_ELEMENT; + const arrayBuffer = new ArrayBuffer(sizeRequired); + let index = 0; + + const positions = new meshData.positions.constructor(arrayBuffer, index, meshData.positions.length); + positions.set(meshData.positions); + index += meshData.positions.length * meshData.positions.constructor.BYTES_PER_ELEMENT; + + const normals = new meshData.normals.constructor(arrayBuffer, index, meshData.normals.length); + normals.set(meshData.normals); + index += meshData.normals.length * meshData.normals.constructor.BYTES_PER_ELEMENT; + + const biomes = new meshData.biomes.constructor(arrayBuffer, index, meshData.biomes.length); + biomes.set(meshData.biomes); + index += meshData.biomes.length * meshData.biomes.constructor.BYTES_PER_ELEMENT; + + const indices = new meshData.indices.constructor(arrayBuffer, index, meshData.indices.length); + indices.set(meshData.indices); + index += meshData.indices.length * meshData.indices.constructor.BYTES_PER_ELEMENT; + + return { + // bufferAddress: arrayBuffer.byteOffset, + arrayBuffer, + positions, + normals, + biomes, + indices, + }; + } else { + return null; + } +}; + +const instances = new Map(); + +let loaded = false; +// let running = false; +let queue = []; +const _handleMethod = async ({method, args, instance: instanceKey, taskId}) => { + // console.log('worker handle method', method, args); + + /* const _injectDamages = (chunks, instance) => { + // console.log("Instance : " + instance); + // inject the damage to peer workers + const method = 'injectDamages'; + const args = { + chunks, + instance, + }; + for (const port of ports) { + // console.log('got port', port); + port.postMessage({ + method, + args, + }); + } + }; */ + const _chunksToResult = chunks => chunks.map(({ position }) => ({ position })); + + switch (method) { + case 'initialize': { + const {chunkSize, seed, numThreads} = args; + return dc.initialize(chunkSize, seed, numThreads); + } + /* case 'port': { + const { port } = args; + port.onmessage = (e) => { + _handleMessage({ + data: e.data, + port, + }); + }; + ports.push(port); + return; + } */ + case 'ensureInstance': { + const { instance: instanceKey } = args; + // console.log(instanceKey); + let instance = instances.get(instanceKey); + if (!instance) { + instance = dc.createInstance(); + instances.set(instanceKey, instance); + } + return true; + } + case 'deleteInstance': { + const { instance: instanceKey } = args; + const instance = instances.get(instanceKey); + if (instance) { + dc.deleteInstance(instance); + instances.delete(instanceKey); + return true; + } else { + return false; + } + } + case 'setClipRange': { + const {instance: instanceKey, range} = args; + const instance = instances.get(instanceKey); + dc.setClipRange(instance, range); + return true; + } + case 'createTracker': { + const {instance: instanceKey, lod, minLodRange, trackY} = args; + const instance = instances.get(instanceKey); + const tracker = dc.createTracker(instance, lod, minLodRange, trackY); + const spec = { + result: tracker, + transfers: [], + }; + return spec; + } + case 'destroyTracker': { + const {instance: instanceKey, tracker} = args; + const instance = instances.get(instanceKey); + dc.destroyTracker(instance, tracker); + return true; + } + case 'trackerUpdate': { + const {instance: instanceKey, tracker, position} = args; + const instance = instances.get(instanceKey); + const trackerUpdate = await dc.trackerUpdateAsync(instance, taskId, tracker, position); + const trackerUpdate2 = _cloneTrackerUpdate(trackerUpdate); + const spec = { + result: trackerUpdate2, + transfers: [], + }; + return spec; + } + case 'generateTerrainChunk': { + const {chunkPosition, lodArray} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('generateTerrainChunk : instance not found'); + + localVector.fromArray(chunkPosition) + .multiplyScalar(chunkWorldSize); + + const meshData = await dc.createTerrainChunkMeshAsync(instance, taskId, localVector.x, localVector.y, localVector.z, lodArray); + const meshData2 = _cloneTerrainMeshData(meshData); + meshData && dc.free(meshData.bufferAddress); + + if (meshData2) { + const spec = { + result: meshData2, + transfers: [meshData2.arrayBuffer], + }; + return spec; + } else { + return null; + } + } + case 'generateTerrainChunkRenderable': { + const {chunkPosition, lodArray} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('generateTerrainChunkRenderable : instance not found'); + + const position = new THREE.Vector3().fromArray(chunkPosition) + .multiplyScalar(chunkWorldSize); + // console.log('got position', position.toArray().join(',')); + const meshData = await dc.createTerrainChunkMeshAsync(instance, taskId, position.x, position.y, position.z, lodArray); + // console.log('got mesh data result 1', meshData); + const meshData2 = _cloneTerrainMeshData(meshData); + // console.log('got mesh data result 2', meshData2); + meshData && dc.free(meshData.bufferAddress); + + if (meshData2) { + const lod = lodArray[0]; + { + const taskId = Math.floor(Math.random() * 0xFFFFFF); + // console.log('skylight task id', taskId); + meshData2.skylights = await dc.getChunkSkylightAsync( + instance, + taskId, + position.x, + position.y, + position.z, + lod + ); + } + { + const taskId = Math.floor(Math.random() * 0xFFFFFF); + // console.log('ao task id', taskId); + meshData2.aos = await dc.getChunkAoAsync( + instance, + taskId, + position.x, + position.y, + position.z, + lod + ); + } + + const spec = { + result: meshData2, + transfers: [ + meshData2.arrayBuffer, + meshData2.skylights.buffer, + meshData2.aos.buffer, + ], + }; + return spec; + } else { + return null; + } + } + case 'generateLiquidChunk': { + const {chunkPosition, lodArray} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('generateLiquidChunk : instance not found'); + + localVector.fromArray(chunkPosition) + .multiplyScalar(chunkWorldSize); + const meshData = await dc.createLiquidChunkMeshAsync(instance, taskId, localVector.x, localVector.y, localVector.z, lodArray); + const meshData2 = _cloneLiquidMeshData(meshData); + meshData && dc.free(meshData.bufferAddress); + + if (meshData2) { + const spec = { + result: meshData2, + transfers: [meshData2.arrayBuffer], + }; + return spec; + } else { + return null; + } + } + case 'getChunkHeightfield': { + const {x, z, lod} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('getChunkHeightfield : instance not found'); + + const heightfield = await dc.getChunkHeightfieldAsync(instance, taskId, x, z, lod); + const spec = { + result: heightfield, + transfers: [heightfield.buffer], + }; + return spec; + } + /* case 'getHeightfieldRange': { + const { instance: instanceKey, x, z, w, h, lod } = args; + const instance = instances.get(instanceKey); + if (!instance) + throw new Error('getHeightfieldRange : instance not found'); + const heights = dc.getHeightfieldRange(instance, x, z, w, h, lod); + + const spec = { + result: heights, + transfers: [heights.buffer], + }; + return spec; + } + case 'getSkylightFieldRange': { + const { instance: instanceKey, x, y, z, w, h, d, lod } = args; + const instance = instances.get(instanceKey); + if (!instance) + throw new Error('getSkylightFieldRange : instance not found'); + const skylights = dc.getSkylightFieldRange( + instance, + x, + y, + z, + w, + h, + d, + lod + ); + + const spec = { + result: skylights, + transfers: [skylights.buffer], + }; + return spec; + } + case 'getAoFieldRange': { + const { instance: instanceKey, x, y, z, w, h, d, lod } = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('getAoFieldRange : instance not found'); + const aos = dc.getAoFieldRange(instance, x, y, z, w, h, d, lod); + + const spec = { + result: aos, + transfers: [aos.buffer], + }; + return spec; + } */ + case 'createGrassSplat': { + const {x, z, lod} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('createGrassSplat : instance not found'); + + const { + ps, + qs, + instances: instancesResult, + } = await dc.createGrassSplatAsync(instance, taskId, x, z, lod); + + const spec = { + result: { + ps, + qs, + instances: instancesResult, + }, + transfers: [ps.buffer, qs.buffer, instancesResult.buffer], + }; + return spec; + } + case 'createVegetationSplat': { + const {x, z, lod} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('createVegetationSplat : instance not found'); + + const { + ps, + qs, + instances: instancesResult, + } = await dc.createVegetationSplatAsync(instance, taskId, x, z, lod); + + const spec = { + result: { + ps, + qs, + instances: instancesResult, + }, + transfers: [ps.buffer, qs.buffer, instancesResult.buffer], + }; + return spec; + } + case 'createMobSplat': { + const {x, z, lod} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('createMobSplat : instance not found'); + + const { + ps, + qs, + instances: instancesResult, + } = await dc.createMobSplatAsync(instance, taskId, x, z, lod); + + const spec = { + result: { + ps, + qs, + instances: instancesResult, + }, + transfers: [ps.buffer, qs.buffer, instancesResult.buffer], + }; + return spec; + } + case 'drawCubeDamage': { + const {position, quaternion, scale} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('drawCubeDamage : instance not found'); + + // console.log('dc worker draw cube damage', {position, quaternion, scale}); + const chunks = dc.drawCubeDamage( + instance, + position[0], + position[1], + position[2], + quaternion[0], + quaternion[1], + quaternion[2], + quaternion[3], + scale[0], + scale[1], + scale[2] + ); + // console.log('draw cube damage chunks', chunks); + + if (chunks) { + return { + result: _chunksToResult(chunks), + transfers: [], + }; + } else { + return null; + } + } + case 'eraseCubeDamage': { + const {position, quaternion, scale} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('eraseCubeDamage : instance not found'); + + const chunks = dc.drawCubeDamage( + instance, + position[0], + position[1], + position[2], + quaternion[0], + quaternion[1], + quaternion[2], + quaternion[3], + scale[0], + scale[1], + scale[2] + ); + + if (chunks) { + return { + result: _chunksToResult(chunks), + transfers: [], + }; + } else { + return null; + } + } + case 'drawSphereDamage': { + const {position, radius} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('drawSphereDamage : instance not found'); + + const chunks = dc.drawSphereDamage( + instance, + position[0], + position[1], + position[2], + radius + ); + + if (chunks) { + return { + result: _chunksToResult(chunks), + transfers: [], + }; + } else { + return null; + } + } + case 'eraseSphereDamage': { + const {position, radius} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('eraseSphereDamage : instance not found'); + const chunks = dc.eraseSphereDamage( + instance, + position[0], + position[1], + position[2], + radius + ); + + if (chunks) { + return { + result: _chunksToResult(chunks), + transfers: [], + }; + } else { + return null; + } + } + case 'cancelTask': { + const {taskId} = args; + const instance = instances.get(instanceKey); + if (!instance) throw new Error('cancelTask : instance not found'); + + await dc.cancelTask(instance, taskId); + const spec = { + result: null, + transfers: [], + }; + return spec; + } + default: { + throw new Error(`unknown method: ${method}`); + } + } +}; +const _handleMessage = async m => { + const {data, port} = m; + const {taskId} = data; + const p = makePromise(); + // try { + const spec = await _handleMethod(data); + p.accept(spec); + // } catch (err) { + // p.reject(err); + // } + + if (taskId) { + p.then( + (spec) => { + const { result = null, transfers = [] } = spec ?? {}; + port.postMessage( + { + method: 'response', + taskId, + result, + }, + transfers + ); + }, + (err) => { + port.postMessage({ + method: 'response', + taskId, + error: err.message, + }); + } + ); + } +}; +self.onmessage = (e) => { + const m = { + data: e.data, + port: self, + }; + if (loaded) { + _handleMessage(m); + } else { + queue.push(m); + } +}; + +(async () => { + await dc.waitForLoad(); + + loaded = true; + for (let i = 0; i < queue.length; i++) { + _handleMessage(queue[i]); + } + queue.length = 0; +})(); diff --git a/dom-renderer.jsx b/dom-renderer.jsx new file mode 100644 index 0000000000..854f3609f1 --- /dev/null +++ b/dom-renderer.jsx @@ -0,0 +1,221 @@ +import * as THREE from 'three'; + +// import {sceneLowerPriority} from './renderer.js'; +import easing from './easing.js'; +import physicsManager from './physics-manager.js'; + +const cubicBezier = easing(0, 1, 0, 1); + +const physicsScene = physicsManager.getScene(); + +class DomItem extends THREE.Object3D { + constructor(position, quaternion, scale, width, height, worldWidth, render) { + super(); + + this.name = 'domNode'; + + this.position.copy(position); + this.quaternion.copy(quaternion); + this.scale.copy(scale); + + this.width = width; + this.height = height; + this.worldWidth = worldWidth; + this.render = render; + + this.enabled = false; + this.value = 0; + this.animation = null; + + const floatNode = new THREE.Object3D(); + floatNode.name = 'floatNode'; + this.floatNode = floatNode; + this.add(floatNode); + + const iframeMesh = new IFrameMesh({ + width, + height, + }); + iframeMesh.name = 'domPunchThroughNode'; + this.iframeMesh = iframeMesh; + floatNode.add(iframeMesh); + + const p = position; + const q = quaternion; + const hs = new THREE.Vector3(iframeMesh.worldWidth, iframeMesh.worldHeight, 0.01) + .multiplyScalar(0.5); + const dynamic = false; + const physicsObject = physicsScene.addBoxGeometry( + p, + q, + hs, + dynamic + ); + physicsScene.disableActor(physicsObject); + physicsScene.disableGeometryQueries(physicsObject); + this.physicsObject = physicsObject; + } + startAnimation(enabled, startTime, endTime) { + this.enabled = enabled; + + const startValue = this.value; + const endValue = enabled ? 1 : 0; + this.animation = { + startTime, + endTime, + startValue, + endValue, + }; + } + update(timestamp) { + if (this.animation) { + const {startTime, endTime, startValue, endValue} = this.animation; + let factor = Math.min(Math.max((timestamp - startTime) / (endTime - startTime), 0), 1); + factor = cubicBezier(factor); + if (factor < 1) { + this.value = startValue + (endValue - startValue) * factor; + } else { + this.value = endValue; + this.animation = null; + } + } else { + this.value = this.enabled ? 1 : 0; + } + + if (this.value > 0) { + const w = this.value; + const shiftOffset = (1 - w) * this.worldWidth/2; + this.iframeMesh.position.x = -shiftOffset; + this.iframeMesh.scale.set(w, 1, 1); + this.iframeMesh.updateMatrixWorld(); + + this.iframeMesh.material.opacity = 1 - this.value; + + this.physicsObject.position.setFromMatrixPosition(this.iframeMesh.matrixWorld); + this.physicsObject.quaternion.setFromRotationMatrix(this.iframeMesh.matrixWorld); + this.physicsObject.updateMatrixWorld(); + physicsScene.setTransform(this.physicsObject); + + this.visible = true; + } else { + this.visible = false; + } + } + onBeforeRaycast() { + if (this.enabled) { + physicsScene.enableActor(this.physicsObject); + physicsScene.enableGeometryQueries(this.physicsObject); + } + } + onAfterRaycast() { + if (this.enabled) { + physicsScene.disableActor(this.physicsObject); + physicsScene.disableGeometryQueries(this.physicsObject); + } + } + destroy() { + physicsScene.enableActor(this.physicsObject); + physicsScene.removeGeometry(this.physicsObject); + } +} + +class IFrameMesh extends THREE.Mesh { + constructor({ + width, + height, + }) { + const scaleFactor = DomRenderEngine.getScaleFactor(width, height); + const worldWidth = width * scaleFactor; + const worldHeight = height * scaleFactor; + const geometry = new THREE.PlaneBufferGeometry(worldWidth, worldHeight); + const material = new THREE.MeshBasicMaterial({ + color: 0xFFFFFF, + side: THREE.DoubleSide, + opacity: 0, + transparent: true, + blending: THREE.MultiplyBlending + }); + super(geometry, material); + + this.frustumCulled = false; + this.onBeforeRender = renderer => { + const context = renderer.getContext(); + context.disable(context.SAMPLE_ALPHA_TO_COVERAGE); + }; + this.onAfterRender = renderer => { + const context = renderer.getContext(); + context.enable(context.SAMPLE_ALPHA_TO_COVERAGE); + }; + this.worldWidth = worldWidth; + this.worldHeight = worldHeight; + } +} + +export class DomRenderEngine extends EventTarget { + constructor() { + super(); + + this.doms = []; + this.physicsObjects = []; + this.lastHover = false; + } + static getScaleFactor(width, height) { + return Math.min(1/width, 1/height); + } + addDom({ + position = new THREE.Vector3(), + quaternion = new THREE.Quaternion(), + scale = new THREE.Vector3(1, 1, 1), + width = 600, + height = 400, + worldWidth = 1, + render = () => (
), + }) { + const dom = new DomItem(position, quaternion, scale, width, height, worldWidth, render); + this.doms.push(dom); + this.physicsObjects.push(dom.physicsObject); + + this.dispatchEvent(new MessageEvent('update')); + + return dom; + } + removeDom(dom) { + const index = this.doms.indexOf(dom); + if (index !== -1) { + this.doms.splice(index, 1); + this.physicsObjects.splice(index, 1); + } + } + /* update() { + const hover = this.doms.some(dom => { + return false; + }); + if (hover !== this.lastHover) { + this.lastHover = hover; + + this.dispatchEvent(new MessageEvent('hover', { + data: { + hover, + }, + })); + } + } */ + getPhysicsObjects() { + return this.physicsObjects; + } + onBeforeRaycast() { + for (const dom of this.doms) { + dom.onBeforeRaycast(); + } + } + onAfterRaycast() { + for (const dom of this.doms) { + dom.onAfterRaycast(); + } + } + destroy() { + // XXX finish this + } +} +const domRenderer = new DomRenderEngine(); +export default domRenderer; \ No newline at end of file diff --git a/drop-manager.js b/drop-manager.js index 1b84b99890..2c2080bc14 100644 --- a/drop-manager.js +++ b/drop-manager.js @@ -1,9 +1,70 @@ -import * as THREE from "three"; -import metaversefile from "metaversefile"; +import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +import generateStats from './procgen/stats.js'; + +const r = () => -1 + Math.random() * 2; class DropManager extends EventTarget { constructor() { super(); + + this.claims = []; + } + createDropApp({ + start_url, + components = [], + type = 'minor', // 'minor', 'major', 'key' + position, + quaternion, + scale, + velocity = new THREE.Vector3(r(), 1 + Math.random(), r()) + .normalize() + .multiplyScalar(5), + angularVelocity = new THREE.Vector3(0, 0.001, 0), + voucher = 'fakeVoucher', // XXX should really throw if no voucher + }) { + // const r = () => (-0.5+Math.random())*2; + const dropComponent = { + key: 'drop', + value: { + type, + voucher, + velocity: velocity.toArray(), + angularVelocity: angularVelocity.toArray(), + }, + }; + components.push(dropComponent); + + const trackedApp = metaversefile.addTrackedApp( + start_url, + position, + quaternion, + scale, + components + ); + return trackedApp; + } + addClaim(name, contentId, voucher) { + const result = generateStats(contentId); + const {/*art, */stats} = result; + const {level} = stats; + const start_url = contentId; + const claim = { + name, + start_url, + level, + voucher, + }; + this.claims.push(claim); + + this.dispatchEvent(new MessageEvent('claimschange', { + data: { + claims: this.claims, + }, + })); + } + pickupApp(app) { + this.addClaim(app.name, app.contentId, app.getComponent('voucher')); } dropToken(contractAddress, tokenId, voucher) { // XXX engine implements this diff --git a/dual-contouring.js b/dual-contouring.js new file mode 100644 index 0000000000..2f1b1b7f0b --- /dev/null +++ b/dual-contouring.js @@ -0,0 +1,740 @@ +import Module from './public/dc.module.js' +import {Allocator} from './geometry-util.js'; +import {makePromise} from './util.js'; +import {defaultChunkSize} from './constants.js'; + +// + +const cbs = new Map(); + +// + +const align = (v, N) => { + const r = v % N; + return r === 0 ? v : v - r + N; +}; +const align4 = v => align(v, 4); + +// + +const w = {}; + +w.waitForLoad = Module.waitForLoad; + +w.free = address => { + Module._doFree(address); +}; + +let chunkSize = defaultChunkSize; +w.initialize = (newChunkSize, seed) => { + Module._initialize(newChunkSize, seed); + chunkSize = newChunkSize; +}; + +w.createInstance = () => Module._createInstance(); +w.destroyInstance = instance => Module._destroyInstance(instance); + +// + +/* std::vector TrackerTask::getBuffer() const { + size_t size = 0; + size += sizeof(vm::ivec3); // min + size += sizeof(int); // lod + size += sizeof(int); // isLeaf + size += sizeof(int[8]); // lodArray + + std::vector result(size); + int index = 0; + std::memcpy(result.data() + index, &maxLodNode->min, sizeof(vm::ivec3)); + index += sizeof(vm::ivec3); + *((int *)(result.data() + index)) = maxLodNode->size; + index += sizeof(int); + *((int *)(result.data() + index)) = (maxLodNode->type == Node_Leaf) ? 1 : 0; + index += sizeof(int); + std::memcpy(result.data() + index, &maxLodNode->lodArray, sizeof(int[8])); + index += sizeof(int[8]); + return result; +} +uint8_t *TrackerUpdate::getBuffer() const { + std::vector> oldTaskBuffers; + for (const auto &task : oldTasks) { + oldTaskBuffers.push_back(task->getBuffer()); + } + + std::vector> newTaskBuffers; + for (const auto &task : newTasks) { + newTaskBuffers.push_back(task->getBuffer()); + } + + size_t size = 0; + size += sizeof(uint32_t); // numOldTasks + size += sizeof(uint32_t); // numNewTasks + for (auto &buffer : oldTaskBuffers) { + size += buffer.size(); + } + for (auto &buffer : newTaskBuffers) { + size += buffer.size(); + } + + uint8_t *ptr = (uint8_t *)malloc(size); + int index = 0; + *((uint32_t *)(ptr + index)) = oldTasks.size(); + index += sizeof(uint32_t); + *((uint32_t *)(ptr + index)) = newTasks.size(); + index += sizeof(uint32_t); + memcpy(ptr + index, oldTaskBuffers.data(), oldTaskBuffers.size() * sizeof(oldTaskBuffers[0])); + index += oldTaskBuffers.size() * sizeof(oldTaskBuffers[0]); + memcpy(ptr + index, newTaskBuffers.data(), newTaskBuffers.size() * sizeof(newTaskBuffers[0])); + index += newTaskBuffers.size() * sizeof(newTaskBuffers[0]); + return ptr; +} */ + +const _parseTrackerUpdate = bufferAddress => { + const dataView = new DataView(Module.HEAPU8.buffer, bufferAddress); + let index = 0; + const numOldTasks = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const numNewTasks = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + + const _parseTrackerTask = () => { + const min = new Int32Array(Module.HEAPU8.buffer, bufferAddress + index, 3).slice(); + index += Int32Array.BYTES_PER_ELEMENT * 3; + const size = dataView.getInt32(index, true); + index += Int32Array.BYTES_PER_ELEMENT; + const isLeaf = !!dataView.getInt32(index, true); + index += Int32Array.BYTES_PER_ELEMENT; + const lodArray = new Int32Array(Module.HEAPU8.buffer, bufferAddress + index, 8).slice(); + index += Int32Array.BYTES_PER_ELEMENT * 8; + return { + min, + size, + isLeaf, + lodArray, + }; + }; + const oldTasks = []; + for (let i = 0; i < numOldTasks; i++) { + const oldTask = _parseTrackerTask(); + oldTasks.push(oldTask); + } + const newTasks = []; + for (let i = 0; i < numNewTasks; i++) { + const newTask = _parseTrackerTask(); + newTasks.push(newTask); + } + return { + oldTasks, + newTasks + }; +}; +w.createTracker = (inst, lod, minLodRange, trackY) => { + const result = Module._createTracker(inst, lod, minLodRange, trackY); + return result; +}; +w.destroyTracker = (inst, tracker) => Module._destroyTracker(inst, tracker); +w.trackerUpdateAsync = async (inst, taskId, tracker, position) => { + const allocator = new Allocator(Module); + + const positionArray = allocator.alloc(Float32Array, 3); + positionArray.set(position); + + Module._trackerUpdateAsync( + inst, + taskId, + tracker, + positionArray.byteOffset, + ); + const p = makePromise(); + cbs.set(taskId, p); + + allocator.freeAll(); + + const outputBufferOffset = await p; + const result = _parseTrackerUpdate(outputBufferOffset); + return result; +}; + +// + +const cubeDamage = damageFn => ( + inst, + x, y, z, + qx, qy, qz, qw, + sx, sy, sz, +) => { + const allocator = new Allocator(Module); + + try { + let numPositions = 8; + const positionsTypedArray = allocator.alloc(Float32Array, numPositions * 3); + const numPositionsTypedArray = allocator.alloc(Uint32Array, 1); + numPositionsTypedArray[0] = numPositions; + const lod = 1; + const gridPoints = chunkSize + 3 + lod; + const damageBufferSize = gridPoints * gridPoints * gridPoints; + const damageBuffersTypedArray = allocator.alloc(Float32Array, numPositions * gridPoints * gridPoints * gridPoints); + + const drew = damageFn( + inst, + x, y, z, + qx, qy, qz, qw, + sx, sy, sz, + positionsTypedArray.byteOffset, + numPositionsTypedArray.byteOffset, + damageBuffersTypedArray.byteOffset, + ); + + if (drew) { + numPositions = numPositionsTypedArray[0]; + const chunks = Array(numPositions); + for (let i = 0; i < numPositions; i++) { + const position = positionsTypedArray.slice(i * 3, i * 3 + 3); + const damageBuffer = damageBuffersTypedArray.slice(i * damageBufferSize, i * damageBufferSize + damageBufferSize); + chunks[i] = { + position, + damageBuffer, + }; + } + return chunks; + } else { + return null; + } + } finally { + allocator.freeAll(); + } +}; +w.drawCubeDamage = function() { + return cubeDamage(Module._drawCubeDamage.bind(Module)).apply(this, arguments); +}; +w.eraseCubeDamage = function() { + return cubeDamage(Module._eraseCubeDamage.bind(Module)).apply(this, arguments); +}; + +w.setClipRange = function(inst, range) { + Module._setClipRange( + inst, + range[0][0], range[0][1], range[0][2], + range[1][0], range[1][1], range[1][2] + ); +}; + +const sphereDamage = damageFn => ( + inst, + x, y, z, + radius, +) => { + const allocator = new Allocator(Module); + + try { + let numPositions = 8; + const positionsTypedArray = allocator.alloc(Float32Array, numPositions * 3); + const numPositionsTypedArray = allocator.alloc(Uint32Array, 1); + numPositionsTypedArray[0] = numPositions; + const drew = damageFn( + inst, + x, y, z, + radius, + positionsTypedArray.byteOffset, + numPositionsTypedArray.byteOffset + ); + + if (drew) { + numPositions = numPositionsTypedArray[0]; + const chunks = Array(numPositions); + for (let i = 0; i < numPositions; i++) { + const position = positionsTypedArray.slice(i * 3, (i + 1) * 3); + chunks[i] = { + position, + }; + } + return chunks; + } else { + return null; + } + } finally { + allocator.freeAll(); + } +}; +w.drawSphereDamage = function() { + return sphereDamage(Module._drawSphereDamage.bind(Module)).apply(this, arguments); +}; +w.eraseSphereDamage = function() { + return sphereDamage(Module._eraseSphereDamage.bind(Module)).apply(this, arguments); +}; + +/* w.injectDamage = function(inst, x, y, z, damageBuffer) { + const allocator = new Allocator(Module); + + const damageBufferTypedArray = allocator.alloc(Float32Array, damageBuffer.length); + damageBufferTypedArray.set(damageBuffer); + + try { + Module._injectDamage( + inst, + x, y, z, + damageBufferTypedArray.byteOffset, + ); + } finally { + allocator.freeAll(); + } +}; */ + +// + +const _parseTerrainVertexBuffer = (arrayBuffer, bufferAddress) => { + const dataView = new DataView(arrayBuffer, bufferAddress); + + let index = 0; + + // positions + const numPositions = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const positions = new Float32Array(arrayBuffer, bufferAddress + index, numPositions * 3); + index += Float32Array.BYTES_PER_ELEMENT * numPositions * 3; + + // normals + const numNormals = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const normals = new Float32Array(arrayBuffer, bufferAddress + index, numNormals * 3); + index += Float32Array.BYTES_PER_ELEMENT * numNormals * 3; + + // biomes + const numBiomes = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const biomes = new Int32Array(arrayBuffer, bufferAddress + index, numBiomes * 4); + index += Int32Array.BYTES_PER_ELEMENT * numBiomes * 4; + + // biomes weights + const numBiomesWeights = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const biomesWeights = new Float32Array(arrayBuffer, bufferAddress + index, numBiomesWeights * 4); + index += Float32Array.BYTES_PER_ELEMENT * numBiomesWeights * 4; + + // biomes uvs 1 + const numBiomesUvs1 = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const biomesUvs1 = new Float32Array(arrayBuffer, bufferAddress + index, numBiomesUvs1 * 4); + index += Float32Array.BYTES_PER_ELEMENT * numBiomesUvs1 * 4; + + // biomes uvs 2 + const numBiomesUvs2 = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const biomesUvs2 = new Float32Array(arrayBuffer, bufferAddress + index, numBiomesUvs2 * 4); + index += Float32Array.BYTES_PER_ELEMENT * numBiomesUvs2 * 4; + + // indices + const numIndices = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const indices = new Uint32Array(arrayBuffer, bufferAddress + index, numIndices); + index += Uint32Array.BYTES_PER_ELEMENT * numIndices; + + // skylights + const numSkylights = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const skylights = new Uint8Array(arrayBuffer, bufferAddress + index, numSkylights); + index += Uint8Array.BYTES_PER_ELEMENT * numSkylights; + index = align4(index); + + // aos + const numAos = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const aos = new Uint8Array(arrayBuffer, bufferAddress + index, numAos); + index += Uint8Array.BYTES_PER_ELEMENT * numAos; + index = align4(index); + + return { + bufferAddress, + positions, + normals, + biomes, + biomesWeights, + biomesUvs1, + biomesUvs2, + indices, + skylights, + aos, + }; +}; +w.createTerrainChunkMeshAsync = async (inst, taskId, x, y, z, lods) => { + const allocator = new Allocator(Module); + + const lodArray = allocator.alloc(Int32Array, 8); + lodArray.set(lods); + + Module._createTerrainChunkMeshAsync( + inst, + taskId, + x, y, z, + lodArray.byteOffset, + ); + const p = makePromise(); + cbs.set(taskId, p); + + allocator.freeAll(); + + const outputBufferOffset = await p; + + if (outputBufferOffset) { + const result = _parseTerrainVertexBuffer( + Module.HEAP8.buffer, + Module.HEAP8.byteOffset + outputBufferOffset + ); + return result; + } else { + return null; + } +}; + +// + +const _parseLiquidVertexBuffer = (arrayBuffer, bufferAddress) => { + const dataView = new DataView(arrayBuffer, bufferAddress); + + let index = 0; + + // positions + const numPositions = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const positions = new Float32Array(arrayBuffer, bufferAddress + index, numPositions * 3); + index += Float32Array.BYTES_PER_ELEMENT * numPositions * 3; + + // normals + const numNormals = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const normals = new Float32Array(arrayBuffer, bufferAddress + index, numNormals * 3); + index += Float32Array.BYTES_PER_ELEMENT * numNormals * 3; + + // biomes + const numBiomes = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const biomes = new Int32Array(arrayBuffer, bufferAddress + index, numBiomes); + index += Int32Array.BYTES_PER_ELEMENT * numBiomes; + + // indices + const numIndices = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const indices = new Uint32Array(arrayBuffer, bufferAddress + index, numIndices); + index += Uint32Array.BYTES_PER_ELEMENT * numIndices; + + return { + bufferAddress, + positions, + normals, + biomes, + indices, + }; +}; +w.createLiquidChunkMeshAsync = async (inst, taskId, x, y, z, lods) => { + const allocator = new Allocator(Module); + + const lodArray = allocator.alloc(Int32Array, 8); + lodArray.set(lods); + + Module._createLiquidChunkMeshAsync( + inst, + taskId, + x, y, z, + lodArray.byteOffset, + ); + + const p = makePromise(); + cbs.set(taskId, p); + const outputBufferOffset = await p; + + allocator.freeAll(); + + if (outputBufferOffset) { + const result = _parseLiquidVertexBuffer( + Module.HEAP8.buffer, + Module.HEAP8.byteOffset + outputBufferOffset + ); + return result; + } else { + return null; + } +}; + +// + +w.getChunkHeightfieldAsync = async (inst, taskId, x, z, lod) => { + // const allocator = new Allocator(Module); + + // const heights = allocator.alloc(Float32Array, chunkSize * chunkSize); + + // try { + Module._getChunkHeightfieldAsync( + inst, + taskId, + x, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const heights = await p; + + const heights2 = new Float32Array(Module.HEAPU8.buffer, heights, chunkSize * chunkSize).slice(); + Module._doFree(heights); + return heights2; + /* } finally { + // allocator.freeAll(); + } */ +}; +/* w.getHeightfieldRange = (inst, x, z, w, h, lod) => { + const allocator = new Allocator(Module); + + const heights = allocator.alloc(Float32Array, w * h); + + try { + Module._getHeightfieldRange( + inst, + x, z, + w, h, + lod, + heights.byteOffset + ); + return heights.slice(); + } finally { + allocator.freeAll(); + } +}; */ +w.getChunkSkylightAsync = async (inst, taskId, x, y, z, lod) => { + // const allocator = new Allocator(Module); + + // const gridPoints = chunkSize + 3 + lod; + // const skylights = allocator.alloc(Uint8Array, chunkSize * chunkSize * chunkSize); + + // try { + Module._getChunkSkylightAsync( + inst, + taskId, + x, y, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const skylights = await p; + + const skylights2 = new Uint8Array(Module.HEAPU8.buffer, skylights, chunkSize * chunkSize * chunkSize).slice(); + Module._doFree(skylights); + return skylights2; + /* } finally { + // allocator.freeAll(); + } */ +}; +w.getChunkAoAsync = async (inst, taskId, x, y, z, lod) => { + // const allocator = new Allocator(Module); + + // const aos = allocator.alloc(Uint8Array, chunkSize * chunkSize * chunkSize); + + // try { + Module._getChunkAoAsync( + inst, + taskId, + x, y, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const aos = await p; + + const aos2 = new Uint8Array(Module.HEAPU8.buffer, aos, chunkSize * chunkSize * chunkSize).slice(); + Module._doFree(aos); + return aos2; + /* } finally { + // allocator.freeAll(); + } */ +}; +/* w.getSkylightFieldRange = (inst, x, y, z, w, h, d, lod) => { + const allocator = new Allocator(Module); + + const skylights = allocator.alloc(Uint8Array, w * h * d); + + try { + Module._getSkylightFieldRange( + inst, + x, y, z, + w, h, d, + lod, + skylights.byteOffset + ); + return skylights.slice(); + } finally { + allocator.freeAll(); + } +}; +w.getAoFieldRange = (inst, x, y, z, w, h, d, lod) => { + const allocator = new Allocator(Module); + + const aos = allocator.alloc(Uint8Array, w * h * d); + + try { + Module._getAoFieldRange( + inst, + x, y, z, + w, h, d, + lod, + aos.byteOffset + ); + return aos.slice(); + } finally { + allocator.freeAll(); + } +}; */ + +function _parsePQI(addr) { + const dataView = new DataView(Module.HEAPU8.buffer, addr); + + let index = 0; + const psSize = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const ps = new Float32Array(dataView.buffer, dataView.byteOffset + index, psSize).slice(); + index += psSize * Float32Array.BYTES_PER_ELEMENT; + const qsSize = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const qs = new Float32Array(dataView.buffer, dataView.byteOffset + index, qsSize).slice(); + index += qsSize * Float32Array.BYTES_PER_ELEMENT; + const instancesSize = dataView.getUint32(index, true); + index += Uint32Array.BYTES_PER_ELEMENT; + const instances = new Float32Array(dataView.buffer, dataView.byteOffset + index, instancesSize).slice(); + index += instancesSize * Float32Array.BYTES_PER_ELEMENT; + + return { + ps, + qs, + instances, + }; +} +w.createGrassSplatAsync = async (inst, taskId, x, z, lod) => { + // const allocator = new Allocator(Module); + + // const allocSize = 64 * 1024; + // const ps = allocator.alloc(Float32Array, allocSize * 3); + // const qs = allocator.alloc(Float32Array, allocSize * 4); + // const instances = allocator.alloc(Float32Array, allocSize); + // const count = allocator.alloc(Uint32Array, 1); + + // try { + Module._createGrassSplatAsync( + inst, + taskId, + x, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const result = await p; + const pqi = _parsePQI(result); + // console.log('got result 1', _parsePQI(result)); + Module._doFree(result); + return pqi; + + /* const numElements = count[0]; + return { + ps: ps.slice(0, numElements * 3), + qs: qs.slice(0, numElements * 4), + instances: instances.slice(0, numElements), + }; */ + /* } finally { + // allocator.freeAll(); + } */ +}; +w.createVegetationSplatAsync = async (inst, taskId, x, z, lod) => { + // const allocator = new Allocator(Module); + + // const allocSize = 64 * 1024; + // const ps = allocator.alloc(Float32Array, allocSize * 3); + // const qs = allocator.alloc(Float32Array, allocSize * 4); + // const instances = allocator.alloc(Float32Array, allocSize); + // const count = allocator.alloc(Uint32Array, 1); + + // try { + Module._createVegetationSplatAsync( + inst, + taskId, + x, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const result = await p; + + const pqi = _parsePQI(result); + // console.log('got result 2', _parsePQI(result)); + Module._doFree(result); + return pqi; + /* const numElements = count[0]; + return { + ps: ps.slice(0, numElements * 3), + qs: qs.slice(0, numElements * 4), + instances: instances.slice(0, numElements), + }; */ + /* } finally { + // allocator.freeAll(); + } */ +}; +w.createMobSplatAsync = async (inst, taskId, x, z, lod) => { + // const allocator = new Allocator(Module); + + /* const allocSize = 64 * 1024; + const ps = allocator.alloc(Float32Array, allocSize * 3); + const qs = allocator.alloc(Float32Array, allocSize * 4); + const instances = allocator.alloc(Float32Array, allocSize); + const count = allocator.alloc(Uint32Array, 1); */ + + // try { + Module._createMobSplatAsync( + inst, + taskId, + x, z, + lod + ); + + const p = makePromise(); + cbs.set(taskId, p); + const result = await p; + const pqi = _parsePQI(result); + // console.log('got result 3', _parsePQI(result)); + Module._doFree(result); + return pqi; + + /* const numElements = count[0]; + return { + ps: ps.slice(0, numElements * 3), + qs: qs.slice(0, numElements * 4), + instances: instances.slice(0, numElements), + }; */ + /* } finally { + // allocator.freeAll(); + } */ +}; +// _parsePQI parses ps, qs, instances from a buffer +// the buffer contains 6 entries: +// ps size (uint32_t) +// ps data (float32_t) * size +// qs size (uint32_t) +// qs data (float32_t) * size +// instances size (uint32_t) +// instances data (float32_t) * size + +w.cancelTask = async (inst, taskId) => { + // console.log('cancel task', inst, taskId); + Module._cancelTask(inst, taskId); +}; + +globalThis.handleResult = (id, result) => { + const p = cbs.get(id); + if (p) { + cbs.delete(id); + p.accept(result); + } else { + console.warn('failed to find promise for id', id, result); + } +}; + +export default w; \ No newline at end of file diff --git a/engine-worker.js b/engine-worker.js index 5deefe78d1..b970d814cd 100644 --- a/engine-worker.js +++ b/engine-worker.js @@ -2,6 +2,14 @@ import { bindCanvas, } from './renderer.js'; +window.addEventListener('message', e => { + const method = e.data?.method; + if (method === 'initializeEngine') { + const {port} = e.data; + _bindPort(port); + } +}); + const isTransferable = o => { const ctor = o?.constructor; return ctor === MessagePort || @@ -46,9 +54,8 @@ async function import2(s) { if (s.startsWith(prefix)) { s = s.slice(prefix.length); } - s = `/@proxy/${s}`; + s = `/@proxy/${encodeURI(s)}`; } - // console.log('do import', s); try { const m = await import(s); return m; @@ -58,20 +65,9 @@ async function import2(s) { } } -const canvas = document.getElementById('canvas'); -window.innerWidth = canvas.width; -window.innerHeight = canvas.height; -window.devicePixelRatio = 1; -bindCanvas(canvas); - -const match = location.hash.match(/^#id=(.+)$/); -const id = match ? match[1] : null; -if (id) { - const messageChannel = new MessageChannel(); - const port = messageChannel.port1; +const _bindPort = port => { const handlers = new Map(); port.addEventListener('message', async e => { - // console.log('engine worker got port message', e); const {method, id} = e.data; const respond = (error = null, result = null, transfers = []) => { port.postMessage({ @@ -96,7 +92,7 @@ if (id) { handlers.set(handlerId, fn); result = 'ok'; } else { - console.warn('bad module', module) + console.warn('engine worker bad module', module); throw new Error('engine worker module default export is not a function'); } } catch(err) { @@ -110,9 +106,9 @@ if (id) { const {handlerId, args} = e.data; const handler = handlers.get(handlerId); if (handler) { - let error = null; - let result = null; - let transfers = []; + let error; + let result; + let transfers; try { result = await handler.apply(null, args); transfers = getTransferables(result); @@ -131,16 +127,21 @@ if (id) { break; } } - // console.log('got message', e.data); } }); port.start(); +}; + +const canvas = document.getElementById('canvas'); +window.innerWidth = canvas.width; +window.innerHeight = canvas.height; +window.devicePixelRatio = 1; +bindCanvas(canvas); - window.parent.postMessage({ - method: 'engineReady', - id, - port: messageChannel.port2, - }, '*', [messageChannel.port2]); +const match = location.hash.match(/^#id=(.+)$/); +const id = match ? match[1] : null; +if (id) { + // nothing } else { throw new Error('no id in engine worker'); } \ No newline at end of file diff --git a/game.js b/game.js index fbc5170653..282cf76e88 100644 --- a/game.js +++ b/game.js @@ -1,37 +1,30 @@ /* this file contains the main game logic tying together the managers. general game logic goes here. +usually, code starts here and is migrated to an appropriate manager. */ import * as THREE from 'three'; -// import {GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader.js'; import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; import physx from './physx.js'; import cameraManager from './camera-manager.js'; -// import uiManager from './ui-manager.js'; import ioManager from './io-manager.js'; -// import {loginManager} from './login.js'; -// import physicsManager from './physics-manager.js'; import dioramaManager from './diorama.js'; import {world} from './world.js'; -// import * as universe from './universe.js'; import {buildMaterial, highlightMaterial, selectMaterial, hoverMaterial, hoverEquipmentMaterial} from './shaders.js'; -import {teleportMeshes} from './teleport.js'; import {getRenderer, sceneLowPriority, camera} from './renderer.js'; import {downloadFile, snapPosition, getDropUrl, handleDropJsonItem} from './util.js'; -import {maxGrabDistance, throwReleaseTime, storageHost, minFov, maxFov} from './constants.js'; -// import easing from './easing.js'; -// import {VoicePack} from './voice-pack-voicer.js'; -// import {VoiceEndpoint} from './voice-endpoint-voicer.js'; +import {maxGrabDistance, throwReleaseTime, storageHost, minFov, maxFov, throwAnimationDuration} from './constants.js'; import metaversefileApi from './metaversefile-api.js'; -// import metaversefileConstants from 'metaversefile/constants.module.js'; import * as metaverseModules from './metaverse-modules.js'; import loadoutManager from './loadout-manager.js'; -// import soundManager from './sound-manager.js'; -import {generateObjectUrlCard} from './card-generator.js'; import * as sounds from './sounds.js'; - -// const {contractNames} = metaversefileConstants; +import {getLocalPlayer, setLocalPlayer} from './players.js'; +import physicsManager from './physics-manager.js'; +import npcManager from './npc-manager.js'; +import raycastManager from './raycast-manager.js'; +import zTargeting from './z-targeting.js'; +import Avatar from './avatars/avatars.js'; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); @@ -49,15 +42,20 @@ const localMatrix2 = new THREE.Matrix4(); const localMatrix3 = new THREE.Matrix4(); // const localBox = new THREE.Box3(); const localRay = new THREE.Ray(); -// const localRaycaster = new THREE.Raycaster(); -// const oneVector = new THREE.Vector3(1, 1, 1); +// +const physicsScene = physicsManager.getScene(); +let isMouseUp = false; + +// const zeroVector = new THREE.Vector3(0, 0, 0); +// const oneVector = new THREE.Vector3(1, 1, 1); // const cubicBezier = easing(0, 1, 0, 1); +// let redMesh = null; const _getGrabAction = i => { const targetHand = i === 0 ? 'left' : 'right'; - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const grabAction = localPlayer.findAction(action => action.type === 'grab' && action.hand === targetHand); return grabAction; }; @@ -76,13 +74,7 @@ function updateGrabbedObject(o, grabMatrix, offsetMatrix, {collisionEnabled, han localMatrix.multiplyMatrices(grabMatrix, offsetMatrix) .decompose(localVector5, localQuaternion3, localVector6); - /* const grabbedObject = _getGrabbedObject(0); - const grabbedPhysicsObjects = grabbedObject ? grabbedObject.getPhysicsObjects() : []; - for (const physicsObject of grabbedPhysicsObjects) { - physx.physxWorker.disableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); - } */ - - let collision = collisionEnabled && physx.physxWorker.raycastPhysics(physx.physics, localVector, localQuaternion); + let collision = collisionEnabled && physicsScene.raycast(localVector, localQuaternion); if (collision) { // console.log('got collision', collision); const {point} = collision; @@ -97,10 +89,6 @@ function updateGrabbedObject(o, grabMatrix, offsetMatrix, {collisionEnabled, han o.position.copy(localVector5); } - /* for (const physicsObject of grabbedPhysicsObjects) { - physx.physxWorker.enableGeometryQueriesPhysics(physx.physics, physicsObject.physicsId); - } */ - const handSnap = !handSnapEnabled || offset >= maxGrabDistance || !!collision; if (handSnap) { snapPosition(o, gridSnap); @@ -114,6 +102,74 @@ function updateGrabbedObject(o, grabMatrix, offsetMatrix, {collisionEnabled, han }; } +const _getCurrentGrabAnimation = () => { + let currentAnimation = ''; + const localPlayer = getLocalPlayer(); + + const wearComponent = grabUseMesh.targetApp.getComponent('wear'); + if (wearComponent && wearComponent.grabAnimation === 'pick_up') { + currentAnimation = wearComponent.grabAnimation; + } else { + const grabUseMeshPosition = grabUseMesh.position; + let currentDistance = 100; + + // Forward + { + localVector.set(0, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) + .add(localPlayer.position); + const distance = grabUseMeshPosition.distanceTo(localVector); + currentDistance = distance; + currentAnimation = 'grab_forward'; + } + + // Down + { + localVector.set(0, -1.2, -0.5).applyQuaternion(localPlayer.quaternion) + .add(localPlayer.position); + const distance = grabUseMeshPosition.distanceTo(localVector); + if (distance < currentDistance) { + currentDistance = distance; + currentAnimation = 'grab_down'; + } + } + + // Up + { + localVector.set(0, 0.0, -0.5).applyQuaternion(localPlayer.quaternion) + .add(localPlayer.position); + const distance = grabUseMeshPosition.distanceTo(localVector); + if (distance < currentDistance) { + currentDistance = distance; + currentAnimation = 'grab_up'; + } + } + + // Left + { + localVector.set(-0.8, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) + .add(localPlayer.position); + const distance = grabUseMeshPosition.distanceTo(localVector); + if (distance < currentDistance) { + currentDistance = distance; + currentAnimation = 'grab_left'; + } + } + + // Right + { + localVector.set(0.8, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) + .add(localPlayer.position); + const distance = grabUseMeshPosition.distanceTo(localVector); + if (distance < currentDistance) { + currentDistance = distance; + currentAnimation = 'grab_right'; + } + } + } + + return currentAnimation; +}; + const _makeTargetMesh = (() => { const targetMeshGeometry = (() => { const targetGeometry = BufferGeometryUtils.mergeBufferGeometries([ @@ -182,12 +238,10 @@ const _makeTargetMesh = (() => { const material = new THREE.ShaderMaterial({ uniforms: { uHighlight: { - type: 'f', value: 0, needsUpdate: true, }, uTime: { - type: 'f', value: 0, needsUpdate: true, }, @@ -290,7 +344,7 @@ const _use = () => { const _delete = () => { const grabbedObject = _getGrabbedObject(0); if (grabbedObject) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.ungrab(); world.appManager.removeTrackedApp(grabbedObject.instanceId); @@ -308,9 +362,9 @@ const _delete = () => { gameManager.setMouseSelectedObject(null); } }; -const _click = () => { +const _click = e => { if (_getGrabbedObject(0)) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.ungrab(); } else { if (highlightedPhysicsObject) { @@ -327,11 +381,11 @@ const _getNextUseIndex = animationCombo => { } } const _startUse = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); const wearApp = loadoutManager.getSelectedApp(); if (wearApp) { const useComponent = wearApp.getComponent('use'); if (useComponent) { + const localPlayer = getLocalPlayer(); const useAction = localPlayer.getAction('use'); if (!useAction) { const {instanceId} = wearApp; @@ -360,7 +414,7 @@ const _startUse = () => { } }; const _endUse = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const useAction = localPlayer.getAction('use'); if (useAction) { const app = metaversefileApi.getAppByInstanceId(useAction.instanceId); @@ -375,11 +429,11 @@ const _mousedown = () => { _startUse(); }; const _mouseup = () => { - _endUse(); + isMouseUp = true; }; const _grab = object => { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.grab(object); gameManager.gridSnap = 0; @@ -390,7 +444,6 @@ const hitRadius = 1; const hitHeight = 0.2; const hitHalfHeight = hitHeight * 0.5; const hitboxOffsetDistance = 0.3; -const damageMeshOffsetDistance = 1.5; /* const cylinderMesh = (() => { const radius = 1; const height = 0.2; @@ -416,21 +469,18 @@ const _gameInit = () => { await grabUseMesh.addModule(m); })(); grabUseMesh.targetApp = null; + grabUseMesh.targetPhysicsId = -1; sceneLowPriority.add(grabUseMesh); }; Promise.resolve() .then(_gameInit); -// let lastDraggingRight = false; -// let dragRightSpec = null; let lastActivated = false; let lastThrowing = false; -let lastHitTimes = new WeakMap(); const _gameUpdate = (timestamp, timeDiff) => { const now = timestamp; const renderer = getRenderer(); - - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const _handlePush = () => { if (gameManager.canPush()) { @@ -443,106 +493,10 @@ const _gameUpdate = (timestamp, timeDiff) => { }; _handlePush(); - const _updateActivateAnimation = grabUseMeshPosition => { - let currentDistance = 100; - let currentAnimation = "grab_forward"; - - // Forward - { - localVector.set(0, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) - .add(localPlayer.position); - const distance = grabUseMeshPosition.distanceTo(localVector); - currentDistance = distance; - } - - // Down - { - localVector.set(0, -1.2, -0.5).applyQuaternion(localPlayer.quaternion) - .add(localPlayer.position); - const distance = grabUseMeshPosition.distanceTo(localVector); - if (distance < currentDistance) { - currentDistance = distance; - currentAnimation = "grab_down"; - } - } - - // Up - { - localVector.set(0, 0.0, -0.5).applyQuaternion(localPlayer.quaternion) - .add(localPlayer.position); - const distance = grabUseMeshPosition.distanceTo(localVector); - if (distance < currentDistance) { - currentDistance = distance; - currentAnimation = "grab_up"; - } - } - - // Left - { - localVector.set(-0.8, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) - .add(localPlayer.position); - const distance = grabUseMeshPosition.distanceTo(localVector); - if (distance < currentDistance) { - currentDistance = distance; - currentAnimation = "grab_left"; - } - } - - // Right - { - localVector.set(0.8, -0.5, -0.5).applyQuaternion(localPlayer.quaternion) - .add(localPlayer.position); - const distance = grabUseMeshPosition.distanceTo(localVector); - if (distance < currentDistance) { - currentDistance = distance; - currentAnimation = "grab_right"; - } - } - - if (localPlayer.getAction('activate')) { - localPlayer.getAction('activate').animationName = currentAnimation; - } - - // return (currentDistance < 0.8); - }; - const _updateGrab = () => { - // moveMesh.visible = false; - const renderer = getRenderer(); const _isWear = o => localPlayer.findAction(action => action.type === 'wear' && action.instanceId === o.instanceId); - for (let i = 0; i < 2; i++) { - const grabAction = _getGrabAction(i); - const grabbedObject = _getGrabbedObject(i); - if (grabbedObject && !_isWear(grabbedObject)) { - const {position, quaternion} = renderer.xr.getSession() ? localPlayer[hand === 'left' ? 'leftHand' : 'rightHand'] : camera; - localMatrix.compose(position, quaternion, localVector.set(1, 1, 1)); - grabbedObject.updateMatrixWorld(); - - /* const {handSnap} = */updateGrabbedObject(grabbedObject, localMatrix, localMatrix3.fromArray(grabAction.matrix), { - collisionEnabled: true, - handSnapEnabled: true, - physx, - gridSnap: gameManager.getGridSnap(), - }); - - grabbedObject.updateMatrixWorld(); - - grabUseMesh.position.copy(camera.position) - .add( - localVector.copy(grabbedObject.position) - .sub(camera.position) - .normalize() - .multiplyScalar(3) - ); - grabUseMesh.quaternion.copy(camera.quaternion); - grabUseMesh.updateMatrixWorld(); - // grabUseMesh.visible = true; - grabUseMesh.targetApp = grabbedObject; - grabUseMesh.setComponent('value', localPlayer.actionInterpolants.activate.getNormalized()); - } - } grabUseMesh.visible = false; if (!gameManager.editMode) { const avatarHeight = localPlayer.avatar ? localPlayer.avatar.height : 0; @@ -551,52 +505,111 @@ const _gameUpdate = (timestamp, timeDiff) => { const radius = 1; const halfHeight = 0.1; - const collision = physx.physxWorker.getCollisionObjectPhysics(physx.physics, radius, halfHeight, localVector, localPlayer.quaternion); + const collision = physicsScene.getCollisionObject(radius, halfHeight, localVector, localPlayer.quaternion); if (collision) { const physicsId = collision.objectId; const object = metaversefileApi.getAppByPhysicsId(physicsId); + // console.log('got collision', physicsId, object); const physicsObject = metaversefileApi.getPhysicsObjectByPhysicsId(physicsId); - // console.log('got object', physicsId, object); if (object && !_isWear(object) && physicsObject) { grabUseMesh.position.setFromMatrixPosition(physicsObject.physicsMesh.matrixWorld); grabUseMesh.quaternion.copy(camera.quaternion); - // grabUseMesh.scale.copy(grabbedObject.scale); grabUseMesh.updateMatrixWorld(); - //grabUseMesh.visible = true; grabUseMesh.targetApp = object; + grabUseMesh.targetPhysicsId = physicsId; grabUseMesh.setComponent('value', localPlayer.actionInterpolants.activate.getNormalized()); - _updateActivateAnimation(grabUseMesh.position); grabUseMesh.visible = true; } } } + + for (let i = 0; i < 2; i++) { + const grabAction = _getGrabAction(i); + const grabbedObject = _getGrabbedObject(i); + if (grabbedObject && !_isWear(grabbedObject)) { + const {position, quaternion} = renderer.xr.getSession() ? localPlayer[hand === 'left' ? 'leftHand' : 'rightHand'] : camera; + localMatrix.compose(position, quaternion, localVector.set(1, 1, 1)); + grabbedObject.updateMatrixWorld(); + + updateGrabbedObject(grabbedObject, localMatrix, localMatrix3.fromArray(grabAction.matrix), { + collisionEnabled: true, + handSnapEnabled: true, + physx, + gridSnap: gameManager.getGridSnap(), + }); + + grabUseMesh.setComponent('value', localPlayer.actionInterpolants.activate.getNormalized()); + } + } }; _updateGrab(); + zTargeting.update(timestamp, timeDiff); + + const _handlePickUp = () => { + const pickUpAction = localPlayer.getAction('pickUp'); + if (pickUpAction) { + const {instanceId} = pickUpAction; + const app = metaversefileApi.getAppByInstanceId(instanceId); + + const _removeApp = () => { + if (app.parent) { + app.oldParent = app.parent; + app.parent.remove(app); + } + }; + const _addApp = () => { + app.oldParent.add(app); + app.oldParent = null; + }; + + _removeApp(); + + const animations = Avatar.getAnimations(); + const pickUpZeldaAnimation = animations.find(a => a.name === 'pick_up_zelda.fbx'); + const pickUpTime = localPlayer.actionInterpolants.pickUp.get(); + const pickUpTimeS = pickUpTime / 1000; + if (pickUpTimeS < pickUpZeldaAnimation.duration) { + // still playing the pick up animation + } else { + // idling + + _addApp(); + + const handsAveragePosition = localVector.setFromMatrixPosition(localPlayer.avatar.modelBones.Left_wrist.matrixWorld) + .add(localVector2.setFromMatrixPosition(localPlayer.avatar.modelBones.Right_wrist.matrixWorld)) + .divideScalar(2) + .add(localVector2.set(0, 0.2, 0)); + app.position.copy(handsAveragePosition); + localEuler.setFromQuaternion(localPlayer.quaternion, 'YXZ'); + localEuler.x = 0; + localEuler.y += Math.PI; + localEuler.z = 0; + app.quaternion.setFromEuler(localEuler); + app.updateMatrixWorld(); + + // console.log('got pickUpTime', pickUpTime, animations); + // debugger; + } + } /* else { + + } */ + ioManager.setMovementEnabled(!pickUpAction); + } + _handlePickUp(); + const _handlePhysicsHighlight = () => { highlightedPhysicsObject = null; if (gameManager.editMode) { - /* const grabbedObject = _getGrabbedObject(0); - const grabbedPhysicsIds = (grabbedObject && grabbedObject.getPhysicsIds) ? grabbedObject.getPhysicsIds() : []; - for (const physicsId of grabbedPhysicsIds) { - // physx.physxWorker.disableGeometryPhysics(physx.physics, physicsId); - physx.physxWorker.disableGeometryQueriesPhysics(physx.physics, physicsId); - } */ - - const {position, quaternion} = renderer.xr.getSession() ? metaversefileApi.useLocalPlayer().leftHand : camera; - const collision = physx.physxWorker.raycastPhysics(physx.physics, position, quaternion); + const {position, quaternion} = renderer.xr.getSession() ? localPlayer.leftHand : camera; + const collision = physicsScene.raycast(position, quaternion); if (collision) { const physicsId = collision.objectId; highlightedPhysicsObject = metaversefileApi.getAppByPhysicsId(physicsId); highlightedPhysicsId = physicsId; } - - /* for (const physicsId of grabbedPhysicsIds) { - // physx.physxWorker.enableGeometryPhysics(physx.physics, physicsId); - physx.physxWorker.enableGeometryQueriesPhysics(physx.physics, physicsId); - } */ } }; _handlePhysicsHighlight(); @@ -609,15 +622,13 @@ const _gameUpdate = (timestamp, timeDiff) => { highlightedPhysicsObject.updateMatrixWorld(); - const physicsObject = /*window.lolPhysicsObject ||*/ metaversefileApi.getPhysicsObjectByPhysicsId(physicsId); + const physicsObject = metaversefileApi.getPhysicsObjectByPhysicsId(physicsId); if (physicsObject) { const {physicsMesh} = physicsObject; highlightPhysicsMesh.geometry = physicsMesh.geometry; - // highlightPhysicsMesh.matrix.copy(physicsObject.matrix); highlightPhysicsMesh.matrixWorld.copy(physicsMesh.matrixWorld) .decompose(highlightPhysicsMesh.position, highlightPhysicsMesh.quaternion, highlightPhysicsMesh.scale); - // highlightPhysicsMesh.updateMatrixWorld(); - // window.highlightPhysicsMesh = highlightPhysicsMesh; + highlightPhysicsMesh.material.uniforms.uTime.value = (now%1500)/1500; highlightPhysicsMesh.material.uniforms.uTime.needsUpdate = true; highlightPhysicsMesh.material.uniforms.uColor.value.setHex(buildMaterial.uniforms.uColor.value.getHex()); @@ -632,12 +643,10 @@ const _gameUpdate = (timestamp, timeDiff) => { const _updateMouseHighlight = () => { mouseHighlightPhysicsMesh.visible = false; - const h = mouseHoverObject; - if (h /*&& !gameManager.dragging*/) { - const physicsId = mouseHoverPhysicsId; - - const physicsObject = metaversefileApi.getPhysicsObjectByPhysicsId(physicsId); - if (physicsObject) { + if (gameManager.hoverEnabled) { + const collision = raycastManager.getCollision(); + if (collision) { + const {physicsObject/*, physicsId*/} = collision; const {physicsMesh} = physicsObject; mouseHighlightPhysicsMesh.geometry = physicsMesh.geometry; localMatrix2.copy(physicsMesh.matrixWorld) @@ -645,8 +654,9 @@ const _gameUpdate = (timestamp, timeDiff) => { .decompose(mouseHighlightPhysicsMesh.position, mouseHighlightPhysicsMesh.quaternion, mouseHighlightPhysicsMesh.scale); mouseHighlightPhysicsMesh.material.uniforms.uTime.value = (now%1500)/1500; mouseHighlightPhysicsMesh.material.uniforms.uTime.needsUpdate = true; - mouseHighlightPhysicsMesh.visible = true; mouseHighlightPhysicsMesh.updateMatrixWorld(); + + mouseHighlightPhysicsMesh.visible = true; } } }; @@ -663,7 +673,6 @@ const _gameUpdate = (timestamp, timeDiff) => { if (physicsObject) { const {physicsMesh} = physicsObject; mouseSelectPhysicsMesh.geometry = physicsMesh.geometry; - // window.geometry = mouseSelectPhysicsMesh.geometry; // update matrix { @@ -736,16 +745,6 @@ const _gameUpdate = (timestamp, timeDiff) => { }; _updateMouseDomEquipmentHover(); - const _handleTeleport = () => { - if (localPlayer.avatar) { - teleportMeshes[1].update(localPlayer.avatar.inputs.leftGamepad.position, localPlayer.avatar.inputs.leftGamepad.quaternion, ioManager.currentTeleport, (p, q) => physx.physxWorker.raycastPhysics(physx.physics, p, q), (position, quaternion) => { - const localPlayer = metaversefileApi.useLocalPlayer(); - localPlayer.teleportTo(position, quaternion); - }); - } - }; - _handleTeleport(); - const _handleClosestObject = () => { const apps = world.appManager.apps; if (apps.length > 0) { @@ -876,13 +875,14 @@ const _gameUpdate = (timestamp, timeDiff) => { _updateDrags(); */ const _updateActivate = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); const v = localPlayer.actionInterpolants.activate.getNormalized(); const currentActivated = v >= 1; if (currentActivated && !lastActivated) { if (grabUseMesh.targetApp) { - grabUseMesh.targetApp.activate(); + grabUseMesh.targetApp.activate({ + physicsId: grabUseMesh.targetPhysicsId, + }); } localPlayer.removeAction('activate'); } @@ -890,8 +890,16 @@ const _gameUpdate = (timestamp, timeDiff) => { }; _updateActivate(); + const _updateThirdPerson = () => { + const firstPerson = cameraManager.getMode() === 'firstperson'; + if (firstPerson !== lastFirstPerson) { + _setFirstPersonAction(firstPerson); + lastFirstPerson = firstPerson; + } + }; + _updateThirdPerson(); + const _updateThrow = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); const useAction = localPlayer.getAction('use'); if (useAction && useAction.behavior === 'throw') { const v = localPlayer.actionInterpolants.use.get() / throwReleaseTime; @@ -901,7 +909,11 @@ const _gameUpdate = (timestamp, timeDiff) => { // console.log('got throw action', useAction, localPlayer); const app = metaversefileApi.getAppByInstanceId(useAction.instanceId); - localPlayer.unwear(app); + localPlayer.unwear(app, { + dropStartPosition: localVector.copy(localPlayer.position) + .add(localVector2.set(0, 0.5, -1).applyQuaternion(localPlayer.quaternion)), + dropDirection: localVector2.set(0, 0.2, -1).normalize().applyQuaternion(localPlayer.quaternion), + }); } lastThrowing = currentThrowing; } @@ -915,49 +927,16 @@ const _gameUpdate = (timestamp, timeDiff) => { localVector.copy(localPlayer.position) .add(localVector2.set(0, 0, -hitboxOffsetDistance).applyQuaternion(localPlayer.quaternion)); - const collision = physx.physxWorker.getCollisionObjectPhysics( - physx.physics, - hitRadius, - hitHalfHeight, - localVector, - localPlayer.quaternion, - ); - if (collision) { - const collisionId = collision.objectId; - const result = metaversefileApi.getPairByPhysicsId(collisionId); - if (result) { - const [app, physicsObject] = result; - const lastHitTime = lastHitTimes.get(app) ?? 0; - const timeDiff = now - lastHitTime; - if (timeDiff > 1000) { - const damage = typeof useAction.damage === 'number' ? useAction.damage : 10; - const hitDirection = app.position.clone() - .sub(localPlayer.position); - hitDirection.y = 0; - hitDirection.normalize(); - - const hitPosition = localVector.copy(localPlayer.position) - .add(localVector2.set(0, 0, -damageMeshOffsetDistance).applyQuaternion(localPlayer.quaternion)) - .clone(); - localEuler.setFromQuaternion(camera.quaternion, 'YXZ'); - localEuler.x = 0; - localEuler.z = 0; - const hitQuaternion = new THREE.Quaternion().setFromEuler(localEuler); - - // const willDie = app.willDieFrom(damage); - app.hit(damage, { - collisionId, - physicsObject, - hitPosition, - hitQuaternion, - hitDirection, - // willDie, - }); - - lastHitTimes.set(app, now); - } - } - } + localPlayer.characterHitter.attemptHit({ + type: 'sword', + args: { + hitRadius, + hitHalfHeight, + position: localVector, + quaternion: localPlayer.quaternion, + }, + timestamp, + }); }; switch (useAction.behavior) { @@ -973,14 +952,14 @@ const _gameUpdate = (timestamp, timeDiff) => { }; _updateBehavior(); - const _updateEyes = () => { + const _updateMouseLook = () => { if (localPlayer.avatar) { if (mouseSelectedObject && mouseSelectedPosition) { // console.log('got', mouseSelectedObject.position.toArray().join(',')); localPlayer.avatar.eyeTarget.copy(mouseSelectedPosition); localPlayer.avatar.eyeTargetInverted = true; localPlayer.avatar.eyeTargetEnabled = true; - } else if (!cameraManager.pointerLockElement && lastMouseEvent) { + } else if (!cameraManager.pointerLockElement && !cameraManager.target && lastMouseEvent) { const renderer = getRenderer(); const size = renderer.getSize(localVector); @@ -988,34 +967,52 @@ const _gameUpdate = (timestamp, timeDiff) => { .unproject(camera); localPlayer.avatar.eyeTargetInverted = false; localPlayer.avatar.eyeTargetEnabled = true; + } else if (zTargeting?.focusTargetReticle?.position) { + localPlayer.avatar.eyeTarget.copy(zTargeting.focusTargetReticle.position); + localPlayer.avatar.eyeTargetInverted = true; + localPlayer.avatar.eyeTargetEnabled = true; } else { localPlayer.avatar.eyeTargetEnabled = false; } } }; - _updateEyes(); + _updateMouseLook(); const crosshairEl = document.getElementById('crosshair'); if (crosshairEl) { const visible = !!cameraManager.pointerLockElement && - (['camera', 'firstperson', 'thirdperson'].includes(cameraManager.getMode()) || metaversefileApi.useLocalPlayer().hasAction('aim')) && + (['camera', 'firstperson', 'thirdperson'].includes(cameraManager.getMode()) || localPlayer.hasAction('aim')) && !_getGrabbedObject(0); crosshairEl.style.visibility = visible ? null : 'hidden'; } + + const _updateUse = () => { + const useAction = localPlayer.getAction('use'); + if (useAction) { + if (useAction.animation === 'pickUpThrow') { + const useTime = localPlayer.actionInterpolants.use.get(); + if (useTime / 1000 >= throwAnimationDuration) { + _endUse(); + } + } else if (isMouseUp) { + _endUse(); + } + + } + isMouseUp = false; + }; + _updateUse(); }; const _pushAppUpdates = () => { world.appManager.pushAppUpdates(); - /*const localPlayer = metaversefileApi.useLocalPlayer(); - localPlayer.appManager.pushAppUpdates();*/ - const remotePlayers = metaversefileApi.useRemotePlayers(); // Might have to be removed too for (const remotePlayer of remotePlayers) { remotePlayer.appManager.pushAppUpdates(); } }; const _pushPlayerUpdates = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.pushPlayerUpdates(); }; @@ -1047,7 +1044,7 @@ const _bindPointerLock = () => { _bindPointerLock(); const _setFirstPersonAction = firstPerson => { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); if (firstPerson) { if (!localPlayer.hasAction('firstperson')) { const aimAction = { @@ -1059,14 +1056,14 @@ const _setFirstPersonAction = firstPerson => { localPlayer.removeAction('firstperson'); } }; -if (cameraManager.getMode() === 'firstperson') { - _setFirstPersonAction(true); -} -cameraManager.addEventListener('modechange', e => { +let lastFirstPerson = cameraManager.getMode() === 'firstperson'; +_setFirstPersonAction(lastFirstPerson); +/* cameraManager.addEventListener('modechange', e => { + // XXX need to do this in the frame loop instead const {mode} = e.data; const firstPerson = mode === 'firstperson'; _setFirstPersonAction(firstPerson); -}); +}); */ let lastMouseEvent = null; class GameManager extends EventTarget { @@ -1119,8 +1116,8 @@ class GameManager extends EventTarget { menuDelete() { _delete(); } - menuClick() { - _click(); + menuClick(e) { + _click(e); } menuMouseDown() { _mousedown(); @@ -1129,9 +1126,8 @@ class GameManager extends EventTarget { _mouseup(); } menuAim() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); if (!localPlayer.hasAction('aim')) { - const localPlayer = metaversefileApi.useLocalPlayer(); const wearApp = loadoutManager.getSelectedApp(); const wearAimApp = (() => { if (wearApp) { @@ -1160,24 +1156,21 @@ class GameManager extends EventTarget { } } menuUnaim() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const aimAction = localPlayer.getAction('aim'); if (aimAction) { localPlayer.removeAction('aim'); } } - menuDragdown(e) { - cameraManager.setFocus(true); + menuMiddleDown() { + zTargeting.handleDown(); - // this.dragging = true; - - /* world.appManager.dispatchEvent(new MessageEvent('dragchange', { - data: { - dragging: this.dragging, - }, - })); */ + // zTargetCenter + // zTargetObject + // zTargetEnemy + // zTargetCancel } - menuDrag(e) { + menuMiddle() { /* const {movementX, movementY} = e; if (Math.abs(movementX) < 100 && Math.abs(movementY) < 100) { // hack around a Chrome bug camera.position.add(localVector.copy(cameraManager.getCameraOffset()).applyQuaternion(camera.quaternion)); @@ -1192,8 +1185,8 @@ class GameManager extends EventTarget { camera.updateMatrixWorld(); } */ } - menuDragup() { - cameraManager.setFocus(false); + menuMiddleUp() { + zTargeting.handleUp(); // this.dragging = false; @@ -1203,6 +1196,9 @@ class GameManager extends EventTarget { }, })); */ } + menuMiddleToggle() { + zTargeting.toggle(); + } menuDragdownRight(e) { // this.draggingRight = true; } @@ -1236,17 +1232,21 @@ class GameManager extends EventTarget { object.savedRotation.y -= direction * rotationSnap; } dropSelectedApp() { - const localPlayer = metaversefileApi.useLocalPlayer(); const app = loadoutManager.getSelectedApp(); if (app) { - localPlayer.unwear(app); + const localPlayer = getLocalPlayer(); + localPlayer.unwear(app, { + /* dropStartPosition: localVector.copy(localPlayer.position) + .add(localVector2.set(0, 0.5, -1).applyQuaternion(localPlayer.quaternion)), + dropDirection: zeroVector, */ + }); } } deleteSelectedApp() { if (this.selectedIndex !== -1) { - const localPlayer = metaversefileApi.useLocalPlayer(); const app = loadoutManager.getSelectedApp(); if (app) { + const localPlayer = getLocalPlayer(); localPlayer.unwear(app, { destroy: true, }); @@ -1258,7 +1258,7 @@ class GameManager extends EventTarget { // return !!world.appManager.grabbedObjects[0] /*|| (editedObject && editedObject.isBuild)*/; } menuPush(direction) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const grabAction = localPlayer.findAction(action => action.type === 'grab' && action.hand === 'left'); if (grabAction) { const matrix = localMatrix.fromArray(grabAction.matrix); @@ -1290,26 +1290,11 @@ class GameManager extends EventTarget { } } - /* menuGDown() { - const localPlayer = metaversefileApi.useLocalPlayer(); - localPlayer.removeAction('emote'); - - const newAction = { - type: 'emote', - animation: 'angry', - }; - localPlayer.addAction(newAction); - } - menuGUp() { - const localPlayer = metaversefileApi.useLocalPlayer(); - localPlayer.removeAction('emote'); - } */ - menuVDown() { + const localPlayer = getLocalPlayer(); if (_getGrabbedObject(0)) { this.menuGridSnap(); } else { - const localPlayer = metaversefileApi.useLocalPlayer(); localPlayer.removeAction('dance'); const newAction = { @@ -1320,13 +1305,12 @@ class GameManager extends EventTarget { } } menuVUp() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.removeAction('dance'); } menuBDown() { - const localPlayer = metaversefileApi.useLocalPlayer(); - + const localPlayer = getLocalPlayer(); const sssAction = localPlayer.getAction('sss'); if (!sssAction) { const newSssAction = { @@ -1353,7 +1337,7 @@ class GameManager extends EventTarget { } */ } menuBUp() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.removeAction('dance'); // physicsManager.setThrowState(null); @@ -1361,7 +1345,7 @@ class GameManager extends EventTarget { menuDoubleTap() { if (!this.isCrouched()) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const narutoRunAction = localPlayer.getAction('narutoRun'); if (!narutoRunAction) { const newNarutoRunAction = { @@ -1373,17 +1357,38 @@ class GameManager extends EventTarget { } } menuUnDoubleTap() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const narutoRunAction = localPlayer.getAction('narutoRun'); if (narutoRunAction) { localPlayer.removeAction('narutoRun'); } } + menuSwitchCharacter() { + sounds.playSoundName('menuReady'); + + const npc = npcManager.npcs[0]; + if (npc) { + // console.log('check npc', npc); + + const localPlayer = getLocalPlayer(); + localPlayer.isLocalPlayer = false; + localPlayer.isNpcPlayer = true; + + npc.isLocalPlayer = true; + npc.isNpcPlayer = false; + + const npcIndex = npcManager.npcs.indexOf(npc); + npcManager.npcs[npcIndex] = localPlayer; + + setLocalPlayer(npc); + } + } isFlying() { - return metaversefileApi.useLocalPlayer().hasAction('fly'); + const localPlayer = getLocalPlayer(); + return localPlayer.hasAction('fly'); } toggleFly() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const flyAction = localPlayer.getAction('fly'); if (flyAction) { localPlayer.removeAction('fly'); @@ -1396,10 +1401,11 @@ class GameManager extends EventTarget { } } isCrouched() { - return metaversefileApi.useLocalPlayer().hasAction('crouch'); + const localPlayer = getLocalPlayer(); + return localPlayer.hasAction('crouch'); } toggleCrouch() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); let crouchAction = localPlayer.getAction('crouch'); if (crouchAction) { localPlayer.removeAction('crouch'); @@ -1437,7 +1443,6 @@ class GameManager extends EventTarget { } async toggleEditMode() { this.editMode = !this.editMode; - // console.log('got edit mode', this.editMode); if (this.editMode) { if (!cameraManager.pointerLockElement) { await cameraManager.requestPointerLock(); @@ -1446,17 +1451,17 @@ class GameManager extends EventTarget { this.setMouseSelectedObject(null); } if (_getGrabbedObject(0)) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.ungrab(); } } } isJumping() { - return metaversefileApi.useLocalPlayer().hasAction('jump'); + const localPlayer = getLocalPlayer(); + return localPlayer.hasAction('jump'); } ensureJump(trigger) { - const localPlayer = metaversefileApi.useLocalPlayer(); - const jumpAction = localPlayer.getAction('jump'); + const localPlayer = getLocalPlayer(); const wearActions = Array.from(localPlayer.getActionsState()).filter(action => action.type === 'wear'); for (const wearAction of wearActions) { @@ -1468,6 +1473,7 @@ class GameManager extends EventTarget { } } + const jumpAction = localPlayer.getAction('jump'); if (!jumpAction) { const newJumpAction = { type: 'jump', @@ -1482,7 +1488,7 @@ class GameManager extends EventTarget { this.ensureJump(trigger); // update velocity - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.characterPhysics.velocity.y += 6; // play sound @@ -1490,15 +1496,17 @@ class GameManager extends EventTarget { } isMovingBackward() { + const localPlayer = getLocalPlayer(); // return ioManager.keysDirection.z > 0 && this.isAiming(); - const localPlayer = metaversefileApi.useLocalPlayer(); return localPlayer.avatar.direction.z > 0.1; // If check > 0 will cause glitch when move left/right; } isAiming() { - return metaversefileApi.useLocalPlayer().hasAction('aim'); + const localPlayer = getLocalPlayer(); + return localPlayer.hasAction('aim'); } isSitting() { - return metaversefileApi.useLocalPlayer().hasAction('sit'); + const localPlayer = getLocalPlayer(); + return localPlayer.hasAction('sit'); } getMouseHoverObject() { return mouseHoverObject; @@ -1512,7 +1520,7 @@ class GameManager extends EventTarget { setHoverEnabled(hoverEnabled) { this.hoverEnabled = hoverEnabled; } - setMouseHoverObject(o, physicsId, position) { + setMouseHoverObject(o, physicsId, position) { // XXX must be triggered mouseHoverObject = o; mouseHoverPhysicsId = physicsId; if (mouseHoverObject && position) { @@ -1603,54 +1611,36 @@ class GameManager extends EventTarget { getUsableObject() { return gameManager.usableObject; } - getLastMouseEvent() { - return lastMouseEvent; - } - setLastMouseEvent(e) { - if (!lastMouseEvent) { - lastMouseEvent = { - clientX: 0, - clientY: 0, - inside: false, - }; - } - if (e) { - lastMouseEvent.clientX = e.clientX; - lastMouseEvent.clientY = e.clientY; - lastMouseEvent.inside = true; - } else { - lastMouseEvent.inside = false; - } - } getDragRightSpec() { return dragRightSpec; } menuActivateDown() { if (grabUseMesh.visible) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); const activateAction = localPlayer.getAction('activate'); if (!activateAction) { + const animationName = _getCurrentGrabAnimation(); const newActivateAction = { type: 'activate', - // time: 0, + animationName, }; localPlayer.addAction(newActivateAction); } } } menuActivateUp() { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.removeAction('activate'); } setAvatarQuality(quality) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); localPlayer.avatar.setQuality(quality); } playerDiorama = null; bindDioramaCanvas() { // await rendererWaitForLoad(); - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); this.playerDiorama = dioramaManager.createPlayerDiorama({ target: localPlayer, // label: true, @@ -1658,18 +1648,18 @@ class GameManager extends EventTarget { grassBackground: true, // glyphBackground: true, }); + localPlayer.addEventListener('avatarchange', e => { this.playerDiorama.setObjects([ e.avatar.model, ]); }); } - loadVoicePack(voicePack) { - const localPlayer = metaversefileApi.useLocalPlayer(); + /* loadVoicePack(voicePack) { return localPlayer.loadVoicePack(voicePack); - } + } */ setVoiceEndpoint(voiceId) { - const localPlayer = metaversefileApi.useLocalPlayer(); + const localPlayer = getLocalPlayer(); return localPlayer.setVoiceEndpoint(voiceId); } saveScene() { @@ -1684,21 +1674,6 @@ class GameManager extends EventTarget { update = _gameUpdate; pushAppUpdates = _pushAppUpdates; pushPlayerUpdates = _pushPlayerUpdates; - async renderCard(object) { // HACK: this should be moved to a UI component - const start_url = object?.start_url; - if (start_url) { - // console.log('render card 1', start_url); - const cardImg = await generateObjectUrlCard({ - start_url, - }); - // console.log('render card 2', start_url, cardImg); - // const stats = procgen.generateStats(); - /* console.log('render start url', { - start_url, - stats, - }); */ - } - } } const gameManager = new GameManager(); export default gameManager; \ No newline at end of file diff --git a/geometry-util.js b/geometry-util.js new file mode 100644 index 0000000000..e26ad1b608 --- /dev/null +++ b/geometry-util.js @@ -0,0 +1,57 @@ +export class Allocator { + constructor(moduleInstance) { + this.moduleInstance = moduleInstance; + this.offsets = [] + } + + alloc(constructor, size) { + if (size > 0) { + const offset = this.moduleInstance._malloc( + size * constructor.BYTES_PER_ELEMENT + ) + const b = new constructor( + this.moduleInstance.HEAP8.buffer, + this.moduleInstance.HEAP8.byteOffset + offset, + size + ) + b.offset = offset + this.offsets.push(offset) + return b + } else { + return new constructor(this.moduleInstance.HEAP8.buffer, 0, 0) + } + } + + freeAll() { + for (let i = 0; i < this.offsets.length; i++) { + this.moduleInstance._doFree(this.offsets[i]) + } + this.offsets.length = 0 + } +} +export class ScratchStack { + constructor(moduleInstance, size) { + this.ptr = moduleInstance._malloc(size) + + this.u8 = new Uint8Array( + moduleInstance.HEAP8.buffer, + this.ptr, + size + ) + this.u32 = new Uint32Array( + moduleInstance.HEAP8.buffer, + this.ptr, + size / 4 + ) + this.i32 = new Int32Array( + moduleInstance.HEAP8.buffer, + this.ptr, + size / 4 + ) + this.f32 = new Float32Array( + moduleInstance.HEAP8.buffer, + this.ptr, + size / 4 + ) + } +} \ No newline at end of file diff --git a/heightfield-mapper.js b/heightfield-mapper.js new file mode 100644 index 0000000000..264192ba8c --- /dev/null +++ b/heightfield-mapper.js @@ -0,0 +1,282 @@ +import * as THREE from 'three'; +import {getRenderer, camera} from './renderer.js'; +import {WebaverseShaderMaterial} from './materials.js'; + +// + +const maxAnisotropy = 16; +const fullScreenQuadGeometry = new THREE.PlaneBufferGeometry(2, 2); +const fullscreenVertexShader = `\ + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = vec4(position.xy, 0., 1.0); + } +`; + +// + +const localVector2D = new THREE.Vector2(); + +// + +const _makeHeightfieldRenderTarget = (w, h) => new THREE.WebGLRenderTarget(w, h, { + minFilter: THREE.LinearFilter, + magFilter: THREE.LinearFilter, + // minFilter: THREE.NearestFilter, + // magFilter: THREE.NearestFilter, + format: THREE.RedFormat, + type: THREE.FloatType, + // wrapS: THREE.RepeatWrapping, + // wrapT: THREE.RepeatWrapping, + wrapS: THREE.ClampToEdgeWrapping, + wrapT: THREE.ClampToEdgeWrapping, + stencilBuffer: false, + anisotropy: maxAnisotropy, + // flipY: false, +}); + +export class HeightfieldMapper { + constructor({ + chunkSize, + terrainSize, + range, + }) { + this.chunkSize = chunkSize; + this.terrainSize = terrainSize; + this.range = range; + + this.heightfieldRenderTarget = _makeHeightfieldRenderTarget(terrainSize, terrainSize); + this.heightfieldFourTapRenderTarget = _makeHeightfieldRenderTarget(terrainSize, terrainSize); + this.heightfieldMinPosition = new THREE.Vector2(); + + this.blankChunkData = new Float32Array(chunkSize * chunkSize); + + this.heightfieldScene = (() => { + const chunkPlaneGeometry = new THREE.PlaneBufferGeometry(1, 1) + .rotateX(-Math.PI / 2) + .translate(0.5, 0, 0.5) + .scale(this.chunkSize, 1, this.chunkSize); + const fullscreenMatrixVertexShader = `\ + uniform float uHeightfieldSize; + varying vec2 vUv; + + void main() { + vUv = uv; + vUv.y = 1. - vUv.y; + // vUv += 0.5 / uHeightfieldSize; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } + `; + const fullscreenFragmentShader3 = `\ + uniform sampler2D uHeightfieldDrawTexture; + uniform float uHeightfieldSize; + varying vec2 vUv; + + void main() { + vec2 uv = vUv; + // uv.x += 0.5 / uHeightfieldSize; + // uv.y -= 0.5 / uHeightfieldSize; + // uv += 0.5 / uHeightfieldSize; + float heightValue = texture2D(uHeightfieldDrawTexture, uv).r; + + gl_FragColor.rgb = vec3(heightValue); + gl_FragColor.a = 1.; + } + `; + const heightfieldDrawTexture = new THREE.DataTexture( + new Float32Array(chunkSize * chunkSize), + chunkSize, + chunkSize, + THREE.RedFormat, + THREE.FloatType + ); + heightfieldDrawTexture.minFilter = THREE.LinearFilter; + heightfieldDrawTexture.magFilter = THREE.LinearFilter; + const fullscreenMaterial3 = new WebaverseShaderMaterial({ + uniforms: { + uHeightfieldDrawTexture: { + value: heightfieldDrawTexture, + needsUpdate: true, + }, + uHeightfieldSize: { + value: terrainSize, + needsUpdate: true, + }, + }, + vertexShader: fullscreenMatrixVertexShader, + fragmentShader: fullscreenFragmentShader3, + // side: THREE.DoubleSide, + }); + const fullscreenQuadMesh3 = new THREE.Mesh(chunkPlaneGeometry, fullscreenMaterial3); + fullscreenQuadMesh3.frustumCulled = false; + const scene3 = new THREE.Scene(); + scene3.add(fullscreenQuadMesh3); + scene3.update = (heightfieldLocalWritePosition, heightfield) => { + fullscreenQuadMesh3.position.copy(heightfieldLocalWritePosition); + fullscreenQuadMesh3.updateMatrixWorld(); + + /* const heightfieldDrawTexture = new THREE.DataTexture( + new Uint8ClampedArray(this.chunkSize * this.chunkSize), + this.chunkSize, + this.chunkSize, + THREE.RedFormat, + THREE.UnsignedByteType + ); */ + + heightfieldDrawTexture.image.data.set(heightfield); + heightfieldDrawTexture.needsUpdate = true; + + fullscreenMaterial3.uniforms.uHeightfieldDrawTexture.value = heightfieldDrawTexture; + fullscreenMaterial3.uniforms.uHeightfieldDrawTexture.needsUpdate = true; + + // console.log('got data', fullscreenQuadMesh3.position.x, fullscreenQuadMesh3.position.z, heightfieldDrawTexture.image.data); + + // console.log('render heightfield', heightfieldLocalWritePosition.x, heightfieldLocalWritePosition.y, heightfield); + }; + scene3.camera = new THREE.OrthographicCamera(0, terrainSize, 0, -terrainSize, -1000, 1000); + scene3.camera.quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), -Math.PI / 2); + scene3.camera.updateMatrixWorld(); + return scene3; + })(); + this.heightfieldFourTapScene = (() => { + const fullscreenFragmentShader = `\ + uniform sampler2D uHeightfield; + uniform vec2 uHeightfieldBase; + uniform vec2 uHeightfieldMinPosition; + uniform float uHeightfieldSize; + varying vec2 vUv; + + void main() { + vec2 pos2D = vUv; + vec2 posDiff = pos2D - 0.5 - (uHeightfieldMinPosition) / uHeightfieldSize; + vec2 uvHeightfield = posDiff; + uvHeightfield = mod(uvHeightfield, 1.); + gl_FragColor = texture2D(uHeightfield, uvHeightfield); + } + `; + const fourTapFullscreenMaterial = new WebaverseShaderMaterial({ + uniforms: { + uHeightfield: { + value: this.heightfieldRenderTarget.texture, + needsUpdate: true, + }, + uHeightfieldSize: { + value: terrainSize, + needsUpdate: true, + }, + uHeightfieldMinPosition: { + value: new THREE.Vector2(), + needsUpdate: true, + } + }, + vertexShader: fullscreenVertexShader, + fragmentShader: fullscreenFragmentShader, + }); + const fourTapQuadMesh = new THREE.Mesh(fullScreenQuadGeometry, fourTapFullscreenMaterial); + fourTapQuadMesh.frustumCulled = false; + const scene = new THREE.Scene(); + scene.add(fourTapQuadMesh); + scene.mesh = fourTapQuadMesh; + return scene; + })(); + + if (range) { + this.#setRange(range); + } + } + #setRange = (() => { + const localVector = new THREE.Vector3(); + return function(range) { + localVector.copy(range.min) + .divideScalar(this.chunkSize); + this.updateCoord(localVector); + }; + })(); + updateCoord(min1xCoord, target = null) { + // console.log('heightfield update coord', min1xCoord.x, min1xCoord.y, min1xCoord.z, new Error().stack); + // const oldHeightfieldPosition = localVector2D.copy(this.heightfieldMinPosition); + const newHeightfieldPosition = localVector2D.set(min1xCoord.x, min1xCoord.z) + .multiplyScalar(this.chunkSize); + + // const delta = target && target.copy(newHeightfieldPosition) + // .sub(oldHeightfieldPosition); + + // update scenes + this.heightfieldFourTapScene.mesh.material.uniforms.uHeightfieldMinPosition.value.copy(newHeightfieldPosition); + this.heightfieldFourTapScene.mesh.material.uniforms.uHeightfieldMinPosition.needsUpdate = true; + + this.heightfieldMinPosition.copy(newHeightfieldPosition); + + // return delta; + } + renderHeightfieldUpdate(worldModPosition, heightfield) { + const renderer = getRenderer(); + const context = renderer.getContext(); + // const camera = useCamera(); + + { + // update + this.heightfieldScene.update(worldModPosition, heightfield); + + // push state + const oldRenderTarget = renderer.getRenderTarget(); + context.disable(context.SAMPLE_ALPHA_TO_COVERAGE); + + // render + renderer.setRenderTarget(this.heightfieldRenderTarget); + // renderer.clear(); + renderer.render(this.heightfieldScene, this.heightfieldScene.camera); + + // pop state + renderer.setRenderTarget(oldRenderTarget); + context.enable(context.SAMPLE_ALPHA_TO_COVERAGE); + } + } + clearHeightfieldChunk(worldModPosition) { + const renderer = getRenderer(); + const context = renderer.getContext(); + // const camera = useCamera(); + + { + // update + this.heightfieldScene.update(worldModPosition, this.blankChunkData); + + // push state + const oldRenderTarget = renderer.getRenderTarget(); + context.disable(context.SAMPLE_ALPHA_TO_COVERAGE); + + // render + renderer.setRenderTarget(this.heightfieldRenderTarget); + // renderer.clear(); + renderer.render(this.heightfieldScene, this.heightfieldScene.camera); + + // pop state + renderer.setRenderTarget(oldRenderTarget); + context.enable(context.SAMPLE_ALPHA_TO_COVERAGE); + } + } + updateFourTapHeightfield() { + const renderer = getRenderer(); + const context = renderer.getContext(); + + { + // update + // heightfieldFourTapScene.update(); + + // push state + const oldRenderTarget = renderer.getRenderTarget(); + context.disable(context.SAMPLE_ALPHA_TO_COVERAGE); + + // render + renderer.setRenderTarget(this.heightfieldFourTapRenderTarget); + // renderer.clear(); + renderer.render(this.heightfieldFourTapScene, camera); + + // pop state + renderer.setRenderTarget(oldRenderTarget); + context.enable(context.SAMPLE_ALPHA_TO_COVERAGE); + } + } +} \ No newline at end of file diff --git a/hp-manager.js b/hp-manager.js index 024f1f84ad..2fe8b95be8 100644 --- a/hp-manager.js +++ b/hp-manager.js @@ -135,7 +135,7 @@ const makeHitTracker = ({ sounds.playSoundName('enemyCut'); - hitTracker.dispatchEvent({ + const hitEvent = { type: 'hit', collisionId, hitPosition, @@ -144,13 +144,17 @@ const makeHitTracker = ({ // willDie, hp: hitTracker.hp, totalHp: hitTracker.totalHp, - }); + }; + // hitTracker.dispatchEvent(hitEvent); + currentApp.dispatchEvent(hitEvent); if (died) { - hitTracker.dispatchEvent({ + const dieEvent = { type: 'die', // position: cylinderMesh.position, // quaternion: cylinderMesh.quaternion, - }); + }; + // hitTracker.dispatchEvent(); + currentApp.dispatchEvent(dieEvent); } } return result; diff --git a/id-allocator.js b/id-allocator.js new file mode 100644 index 0000000000..63285196d5 --- /dev/null +++ b/id-allocator.js @@ -0,0 +1,24 @@ +import {defaultMaxId} from './constants.js'; + +export class IdAllocator { + constructor(maxSize = defaultMaxId) { + this.stack = new Uint32Array(maxSize); + for (let i = 0; i < maxSize; i++) { + this.stack[i] = i + 1; + } + this.stackIndex = 0; + } + alloc() { + if (this.stackIndex < this.stack.length) { + const index = this.stack[this.stackIndex]; + this.stackIndex++; + return index; + } else { + return -1; + } + } + free(index) { + this.stackIndex--; + this.stack[this.stackIndex] = index; + } +} \ No newline at end of file diff --git a/index.mjs b/index.mjs index 2c15dc6776..c32e55f0fb 100644 --- a/index.mjs +++ b/index.mjs @@ -39,7 +39,7 @@ function makeId(length) { return result; } -const _proxyUrl = (req, res, u) => { +/* const _proxyUrl = (req, res, u) => { const proxyReq = /https/.test(u) ? https.request(u) : http.request(u); proxyReq.on('response', proxyRes => { for (const header in proxyRes.headers) { @@ -54,7 +54,7 @@ const _proxyUrl = (req, res, u) => { res.end(); }); proxyReq.end(); -}; +}; */ (async () => { const app = express(); diff --git a/instancing.js b/instancing.js new file mode 100644 index 0000000000..f4b2f9c158 --- /dev/null +++ b/instancing.js @@ -0,0 +1,654 @@ +import * as THREE from 'three'; +import {ImmediateGLBufferAttribute} from './ImmediateGLBufferAttribute.js'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import {getRenderer} from './renderer.js'; + +const localVector2D = new THREE.Vector2(); +const localVector2D2 = new THREE.Vector2(); +const localMatrix = new THREE.Matrix4(); +const localSphere = new THREE.Sphere(); +const localBox = new THREE.Box3(); +const localFrustum = new THREE.Frustum(); +const localDataTexture = new THREE.DataTexture(); + +const maxNumDraws = 1024; + +const _getBoundingSize = boundingType => { + switch (boundingType) { + case 'sphere': return 4; + case 'box': return 6; + default: return 0; + } +}; + +export class FreeListSlot { + constructor(start, count, used) { + // array-relative indexing, not item-relative + // start++ implies attribute.array[start++] + this.start = start; + this.count = count; + this.used = used; + } + alloc(size) { + if (size < this.count) { + this.used = true; + const newSlot = new FreeListSlot(this.start + size, this.count - size, false); + this.count = size; + return [ + this, + newSlot, + ]; + } else if (size === this.count) { + this.used = true; + return [this]; + } else { + throw new Error('could not allocate from self: ' + size + ' : ' + this.count); + } + } + free() { + this.used = false; + return [this]; + } +} + +export class FreeList { + constructor(size) { + this.slots = [ + new FreeListSlot(0, size, false), + ]; + } + findFirstFreeSlotIndexWithSize(size) { + for (let i = 0; i < this.slots.length; i++) { + const slot = this.slots[i]; + if (!slot.used && slot.count >= size) { + return i; + } + } + return -1; + } + alloc(size) { + if (size > 0) { + const index = this.findFirstFreeSlotIndexWithSize(size); + if (index !== -1) { + const slot = this.slots[index]; + const replacementArray = slot.alloc(size); + this.slots.splice.apply(this.slots, [index, 1].concat(replacementArray)); + return replacementArray[0]; + } else { + throw new Error('out of memory'); + } + } else { + throw new Error('alloc size must be > 0'); + } + } + free(slot) { + const index = this.slots.indexOf(slot); + if (index !== -1) { + const replacementArray = slot.free(); + this.slots.splice.apply(this.slots, [index, 1].concat(replacementArray)); + this.#mergeAdjacentSlots(); + } else { + throw new Error('invalid free'); + } + } + #mergeAdjacentSlots() { + for (let i = this.slots.length - 2; i >= 0; i--) { + const slot = this.slots[i]; + const nextSlot = this.slots[i + 1]; + if (!slot.used && !nextSlot.used) { + slot.count += nextSlot.count; + this.slots.splice(i + 1, 1); + } + } + } +} + +export class GeometryPositionIndexBinding { + constructor(positionFreeListEntry, indexFreeListEntry, geometry) { + this.positionFreeListEntry = positionFreeListEntry; + this.indexFreeListEntry = indexFreeListEntry; + this.geometry = geometry; + } + getAttributeOffset(name = 'position') { + return this.positionFreeListEntry.start / 3 * this.geometry.attributes[name].itemSize; + } + getIndexOffset() { + return this.indexFreeListEntry.start; + } +} + +export class GeometryAllocator { + constructor(attributeSpecs, { + bufferSize, + boundingType = null, + }) { + { + this.geometry = new THREE.BufferGeometry(); + for (const attributeSpec of attributeSpecs) { + const { + name, + Type, + itemSize, + } = attributeSpec; + + const array = new Type(bufferSize * itemSize); + this.geometry.setAttribute(name, new ImmediateGLBufferAttribute(array, itemSize, false)); + } + const indices = new Uint32Array(bufferSize); + this.geometry.setIndex(new ImmediateGLBufferAttribute(indices, 1, true)); + } + + this.boundingType = boundingType; + + this.positionFreeList = new FreeList(bufferSize * 3); + this.indexFreeList = new FreeList(bufferSize); + + this.drawStarts = new Int32Array(maxNumDraws); + this.drawCounts = new Int32Array(maxNumDraws); + const boundingSize = _getBoundingSize(boundingType); + this.boundingData = new Float32Array(maxNumDraws * boundingSize); + this.numDraws = 0; + } + alloc(numPositions, numIndices, boundingObject) { + const positionFreeListEntry = this.positionFreeList.alloc(numPositions); + const indexFreeListEntry = this.indexFreeList.alloc(numIndices); + const geometryBinding = new GeometryPositionIndexBinding(positionFreeListEntry, indexFreeListEntry, this.geometry); + + const slot = indexFreeListEntry; + this.drawStarts[this.numDraws] = slot.start * this.geometry.index.array.BYTES_PER_ELEMENT; + this.drawCounts[this.numDraws] = slot.count; + if (this.boundingType === 'sphere') { + boundingObject.center.toArray(this.boundingData, this.numDraws * 4); + this.boundingData[this.numDraws * 4 + 3] = boundingObject.radius; + } else if (this.boundingType === 'box') { + boundingObject.min.toArray(this.boundingData, this.numDraws * 6); + boundingObject.max.toArray(this.boundingData, this.numDraws * 6 + 3); + } + + this.numDraws++; + + return geometryBinding; + } + free(geometryBinding) { + const slot = geometryBinding.indexFreeListEntry; + const expectedStartValue = slot.start * this.geometry.index.array.BYTES_PER_ELEMENT; + const freeIndex = this.drawStarts.indexOf(expectedStartValue); + + if (this.numDraws >= 2) { + const lastIndex = this.numDraws - 1; + + // copy the last index to the freed slot + if (this.boundingType === 'sphere') { + this.drawStarts[freeIndex] = this.drawStarts[lastIndex]; + this.drawCounts[freeIndex] = this.drawCounts[lastIndex]; + this.boundingData[freeIndex * 4] = this.boundingData[lastIndex * 4]; + this.boundingData[freeIndex * 4 + 1] = this.boundingData[lastIndex * 4 + 1]; + this.boundingData[freeIndex * 4 + 2] = this.boundingData[lastIndex * 4 + 2]; + this.boundingData[freeIndex * 4 + 3] = this.boundingData[lastIndex * 4 + 3]; + } else if (this.boundingType === 'box') { + this.drawStarts[freeIndex] = this.drawStarts[lastIndex]; + this.drawCounts[freeIndex] = this.drawCounts[lastIndex]; + this.boundingData[freeIndex * 6] = this.boundingData[lastIndex * 6]; + this.boundingData[freeIndex * 6 + 1] = this.boundingData[lastIndex * 6 + 1]; + this.boundingData[freeIndex * 6 + 2] = this.boundingData[lastIndex * 6 + 2]; + this.boundingData[freeIndex * 6 + 3] = this.boundingData[lastIndex * 6 + 3]; + this.boundingData[freeIndex * 6 + 4] = this.boundingData[lastIndex * 6 + 4]; + this.boundingData[freeIndex * 6 + 5] = this.boundingData[lastIndex * 6 + 5]; + } + } + + this.numDraws--; + + this.positionFreeList.free(geometryBinding.positionFreeListEntry); + this.indexFreeList.free(geometryBinding.indexFreeListEntry); + } + getDrawSpec(camera, drawStarts, drawCounts) { + drawStarts.length = 0; + drawCounts.length = 0; + + if (this.boundingType) { + const projScreenMatrix = localMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + localFrustum.setFromProjectionMatrix(projScreenMatrix); + } + + const testBoundingFn = (() => { + if (this.boundingType === 'sphere') { + return (i) => { + localSphere.center.fromArray(this.boundingData, i * 4); + localSphere.radius = this.boundingData[i * 4 + 3]; + return localFrustum.intersectsSphere(localSphere); + }; + } else if (this.boundingType === 'box') { + return (i) => { + localBox.min.fromArray(this.boundingData, i * 6); + localBox.max.fromArray(this.boundingData, i * 6 + 3); + return localFrustum.intersectsBox(localBox); + }; + } else { + return (i) => true; + } + })(); + for (let i = 0; i < this.numDraws; i++) { + if (testBoundingFn(i)) { + drawStarts.push(this.drawStarts[i]); + drawCounts.push(this.drawCounts[i]); + } + } + } +} + +export class DrawCallBinding { + constructor(geometryIndex, freeListEntry, allocator) { + this.geometryIndex = geometryIndex; + this.freeListEntry = freeListEntry; + this.allocator = allocator; + } + getTexture(name) { + return this.allocator.getTexture(name); + } + getTextureOffset(name) { + const texture = this.getTexture(name); + const {itemSize} = texture; + return this.freeListEntry.start * this.allocator.maxInstancesPerDrawCall * itemSize; + } + getInstanceCount() { + return this.allocator.getInstanceCount(this); + } + setInstanceCount(instanceCount) { + this.allocator.setInstanceCount(this, instanceCount); + } + incrementInstanceCount() { + return this.allocator.incrementInstanceCount(this); + } + decrementInstanceCount() { + return this.allocator.decrementInstanceCount(this); + } + updateTexture(name, pixelIndex, itemCount) { // XXX optimize this + const texture = this.getTexture(name); + // const textureIndex = this.getTextureIndex(name); + texture.needsUpdate = true; + return; + + const renderer = getRenderer(); + + const _getIndexUv = (index, target) => { + const x = index % texture.width; + const y = Math.floor(index / texture.width); + return target.set(x, y); + }; + + // render start slice + const startUv = _getIndexUv(pixelIndex, localVector2D); + if (startUv.x > 0) { + localDataTexture.image.width = texture.image.width - startUv.x; + localDataTexture.image.height = 1; + localDataTexture.image.data = texture.image.data.subarray( + pixelIndex, + pixelIndex + startUv.x + ); + renderer.copyTextureToTexture(startUv, localDataTexture, texture, 0); + + startUv.x = 0; + startUv.y++; + } + + const endUv = _getIndexUv(pixelIndex + pixelCount, localVector2D2); + if (endUv.y > startUv.y) { + // render end slice + if (endUv.x > 0) { + localDataTexture.image.width = endUv.x; + localDataTexture.image.height = 1; + localDataTexture.image.data = texture.image.data.subarray( + endUv.y * texture.image.width, + endUv.y * texture.image.width + endUv.x + ); + renderer.copyTextureToTexture(endUv, localDataTexture, texture, 0); + + endUv.x = 0; + endUv.y--; + } + + // render middle slice + if (endUv.y > startUv.y) { + localDataTexture.image.width = texture.image.width; + localDataTexture.image.height = endUv.y - startUv.y; + localDataTexture.image.data = texture.image.data.subarray( + startUv.y * texture.image.width, + endUv.y * texture.image.width + ); + renderer.copyTextureToTexture(startUv, localDataTexture, texture, 0); + } + } + } +} + +const _swapTextureAttributes = (texture, i, j, maxInstancesPerDrawCall) => { + const {itemSize} = texture; + const startOffset = i * maxInstancesPerDrawCall; + const dstStart = (startOffset + j) * itemSize; + const srcStart = (startOffset + maxInstancesPerDrawCall - 1) * itemSize; + const count = itemSize; + texture.image.data.copyWithin( + dstStart, + srcStart, + srcStart + count + ); +}; +const _swapBoundingDataSphere = (instanceBoundingData, i, j, maxInstancesPerDrawCall) => { + const dstStart = (startOffset + j) * 4; + const srcStart = (startOffset + maxInstancesPerDrawCall - 1) * 4; + instanceBoundingData.copyWithin( + dstStart, + srcStart, + srcStart + 4 + ); +}; +const _swapBoundingDataBox = (instanceBoundingData, i, j, maxInstancesPerDrawCall) => { + const dstStart = (startOffset + j) * 6; + const srcStart = (startOffset + maxInstancesPerDrawCall - 1) * 6; + instanceBoundingData.copyWithin( + dstStart, + srcStart, + srcStart + 6 + ); +}; +export class InstancedGeometryAllocator { + constructor(geometries, instanceTextureSpecs, { + maxInstancesPerDrawCall, + maxDrawCallsPerGeometry, + boundingType = null, + instanceBoundingType = null, + }) { + this.maxInstancesPerDrawCall = maxInstancesPerDrawCall; + this.maxDrawCallsPerGeometry = maxDrawCallsPerGeometry; + this.boundingType = boundingType; + this.instanceBoundingType = instanceBoundingType; + + this.drawStarts = new Int32Array(geometries.length * maxDrawCallsPerGeometry); + this.drawCounts = new Int32Array(geometries.length * maxDrawCallsPerGeometry); + this.drawInstanceCounts = new Int32Array(geometries.length * maxDrawCallsPerGeometry); + const boundingSize = _getBoundingSize(boundingType); + this.boundingData = new Float32Array(geometries.length * maxDrawCallsPerGeometry * boundingSize); + const instanceBoundingSize = _getBoundingSize(instanceBoundingType); + this.instanceBoundingData = new Float32Array(geometries.length * maxDrawCallsPerGeometry * maxInstancesPerDrawCall * instanceBoundingSize); + + { + const numGeometries = geometries.length; + const geometryRegistry = Array(numGeometries); + let positionIndex = 0; + let indexIndex = 0; + for (let i = 0; i < numGeometries; i++) { + const geometry = geometries[i]; + + const positionCount = geometry.attributes.position.count; + const indexCount = geometry.index.count; + const spec = { + position: { + start: positionIndex, + count: positionCount, + }, + index: { + start: indexIndex, + count: indexCount, + }, + }; + geometryRegistry[i] = spec; + + positionIndex += positionCount; + indexIndex += indexCount; + } + this.geometryRegistry = geometryRegistry; + + this.geometry = BufferGeometryUtils.mergeBufferGeometries(geometries); + + this.texturesArray = instanceTextureSpecs.map(spec => { + const { + name, + Type, + itemSize, + } = spec; + + // compute the minimum size of a texture that can hold the data + let neededItems4 = numGeometries * maxDrawCallsPerGeometry * maxInstancesPerDrawCall; + if (itemSize > 4) { + neededItems4 *= itemSize / 4; + } + const textureSizePx = Math.max(Math.pow(2, Math.ceil(Math.log2(Math.sqrt(neededItems4)))), 16); + const itemSizeSnap = itemSize > 4 ? 4 : itemSize; + + const format = (() => { + if (itemSize === 1) { + return THREE.RedFormat; + } else if (itemSize === 2) { + return THREE.RGFormat; + } else if (itemSize === 3) { + return THREE.RGBFormat; + } else /*if (itemSize >= 4)*/ { + return THREE.RGBAFormat; + } + })(); + const type = (() => { + if (Type === Float32Array) { + return THREE.FloatType; + } else if (Type === Uint32Array) { + return THREE.UnsignedIntType; + } else if (Type === Int32Array) { + return THREE.IntType; + } else if (Type === Uint16Array) { + return THREE.UnsignedShortType; + } else if (Type === Int16Array) { + return THREE.ShortType; + } else if (Type === Uint8Array) { + return THREE.UnsignedByteType; + } else if (Type === Int8Array) { + return THREE.ByteType; + } else { + throw new Error('unsupported type: ' + type); + } + })(); + + const data = new Type(textureSizePx * textureSizePx * itemSizeSnap); + const texture = new THREE.DataTexture(data, textureSizePx, textureSizePx, format, type); + texture.name = name; + texture.minFilter = THREE.NearestFilter; + texture.magFilter = THREE.NearestFilter; + // texture.needsUpdate = true; + texture.itemSize = itemSize; + return texture; + }); + this.textures = {}; + for (let i = 0; i < this.texturesArray.length; i++) { + const textureSpec = instanceTextureSpecs[i]; + const {name} = textureSpec; + this.textures[name] = this.texturesArray[i]; + } + this.textureIndexes = {}; + for (let i = 0; i < this.texturesArray.length; i++) { + const textureSpec = instanceTextureSpecs[i]; + const {name} = textureSpec; + this.textureIndexes[name] = i; + } + + this.freeList = new FreeList(numGeometries * maxDrawCallsPerGeometry); + } + } + allocDrawCall(geometryIndex, boundingObject) { + const freeListEntry = this.freeList.alloc(1); + const drawCall = new DrawCallBinding(geometryIndex, freeListEntry, this); + + const geometrySpec = this.geometryRegistry[geometryIndex]; + const { + index: { + start, + count, + }, + } = geometrySpec; + + this.drawStarts[freeListEntry.start] = start * this.geometry.index.array.BYTES_PER_ELEMENT; + this.drawCounts[freeListEntry.start] = count; + this.drawInstanceCounts[freeListEntry.start] = 0; + if (this.boundingType === 'sphere') { + boundingObject.center.toArray(this.boundingData, freeListEntry.start * 4); + this.boundingData[freeListEntry.start * 4 + 3] = boundingObject.radius; + } else if (this.boundingType === 'box') { + boundingObject.min.toArray(this.boundingData, freeListEntry.start * 6); + boundingObject.max.toArray(this.boundingData, freeListEntry.start * 6 + 3); + } + + return drawCall; + } + freeDrawCall(drawCall) { + const {freeListEntry} = drawCall; + + this.drawStarts[freeListEntry.start] = 0; + this.drawCounts[freeListEntry.start] = 0; + this.drawInstanceCounts[freeListEntry.start] = 0; + if (this.boundingType === 'sphere') { + this.boundingData[freeListEntry.start * 4] = 0; + this.boundingData[freeListEntry.start * 4 + 1] = 0; + this.boundingData[freeListEntry.start * 4 + 2] = 0; + this.boundingData[freeListEntry.start * 4 + 3] = 0; + } else if (this.boundingType === 'box') { + this.boundingData[freeListEntry.start * 6] = 0; + this.boundingData[freeListEntry.start * 6 + 1] = 0; + this.boundingData[freeListEntry.start * 6 + 2] = 0; + this.boundingData[freeListEntry.start * 6 + 3] = 0; + this.boundingData[freeListEntry.start * 6 + 4] = 0; + this.boundingData[freeListEntry.start * 6 + 5] = 0; + } + + this.freeList.free(freeListEntry); + } + getInstanceCount(drawCall) { + return this.drawInstanceCounts[drawCall.freeListEntry.start]; + } + setInstanceCount(drawCall, instanceCount) { + this.drawInstanceCounts[drawCall.freeListEntry.start] = instanceCount; + } + incrementInstanceCount(drawCall) { + this.drawInstanceCounts[drawCall.freeListEntry.start]++; + } + decrementInstanceCount(drawCall) { + this.drawInstanceCounts[drawCall.freeListEntry.start]--; + } + getTexture(name) { + return this.textures[name]; + } + getDrawSpec(camera, multiDrawStarts, multiDrawCounts, multiDrawInstanceCounts) { + multiDrawStarts.length = this.drawStarts.length; + multiDrawCounts.length = this.drawCounts.length; + multiDrawInstanceCounts.length = this.drawInstanceCounts.length; + + if (this.boundingType) { + const projScreenMatrix = localMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + localFrustum.setFromProjectionMatrix(projScreenMatrix); + } + const testBoundingFn = (() => { + if (this.boundingType === 'sphere') { + return (i) => { + localSphere.center.fromArray(this.boundingData, i * 4); + localSphere.radius = this.boundingData[i * 4 + 3]; + return localFrustum.intersectsSphere(localSphere); + }; + } else if (this.boundingType === 'box') { + return (i) => { + localBox.min.fromArray(this.boundingData, i * 6); + localBox.max.fromArray(this.boundingData, i * 6 + 3); + return localFrustum.intersectsBox(localBox); + }; + } else { + return (i) => true; + } + })(); + const swapBoundingDataFn = () => { + if (this.boundingType === 'sphere') { + return _swapBoundingDataSphere; + } else if (this.boundingType === 'box') { + return _swapBoundingDataBox; + } else { + throw new Error('Invalid bounding type: ' + this.boundingType); + } + }; + + for (let i = 0; i < this.drawStarts.length; i++) { + if (testBoundingFn(i)) { + multiDrawStarts[i] = this.drawStarts[i]; + multiDrawCounts[i] = this.drawCounts[i]; + + if (this.instanceBoundingType) { + const startOffset = i * this.maxInstancesPerDrawCall; + + const testInstanceBoundingFn = (() => { + if (this.boundingType === 'sphere') { + return (j) => { + const sphereIndex = startOffset + j; + localSphere.center.fromArray(this.instanceBoundingData, sphereIndex * 4); + localSphere.radius = this.instanceBoundingData[sphereIndex * 4 + 3]; + return localFrustum.intersectsSphere(localSphere); + }; + } else if (this.boundingType === 'box') { + return (j) => { + const boxIndex = startOffset + j; + localBox.min.fromArray(this.boundingData, boxIndex * 6); + localBox.max.fromArray(this.boundingData, boxIndex * 6 + 3); + return localFrustum.intersectsBox(localBox); + }; + } else { + throw new Error('Invalid bounding type: ' + this.boundingType); + } + })(); + + // arrange the instanced draw list : + // - apply per-instanse frustum culling + // - swapping the bounding data into place + // - accumulate the real instance draw count + const maxDrawableInstances = this.drawInstanceCounts[i]; + let instancesToDraw = 0; + for (let j = 0; j < maxDrawableInstances; j++) { + if (testInstanceBoundingFn(j)) { + instancesToDraw++; + } else { + // swap this instance with the last instance to remove it + for (const texture of this.texturesArray) { + _swapTextureAttributes(texture, i, j, this.maxInstancesPerDrawCall); + } + swapBoundingDataFn(this.instanceBoundingData, i, j, this.maxInstancesPerDrawCall); + } + } + + multiDrawInstanceCounts[i] = instancesToDraw; + } else { + multiDrawInstanceCounts[i] = this.drawInstanceCounts[i]; + } + } else { + multiDrawStarts[i] = 0; + multiDrawCounts[i] = 0; + multiDrawInstanceCounts[i] = 0; + } + } + } +} + +export class BatchedMesh extends THREE.Mesh { + constructor(geometry, material, allocator) { + super(geometry, material); + + this.isBatchedMesh = true; + this.allocator = allocator; + } + getDrawSpec(camera, drawStarts, drawCounts) { + this.allocator.getDrawSpec(camera, drawStarts, drawCounts); + } +} + +export class InstancedBatchedMesh extends THREE.InstancedMesh { + constructor(geometry, material, allocator) { + super(geometry, material); + + this.isBatchedMesh = true; + this.allocator = allocator; + } + getDrawSpec(camera, multiDrawStarts, multiDrawCounts, multiDrawInstanceCounts) { + this.allocator.getDrawSpec(camera, multiDrawStarts, multiDrawCounts, multiDrawInstanceCounts); + } +} \ No newline at end of file diff --git a/io-manager.js b/io-manager.js index 2e43a468d4..d565dc3b00 100644 --- a/io-manager.js +++ b/io-manager.js @@ -5,10 +5,10 @@ the functionality is implemented in other managers. */ import * as THREE from 'three'; +import metaversefile from 'metaversefile'; import cameraManager from './camera-manager.js'; // import controlsManager from './controls-manager.js'; import game from './game.js'; -// import physicsManager from './physics-manager.js'; import {world} from './world.js'; import voiceInput from './voice-input/voice-input.js'; // import * as universe from './universe.js'; @@ -18,17 +18,19 @@ import {getRenderer, /*renderer2,*/ scene, camera, dolly, getContainerElement} f import physicsManager from './physics-manager.js'; /* import {menuActions} from './mithril-ui/store/actions.js'; import {menuState} from './mithril-ui/store/state.js'; */ -import physx from './physx.js'; +// import physx from './physx.js'; // import {airFriction, flyFriction} from './constants.js'; import transformControls from './transform-controls.js'; -import metaversefile from 'metaversefile'; +import storyManager from './story.js'; +// import domRenderer from './dom-renderer.jsx'; +import raycastManager from './raycast-manager.js'; -const localVector = new THREE.Vector3(); +// const localVector = new THREE.Vector3(); // const localVector2 = new THREE.Vector3(); const localVector3 = new THREE.Vector3(); -const localVector2D = new THREE.Vector2(); -const localVector2D2 = new THREE.Vector2(); -const localQuaternion = new THREE.Quaternion(); +// const localVector2D = new THREE.Vector2(); +// const localVector2D2 = new THREE.Vector2(); +// const localQuaternion = new THREE.Quaternion(); const localQuaternion2 = new THREE.Quaternion(); const localEuler = new THREE.Euler(); const localMatrix2 = new THREE.Matrix4(); @@ -36,6 +38,12 @@ const localMatrix3 = new THREE.Matrix4(); const localRaycaster = new THREE.Raycaster(); const zeroVector = new THREE.Vector3(); +// + +const physicsScene = physicsManager.getScene(); + +// + const ioManager = new EventTarget(); ioManager.lastAxes = [[0, 0, 0, 0], [0, 0, 0, 0]]; @@ -65,11 +73,12 @@ ioManager.keys = { space: false, ctrl: false, }; -const lastWASDDownTime = { +const lastKeysDownTime = { keyW: 0, keyA: 0, keyS: 0, - keyD: 0 + keyD: 0, + keyE: 0, }; const resetKeys = () => { @@ -232,11 +241,10 @@ const _updateIo = timeDiff => { if (ioManager.keys.ctrl && !ioManager.lastCtrlKey) { game.toggleCrouch(); - // physicsManager.setCrouchState(!physicsManager.getCrouchState()); } ioManager.lastCtrlKey = ioManager.keys.ctrl; } - if (keysDirection.length() > 0 && physicsManager.getPhysicsEnabled()) { + if (keysDirection.length() > 0 && physicsScene.getPhysicsEnabled() && movementEnabled) { localPlayer.characterPhysics.applyWasd( keysDirection.normalize() .multiplyScalar(game.getSpeed() * timeDiff) @@ -246,6 +254,12 @@ const _updateIo = timeDiff => { }; ioManager.update = _updateIo; +let movementEnabled = true; +// ioManager.getMovmentEnabled = () => movementEnabled; +ioManager.setMovementEnabled = newMovementEnabled => { + movementEnabled = newMovementEnabled; +}; + const _updateIoPost = () => { ioManager.lastTeleport = ioManager.currentTeleport; ioManager.lastMenuDown = ioManager.currentMenuDown; @@ -277,6 +291,12 @@ ioManager.keydown = e => { return; } + if (e.keyCode === 18) { // alt + e.preventDefault(); + e.stopPropagation(); + return; + } + // HACK: these keybindings control developer avatar animation offset settings in avatars.js /* if (e.which === 74) { window.lol -= 0.01; @@ -315,13 +335,13 @@ ioManager.keydown = e => { } const now = performance.now(); - const timeDiff = now - lastWASDDownTime.keyW; + const timeDiff = now - lastKeysDownTime.keyW; if (timeDiff < doubleTapTime && ioManager.keys.shift) { ioManager.keys.doubleTap = true; game.menuDoubleTap(); } - lastWASDDownTime.keyW = now; - lastWASDDownTime.keyS = 0; + lastKeysDownTime.keyW = now; + lastKeysDownTime.keyS = 0; break; } case 65: { // A @@ -331,13 +351,13 @@ ioManager.keydown = e => { } const now = performance.now(); - const timeDiff = now - lastWASDDownTime.keyA; + const timeDiff = now - lastKeysDownTime.keyA; if (timeDiff < doubleTapTime && ioManager.keys.shift) { ioManager.keys.doubleTap = true; game.menuDoubleTap(); } - lastWASDDownTime.keyA = now; - lastWASDDownTime.keyD = 0; + lastKeysDownTime.keyA = now; + lastKeysDownTime.keyD = 0; break; } case 83: { // S @@ -359,13 +379,13 @@ ioManager.keydown = e => { } const now = performance.now(); - const timeDiff = now - lastWASDDownTime.keyS; + const timeDiff = now - lastKeysDownTime.keyS; if (timeDiff < doubleTapTime && ioManager.keys.shift) { ioManager.keys.doubleTap = true; game.menuDoubleTap(); } - lastWASDDownTime.keyS = now; - lastWASDDownTime.keyW = 0; + lastKeysDownTime.keyS = now; + lastKeysDownTime.keyW = 0; } break; } @@ -376,13 +396,13 @@ ioManager.keydown = e => { } const now = performance.now(); - const timeDiff = now - lastWASDDownTime.keyD; + const timeDiff = now - lastKeysDownTime.keyD; if (timeDiff < doubleTapTime && ioManager.keys.shift) { ioManager.keys.doubleTap = true; game.menuDoubleTap(); } - lastWASDDownTime.keyD = now; - lastWASDDownTime.keyA = 0; + lastKeysDownTime.keyD = now; + lastKeysDownTime.keyA = 0; break; } case 70: { // F @@ -444,11 +464,12 @@ ioManager.keydown = e => { document.getElementById('key-r').click(); // equip break; } */ - /* case 71: { // G + case 71: { // G // game.menuDrop(); - game.menuGDown(); + // game.menuGDown(); + game.menuSwitchCharacter(); break; - } */ + } case 86: { // V // if (!_inputFocused()) { e.preventDefault(); @@ -467,11 +488,22 @@ ioManager.keydown = e => { } case 69: { // E // if (cameraManager.pointerLockElement) { + + const now = performance.now(); + const timeDiff = now - lastKeysDownTime.keyE; + if (timeDiff < doubleTapTime) { + game.menuMiddleToggle(); + } else { + game.menuMiddleUp(); + if (game.canRotate()) { game.menuRotate(-1); } else { game.menuActivateDown(); } + } + lastKeysDownTime.keyE = now; + // } break; } @@ -515,9 +547,7 @@ ioManager.keydown = e => { // if (controlsManager.isPossessed()) { if (!game.isJumping()) { game.jump('jump'); - } /* else { - physicsManager.setGlide(!physicsManager.getGlideState() && !game.isFlying()); - } */ + } // } break; } @@ -526,12 +556,20 @@ ioManager.keydown = e => { break; } */ case 81: { // Q - // game.setWeaponWheel(true); - if (game.canToggleAxis()) { - game.toggleAxis(); + if (e.ctrlKey) { + if (cameraManager.pointerLockElement) { + cameraManager.exitPointerLock(); + } else { + cameraManager.requestPointerLock(); + } } else { - // clear conflicting aim with quick menu - game.menuUnaim(); + // game.setWeaponWheel(true); + if (game.canToggleAxis()) { + game.toggleAxis(); + } else { + // clear conflicting aim with quick menu + game.menuUnaim(); + } } break; } @@ -566,22 +604,28 @@ ioManager.keypress = e => { // nothing }; ioManager.wheel = e => { - // window.addEventListener('wheel', e => { - // console.log('target', e.target); - if (physicsManager.getPhysicsEnabled()) { + if (storyManager.handleWheel(e)) { + // nothing + } else { + if (physicsScene.getPhysicsEnabled()) { const renderer = getRenderer(); if (renderer && (e.target === renderer.domElement || e.target.id === 'app')) { cameraManager.handleWheelEvent(e); } } - /* }, { - passive: false, - }); */ + } }; ioManager.keyup = e => { if (_inputFocused() || e.repeat) { return; } + + if (e.keyCode === 18) { // alt + e.preventDefault(); + e.stopPropagation(); + return; + } + switch (e.which) { /* case 81: { // Q game.setWeaponWheel(false); @@ -677,105 +721,19 @@ ioManager.keyup = e => { } } }; -// let lastMouseDistance = 0; -const _updateMouseMovement = e => { - const {movementX, movementY} = e; - - // const mouseDistance = Math.sqrt(movementX*movementX, movementY*movementY); - // if ((mouseDistance - lastMouseDistance) < 100) { // hack around a Chrome bug - camera.position.add(localVector.copy(cameraManager.getCameraOffset()).applyQuaternion(camera.quaternion)); - - camera.rotation.y -= movementX * Math.PI * 2 * 0.0005; - camera.rotation.x -= movementY * Math.PI * 2 * 0.0005; - camera.rotation.x = Math.min(Math.max(camera.rotation.x, -Math.PI * 0.35), Math.PI / 2); - camera.quaternion.setFromEuler(camera.rotation); - - camera.position.sub(localVector.copy(cameraManager.getCameraOffset()).applyQuaternion(camera.quaternion)); - - camera.updateMatrixWorld(); - // } - // lastMouseDistance = mouseDistance; -}; -const _getMouseRaycaster = (e, raycaster) => { - const {clientX, clientY} = e; - const renderer = getRenderer(); - if (renderer) { - renderer.getSize(localVector2D2); - localVector2D.set( - (clientX / localVector2D2.x) * 2 - 1, - -(clientY / localVector2D2.y) * 2 + 1 - ); - if ( - localVector2D.x >= -1 && localVector2D.x <= 1 && - localVector2D.y >= -1 && localVector2D.y <= 1 - ) { - raycaster.setFromCamera(localVector2D, camera); - return raycaster; - } else { - return null; - } - } else { - return null; - } -}; -const _updateMouseHover = e => { - let mouseHoverObject = null; - let mouseSelectedObject = null; - let mouseHoverPhysicsId = 0; - let htmlHover = false; - - const raycaster = _getMouseRaycaster(e, localRaycaster); - let point = null; - if (raycaster) { - transformControls.handleMouseMove(raycaster); - - const position = raycaster.ray.origin; - const quaternion = localQuaternion.setFromUnitVectors( - localVector.set(0, 0, -1), - raycaster.ray.direction - ); - - const result = physx.physxWorker.raycastPhysics(physx.physics, position, quaternion); - - if (result) { - const object = world.appManager.getAppByPhysicsId(result.objectId); - if (object) { - point = localVector.fromArray(result.point); - - if (object.isHtml) { - htmlHover = true; - } else { - if (game.hoverEnabled) { - mouseHoverObject = object; - mouseHoverPhysicsId = result.objectId; - } - } - } - } - } - game.setMouseHoverObject(mouseHoverObject, mouseHoverPhysicsId, point); - const renderer = getRenderer(); - if (htmlHover) { - renderer.domElement.classList.add('hover'); - } else { - renderer.domElement.classList.remove('hover'); - } -}; ioManager.mousemove = e => { /* if (game.weaponWheel) { game.updateWeaponWheel(e); } else { */ if (cameraManager.pointerLockElement) { - _updateMouseMovement(e); + cameraManager.handleMouseMove(e); } else { if (game.dragging) { game.menuDrag(e); game.menuDragRight(e); - } else { - _updateMouseHover(e); } } - game.setLastMouseEvent(e); + raycastManager.setLastMouseEvent(e); // } }; ioManager.mouseleave = e => { @@ -784,7 +742,7 @@ ioManager.mouseleave = e => { }; ioManager.click = e => { if (cameraManager.pointerLockElement) { - game.menuClick(); + game.menuClick(e); } else { // game.setContextMenu(false); @@ -807,7 +765,7 @@ ioManager.click = e => { } } */ } - game.setLastMouseEvent(e); + raycastManager.setLastMouseEvent(e); }; // let mouseDown = false; let lastMouseButtons = 0; @@ -822,7 +780,7 @@ ioManager.mousedown = e => { } } else { if ((changedButtons & 1) && (e.buttons & 1)) { // left - const raycaster = _getMouseRaycaster(e, localRaycaster); + const raycaster = raycastManager.getMouseRaycaster(e); if (raycaster) { transformControls.handleMouseDown(raycaster); } @@ -837,11 +795,11 @@ ioManager.mousedown = e => { if (!cameraManager.pointerLockElement) { cameraManager.requestPointerLock(); } - game.menuDragdown(); + game.menuMiddleDown(); } lastMouseButtons = e.buttons; // mouseDown = true; - game.setLastMouseEvent(e); + raycastManager.setLastMouseEvent(e); }; ioManager.mouseup = e => { const changedButtons = lastMouseButtons ^ e.buttons; @@ -859,12 +817,12 @@ ioManager.mouseup = e => { } } if ((changedButtons & 4) && !(e.buttons & 4)) { // middle - game.menuDragup(); + game.menuMiddleUp(); } // mouseDown = false; // } lastMouseButtons = e.buttons; - game.setLastMouseEvent(e); + raycastManager.setLastMouseEvent(e); }; ioManager.paste = e => { if (!window.document.activeElement) { @@ -896,7 +854,7 @@ ioManager.bindInput = () => { }); */ /* window.addEventListener('wheel', e => { // console.log('target', e.target); - if (physicsManager.getPhysicsEnabled()) { + if (physicsScene.getPhysicsEnabled()) { const renderer = getRenderer(); if (renderer && (e.target === renderer.domElement || e.target.id === 'app')) { cameraManager.handleWheelEvent(e); diff --git a/land-iconer.js b/land-iconer.js new file mode 100644 index 0000000000..484e2a251d --- /dev/null +++ b/land-iconer.js @@ -0,0 +1,86 @@ +import offscreenEngineManager from './offscreen-engine-manager.js'; + +const useLandScreenshotter = (() => { + let getLandImage = null; + return () => { + if (!getLandImage) { + getLandImage = offscreenEngineManager.createFunction([ + `\ + import * as THREE from 'three'; + import metaversefile from './metaversefile-api.js'; + import {screenshotLandApp} from './land-screenshotter.js'; + import physx from './physx.js'; + `, + async function(seed, renderPosition, lods, minLodRange, clipRange, width, height) { + await physx.waitForLoad(); + + const start_url = '/metaverse_modules/land/'; + const components = [ + { + key: 'seed', + value: seed, + }, + { + key: 'renderPosition', + value: renderPosition, + }, + { + key: 'lods', + value: lods, + }, + { + key: 'minLodRange', + value: minLodRange, + }, + { + key: 'clipRange', + value: clipRange, + }, + { + key: 'physicsInstance', + value: false, + }, + { + key: 'wait', + value: true, + }, + ]; + const app = await metaversefile.createAppAsync({ + start_url, + components, + }); + const range = new THREE.Box3( + new THREE.Vector3().fromArray(clipRange[0]), + new THREE.Vector3().fromArray(clipRange[1]), + ); + const landCanvas = await screenshotLandApp({ + app, + range, + width, + height, + }); + const imageBitmap = await createImageBitmap(landCanvas); + + app.destroy(); + + return imageBitmap; + } + ]); + } + return getLandImage; + }; +})(); + +export const createLandIcon = async ({ + seed, + renderPosition, + lods, + minLodRange, + clipRange, + width, + height, +} = {}) => { + const getLandImage = useLandScreenshotter(); + const imageBitmap = await getLandImage([seed, renderPosition, lods, minLodRange, clipRange, width, height]); + return imageBitmap; +}; \ No newline at end of file diff --git a/land-screenshotter.js b/land-screenshotter.js new file mode 100644 index 0000000000..c99fe42c2b --- /dev/null +++ b/land-screenshotter.js @@ -0,0 +1,122 @@ +import * as THREE from 'three'; +import {getRenderer} from './renderer.js'; + +// + +const fov = 30; +const zoomFactor = 2.5; + +// + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localVector3 = new THREE.Vector3(); +const localVector2D = new THREE.Vector2(); +const localVector4D = new THREE.Vector4(); +const localColor = new THREE.Color(); + +// + +const _addPreviewLights = scene => { + const ambientLight = new THREE.AmbientLight(0xffffff, 3); + scene.add(ambientLight); + + const directionalLight = new THREE.DirectionalLight(0xffffff, 3); + directionalLight.position.set(1, 2, 3); + directionalLight.updateMatrixWorld(); + scene.add(directionalLight); +}; + +const sideScene = new THREE.Scene(); +sideScene.autoUpdate = false; +_addPreviewLights(sideScene); +const sideCamera = new THREE.PerspectiveCamera(fov); + +export const screenshotLandApp = async ({ + app, + range, + width = 300, + height = 300, + clearColor = 0xFFFFFF, + clearAlpha = 0, +} = {}) => { + const renderer = getRenderer(); + const size = renderer.getSize(localVector2D); + const pixelRatio = renderer.getPixelRatio(); + + const writeCanvas = document.createElement('canvas'); + writeCanvas.width = width; + writeCanvas.height = height; + const writeCtx = writeCanvas.getContext('2d'); + + { + // push old state + const oldViewport = renderer.getViewport(localVector4D); + const oldClearColor = renderer.getClearColor(localColor); + const oldClearAlpha = renderer.getClearAlpha(); + + // push parent + const originalParent = app.parent; + sideScene.add(app); + sideScene.updateMatrixWorld(); + + // clear + renderer.setClearColor(clearColor, clearAlpha); + renderer.clear(); + + // render + const _render = () => { + const rangeSize = range.getSize(localVector); + const lookPoint = localVector2.copy(range.min) + .add(range.max) + .divideScalar(2); + const xzSize = Math.max(rangeSize.x, rangeSize.z); + lookPoint.y = xzSize; + // rangeSize.y = 0; + sideCamera.position.copy(lookPoint) + .add( + localVector3.set(zoomFactor * rangeSize.x, 0, zoomFactor * rangeSize.z) + ); + // lookPoint.y = xzSize; + sideCamera.lookAt(lookPoint); + // sideCamera.position.y -= xzSize / 4; + sideCamera.position.y = xzSize * 3 / 4; + // fitCameraToBoundingBox(sideCamera, range, 1.2); + sideCamera.updateMatrixWorld(); + + // render side scene + renderer.setViewport(0, 0, width, height); + // renderer.clear(); + renderer.render(sideScene, sideCamera); + + // copy to canvas + writeCtx.clearRect(0, 0, width, height); + writeCtx.drawImage( + renderer.domElement, + 0, + size.y * pixelRatio - height * pixelRatio, + width * pixelRatio, + height * pixelRatio, + 0, + 0, + width, + height + ); + // writeCtx.drawImage(renderer.domElement, 0, 0); + }; + _render(); + + // pop parent + if (originalParent) { + originalParent.add(app); + } else { + sideScene.remove(app); + } + + // pop old state + renderer.setViewport(oldViewport); + renderer.setClearColor(oldClearColor, oldClearAlpha); + } + + return writeCanvas; +}; \ No newline at end of file diff --git a/light-mapper.js b/light-mapper.js new file mode 100644 index 0000000000..0b8b71d6bb --- /dev/null +++ b/light-mapper.js @@ -0,0 +1,343 @@ +import * as THREE from 'three'; +import {getRenderer, scene} from './renderer.js'; +import {WebaverseShaderMaterial} from './materials.js'; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localVector3 = new THREE.Vector3(); +const localVector4 = new THREE.Vector3(); +const localBox = new THREE.Box3(); + +const zeroVector = new THREE.Vector3(); + +// + +const _writeTex3d = (() => { + const localVector = new THREE.Vector3(); + const localBox = new THREE.Box3(); + return (dstTex, dstSize, dstPosition, srcArray, sourceBox) => { + const renderer = getRenderer(); + + _copyArray3d(dstTex.image.data, dstSize, dstPosition, srcArray, sourceBox); + + const w = sourceBox.max.x - sourceBox.min.x + 1; + const h = sourceBox.max.y - sourceBox.min.y + 1; + const d = sourceBox.max.z - sourceBox.min.z + 1; + + const destinationBox = localBox.set( + dstPosition, + localVector.set(dstPosition.x + w - 1, dstPosition.y + h - 1, dstPosition.z + d - 1), + ); + + const level = 0; + + renderer.copyTextureToTexture3D(destinationBox, dstPosition, dstTex, dstTex, level); + }; +})(); +const _writeTex3dWithin = (() => { + const localVector = new THREE.Vector3(); + const localBox = new THREE.Box3(); + return (dstTex, dstSize, dstPosition, sourceBox) => { + const renderer = getRenderer(); + + _copyArray3dWithin(dstTex.image.data, dstSize, dstPosition, sourceBox); + + const w = sourceBox.max.x - sourceBox.min.x + 1; + const h = sourceBox.max.y - sourceBox.min.y + 1; + const d = sourceBox.max.z - sourceBox.min.z + 1; + + const destinationBox = localBox.set( + dstPosition, + localVector.set(dstPosition.x + w - 1, dstPosition.y + h - 1, dstPosition.z + d - 1), + ); + + const level = 0; + + renderer.copyTextureToTexture3D(destinationBox, dstPosition, dstTex, dstTex, level); + }; +})(); + +// + +const _copyArray3d = (dstArray, dstSize, dstPosition, srcArray, sourceBox) => { + const sw = sourceBox.max.x - sourceBox.min.x + 1; + const sh = sourceBox.max.y - sourceBox.min.y + 1; + const sd = sourceBox.max.z - sourceBox.min.z + 1; + + for (let z = 0; z < sd; z++) { + const sz = z + sourceBox.min.z; + const dz = dstPosition.z + z; + for (let y = 0; y < sh; y++) { + const sy = y + sourceBox.min.y; + const dy = dstPosition.y + y; + let srcIndex = sourceBox.min.x + sy * sw + sz * sw * sh; + let dstIndex = dstPosition.x + dy * dstSize.x + dz * dstSize.x * dstSize.y; + for (let x = 0; x < sw; x++) { + dstArray[dstIndex++] = srcArray[srcIndex++]; + } + } + } +}; +const _copyArray3dWithin = (array, dstSize, dstPosition, sourceBox) => { + // note that we need to pay attention to the copy direction + // if the src < dst, we need to copy backwards + const sw = sourceBox.max.x - sourceBox.min.x + 1; + const sh = sourceBox.max.y - sourceBox.min.y + 1; + const sd = sourceBox.max.z - sourceBox.min.z + 1; + + const flipX = sourceBox.min.x < dstPosition.x; + const flipY = sourceBox.min.y < dstPosition.y; + const flipZ = sourceBox.min.z < dstPosition.z; + + const startX = flipX ? sw - 1 : 0; + const startY = flipY ? sh - 1 : 0; + const startZ = flipZ ? sd - 1 : 0; + + // const endX = flipX ? -1 : sw; + const endY = flipY ? -1 : sh; + const endZ = flipZ ? -1 : sd; + + const deltaX = flipX ? -1 : 1; + const deltaY = flipY ? -1 : 1; + const deltaZ = flipZ ? -1 : 1; + + for (let z = startZ; z !== endZ; z += deltaZ) { + const sz = z + sourceBox.min.z; + const dz = dstPosition.z + z; + for (let y = startY; y !== endY; y += deltaY) { + const sy = y + sourceBox.min.y; + const dy = dstPosition.y + y; + let srcIndex = startX + sourceBox.min.x + sy * dstSize.x + sz * dstSize.x * dstSize.y; + let dstIndex = startX + dstPosition.x + dy * dstSize.x + dz * dstSize.x * dstSize.y; + for (let x = 0; x < sw; x++) { + array[dstIndex] = array[srcIndex]; + dstIndex += deltaX; + srcIndex += deltaX; + } + } + } +}; + +// + +export class LightMapper extends EventTarget { + constructor({ + chunkSize, + terrainSize, + range, + debug, + }) { + super(); + + this.chunkSize = chunkSize; + this.terrainSize = terrainSize; + this.range = range; + // this.debug = debug; + + const skylightData = new Uint8Array(terrainSize * terrainSize * terrainSize); + const skylightTex = new THREE.DataTexture3D(skylightData, terrainSize, terrainSize, terrainSize); + skylightTex.format = THREE.RedFormat; + skylightTex.type = THREE.UnsignedByteType; + skylightTex.minFilter = THREE.LinearFilter; + skylightTex.magFilter = THREE.LinearFilter; + // skylightTex.minFilter = THREE.NearestFilter; + // skylightTex.magFilter = THREE.NearestFilter; + skylightTex.flipY = false; + skylightTex.needsUpdate = true; + skylightTex.generateMipmaps = false; + this.skylightTex = skylightTex; + + const aoData = new Uint8Array(terrainSize * terrainSize * terrainSize); + const aoTex = new THREE.DataTexture3D(aoData, terrainSize, terrainSize, terrainSize); + aoTex.format = THREE.RedFormat; + aoTex.type = THREE.UnsignedByteType; + aoTex.minFilter = THREE.LinearFilter; + aoTex.magFilter = THREE.LinearFilter; + // aoTex.minFilter = THREE.NearestFilter; + // aoTex.magFilter = THREE.NearestFilter; + aoTex.flipY = false; + aoTex.needsUpdate = true; + aoTex.generateMipmaps = false; + this.aoTex = aoTex; + + this.lightBasePosition = new THREE.Vector3( + -terrainSize / 2, + 0, + -terrainSize / 2 + ); + this.lightTexSize = new THREE.Vector3(terrainSize, terrainSize, terrainSize); + + if (debug) { + const maxInstances = terrainSize * terrainSize * terrainSize; + const instancedCubeGeometry = new THREE.InstancedBufferGeometry(); + { + const cubeGeometry = new THREE.BoxBufferGeometry(0.8, 0.8, 0.8); + for (const k in cubeGeometry.attributes) { + instancedCubeGeometry.setAttribute(k, cubeGeometry.attributes[k]); + } + instancedCubeGeometry.setIndex(cubeGeometry.index); + } + const debugMaterial = new WebaverseShaderMaterial({ + uniforms: { + uSkylightTex: { + value: this.skylightTex, + needsUpdate: true, + }, + uAoTex: { + value: this.aoTex, + needsUpdate: true, + }, + }, + vertexShader: `\ + varying vec3 vNormal; + varying vec3 vUv; + + const float terrainSize = ${terrainSize.toFixed(8)}; + + void main() { + float instance = float(gl_InstanceID); + float x = mod(instance, terrainSize); + instance = (instance - x) / terrainSize; + float y = mod(instance, terrainSize); + instance = (instance - y) / terrainSize; + float z = instance; + + vec3 offset = vec3(x, y, z); + vUv = offset / terrainSize; + + gl_Position = projectionMatrix * modelViewMatrix * vec4(position + offset, 1.0); + + vNormal = normalMatrix * normal; + } + `, + fragmentShader: `\ + precision highp sampler3D; + + uniform sampler3D uSkylightTex; + uniform sampler3D uAoTex; + + varying vec3 vNormal; + varying vec3 vUv; + + const float terrainSize = ${terrainSize.toFixed(8)}; + + void main() { + float skylight = texture(uSkylightTex, vUv).r; + float ao = texture(uAoTex, vUv).r; + + float c = 1. - (skylight * 255. / 8.); + + if (c > 0.0) { + gl_FragColor = vec4(vNormal, c); + } else { + discard; + } + } + `, + // color: 0xFFFFFF, + transparent: true, + // opacity: 0.1, + }); + const debugMesh = new THREE.InstancedMesh(instancedCubeGeometry, debugMaterial, maxInstances); + const heightOffset = -60; + // debugMesh.position.y += heightOffset; + // debugMesh.updateMatrixWorld(); + // debugMesh.count = 0; + debugMesh.frustumCulled = false; + scene.add(debugMesh); + + this.addEventListener('coordupdate', e => { + const {coord} = e.data; + // console.log('coord update', coord.toArray().join(',')); + debugMesh.position.copy(coord) + // .multiplyScalar(terrainSize); + debugMesh.position.y += heightOffset; + debugMesh.updateMatrixWorld(); + }); + } + } + drawChunk(chunk, { + skylights, + aos, + }) { + const position = localVector.copy(chunk) + .multiplyScalar(this.chunkSize) + .sub(this.lightBasePosition); + if ( + position.x >= 0 && position.x < this.terrainSize && + position.y >= 0 && position.y < this.terrainSize && + position.z >= 0 && position.z < this.terrainSize + ) { + const sourceBox = localBox.set( + localVector2.set(0, 0, 0), + localVector3.set(this.chunkSize - 1, this.chunkSize - 1, this.chunkSize - 1) + ); + + _writeTex3d(this.skylightTex, this.lightTexSize, position, skylights, sourceBox); + _writeTex3d(this.aoTex, this.lightTexSize, position, aos, sourceBox); + } else { + // chunk out of lighting range + } + + this.dispatchEvent(new MessageEvent('chunkupdate', { + data: { + chunk, + // skylights, + // ao, + }, + })); + } + updateCoord(min1xCoord) { + const lastPosition = this.lightBasePosition; + const newPosition = localVector.copy(min1xCoord) + .multiplyScalar(this.chunkSize); + const deltaNegative = localVector2.copy(lastPosition) + .sub(newPosition); + + if (!deltaNegative.equals(zeroVector)) { + const position = deltaNegative; + const sourceBox = localBox.set( + localVector3.set(0, 0, 0), + localVector4.set(this.terrainSize - 1, this.terrainSize - 1, this.terrainSize - 1) + ); + + // clip to texture bounds + if (position.x < 0) { + const deltaX = -position.x; + sourceBox.min.x += deltaX; + position.x += deltaX; + } else if (position.x > 0) { + sourceBox.max.x -= position.x; + } + if (position.y < 0) { + const deltaY = -position.y; + sourceBox.min.y += deltaY; + position.y += deltaY; + } else if (position.y > 0) { + sourceBox.max.y -= position.y; + } + if (position.z < 0) { + const deltaZ = -position.z; + sourceBox.min.z += deltaZ; + position.z += deltaZ; + } else if (position.z > 0) { + sourceBox.max.z -= position.z; + } + + _writeTex3dWithin(this.skylightTex, this.lightTexSize, position, sourceBox); + _writeTex3dWithin(this.aoTex, this.lightTexSize, position, sourceBox); + + this.lightBasePosition.copy(newPosition); + + this.dispatchEvent(new MessageEvent('coordupdate', { + data: { + coord: newPosition, + }, + })); + + // return true; + } /* else { + return false; + } */ + } +} \ No newline at end of file diff --git a/loadout-manager.js b/loadout-manager.js index b63db31762..ddf7edeac0 100644 --- a/loadout-manager.js +++ b/loadout-manager.js @@ -1,4 +1,4 @@ -import {localPlayer} from './players.js'; +import {getLocalPlayer} from './players.js'; import {LoadoutRenderer} from './loadout-renderer.js'; import {InfoboxRenderer} from './infobox.js'; import {createObjectSprite} from './object-spriter.js'; @@ -25,6 +25,7 @@ class LoadoutManager extends EventTarget { this.infoboxRenderer = null; this.selectedIndex = -1; + const localPlayer = getLocalPlayer(); localPlayer.addEventListener('wearupdate', e => { const {app, wear, loadoutIndex} = e; diff --git a/lock-manager.js b/lock-manager.js new file mode 100644 index 0000000000..30dd118763 --- /dev/null +++ b/lock-manager.js @@ -0,0 +1,80 @@ +import {makePromise} from './util.js'; + +export const abortError = new Error('aborted'); +abortError.isAbortError = true; + +const unlockedEvent = new MessageEvent('unlocked'); + +export class Lock extends EventTarget { + constructor() { + super(); + + this.running = false; + this.queue = []; + } + async lock({signal} = {}) { + if (this.running) { + const p = makePromise(); + this.queue.push(p); + + const abort = () => { + p.reject(abortError); + }; + signal && signal.addEventListener('abort', abort); + + try { + await p; + } finally { + signal && signal.removeEventListener('abort', abort); + } + } else { + this.running = true; + } + } + unlock() { + this.running = false; + const entry = this.queue.shift(); + if (entry) { + entry.accept(); + } else { + this.dispatchEvent(unlockedEvent); + } + } +} + +export class LockManager { + constructor() { + this.locks = new Map(); + } + async request(key, {signal} = {}, fn) { + let lock = this.locks.get(key); + if (!lock) { + lock = new Lock(); + this.locks.set(key, lock); + lock.addEventListener('unlocked', () => { + this.locks.delete(key); + }); + } + await lock.lock({ + signal, + }); + + let result, error; + try { + result = fn !== undefined ? (await fn(lock)) : fn; + } catch (err) { + error = err; + } finally { + await Promise.resolve(); // return before unlocking + lock.unlock(); + } + + if (!error) { + return result; + } else { + throw error; + } + } +} +// const locks = new LockManager(); +// export default locks; \ No newline at end of file diff --git a/lod.js b/lod.js new file mode 100644 index 0000000000..d96fb1024c --- /dev/null +++ b/lod.js @@ -0,0 +1,661 @@ +import * as THREE from 'three'; +import {scene, camera} from './renderer.js'; +import {defaultChunkSize} from './constants.js'; +import {abortError} from './lock-manager.js'; +import {makePromise} from './util.js'; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localVector3 = new THREE.Vector3(); +// const localVector4 = new THREE.Vector3(); +// const localVector5 = new THREE.Vector3(); +// const localQuaternion = new THREE.Quaternion(); +// const localMatrix = new THREE.Matrix4(); + +// const onesLodsArray = new Array(8).fill(1); + +const nop = () => {}; + +class OctreeNode extends EventTarget { + constructor(min, lod, isLeaf) { + super(); + + this.min = min; + this.lod = lod; + this.isLeaf = isLeaf; + this.lodArray = Array(8).fill(-1); + + this.children = Array(8).fill(null); + } + containsPoint(p) { + return p.x >= this.min.x && p.x < this.min.x + this.lod && + p.y >= this.min.y && p.y < this.min.y + this.lod && + p.z >= this.min.z && p.z < this.min.z + this.lod; + } + containsNode(node) { + return this.containsPoint(node.min); + } + equalsNode(p) { + return p.min.x === this.min.x && p.min.y === this.min.y && p.min.z === this.min.z && + p.lodArray.every((lod, i) => lod === this.lodArray[i]); + } + intersectsNode(p) { + return this.containsNode(p) || p.containsNode(this); + } + destroy() { + this.dispatchEvent(new MessageEvent('destroy')); + } +} +/* const tempUint32Array = new Uint32Array(1); +const _toUint32 = value => { + tempUint32Array[0] = value; + return tempUint32Array[0]; +} */ +const _octreeNodeMinHash = (min, lod) => `${min.x},${min.y},${min.z}:${lod}`; +const _getLeafNodeFromPoint = (leafNodes, p) => leafNodes.find(node => node.containsPoint(p)); +const constructOctreeForLeaf = (position, lod1Range, maxLod) => { + const nodeMap = new Map(); + + const _getNode = (min, lod) => { + const hash = _octreeNodeMinHash(min, lod); + return nodeMap.get(hash); + }; + const _createNode = (min, lod, isLeaf = lod === 1) => { + const node = new OctreeNode(min, lod, isLeaf); + const hash = _octreeNodeMinHash(min, lod); + if (nodeMap.has(hash)) { + throw new Error(`Node already exists: ${hash}`); + } + nodeMap.set(hash, node); + return node; + }; + const _getOrCreateNode = (min, lod) => _getNode(min, lod) ?? _createNode(min, lod); + const _ensureChildren = parentNode => { + const lodMin = parentNode.min; + const lod = parentNode.lod; + for (let dx = 0; dx < 2; dx++) { + for (let dy = 0; dy < 2; dy++) { + for (let dz = 0; dz < 2; dz++) { + const childIndex = dx + 2 * (dy + 2 * dz); + if (parentNode.children[childIndex] === null) { + parentNode.children[childIndex] = _createNode( + lodMin.clone().add( + new THREE.Vector3(dx, dy, dz).multiplyScalar(lod / 2) + ), + lod / 2, + true + ); + parentNode.children[childIndex].parent = parentNode; + } + } + } + } + }; + const _constructTreeUpwards = leafPosition => { + let rootNode = _getOrCreateNode(leafPosition, 1); + for (let lod = 2; lod <= maxLod; lod *= 2) { + const lodMin = rootNode.min.clone(); + lodMin.x = Math.floor(lodMin.x / lod) * lod; + lodMin.y = Math.floor(lodMin.y / lod) * lod; + lodMin.z = Math.floor(lodMin.z / lod) * lod; + + const lodCenter = lodMin.clone().addScalar(lod / 2); + const childIndex = (rootNode.min.x < lodCenter.x ? 0 : 1) + + (rootNode.min.y < lodCenter.y ? 0 : 2) + + (rootNode.min.z < lodCenter.z ? 0 : 4); + + const parentNode = _getOrCreateNode(lodMin, lod); + parentNode.isLeaf = false; + if (parentNode.children[childIndex] === null) { // children not set yet + parentNode.children[childIndex] = rootNode; + _ensureChildren(parentNode); + } + rootNode = parentNode; + } + return rootNode; + }; + + // sample base leaf nodes to generate octree upwards + const rangeMin = position.clone() + .sub(new THREE.Vector3(lod1Range, lod1Range, lod1Range)); + const rangeMax = position.clone() + .add(new THREE.Vector3(lod1Range, lod1Range, lod1Range)); + for (let dx = rangeMin.x; dx <= rangeMax.x; dx++) { + for (let dy = rangeMin.y; dy <= rangeMax.y; dy++) { + for (let dz = rangeMin.z; dz <= rangeMax.z; dz++) { + const leafPosition = new THREE.Vector3(dx, dy, dz); + leafPosition.x = Math.floor(leafPosition.x); + leafPosition.y = Math.floor(leafPosition.y); + leafPosition.z = Math.floor(leafPosition.z); + _constructTreeUpwards(leafPosition); + } + } + } + + /* // fill in missing children that are in the lod1Range + const _ensureChildrenDownToLod1 = node => { + const lodMin = node.min; + const lod = node.lod; + if (lod === 1) { + return; + } + node.isLeaf = false; + for (let dx = 0; dx < 2; dx++) { + for (let dy = 0; dy < 2; dy++) { + for (let dz = 0; dz < 2; dz++) { + const childIndex = dx + 2 * (dy + 2 * dz); + if (node.children[childIndex] === null) { + const childNode = _createNode( + lodMin.clone().add( + new THREE.Vector3(dx, dy, dz).multiplyScalar(lod / 2) + ), + lod / 2, + true + ); + node.children[childIndex] = childNode; + _ensureChildrenDownToLod1(childNode); + } + } + } + } + }; + for (let node of nodeMap.values()) { + if ( + node.min.x >= rangeMin.x && node.min.x < rangeMax.x && + node.min.y >= rangeMin.y && node.min.y < rangeMax.y && + node.min.z >= rangeMin.z && node.min.z < rangeMax.z + ) { + _ensureChildrenDownToLod1(node); + } + } */ + + const rootNodes = []; + for (const node of nodeMap.values()) { + if (node.lod === maxLod) { + rootNodes.push(node); + } + } + + const lod1Nodes = []; + for (const node of nodeMap.values()) { + if (node.lod === 1) { + lod1Nodes.push(node); + } + } + + // sanity check lod1Nodes for duplicates + { + const lod1NodeMap = new Map(); + for (const node of lod1Nodes) { + const hash = _octreeNodeMinHash(node.min, node.lod); + if (lod1NodeMap.has(hash)) { + throw new Error(`Duplicate lod1 node: ${hash}`); + } + lod1NodeMap.set(hash, node); + } + } + + const leafNodes = []; + for (const node of nodeMap.values()) { + if (node.isLeaf) { + leafNodes.push(node); + } + } + + // sanity check that no leaf node contains another leaf node + for (const leafNode of leafNodes) { + for (const childNode of leafNode.children) { + if (childNode?.isLeaf) { + throw new Error(`Leaf node contains another leaf node 1: ${leafNode.min.toArray().join(',')}`); + } + } + for (const leafNode2 of leafNodes) { + if (leafNode !== leafNode2 && leafNode.containsNode(leafNode2)) { + throw new Error(`Leaf node contains another leaf node 2: ${leafNode.min.toArray().join(',')}`); + } + } + } + + // assign lodArray for each node based on the minimum lod of the target point in the world + // vm::ivec3(0, 0, 0), + // vm::ivec3(1, 0, 0), + // vm::ivec3(0, 0, 1), + // vm::ivec3(1, 0, 1), + // vm::ivec3(0, 1, 0), + // vm::ivec3(1, 1, 0), + // vm::ivec3(0, 1, 1), + // vm::ivec3(1, 1, 1), + for (const node of nodeMap.values()) { + node.lodArray = [ + new THREE.Vector3(0, 0, 0), + new THREE.Vector3(1, 0, 0), + new THREE.Vector3(0, 0, 1), + new THREE.Vector3(1, 0, 1), + new THREE.Vector3(0, 1, 0), + new THREE.Vector3(1, 1, 0), + new THREE.Vector3(0, 1, 1), + new THREE.Vector3(1, 1, 1), + ].map(offset => { + const containingLeafNode = _getLeafNodeFromPoint(leafNodes, node.min.clone().add(offset.clone().multiplyScalar(node.lod))); + if (containingLeafNode) { + return containingLeafNode.lod; + } else { + return node.lod; + } + }); + } + + return leafNodes; + /* return { + rootNodes, + lod1Nodes, + leafNodes, + remapNodes(nodes) { + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + const hash = _octreeNodeMinHash(node.min, node.lod); + const otherNode = nodeMap.get(hash); + if (otherNode) { + nodes[i] = otherNode; + } + } + }, + getOutrangedNodes(nodes) { + const remainderNodes = []; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + const hash = _octreeNodeMinHash(node.min, node.lod); + const otherNode = nodeMap.get(hash); + if (!otherNode) { + remainderNodes.push(node); + } + } + return remainderNodes; + }, + }; */ +}; +class Task extends EventTarget { + constructor(maxLodNode) { + super(); + + this.maxLodNode = maxLodNode; + + this.newNodes = []; + this.oldNodes = []; + + this.abortController = new AbortController(); + this.signal = this.abortController.signal; + } + equals(t) { + return this.newNodes.length === this.oldNodes.length && this.newNodes.every(node => { + return t.newNodes.some(node2 => node.equalsNode(node2)); + }) && this.oldNodes.every(node => { + return t.oldNodes.some(node2 => node.equalsNode(node2)); + }); + } + cancel() { + this.abortController.abort(abortError); + } + isNop() { + const task = this; + return task.newNodes.length === task.oldNodes.length && task.newNodes.every(newNode => { + return task.oldNodes.some(oldNode => oldNode.equalsNode(newNode)); + }); + } + commit() { + this.dispatchEvent(new MessageEvent('finish')); + } + waitForLoad() { + const p = makePromise(); + this.addEventListener('finish', () => { + p.accept(); + }, { + once: true, + }); + return p; + } +} +const diffLeafNodes = (newLeafNodes, oldLeafNodes) => { + // map from min lod hash to task containing new nodes and old nodes + const taskMap = new Map(); + + const _getMaxLodNode = min => { + const newLeafNode = _getLeafNodeFromPoint(newLeafNodes, min); + const oldLeafNode = _getLeafNodeFromPoint(oldLeafNodes, min); + if (newLeafNode && oldLeafNode) { + return newLeafNode.lod > oldLeafNode.lod ? newLeafNode : oldLeafNode; + } else if (newLeafNode) { + return newLeafNode; + } else { + return oldLeafNode; + } + }; + for (const newNode of newLeafNodes) { + const maxLodNode = _getMaxLodNode(newNode.min); + const hash = _octreeNodeMinHash(maxLodNode.min, maxLodNode.lod); + let task = taskMap.get(hash); + if (!task) { + task = new Task(maxLodNode); + taskMap.set(hash, task); + } + task.newNodes.push(newNode); + } + for (const oldNode of oldLeafNodes) { + const maxLodNode = _getMaxLodNode(oldNode.min); + const hash = _octreeNodeMinHash(maxLodNode.min, maxLodNode.lod); + let task = taskMap.get(hash); + if (!task) { + task = new Task(maxLodNode); + taskMap.set(hash, task); + } + task.oldNodes.push(oldNode); + } + + let tasks = Array.from(taskMap.values()); + return tasks; + /* const newTasks = []; + const keepTasks = []; + for (const task of tasks) { + const isNopTask = task.newNodes.length === task.oldNodes.length && task.newNodes.every(newNode => { + return task.oldNodes.some(oldNode => oldNode.equalsNode(newNode)); + }); + if (isNopTask) { + keepTasks.push(task); + } else { + newTasks.push(task); + } + } + return { + newTasks, + keepTasks, + }; */ +}; +// sort tasks by distance to world position of the central max lod node +const sortTasks = (tasks, worldPosition) => { + const taskDistances = tasks.map(task => { + const distance = localVector2.copy(task.maxLodNode.min) + .add(localVector3.setScalar(task.maxLodNode.lod / 2)) + .distanceToSquared(worldPosition); + return { + task, + distance, + }; + }); + taskDistances.sort((a, b) => { + return a.distance - b.distance; + }); + return taskDistances.map(taskDistance => taskDistance.task); +}; +const updateChunks = (oldChunks, tasks) => { + const newChunks = oldChunks.slice(); + + for (const task of tasks) { + if (!task.isNop()) { + let {newNodes, oldNodes} = task; + for (const oldNode of oldNodes) { + const index = newChunks.findIndex(chunk => chunk.equalsNode(oldNode)); + if (index !== -1) { + newChunks.splice(index, 1); + } else { + debugger; + } + } + newChunks.push(...newNodes); + } + } + + const removedChunks = []; + for (const oldChunk of oldChunks) { + if (!newChunks.some(newChunk => newChunk.min.equals(oldChunk.min))) { + removedChunks.push(oldChunk); + } + } + const extraTasks = removedChunks.map(chunk => { + const task = new Task(chunk); + task.oldNodes.push(chunk); + return task; + }); + + return { + chunks: newChunks, + extraTasks, + } +}; + +/* +note: the nunber of lods at each level can be computed with this function: + + getNumLodsAtLevel = n => n === 0 ? 1 : (2*n+1)**2-(getNumLodsAtLevel(n-1)); + +the total number of chunks with 3 lods is: + > getNumLodsAtLevel(0) + getNumLodsAtLevel(1) + getNumLodsAtLevel(2) + getNumLodsAtLevel(3) + < 58 + +--- + +the view range for a chunk size and given number of lods is: + + // 0, 1, 2 are our lods + getViewRangeInternal = n => (n === 0 ? 1 : (3*getViewRangeInternal(n-1))); + getViewRange = (n, chunkSize) => getViewRangeInternal(n) * chunkSize / 2; + +for a chunkSize of 30, we have the view distance of each lod: + + getViewRange(1, 30) = 45 // LOD 0 + getViewRange(2, 30) = 135 // LOD 1 + getViewRange(3, 30) = 405 // LOD 2 +--- + +for a million tris budget, the tris per chunk is: + 1,000,000 tri / 58 chunks rendered = 17241.379310344827586206896551724 tri + +for a chunk size of 30 meters, the density of tris per uniform meters cubic is: + > 17241.379310344827586206896551724 tri / (30**3 meters) + < 0.6385696040868454 tri/m^3 + +per meters squared, it's 19.157088122605362 tri/m^2 + +--- + +using these results + +- the tri budget can be scaled linearly with the results +- the chunk size can be changed to increase the view distance while decreasing the density, while keeping the tri budget the same +*/ +export class LodChunk extends THREE.Vector3 { + constructor(x, y, z, lod, lodArray) { + + super(x, y, z); + this.lod = lod; + this.lodArray = lodArray; + + this.name = `chunk:${this.x}:${this.y}:${this.z}`; + this.binding = null; + this.items = []; + this.physicsObjects = []; + } + lodEquals(chunk) { + return this.lod === chunk.lod && + this.lodArray.length === chunk.lodArray.length && this.lodArray.every((lod, i) => lod === chunk.lodArray[i]); + } + containsPoint(p) { + return p.x >= this.x && p.x < this.x + this.lod && + p.y >= this.y && p.y < this.y + this.lod && + p.z >= this.z && p.z < this.z + this.lod; + } +} +export class LodChunkTracker extends EventTarget { + constructor({ + chunkSize = defaultChunkSize, + lods = 1, + minLodRange = 2, + trackY = false, + debug = false, + } = {}) { + super(); + + this.chunkSize = chunkSize; + this.lods = lods; + this.minLodRange = minLodRange; + this.trackY = trackY; + + this.chunks = []; + this.lastUpdateCoord = new THREE.Vector3(NaN, NaN, NaN); + + if (debug) { + const maxChunks = 512; + const instancedCubeGeometry = new THREE.InstancedBufferGeometry(); + { + const cubeGeometry = new THREE.BoxBufferGeometry(1, 1, 1) + .translate(0.5, 0.5, 0.5); + for (const k in cubeGeometry.attributes) { + instancedCubeGeometry.setAttribute(k, cubeGeometry.attributes[k]); + } + instancedCubeGeometry.setIndex(cubeGeometry.index); + } + const redMaterial = new THREE.MeshBasicMaterial({ + color: 0xFFFFFF, + // transparent: true, + // opacity: 0.1, + wireframe: true, + }); + const debugMesh = new THREE.InstancedMesh(instancedCubeGeometry, redMaterial, maxChunks); + debugMesh.count = 0; + debugMesh.frustumCulled = false; + this.debugMesh = debugMesh; + + { + const localVector = new THREE.Vector3(); + const localVector2 = new THREE.Vector3(); + const localVector3 = new THREE.Vector3(); + const localQuaternion = new THREE.Quaternion(); + const localMatrix = new THREE.Matrix4(); + const localColor = new THREE.Color(); + + const _getChunkColorHex = chunk => { + if (chunk.lod === 1) { + return 0xFF0000; + } else if (chunk.lod === 2) { + return 0x00FF00; + } else if (chunk.lod === 4) { + return 0x0000FF; + } else { + return 0x0; + } + }; + const _flushChunks = () => { + debugMesh.count = 0; + for (let i = 0; i < this.chunks.length; i++) { + const chunk = this.chunks[i]; + localMatrix.compose( + localVector.copy(chunk.min) + .multiplyScalar(this.chunkSize), + // .add(localVector2.set(0, -60, 0)), + localQuaternion.identity(), + localVector3.set(1, 1, 1) + .multiplyScalar(chunk.lod * this.chunkSize * 0.9) + ); + localColor.setHex(_getChunkColorHex(chunk)); + debugMesh.setMatrixAt(debugMesh.count, localMatrix); + debugMesh.setColorAt(debugMesh.count, localColor); + debugMesh.count++; + } + debugMesh.instanceMatrix.needsUpdate = true; + debugMesh.instanceColor && (debugMesh.instanceColor.needsUpdate = true); + }; + this.addEventListener('update', e => { + _flushChunks(); + }); + } + } + + this.lastOctreeLeafNodes = []; + this.liveTasks = []; + } + #getCurrentCoord(position, target) { + const cx = Math.floor(position.x / this.chunkSize); + const cy = this.trackY ? Math.floor(position.y / this.chunkSize) : 0; + const cz = Math.floor(position.z / this.chunkSize); + return target.set(cx, cy, cz); + } + emitChunkDestroy(chunk) { + const hash = chunk.min.toArray().join(','); // _octreeNodeMinHash(chunk.min, chunk.lod); + this.dispatchEvent(new MessageEvent('destroy.' + hash)); + } + listenForChunkDestroy(chunk, fn) { + const hash = chunk.min.toArray().join(','); // _octreeNodeMinHash(chunk.min, chunk.lod); + this.addEventListener('destroy.' + hash, e => { + fn(e); + }, {once: true}); + } + updateCoord(currentCoord) { + const octreeLeafNodes = constructOctreeForLeaf(currentCoord, this.minLodRange, 2 ** (this.lods - 1)); + + let tasks = diffLeafNodes( + octreeLeafNodes, + this.lastOctreeLeafNodes, + ); + + const { + chunks, + extraTasks, + } = updateChunks(this.chunks, tasks); + this.chunks = chunks; + tasks.push(...extraTasks); + + sortTasks(tasks, camera.position); + + for (let i = 0; i < tasks.length; i++) { + const task = tasks[i]; + if (!task.isNop()) { + const overlappingTasks = this.liveTasks.filter(lastTask => task.maxLodNode.containsNode(lastTask.maxLodNode)); + for (const oldTask of overlappingTasks) { + oldTask.cancel(); + this.liveTasks.splice(this.liveTasks.indexOf(oldTask), 1); + } + this.liveTasks.push(task); + } + } + + for (const task of tasks) { + if (!task.isNop()) { + this.dispatchEvent(new MessageEvent('chunkrelod', { + data: { + task, + }, + })); + } + } + + this.lastOctreeLeafNodes = octreeLeafNodes; + + this.dispatchEvent(new MessageEvent('update')); + } + async waitForLoad() { + // console.log('wait for live tasks 1', this.liveTasks.length); + await Promise.all(this.liveTasks.map(task => task.waitForLoad())); + // console.log('wait for live tasks 2', this.liveTasks.length); + } + update(position) { + const currentCoord = this.#getCurrentCoord(position, localVector).clone(); + + // if we moved across a chunk boundary, update needed chunks + if (!currentCoord.equals(this.lastUpdateCoord)) { + this.updateCoord(currentCoord); + this.lastUpdateCoord.copy(currentCoord); + } + } + destroy() { + for (const chunk of this.chunks) { + const task = new Task(chunk); + task.oldNodes.push(chunk); + + this.dispatchEvent(new MessageEvent('chunkrelod', { + data: { + task, + }, + })); + } + this.chunks.length = 0; + } +} \ No newline at end of file diff --git a/login.js b/login.js new file mode 100644 index 0000000000..403efb5561 --- /dev/null +++ b/login.js @@ -0,0 +1,29 @@ +import {getAddressFromMnemonic} from './blockchain.js'; + +async function pullUserObject(loginToken) { + const address = getAddressFromMnemonic(loginToken.mnemonic); + const res = await fetch(`${accountsHost}/${address}`); + var result = await res.json(); + result.mnemonic = loginToken.mnemonic; + return result; +} + +export const handleDiscordLogin = async (code, id) => { + if (!code) { + return; + } + try{ + let res = await fetch(loginEndpoint + `?discordid=${encodeURIComponent(id)}&discordcode=${encodeURIComponent(code)}&redirect_uri=${window.location.origin}/login`, { + method: 'POST', + }); + res = await res.json(); + if (!res.error) { + return await pullUserObject(res); + } else { + //console.warn('Unable to login ', res.error); + return res; + } + }catch(e){ + + } +}; \ No newline at end of file diff --git a/mesh-lodder.js b/mesh-lodder.js index 7ee856e8ce..c809576222 100644 --- a/mesh-lodder.js +++ b/mesh-lodder.js @@ -1,107 +1,539 @@ import * as THREE from 'three'; -import {MaxRectsPacker} from 'maxrects-packer'; -import {localPlayer} from './players.js'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import {getLocalPlayer} from './players.js'; import {alea} from './procgen/procgen.js'; -// import {getRenderer} from './renderer.js'; -import {mod/*, modUv*/} from './util.js'; import physicsManager from './physics-manager.js'; - -const bufferSize = 2 * 1024 * 1024; +import {defaultMaxId} from './constants.js'; +import {LodChunkTracker} from './lod.js'; +import {GeometryAllocator} from './instancing.js'; +import {mapWarpedUvs} from './atlasing.js'; +import {ImmediateGLBufferAttribute} from './ImmediateGLBufferAttribute.js'; + +const bufferSize = 20 * 1024 * 1024; +const maxNumItems = defaultMaxId; const chunkWorldSize = 30; -const defaultTextureSize = 4096; -const startAtlasSize = 512; const minObjectsPerChunk = 20; const maxObjectPerChunk = 50; const upVector = new THREE.Vector3(0, 1, 0); +// const rightVector = new THREE.Vector3(1, 0, 0); +// const oneVector = new THREE.Vector3(1, 1, 1); const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); const localVector2D = new THREE.Vector2(); const localVector2D2 = new THREE.Vector2(); +const localVector4D = new THREE.Vector4(); +const localQuaternion = new THREE.Quaternion(); const localMatrix = new THREE.Matrix4(); -const localMatrix2 = new THREE.Matrix4(); - -const textureTypes = [ - 'map', - 'normalMap', - 'roughnessMap', - 'metalnessMap', - 'emissiveMap', -]; -const _colorCanvas = (canvas, fillStyle) => { - const ctx = canvas.getContext('2d'); - ctx.fillStyle = fillStyle; - ctx.fillRect(0, 0, canvas.width, canvas.height); +// const localMatrix2 = new THREE.Matrix4(); +const localMatrix3 = new THREE.Matrix4(); + +const _diceGeometry = g => { + const geometryToBeCut = g; + + const getCutGeometries = (geometry, plane) => { + const res = physicsManager.cutMesh( + geometry.attributes.position.array, + geometry.attributes.position.count * 3, + geometry.attributes.normal.array, + geometry.attributes.normal.count * 3, + geometry.attributes.uv.array, + geometry.attributes.uv.count * 2, + geometry.index?.array, + geometry.index?.count, + + plane.normal.toArray(), + plane.constant, + ) + + const positions0 = res.outPositions.slice(0, res.numOutPositions[0]) + const positions1 = res.outPositions.slice(res.numOutPositions[0], res.numOutPositions[0] + res.numOutPositions[1]) + + const normals0 = res.outNormals.slice(0, res.numOutNormals[0]) + const normals1 = res.outNormals.slice(res.numOutNormals[0], res.numOutNormals[0] + res.numOutNormals[1]) + + const uvs0 = res.outUvs.slice(0, res.numOutUvs[0]) + const uvs1 = res.outUvs.slice(res.numOutUvs[0], res.numOutUvs[0] + res.numOutUvs[1]) + + const geometry0 = new THREE.BufferGeometry() + geometry0.setAttribute('position', new THREE.Float32BufferAttribute(positions0, 3)) + geometry0.setAttribute('normal', new THREE.Float32BufferAttribute(normals0, 3)) + geometry0.setAttribute('uv', new THREE.Float32BufferAttribute(uvs0, 2)) + geometry0.setAttribute('uv2', new THREE.Float32BufferAttribute(uvs0.slice(), 2)) + + const geometry1 = new THREE.BufferGeometry() + geometry1.setAttribute('position', new THREE.Float32BufferAttribute(positions1, 3)) + geometry1.setAttribute('normal', new THREE.Float32BufferAttribute(normals1, 3)) + geometry1.setAttribute('uv', new THREE.Float32BufferAttribute(uvs1, 2)) + geometry1.setAttribute('uv2', new THREE.Float32BufferAttribute(uvs1.slice(), 2)) + + return [geometry0, geometry1]; + } + + const geometries2Parts = getCutGeometries(geometryToBeCut, new THREE.Plane( + new THREE.Vector3(1, 0, 0).normalize(), + 0, + )); + + const geometries4Parts = []; + geometries2Parts.forEach(geometryToBeCut => { + const geometries = getCutGeometries(geometryToBeCut, new THREE.Plane( + new THREE.Vector3(0, 1, 0).normalize(), + 0, + )); + geometries4Parts.push(...geometries); + }); + + const geometries8Parts = []; + geometries4Parts.forEach(geometryToBeCut => { + const geometries = getCutGeometries(geometryToBeCut, new THREE.Plane( + new THREE.Vector3(0, 0, 1).normalize(), + 0, + )); + geometries8Parts.push(...geometries); + }); + + // + + geometries8Parts.forEach((geometry, i) => { + const x = i < 4 ? -0.5 : 0.5; + const y = i % 4 < 2 ? -0.5 : 0.5; + const z = i % 2 < 1 ? -0.5 : 0.5; + geometry.translate(x, y, z); + }); + return BufferGeometryUtils.mergeBufferGeometries(geometries8Parts); }; -const textureInitializers = { - normal(canvas) { - _colorCanvas(canvas, 'rgb(128, 128, 255)'); - }, - roughness(canvas) { - _colorCanvas(canvas, 'rgb(255, 255, 255)'); - }, - /* metalness(canvas) { - _colorCanvas(canvas, 'rgb(0, 0, 0)'); - }, */ +const _eraseVertices = (geometry, positionStart, positionCount) => { + for (let i = 0; i < positionCount; i++) { + geometry.attributes.position.array[positionStart + i] = 0; + } + const popUpdate = ImmediateGLBufferAttribute.pushUpdate(); + geometry.attributes.position.update(positionStart, positionCount); + popUpdate(); +}; + +const _getMatrixWorld = (rootMesh, contentMesh, target, positionX, positionZ, rotationY) => { + return _getMatrix(contentMesh, target, positionX, positionZ, rotationY) + .premultiply(rootMesh.matrixWorld); +}; +const _getMatrix = (contentMesh, target, positionX, positionZ, rotationY) => { + localVector.set(positionX, 0, positionZ) + localQuaternion.setFromAxisAngle(upVector, rotationY) + + return target.copy(contentMesh.matrixWorld) + .premultiply(localMatrix3.compose(localVector, localQuaternion, localVector2.set(1, 1, 1))); }; -const modUv = uv => { - uv.x = mod(uv.x, 1); - uv.y = mod(uv.y, 1); - return uv; +const _mapGeometryUvs = (g, geometry, tx, ty, tw, th, canvasSize) => { + mapWarpedUvs(g.attributes.uv, 0, geometry.attributes.uv, 0, tx, ty, tw, th, canvasSize); + mapWarpedUvs(g.attributes.uv2, 0, geometry.attributes.uv2, 0, tx, ty, tw, th, canvasSize); +}; +const _makeItemMesh = (rootMesh, contentMesh, geometry, material, positionX, positionZ, rotationY) => { + const cloned = new THREE.Mesh(geometry, material); + _getMatrixWorld(rootMesh, contentMesh, cloned.matrixWorld, positionX, positionZ, rotationY); + cloned.matrix.copy(cloned.matrixWorld) + .decompose(cloned.position, cloned.quaternion, cloned.scale); + cloned.frustumCulled = false; + return cloned; +}; + +const _mapOffsettedPositions = (g, geometry, dstOffset, positionX, positionZ, rotationY, contentMesh) => { + const count = g.attributes.position.count; + + const matrix = _getMatrix(contentMesh, localMatrix, positionX, positionZ, rotationY); + + for (let i = 0; i < count; i++) { + const srcIndex = i; + const localDstOffset = dstOffset + i * 3; + + localVector.fromArray(g.attributes.position.array, srcIndex * 3) + .applyMatrix4(matrix) + .toArray(geometry.attributes.position.array, localDstOffset); + } +}; +const _mapOffsettedIndices = (g, geometry, dstOffset, positionOffset) => { + const count = g.index.count; + const positionIndex = positionOffset / 3; + for (let i = 0; i < count; i++) { + geometry.index.array[dstOffset + i] = g.index.array[i] + positionIndex; + } }; -export class MeshLodder { +class LodChunkGenerator { + constructor(parent) { + // parameters + this.parent = parent; + + // members + this.physicsObjects = []; + this.allocator = new GeometryAllocator([ + { + name: 'position', + Type: Float32Array, + itemSize: 3, + }, + { + name: 'normal', + Type: Float32Array, + itemSize: 3, + }, + { + name: 'uv', + Type: Float32Array, + itemSize: 2, + }, + { + name: 'uv2', + Type: Float32Array, + itemSize: 2, + }, + ], { + bufferSize, + }); + this.itemContentMeshes = Array(maxNumItems).fill(null); + this.itemPositions = new Float32Array(maxNumItems * 3); + this.itemQuaternions = new Float32Array(maxNumItems * 4); + this.itemPositionOffsets = new Uint32Array(maxNumItems); + this.itemPositionCounts = new Uint32Array(maxNumItems); + this.itemRects = new Uint32Array(maxNumItems * 4); + this.itemShapeAddresses = new Uint32Array(maxNumItems); + this.itemPositionsXZY = new Float32Array(maxNumItems * 3); + + // mesh + this.mesh = new THREE.Mesh(this.allocator.geometry, [this.parent.material]); + this.mesh.frustumCulled = false; + this.mesh.visible = false; + } + /* getItemIdByPhysicsId(physicsId) { + return this.physicsObjects.findIndex(o => o.physicsId === physicsId); + } */ + getItemTransformByItemId(itemId, p, q, s) { + p.fromArray(this.itemPositions, itemId * 3); + q.fromArray(this.itemQuaternions, itemId * 4); + s.set(1, 1, 1); + } + deleteItem(itemId) { + _eraseVertices( + this.allocator.geometry, + this.itemPositionOffsets[itemId], + this.itemPositionCounts[itemId], + ); + + const index = this.physicsObjects.findIndex(po => po.physicsId === itemId); + const physicsObject = this.physicsObjects[index]; + physicsManager.removeGeometry(physicsObject); + this.physicsObjects.splice(index, 1); + } + #getContentIndexNames() { + return Object.keys(this.parent.contentIndex).sort(); + } + #getAtlas() { + return this.parent.atlas; + } + #getContent(name) { + return this.parent.contentIndex[name]; + } + #getShapeAddress(name) { + return this.parent.shapeAddresses[name]; + } + #getContentMeshIndex(mesh) { + return this.parent.meshes.indexOf(mesh); + } + #addPhysicsShape(shapeAddress, contentMesh, positionX, positionZ, rotationY) { + const matrixWorld = _getMatrixWorld(this.mesh, contentMesh, localMatrix, positionX, positionZ, rotationY); + matrixWorld.decompose(localVector, localQuaternion, localVector2); + const position = localVector; + const quaternion = localQuaternion; + const scale = localVector2; + const dynamic = false; + const external = true; + const physicsObject = physicsManager.addConvexShape(shapeAddress, position, quaternion, scale, dynamic, external); + + this.physicsObjects.push(physicsObject); + + return physicsObject; + } + cloneItemDiceMesh(itemId) { + localVector4D.fromArray(this.itemRects, itemId * 4); + const tx = localVector4D.x; + const ty = localVector4D.y; + const tw = localVector4D.z; + const th = localVector4D.w; + + const positionX = this.itemPositionsXZY[itemId * 3]; + const positionZ = this.itemPositionsXZY[itemId * 3 + 1]; + const rotationY = this.itemPositionsXZY[itemId * 3 + 2]; + + const atlas = this.#getAtlas(); + const canvasSize = Math.min(atlas.width, defaultTextureSize); + + const contentMesh = this.itemContentMeshes[itemId]; + const g = contentMesh.geometry; + let geometry = g.clone(); + _mapGeometryUvs(g, geometry, tx, ty, tw, th, canvasSize); + geometry = _diceGeometry(geometry); + const itemMesh = _makeItemMesh(this.mesh, contentMesh, geometry, this.parent.material, positionX, positionZ, rotationY); + return itemMesh; + } + cloneItemMesh(itemId) { + localVector4D.fromArray(this.itemRects, itemId * 4); + const tx = localVector4D.x; + const ty = localVector4D.y; + const tw = localVector4D.z; + const th = localVector4D.w; + + const positionX = this.itemPositionsXZY[itemId * 3]; + const positionZ = this.itemPositionsXZY[itemId * 3 + 1]; + const rotationY = this.itemPositionsXZY[itemId * 3 + 2]; + + const atlas = this.#getAtlas(); + const canvasSize = Math.min(atlas.width, defaultTextureSize); + + const contentMesh = this.itemContentMeshes[itemId]; + const g = contentMesh.geometry; + const geometry = g.clone(); + _mapGeometryUvs(g, geometry, tx, ty, tw, th, canvasSize); + const itemMesh = _makeItemMesh(this.mesh, contentMesh, geometry, this.parent.material, positionX, positionZ, rotationY); + return itemMesh; + } + clonePhysicsObject(itemId) { + const positionX = this.itemPositionsXZY[itemId * 3]; + const positionZ = this.itemPositionsXZY[itemId * 3 + 1]; + const rotationY = this.itemPositionsXZY[itemId * 3 + 2]; + + const contentMesh = this.itemContentMeshes[itemId]; + const shapeAddress = this.itemShapeAddresses[itemId]; + + _getMatrixWorld(this.mesh, contentMesh, localMatrix, positionX, positionZ, rotationY) + .decompose(localVector, localQuaternion, localVector2); + const position = localVector; + const quaternion = localQuaternion; + const scale = localVector2; + const dynamic = true; + const external = true; + const physicsObject = physicsManager.addConvexShape(shapeAddress, position, quaternion, scale, dynamic, external); + return physicsObject; + } + #addItemToRegistry(contentName, contentMesh, physicsId, positionOffset, positionCount, positionX, positionZ, rotationY, tx, ty, tw, th) { + this.itemContentMeshes[physicsId] = contentMesh; + localVector.set(positionX, 0, positionZ) + .toArray(this.itemPositions, physicsId * 3); + localQuaternion.setFromAxisAngle(upVector, rotationY) + .toArray(this.itemQuaternions, physicsId * 4); + this.itemPositionOffsets[physicsId] = positionOffset; + this.itemPositionCounts[physicsId] = positionCount; + localVector4D.set(tx, ty, tw, th) + .toArray(this.itemRects, physicsId * 4); + this.itemShapeAddresses[physicsId] = this.parent.shapeAddresses[contentName]; + + this.itemPositionsXZY[physicsId * 3] = positionX; + this.itemPositionsXZY[physicsId * 3 + 1] = positionZ; + this.itemPositionsXZY[physicsId * 3 + 2] = rotationY; + } + generateChunk(chunk) { + const _collectContentsRenderList = () => { + const contentNames = []; + const contents = []; + let totalNumPositions = []; + let totalNumIndices = []; + + const contentIndexNames = this.#getContentIndexNames(); + const numObjects = minObjectsPerChunk + Math.floor(rng() * (maxObjectPerChunk - minObjectsPerChunk)); + for (let i = 0; i < numObjects; i++) { + const contentName = contentIndexNames[Math.floor(rng() * contentIndexNames.length)]; + const meshes = this.#getContent(contentName); + + let totalPositionsArray = []; + let totalIndicesArray = []; + for (let lod = 0; lod < meshes.length; lod++) { + const mesh = meshes[lod]; + if (mesh) { + totalPositionsArray.push(mesh.geometry.attributes.position.count * mesh.geometry.attributes.position.itemSize); + totalIndicesArray.push(mesh.geometry.index.count); + } else { + totalPositionsArray.push(0); + totalIndicesArray.push(0); + } + } + + contentNames.push(contentName); + contents.push(meshes); + totalNumPositions.push(totalPositionsArray); + totalNumIndices.push(totalIndicesArray); + } + + return { + contentNames, + contents, + totalNumPositions, + totalNumIndices, + }; + }; + const _renderContentsRenderList = (contentMeshes, contentNames, geometry, geometryBinding) => { + const physicsObjects = []; + + const popUpdate = ImmediateGLBufferAttribute.pushUpdate(); + { + let positionOffset = geometryBinding.getAttributeOffset('position'); + let uvOffset = geometryBinding.getAttributeOffset('uv'); + let indexOffset = geometryBinding.getIndexOffset(); + + // render geometries to allocated geometry binding + for (let i = 0; i < contentMeshes.length; i++) { + const contentMesh = contentMeshes[i]; + const contentName = contentNames[i]; + const positionX = (chunk.x + 1 + rng()) * chunkWorldSize; + const positionZ = (chunk.z + 1 + rng()) * chunkWorldSize; + const rotationY = rng() * Math.PI * 2; + + const g = contentMesh.geometry; + const contentMeshIndex = this.#getContentMeshIndex(contentMesh); + const rect = atlas.rectIndexCache.get(contentMeshIndex); + const {x, y, width: w, height: h} = rect; + const tx = x * canvasScale; + const ty = y * canvasScale; + const tw = w * canvasScale; + const th = h * canvasScale; + + // render geometry + { + _mapOffsettedPositions(g, geometry, positionOffset, positionX, positionZ, rotationY, contentMesh); + geometry.attributes.normal.array.set(g.attributes.normal.array, positionOffset); + mapWarpedUvs(g.attributes.uv, 0, geometry.attributes.uv, uvOffset, tx, ty, tw, th, canvasSize); + mapWarpedUvs(g.attributes.uv2, 0, geometry.attributes.uv2, uvOffset, tx, ty, tw, th, canvasSize); + _mapOffsettedIndices(g, geometry, indexOffset, positionOffset); + geometry.setAttribute('direction', new THREE.BufferAttribute(new Float32Array(g.attributes.position.array.length), 3)); + } + + // upload geometry + { + geometry.attributes.position.update(positionOffset, g.attributes.position.count * g.attributes.position.itemSize); + geometry.attributes.normal.update(positionOffset, g.attributes.normal.count * g.attributes.normal.itemSize); + geometry.attributes.uv.update(uvOffset, g.attributes.uv.count * g.attributes.uv.itemSize); + geometry.attributes.uv2.update(uvOffset, g.attributes.uv2.count * g.attributes.uv.itemSize); + geometry.index.update(indexOffset, g.index.count); + } + + { + // physics + const shapeAddress = this.#getShapeAddress(contentName); + const physicsObject = this.#addPhysicsShape(shapeAddress, contentMesh, positionX, positionZ, rotationY); + physicsObjects.push(physicsObject); + + // tracking + const positionCount = g.attributes.position.count * g.attributes.position.itemSize; + this.#addItemToRegistry(contentName, contentMesh, physicsObject.physicsId, positionOffset, positionCount, positionX, positionZ, rotationY, tx, ty, tw, th); + } + + positionOffset += g.attributes.position.count * g.attributes.position.itemSize; + uvOffset += g.attributes.uv.count * g.attributes.uv.itemSize; + indexOffset += g.index.count; + } + } + popUpdate(); + + return { + physicsObjects, + }; + }; + + const atlas = this.#getAtlas(); + const canvasSize = Math.min(atlas.width, defaultTextureSize); + const canvasScale = canvasSize / atlas.width; + + const rng = alea(chunk.name); + const { + contentNames, + contents, + totalNumPositions, + totalNumIndices, + } = _collectContentsRenderList(); + const contentsLod0 = contents.map(meshes => meshes[0]); + const totalNumPositionsLod0 = totalNumPositions.reduce((a, b) => a + b[0], 0); + const totalNumIndicesLod0 = totalNumIndices.reduce((a, b) => a + b[0], 0); + const geometryBinding = this.allocator.alloc(totalNumPositionsLod0, totalNumIndicesLod0); + const { + physicsObjects, + } = _renderContentsRenderList(contentsLod0, contentNames, this.allocator.geometry, geometryBinding); + + chunk.binding = geometryBinding; + chunk.physicsObjects = physicsObjects; + this.allocator.geometry.groups = this.allocator.indexFreeList.getGeometryGroups(); // XXX memory for this can be optimized + this.mesh.visible = true; + } + disposeChunk(chunk) { + this.allocator.free(chunk.binding); + chunk.binding = null; + + for (const physicsObject of chunk.physicsObjects) { + physicsManager.removeGeometry(physicsObject); + + const index = this.physicsObjects.findIndex(po => po.physicsId === physicsObject.physicsId); + this.physicsObjects.splice(index, 1); + } + chunk.physicsObjects.length = 0; + } + destroy() { + // nothing; the owning lod tracker disposes of our contents + } +} + +const meshLodders = []; +let ids = 0; +class MeshLodManager { constructor() { - const positions = new Float32Array(bufferSize * 3); - const normals = new Float32Array(bufferSize * 3); - const uvs = new Float32Array(bufferSize * 2); - const uvs2 = new Float32Array(bufferSize * 2); - const geometry = new THREE.BufferGeometry(); - const indices = new Uint32Array(bufferSize); - geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); - geometry.setAttribute('normal', new THREE.BufferAttribute(normals, 3)); - geometry.setAttribute('uv', new THREE.BufferAttribute(uvs, 2)); - geometry.setAttribute('uv2', new THREE.BufferAttribute(uvs2, 2)); - geometry.setIndex(new THREE.BufferAttribute(indices, 1)); - geometry.setDrawRange(0, 0); - this.geometry = geometry; + this.id = ++ids; const material = new THREE.MeshStandardMaterial({ side: THREE.DoubleSide, alphaTest: 0.1, transparent: true, + onBeforeCompile: shader => { + shader.vertexShader.replace('#include \n', `\ + #include + attribute vec3 direction; + `); + shader.vertexShader.replace('#include \n', `\ + #include + transformed += direction; + `); + return shader; + }, }); this.material = material; - this.mesh = new THREE.Mesh(geometry, material); - this.mesh.frustumCulled = false; - this.contentIndex = {}; + this.shapeSpecs = {}; + this.shapeAddresses = {}; this.compiled = false; - this.lastChunkCoord = new THREE.Vector2(NaN, NaN); - } - registerLodMesh(name, meshes) { - // console.log('register lod mesh', name, meshes); - const newMeshes = meshes.map(mesh => { - const {geometry} = mesh; - - const uvs = geometry.attributes.uv.array.slice(); - geometry.setAttribute('originalUv', new THREE.BufferAttribute(uvs, 2)); - const uvs2 = geometry.attributes.uv2 ? geometry.attributes.uv2.array.slice() : geometry.attributes.uv.array.slice(); - geometry.setAttribute('originalUv2', new THREE.BufferAttribute(uvs2, 2)); + meshLodders.push(this); - return mesh; + this.generator = new LodChunkGenerator(this); + this.tracker = new LodChunkTracker(this.generator, { + chunkWorldSize, }); - this.contentIndex[name] = newMeshes; } - #getContentergeable() { - /* const getObjectKey = (object, material) => { - const renderer = getRenderer(); - return renderer.getProgramCacheKey(object, material); - }; */ + registerLodMesh(name, shapeSpec) { + const { + type = 'object', + lods = [], + } = shapeSpec; + + this.contentIndex[name] = lods; + + const lastMesh = lods.findLast(lod => lod !== null) ?? null; + const buffer = physicsManager.cookConvexGeometry(lastMesh); + const shapeAddress = physicsManager.createConvexShape(buffer); + this.shapeAddresses[name] = shapeAddress; + + this.shapeSpecs[name] = shapeSpec; + } + getPhysicsObjects() { + return this.generator.physicsObjects; + } + #getContentMergeable() { const getObjectKey = () => ''; const mergeables = new Map(); @@ -110,7 +542,7 @@ export class MeshLodder { const meshes = this.contentIndex[name]; for (const mesh of meshes) { - mesh.traverse(o => { + mesh && mesh.traverse(o => { if (o.isMesh && o.geometry.type === 'BufferGeometry') { const objectGeometry = o.geometry; // const morphTargetDictionary = o.morphTargetDictionary; @@ -170,7 +602,7 @@ export class MeshLodder { return Array.from(mergeables.values())[0]; } compile() { - const mergeable = this.#getContentergeable(); + const mergeable = this.#getContentMergeable(); const { // type, // material, @@ -187,194 +619,27 @@ export class MeshLodder { // morphTargetInfluencesArray, } = mergeable; - // compute texture sizes - const textureSizes = maps.map((map, i) => { - const emissiveMap = emissiveMaps[i]; - const normalMap = normalMaps[i]; - const roughnessMap = roughnessMaps[i]; - const metalnessMap = metalnessMaps[i]; - - const maxSize = new THREE.Vector2(0, 0); - if (map) { - maxSize.x = Math.max(maxSize.x, map.image.width); - maxSize.y = Math.max(maxSize.y, map.image.height); - } - if (emissiveMap) { - maxSize.x = Math.max(maxSize.x, emissiveMap.image.width); - maxSize.y = Math.max(maxSize.y, emissiveMap.image.height); - } - if (normalMap) { - maxSize.x = Math.max(maxSize.x, normalMap.image.width); - maxSize.y = Math.max(maxSize.y, normalMap.image.height); - } - if (roughnessMap) { - maxSize.x = Math.max(maxSize.x, roughnessMap.image.width); - maxSize.y = Math.max(maxSize.y, roughnessMap.image.height); - } - if (metalnessMap) { - maxSize.x = Math.max(maxSize.x, metalnessMap.image.width); - maxSize.y = Math.max(maxSize.y, metalnessMap.image.height); - } - return maxSize; - }); - const textureUuids = maps.map((map, i) => { - const emissiveMap = emissiveMaps[i]; - const normalMap = normalMaps[i]; - const roughnessMap = roughnessMaps[i]; - const metalnessMap = metalnessMaps[i]; - - const uuids = []; - uuids.push(map ? map.uuid : null); - uuids.push(emissiveMap ? emissiveMap.uuid : null); - uuids.push(normalMap ? normalMap.uuid : null); - uuids.push(roughnessMap ? roughnessMap.uuid : null); - uuids.push(metalnessMap ? metalnessMap.uuid : null); - return uuids.join(':'); - }); - - // generate atlas layouts - const _packAtlases = () => { - const _attemptPack = (textureSizes, atlasSize) => { - const maxRectsPacker = new MaxRectsPacker(atlasSize, atlasSize, 0); - const rectUuidCache = new Map(); - const rectIndexCache = new Map(); - // window.uniqueTextureSets = []; - textureSizes.forEach((textureSize, index) => { - const {x: width, y: height} = textureSize; - const hash = textureUuids[index]; - - let rect = rectUuidCache.get(hash); - if (!rect) { - /* window.uniqueTextureSets.push({ - // uuid: materials[index].uuid, - mapUUid: maps[index]?.uuid, - name: materials[index].name, - material: materials[index], - mesh: meshes[index], - hash, - }); */ - - rect = { - width, - height, - data: { - index, - }, - }; - rectUuidCache.set(hash, rect); - } - rectIndexCache.set(index, rect); - }); - const rects = Array.from(rectUuidCache.values()); - - maxRectsPacker.addArray(rects); - let oversized = maxRectsPacker.bins.length > 1; - maxRectsPacker.bins.forEach(bin => { - bin.rects.forEach(rect => { - if (rect.oversized) { - oversized = true; - } - }); - }); - if (!oversized) { - maxRectsPacker.rectIndexCache = rectIndexCache; - return maxRectsPacker; - } else { - return null; - } - }; - - const hasTextures = textureSizes.some(textureSize => textureSize.x > 0 || textureSize.y > 0); - if (hasTextures) { - let atlas; - let atlasSize = startAtlasSize; - while (!(atlas = _attemptPack(textureSizes, atlasSize))) { - atlasSize *= 2; - } - return atlas; - } else { - return null; - } + const textureSpecs = { + map: maps, + emissiveMap: emissiveMaps, + normalMap: normalMaps, + roughnessMap: roughnessMaps, + metalnessMap: metalnessMaps, }; - const atlas = _packAtlases(); - this.atlas = atlas; - - // draw atlas images - // const originalTextures = new Map(); // map of canvas to the texture that generated it - const _drawAtlasImages = atlas => { - const _getTexturesKey = textures => textures.map(t => t ? t.uuid : '').join(','); - const _drawAtlasImage = (textureType, textures) => { - if (atlas && textures.some(t => t !== null)) { - const canvasSize = Math.min(atlas.width, defaultTextureSize); - const canvasScale = canvasSize / atlas.width; - - const canvas = document.createElement('canvas'); - canvas.width = canvasSize; - canvas.height = canvasSize; - - const initializer = textureInitializers[textureType]; - if (initializer) { - initializer(canvas); - } - - const ctx = canvas.getContext('2d'); - atlas.bins.forEach(bin => { - bin.rects.forEach(rect => { - const {x, y, width: w, height: h, data: {index}} = rect; - const texture = textures[index]; - if (texture) { - const image = texture.image; - - // draw the image in the correct box on the canvas - const tx = x * canvasScale; - const ty = y * canvasScale; - const tw = w * canvasScale; - const th = h * canvasScale; - ctx.drawImage(image, 0, 0, image.width, image.height, tx, ty, tw, th); - - /* if (!originalTextures.has(canvas)) { - originalTextures.set(canvas, texture); - } */ - } - }); - }); - - return canvas; - } else { - return null; - } - }; + const { + atlas, + atlasImages, + atlasTextures, + } = generateTextureAtlas(textureSpecs); - const atlasImages = {}; - const atlasImagesMap = new Map(); // cache to alias identical textures - for (const textureType of textureTypes) { - const textures = mergeable[`${textureType}s`]; - const key = _getTexturesKey(textures); - // console.log('textures key', key, textures); - - let atlasImage = atlasImagesMap.get(key); - if (atlasImage === undefined) { // cache miss - atlasImage = _drawAtlasImage(textureType, textures); - if (atlasImage !== null) { - atlasImage.key = key; - } - atlasImagesMap.set(key, atlasImage); - } - atlasImages[textureType] = atlasImage; - } - return atlasImages; - }; - const atlasImages = _drawAtlasImages(atlas); - // window.atlasImages = atlasImages; + this.atlas = atlas; const {material} = this; - for (const textureType of textureTypes) { - const atlasImage = atlasImages[textureType]; - if (atlasImage) { - const texture = new THREE.Texture(atlasImage); - texture.flipY = false; - texture.needsUpdate = true; - material[textureType] = texture; + const textureNames = Object.keys(textureSpecs); + for (const textureName of textureNames) { + const texture = atlasTextures[textureName]; + if (texture) { + material[textureName] = texture; } } material.needsUpdate = true; @@ -384,118 +649,43 @@ export class MeshLodder { this.compiled = true; } getChunks() { - return this.mesh; + return this.generator.mesh; } - #getCurrentCoord(target) { - /* const position = localPlayer.position; - target.x = Math.floor(position.x / chunkWorldSize); - target.y = Math.floor(position.z / chunkWorldSize); - return target; */ - return target.set(0, 0); + /* getItemIdByPhysicsId(physicsId) { + return this.generator.getItemIdByPhysicsId(physicsId); + } */ + getItemTransformByItemId() { + return this.generator.getItemTransformByItemId.apply(this.generator, arguments); } - #getContentIndexNames() { - return Object.keys(this.contentIndex).sort(); + cloneItemDiceMesh() { + return this.generator.cloneItemDiceMesh.apply(this.generator, arguments); + } + cloneItemMesh() { + return this.generator.cloneItemMesh.apply(this.generator, arguments); + } + clonePhysicsObject() { + return this.generator.clonePhysicsObject.apply(this.generator, arguments); + } + deleteItem(itemId) { + return this.generator.deleteItem(itemId); } update() { + const localPlayer = getLocalPlayer(); if (this.compiled) { - const currentCoord = this.#getCurrentCoord(localVector2D); - - if (!currentCoord.equals(this.lastChunkCoord)) { - this.lastChunkCoord.copy(currentCoord); - - const {geometry} = this.mesh; - const {atlas} = this; - const names = this.#getContentIndexNames(); - const canvasSize = Math.min(atlas.width, defaultTextureSize); - const canvasScale = canvasSize / atlas.width; - - const rng = alea(`mesh-lodder:${currentCoord.x}:${currentCoord.y}`); - const numObjects = minObjectsPerChunk + Math.floor(rng() * (maxObjectPerChunk - minObjectsPerChunk)); - // console.log('num objects', numObjects); - let positionIndex = 0; - let indexIndex = 0; - for (let i = 0; i < numObjects; i++) { - const name = names[Math.floor(rng() * names.length)]; - const positionX = rng() * chunkWorldSize; - const positionZ = rng() * chunkWorldSize; - const rotationY = rng() * Math.PI * 2; - - const meshes = this.contentIndex[name]; - const mesh = meshes[0]; - const g = mesh.geometry; - const meshIndex = this.meshes.indexOf(mesh); - const rect = atlas.rectIndexCache.get(meshIndex); - const {x, y, width: w, height: h} = rect; - const tx = x * canvasScale; - const ty = y * canvasScale; - const tw = w * canvasScale; - const th = h * canvasScale; - - const _mapPositions = (g, geometry) => { - const count = g.attributes.position.count; - - for (let i = 0; i < count; i++) { - const srcIndex = i; - const dstIndex = positionIndex + i; - - localMatrix.copy(mesh.matrixWorld) - .premultiply(localMatrix2.makeRotationAxis(upVector, rotationY)) - .premultiply(localMatrix2.makeTranslation(positionX, 0, positionZ)); - - localVector.fromArray(g.attributes.position.array, srcIndex * 3) - .applyMatrix4(localMatrix) - .toArray(geometry.attributes.position.array, dstIndex * 3); - } - }; - const _mapUvs = (g, geometry, srcKey, dstKey) => { - const count = g.attributes[srcKey].count; - - for (let i = 0; i < count; i++) { - const srcIndex = i; - const dstIndex = positionIndex + i; - - localVector2D.fromArray(g.attributes[srcKey].array, srcIndex * 2); - modUv(localVector2D); - localVector2D - .multiply( - localVector2D2.set(tw/canvasSize, th/canvasSize) - ) - .add( - localVector2D2.set(tx/canvasSize, ty/canvasSize) - ); - localVector2D.toArray(geometry.attributes[dstKey].array, dstIndex * 2); - } - }; - const _mapIndices = (g, geometry) => { - const count = g.index.count; - for (let i = 0; i < count; i++) { - geometry.index.array[indexIndex + i] = g.index.array[i] + positionIndex; - } - }; - - _mapPositions(g, geometry); - // geometry.attributes.position.array.set(g.attributes.position.array, positionIndex * 3); - geometry.attributes.normal.array.set(g.attributes.normal.array, positionIndex * 3); - _mapUvs(g, geometry, 'originalUv', 'uv'); - _mapUvs(g, geometry, 'originalUv2', 'uv2'); - // geometry.attributes.uv.array.set(g.attributes.uv.array, positionIndex * 2); - // geometry.attributes.uv2.array.set(g.attributes.uv2.array, positionIndex * 2); - _mapIndices(g, geometry); - // geometry.index.array.set(g.index.array, indexIndex); - - geometry.attributes.position.needsUpdate = true; - geometry.attributes.normal.needsUpdate = true; - geometry.attributes.uv.needsUpdate = true; - geometry.attributes.uv2.needsUpdate = true; - geometry.index.needsUpdate = true; - - positionIndex += g.attributes.position.count; - indexIndex += g.index.count; - } - - geometry.setDrawRange(0, indexIndex); - // console.log('set draw range', geometry, indexIndex); - } + this.tracker.update(localPlayer.position); } } -} \ No newline at end of file + destroy() { + meshLodders.splice(meshLodders.indexOf(this), 1); + } +} + +const meshLodManager = { + createMeshLodder() { + return new MeshLodManager(); + }, + getMeshLodder(id) { + return meshLodders.find(meshLod => meshLod.id === id) ?? null; + }, +}; +export default meshLodManager; \ No newline at end of file diff --git a/metaverse-components.js b/metaverse-components.js index 1bfb9c0cea..c50053105b 100644 --- a/metaverse-components.js +++ b/metaverse-components.js @@ -1,15 +1,15 @@ import wear from './metaverse_components/wear.js'; -import npc from './metaverse_components/npc.js'; +// import npc from './metaverse_components/npc.js'; import pet from './metaverse_components/pet.js'; import drop from './metaverse_components/drop.js'; -import mob from './metaverse_components/mob.js'; +// import mob from './metaverse_components/mob.js'; const componentTemplates = { wear, - npc, + // npc, pet, drop, - mob, + // mob, }; export { componentTemplates, diff --git a/metaverse-modules.js b/metaverse-modules.js index e0c5d9b6c6..74cfa24b5a 100644 --- a/metaverse-modules.js +++ b/metaverse-modules.js @@ -12,17 +12,25 @@ const moduleUrls = { healEffect: `./metaverse_modules/heal-effect/`, filter: './metaverse_modules/filter/', barrier: './metaverse_modules/barrier/', + comet: './metaverse_modules/comet/', infinistreet: './metaverse_modules/infinistreet/', spawner: './metaverse_modules/spawner/', defaultScene: './metaverse_modules/default-scene/', path: './metaverse_modules/path/', area: './metaverse_modules/area/', cameraPlaceholder: './metaverse_modules/camera-placeholder/', + targetReticle: './metaverse_modules/target-reticle/', halo: './metaverse_modules/halo/', + silks: './metaverse_modules/silks/', + magic: './metaverse_modules/magic/', + limit: './metaverse_modules/limit/', + flare: './metaverse_modules/flare/', + firedrop: './metaverse_modules/firedrop/', + meshLodItem: './metaverse_modules/mesh-lod-item/', }; const modules = {}; -const loadPromise = (async () => { - await Promise.resolve(); // wait for init +let loadPromise = null; +const _load = async () => { const promises = []; for (const moduleName in moduleUrls) { const moduleUrl = moduleUrls[moduleName]; @@ -35,8 +43,13 @@ const loadPromise = (async () => { promises.push(p); } await Promise.all(promises); -})(); -const waitForLoad = () => loadPromise; +}; +const waitForLoad = () => { + if (!loadPromise) { + loadPromise = _load(); + } + return loadPromise; +}; export { moduleUrls, modules, diff --git a/metaverse_components/drop.js b/metaverse_components/drop.js index e393464e89..c5b4deaca6 100644 --- a/metaverse_components/drop.js +++ b/metaverse_components/drop.js @@ -1,28 +1,31 @@ import * as THREE from 'three'; import metaversefile from 'metaversefile'; -// import Avatar from './avatars/avatars.js'; import {world} from '../world.js'; import physicsManager from '../physics-manager.js'; import {glowMaterial} from '../shaders.js'; import easing from '../easing.js'; import {rarityColors} from '../constants.js'; +import storyManager from '../story.js'; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); -const localQuaternion = new THREE.Quaternion(); +const localEuler = new THREE.Euler(); -const rarityColorsArray = Object.keys(rarityColors).map(k => rarityColors[k][0]); +// + +const physicsScene = physicsManager.getScene(); const cubicBezier = easing(0, 1, 0, 1); const cubicBezier2 = easing(0, 1, 1, 1); +const rarityColorsArray = Object.keys(rarityColors).map(k => rarityColors[k][0]); const gracePickupTime = 1000; -export default app => { - // console.log('call default component', new Error().stack); - - const localPlayer = metaversefile.useLocalPlayer(); +// +export default app => { const dropComponent = app.getComponent('drop'); if (dropComponent) { + let rotY = 0; + const glowHeight = 5; const glowGeometry = new THREE.CylinderBufferGeometry(0.01, 0.01, glowHeight) .applyMatrix4(new THREE.Matrix4().makeTranslation(0, glowHeight/2, 0)); @@ -36,16 +39,33 @@ export default app => { const glowMesh = new THREE.Mesh(glowGeometry, material); app.add(glowMesh); + const _queueDrop = () => { + const dropManager = metaversefile.useDropManager(); + const appName = app.getComponent('appName'); + const appUrl = app.getComponent('appUrl'); + const voucher = app.getComponent('voucher'); + if (appName && appUrl && voucher) { + dropManager.addClaim(appName, appUrl, voucher); + } else { + dropManager.pickupApp(app); + } + + world.appManager.removeApp(app); + // app.destroy(); + }; + const velocity = dropComponent.velocity ? new THREE.Vector3().fromArray(dropComponent.velocity) : new THREE.Vector3(); - const angularVelocity = dropComponent.angularVelocity ? new THREE.Vector3().fromArray(dropComponent.angularVelocity) : new THREE.Vector3(); + // const angularVelocity = dropComponent.angularVelocity ? new THREE.Vector3().fromArray(dropComponent.angularVelocity) : new THREE.Vector3(); let grounded = false; const startTime = performance.now(); let animation = null; - const timeOffset = Math.random() * 10; - const frame = metaversefile.useFrame(e => { + let pickedUp = false; + metaversefile.useFrame(e => { const {timestamp, timeDiff} = e; - const timeDiffS = timeDiff/1000; - const dropComponent = app.getComponent('drop'); + const timeDiffS = timeDiff / 1000; + const localPlayer = metaversefile.useLocalPlayer(); + + // animate and check for collisions if (!grounded) { app.position .add( @@ -53,11 +73,11 @@ export default app => { .multiplyScalar(timeDiffS) ); velocity.add( - localVector.copy(physicsManager.getGravity()) + localVector.copy(physicsScene.getGravity()) .multiplyScalar(timeDiffS) ); - const groundHeight = 0.1; + const groundHeight = 0.3; if (app.position.y <= groundHeight) { app.position.y = groundHeight; const newDrop = JSON.parse(JSON.stringify(dropComponent)); @@ -67,10 +87,8 @@ export default app => { grounded = true; } } - // if (grounded) { - app.rotation.y += angularVelocity.y * timeDiff; - // } - + + // animation glowMesh.visible = !animation; if (!animation) { localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector); @@ -82,6 +100,7 @@ export default app => { if (timeSinceStart > gracePickupTime) { // console.log('check 2'); animation = { + type: dropComponent.type, startPosition: app.position.clone(), startTime: timestamp, endTime: timestamp + 1000, @@ -95,37 +114,70 @@ export default app => { const tailTimeFactorCutoff = 0.8; const timeDiff = timestamp - animation.startTime; const timeFactor = Math.min(Math.max(timeDiff / (animation.endTime - animation.startTime), 0), 1); - if (timeFactor < 1) { - if (timeFactor < tailTimeFactorCutoff) { - const f = cubicBezier(timeFactor); - localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) - .add(localVector2.set(0, headOffset, 0)); - app.position.copy(animation.startPosition).lerp(localVector, f); - } else { - { - const f = cubicBezier(tailTimeFactorCutoff); - localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) - .add(localVector2.set(0, headOffset, 0)); - app.position.copy(animation.startPosition).lerp(localVector, f); + + const _handleAnimation = () => { + switch (animation.type) { + case 'minor': + case 'major': { + if (timeFactor < 1) { + if (timeFactor < tailTimeFactorCutoff) { + const f = cubicBezier(timeFactor); + localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) + .add(localVector2.set(0, headOffset, 0)); + app.position.copy(animation.startPosition).lerp(localVector, f); + } else { + { + const f = cubicBezier(tailTimeFactorCutoff); + localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) + .add(localVector2.set(0, headOffset, 0)); + app.position.copy(animation.startPosition).lerp(localVector, f); + } + { + const tailTimeFactor = (timeFactor - tailTimeFactorCutoff) / (1 - tailTimeFactorCutoff); + const f = cubicBezier2(tailTimeFactor); + localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) + .add(localVector2.set(0, bodyOffset, 0)); + app.position.lerp(localVector, f); + app.scale.setScalar(1 - tailTimeFactor); + } + } + } else { + if (!pickedUp) { + _queueDrop(); + + pickedUp = true; + } + } + break; } - { - const tailTimeFactor = (timeFactor - tailTimeFactorCutoff) / (1 - tailTimeFactorCutoff); - const f = cubicBezier2(tailTimeFactor); - localPlayer.avatar.modelBoneOutputs.Head.getWorldPosition(localVector) - .add(localVector2.set(0, bodyOffset, 0)); - app.position.lerp(localVector, f); - app.scale.setScalar(1 - tailTimeFactor); + case 'key': { + if (!pickedUp) { + localPlayer.addAction({ + type: 'pickUp', + instanceId: app.instanceId, + }); + + const conversation = storyManager.startLocalPlayerComment('Scillia got the drop!'); + conversation.addEventListener('close', () => { + localPlayer.removeAction('pickUp'); + + _queueDrop(); + }); + + pickedUp = true; + } + + break; } } - } else { - world.appManager.dispatchEvent(new MessageEvent('pickup', { - data: { - app, - }, - })); - world.appManager.removeApp(app); - app.destroy(); - } + }; + _handleAnimation(); + } else { + // rotation + rotY += 0.3 * Math.PI * 2 * timeDiffS; + rotY = rotY % (Math.PI * 2); + localEuler.set(0, rotY, 0, 'YXZ'); + app.quaternion.setFromEuler(localEuler); } app.updateMatrixWorld(); diff --git a/metaverse_components/mob.js b/metaverse_components/mob.js deleted file mode 100644 index e8586ef09b..0000000000 --- a/metaverse_components/mob.js +++ /dev/null @@ -1,11 +0,0 @@ -import mobManager from '../mob-manager.js'; - -export default (app, component) => { - mobManager.addMob(app); - - return { - remove() { - mobManager.removeMob(app); - }, - }; -}; \ No newline at end of file diff --git a/metaverse_components/npc.js b/metaverse_components/npc.js deleted file mode 100644 index ec54d81eea..0000000000 --- a/metaverse_components/npc.js +++ /dev/null @@ -1,218 +0,0 @@ -import * as THREE from 'three'; -import metaversefile from 'metaversefile'; - -const localVector = new THREE.Vector3(); - -export default (app, component) => { -try { - const {useFrame, useActivate, useLocalPlayer, useVoices, useChatManager, useLoreAIScene, useAvatarAnimations, useNpcManager, usePhysics, useCleanup} = metaversefile; - // const scene = useScene(); - const npcManager = useNpcManager(); - const localPlayer = useLocalPlayer(); - const physics = usePhysics(); - const chatManager = useChatManager(); - const loreAIScene = useLoreAIScene(); - const voices = useVoices(); - const animations = useAvatarAnimations(); - const hurtAnimation = animations.find(a => a.isHurt); - const hurtAnimationDuration = hurtAnimation.duration; - - const mode = app.getComponent('mode') ?? 'attached'; - - if (mode === 'attached') { - const npcName = component.name ?? 'Anon'; - const npcVoiceName = component.voice ?? 'Shining armor'; - const npcBio = component.bio ?? 'A generic avatar.'; - // const npcAvatarUrl = app.getComponent('avatarUrl') ?? `/avatars/Drake_hacker_v6_Guilty.vrm`; - let npcWear = component.wear ?? []; - if (!Array.isArray(npcWear)) { - npcWear = [npcWear]; - } - - let live = true; - let vrmApp = app; - let npcPlayer = null; - /* e.waitUntil(*/(async () => { - // const u2 = npcAvatarUrl; - // const m = await metaversefile.import(u2); - // if (!live) return; - - // vrmApp = metaversefile.createApp({ - // name: u2, - // }); - - /* vrmApp.matrixWorld.copy(app.matrixWorld); - vrmApp.matrix.copy(app.matrixWorld) - .decompose(vrmApp.position, vrmApp.quaternion, vrmApp.scale); - vrmApp.name = 'npc'; - vrmApp.setComponent('physics', true); */ - - // await vrmApp.addModule(m); - // if (!live) return; - - const position = vrmApp.position.clone() - .add(new THREE.Vector3(0, 1, 0)); - const {quaternion, scale} = vrmApp; - const newNpcPlayer = npcManager.createNpc({ - name: npcName, - avatarApp: vrmApp, - position, - quaternion, - scale, - }); - // if (!live) return; - - const _setVoice = () => { - const voice = voices.voiceEndpoints.find(v => v.name === npcVoiceName); - if (voice) { - newNpcPlayer.setVoiceEndpoint(voice.drive_id); - } else { - console.warn('unknown voice name', npcVoiceName, voices.voiceEndpoints); - } - }; - _setVoice(); - - const _updateWearables = async () => { - const wearablePromises = npcWear.map(wear => (async () => { - const {start_url} = wear; - const app = await metaversefile.createAppAsync({ - start_url, - }); - // if (!live) return; - - newNpcPlayer.wear(app); - })()); - await wearablePromises; - }; - await _updateWearables(); - if (!live) return; - - // scene.add(vrmApp); - - npcPlayer = newNpcPlayer; - })()// ); - - app.getPhysicsObjects = () => npcPlayer ? [npcPlayer.characterController] : []; - - app.addEventListener('hittrackeradded', e => { - app.hitTracker.addEventListener('hit', e => { - if (!npcPlayer.hasAction('hurt')) { - const newAction = { - type: 'hurt', - animation: 'pain_back', - }; - npcPlayer.addAction(newAction); - - setTimeout(() => { - npcPlayer.removeAction('hurt'); - }, hurtAnimationDuration * 1000); - } - }); - }) - - let targetSpec = null; - useActivate(() => { - // console.log('activate npc'); - if (targetSpec?.object !== localPlayer) { - targetSpec = { - type: 'follow', - object: localPlayer, - }; - } else { - targetSpec = null; - } - }); - - /* console.log('got deets', { - npcName, - npcVoice, - npcBio, - npcAvatarUrl, - }); */ - - const character = loreAIScene.addCharacter({ - name: npcName, - bio: npcBio, - }); - // console.log('got character', character); - character.addEventListener('say', e => { - console.log('got character say', e.data); - const {message, emote, action, object, target} = e.data; - chatManager.addPlayerMessage(npcPlayer, message); - if (emote === 'supersaiyan' || action === 'supersaiyan' || /supersaiyan/i.test(object) || /supersaiyan/i.test(target)) { - const newSssAction = { - type: 'sss', - }; - npcPlayer.addAction(newSssAction); - } else if (action === 'follow' || (object === 'none' && target === localPlayer.name)) { // follow player - targetSpec = { - type: 'follow', - object: localPlayer, - }; - } else if (action === 'stop') { // stop - targetSpec = null; - } else if (action === 'moveto' || (object !== 'none' && target === 'none')) { // move to object - console.log('move to object', object); - /* target = localPlayer; - targetType = 'follow'; */ - } else if (action === 'moveto' || (object === 'none' && target !== 'none')) { // move to player - // console.log('move to', object); - targetSpec = { - type: 'moveto', - object: localPlayer, - }; - } else if (['pickup', 'grab', 'take', 'get'].includes(action)) { // pick up object - console.log('pickup', action, object, target); - } else if (['use', 'activate'].includes(action)) { // use object - console.log('use', action, object, target); - } - }); - - const slowdownFactor = 0.4; - const walkSpeed = 0.075 * slowdownFactor; - const runSpeed = walkSpeed * 8; - const speedDistanceRate = 0.07; - useFrame(({timestamp, timeDiff}) => { - if (npcPlayer && physics.getPhysicsEnabled()) { - if (targetSpec) { - const target = targetSpec.object; - const v = localVector.setFromMatrixPosition(target.matrixWorld) - .sub(npcPlayer.position); - v.y = 0; - const distance = v.length(); - if (targetSpec.type === 'moveto' && distance < 2) { - targetSpec = null; - } else { - const speed = Math.min(Math.max(walkSpeed + ((distance - 1.5) * speedDistanceRate), 0), runSpeed); - v.normalize() - .multiplyScalar(speed * timeDiff); - npcPlayer.characterPhysics.applyWasd(v); - } - } - - npcPlayer.eyeballTarget.copy(localPlayer.position); - npcPlayer.eyeballTargetEnabled = true; - - npcPlayer.updatePhysics(timestamp, timeDiff); - npcPlayer.updateAvatar(timestamp, timeDiff); - } - }); - - useCleanup(() => { - live = false; - - // scene.remove(vrmApp); - - if (npcPlayer) { - npcManager.destroyNpc(npcPlayer); - } - - loreAIScene.removeCharacter(character); - }); - } - - return app; -} catch(err) { - console.warn(err); -} -}; diff --git a/metaverse_components/wear.js b/metaverse_components/wear.js index 69ba0dc7cf..97a46d1cef 100644 --- a/metaverse_components/wear.js +++ b/metaverse_components/wear.js @@ -9,8 +9,23 @@ import npcManager from '../npc-manager.js'; // import {rarityColors} from '../constants.js'; const localVector = new THREE.Vector3(); -// const localVector2 = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localVector3 = new THREE.Vector3(); +const localVector4 = new THREE.Vector3(); const localQuaternion = new THREE.Quaternion(); +const localQuaternion2 = new THREE.Quaternion(); +const localEuler = new THREE.Euler(); +const localMatrix = new THREE.Matrix4(); + +// + +const identityVector = new THREE.Vector3(); + +// + +const physicsScene = physicsManager.getScene(); + +// export default (app, component) => { const {useActivate} = metaversefile; @@ -18,25 +33,29 @@ export default (app, component) => { let wearSpec = null; let modelBones = null; let appAimAnimationMixers = null; + let player = null; const initialScale = app.scale.clone(); - const localPlayer = metaversefile.useLocalPlayer(); + // const localPlayer = metaversefile.useLocalPlayer(); const wearupdate = e => { if (e.wear) { + player = e.player; + wearSpec = app.getComponent('wear'); initialScale.copy(app.scale); - // console.log('activate component', app, wear); + // console.log('wear activate', app, wearSpec, e); if (wearSpec) { // const {app, wearSpec} = e.data; // console.log('got wear spec', [wearSpec.skinnedMesh, app.glb]); + + const physicsObjects = app.getPhysicsObjects(); + for (const physicsObject of physicsObjects) { + physicsScene.disableActor(physicsObject); + } + if (app.glb) { - const physicsObjects = app.getPhysicsObjects(); - for (const physicsObject of physicsObjects) { - physicsManager.disableActor(physicsObject); - } - if (wearSpec.skinnedMesh) { let skinnedMesh = null; app.glb.scene.traverse(o => { @@ -44,7 +63,7 @@ export default (app, component) => { skinnedMesh = o; } }); - if (skinnedMesh && localPlayer.avatar) { + if (skinnedMesh && player.avatar) { app.position.set(0, 0, 0); app.quaternion.identity(); //.setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI); app.scale.copy(initialScale)//.multiplyScalar(wearableScale); @@ -152,10 +171,9 @@ export default (app, component) => { }; app.addEventListener('wearupdate', wearupdate); app.addEventListener('destroy', () => { - const localPlayer = metaversefile.useLocalPlayer(); const remotePlayers = metaversefile.useRemotePlayers(); const {npcs} = npcManager; - const players = [localPlayer] + const players = (player ? [player] : []) .concat(remotePlayers) .concat(npcs); for (const player of players) { @@ -172,7 +190,7 @@ export default (app, component) => { if (wearSpec) { const physicsObjects = app.getPhysicsObjects(); for (const physicsObject of physicsObjects) { - physicsManager.enableActor(physicsObject); + physicsScene.enableActor(physicsObject); } app.scale.copy(initialScale); @@ -185,33 +203,73 @@ export default (app, component) => { const _copyBoneAttachment = spec => { const {boneAttachment = 'hips', position, quaternion, scale} = spec; - const boneName = Avatar.modelBoneRenames[boneAttachment]; - const bone = localPlayer.avatar.foundModelBones[boneName]; - if (bone) { - bone.matrixWorld - .decompose(app.position, app.quaternion, app.scale); - if (Array.isArray(position)) { - app.position.add(localVector.fromArray(position).applyQuaternion(app.quaternion)); - } - if (Array.isArray(quaternion)) { - app.quaternion.multiply(localQuaternion.fromArray(quaternion)); - } - if (Array.isArray(scale)) { - app.scale.multiply(localVector.fromArray(scale)); + const boneAttachments = Array.isArray(boneAttachment) ? boneAttachment : [boneAttachment]; + + // lerp app's transform to average position/quaternion/scale of boneAttachments. + let count = 0; + boneAttachments.forEach((boneAttachment, i) => { + const boneName = Avatar.modelBoneRenames[boneAttachment]; + const bone = player.avatar.foundModelBones[boneName]; + if (bone) { + if (count === 0) { + bone.matrixWorld + .decompose(app.position, app.quaternion, app.scale); + count++; + } else { + bone.matrixWorld + .decompose(localVector, localQuaternion, localVector2); + const t = 1 / (count + 1); + app.position.lerp(localVector, t); + app.quaternion.slerp(localQuaternion, t); + app.scale.lerp(localVector2, t); + count++; + } + } else { + console.warn('invalid bone attachment', {app, boneAttachment}); } - app.updateMatrixWorld(); - } else { - console.warn('invalid bone attachment', {app, boneAttachment}); + }); + + if (quaternion === 'upVectorHipsToPosition') { + const hipsPostion = localVector; + hipsPostion.setFromMatrixPosition(player.avatar.foundModelBones.Hips.matrixWorld); + + localEuler.order = 'YXZ'; + localEuler.setFromQuaternion(player.quaternion); + localEuler.x = 0; + localEuler.z = 0; + const playerQuaternion = localQuaternion2.setFromEuler(localEuler); + + const eyeVector = identityVector; + const upVector = localVector3.copy(app.position).sub(hipsPostion).normalize(); + const targetVector = localVector4.set(0, 0, -1); + targetVector.applyQuaternion(localQuaternion.setFromUnitVectors( + localVector.set(0, 1, 0), + localVector2.copy(upVector).normalize(), + )); + + localMatrix.lookAt(eyeVector, targetVector, upVector) + app.quaternion.setFromRotationMatrix(localMatrix); + app.quaternion.multiply(playerQuaternion); + } + + if (Array.isArray(position)) { + app.position.add(localVector.fromArray(position).applyQuaternion(app.quaternion)); + } + if (Array.isArray(quaternion)) { + app.quaternion.multiply(localQuaternion.fromArray(quaternion)); + } + if (Array.isArray(scale)) { + app.scale.multiply(localVector.fromArray(scale)); } + app.updateMatrixWorld(); }; const frame = metaversefile.useFrame(({timestamp, timeDiff}) => { - // const localPlayer = metaversefile.useLocalPlayer(); - if (wearSpec && localPlayer.avatar) { + if (wearSpec && player.avatar) { const {instanceId} = app; // animations if (app.glb) { - const appAimAction = Array.from(localPlayer.getActionsState()) + const appAimAction = Array.from(player.getActionsState()) .find(action => action.type === 'aim' && action.instanceId === instanceId); const {animations} = app.glb; @@ -249,18 +307,18 @@ export default (app, component) => { } // bone bindings { - const appUseAction = Array.from(localPlayer.getActionsState()) + const appUseAction = Array.from(player.getActionsState()) .find(action => action.type === 'use' && action.instanceId === instanceId); if (appUseAction?.boneAttachment && wearSpec.boneAttachment) { _copyBoneAttachment(appUseAction); } else { - const appAimAction = Array.from(localPlayer.getActionsState()) + const appAimAction = Array.from(player.getActionsState()) .find(action => action.type === 'aim' && action.instanceId === instanceId); if (appAimAction?.boneAttachment && wearSpec.boneAttachment) { _copyBoneAttachment(appAimAction); } else { if (modelBones) { - Avatar.applyModelBoneOutputs(modelBones, localPlayer.avatar.modelBoneOutputs, localPlayer.avatar.getTopEnabled(), localPlayer.avatar.getBottomEnabled(), localPlayer.avatar.getHandEnabled(0), localPlayer.avatar.getHandEnabled(1)); + Avatar.applyModelBoneOutputs(modelBones, player.avatar.modelBoneOutputs, player.avatar.getTopEnabled(), player.avatar.getBottomEnabled(), player.avatar.getHandEnabled(0), player.avatar.getHandEnabled(1)); modelBones.Root.updateMatrixWorld(); } else if (wearSpec.boneAttachment) { _copyBoneAttachment(wearSpec); diff --git a/metaverse_modules/card/index.js b/metaverse_modules/card/index.js index afdd93ff5d..b115af42f7 100644 --- a/metaverse_modules/card/index.js +++ b/metaverse_modules/card/index.js @@ -1,97 +1,188 @@ import * as THREE from 'three'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; // import easing from './easing.js'; import metaversefile from 'metaversefile'; -const {useApp, useFrame} = metaversefile; +const {useApp, useFrame, useLocalPlayer, useMaterials, useCardsManager} = metaversefile; -const cardPreviewHost = `https://card-preview.exokit.org`; -// const cubicBezier = easing(0, 1, 0, 1); +const dropItemSize = 0.2; -const cardWidth = 0.063 * 3; -const cardHeight = cardWidth / 2.5 * 3.5; -const _loadImage = u => new Promise((accept, reject) => { +const cardWorldWidth = 0.063 * 3; +const cardWorldHeight = cardWorldWidth / 2.5 * 3.5; +const width = 520; + +function getCardFrontTexture(appUrl) { + const cardsManager = useCardsManager(); + + const texture = new THREE.Texture(); + (async () => { + const imageBitmap = await cardsManager.getCardsImage( + appUrl, + { + width, + flipY: true, + // signal, + } + ); + texture.image = imageBitmap; + texture.needsUpdate = true; + + texture.dispatchEvent({type: 'load'}); + })(); + return texture; +} +function getCardBackTexture() { const img = new Image(); + const texture = new THREE.Texture(img); + img.crossOrigin = 'Anonymous'; - - img.src = u; img.onload = () => { - accept(img); + texture.needsUpdate = true; + + texture.dispatchEvent({type: 'load'}); }; - img.onerror = reject; -}); -const cardFrontGeometry = new THREE.PlaneBufferGeometry(cardWidth, cardHeight); -const cardBackGeometry = cardFrontGeometry.clone() - .applyMatrix4( - new THREE.Matrix4().compose( - new THREE.Vector3(0, 0, -0.001), - new THREE.Quaternion() - .setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI), - new THREE.Vector3(1, 1, 1) - ) - ); -const _makeCardBackMaterial = () => { - const material = new THREE.MeshBasicMaterial({ - color: 0xFFFFFF, - map: new THREE.Texture(), - transparent: true, - }); - (async () => { - const img = await _loadImage(`${import.meta.url.replace(/(\/)[^\/]*$/, '$1')}cardback.png`); - material.map.image = img; - material.map.minFilter = THREE.LinearMipmapLinearFilter; - material.map.magFilter = THREE.LinearFilter; - material.map.encoding = THREE.sRGBEncoding; - material.map.anisotropy = 16; - material.map.needsUpdate = true; - })(); - return material; -}; -const _makeCardMesh = img => { - const geometry = cardFrontGeometry; - const material = new THREE.MeshBasicMaterial({ - color: 0xFFFFFF, - map: new THREE.Texture(img), - side: THREE.DoubleSide, - transparent: true, - }); - material.map.minFilter = THREE.LinearMipmapLinearFilter; - material.map.magFilter = THREE.LinearFilter; - material.map.encoding = THREE.sRGBEncoding; - material.map.anisotropy = 16; - material.map.needsUpdate = true; - const mesh = new THREE.Mesh(geometry, material); - + img.onerror = err => { + console.warn(err); + }; + img.src = `images/cardback-01.svg`; + + return texture; +} +const _makeCardMesh = ({ + appUrl, +}) => { + const {WebaverseShaderMaterial} = useMaterials(); + + // let w = 520; + // let h = 728; + let w = cardWorldWidth; + let h = cardWorldHeight; + + h /= w; + w /= w; + + w *= dropItemSize; + h *= dropItemSize; + + const frontGeometry = new THREE.PlaneBufferGeometry(w, h); + const backGeometry = new THREE.PlaneBufferGeometry(w, h).rotateY(Math.PI); + + const _setSideAttribute = (g, side) => { + const sides = new Int32Array(g.attributes.position.count).fill(side); + const sideAttribute = new THREE.BufferAttribute(sides, 1); + g.setAttribute('side', sideAttribute); + }; + _setSideAttribute(frontGeometry, 0); + _setSideAttribute(backGeometry, 1); + + const geometry = BufferGeometryUtils.mergeBufferGeometries([ + frontGeometry, + backGeometry, + ]); + + const frontTexture = getCardFrontTexture(appUrl); + { + const load = () => { + material.uniforms.uFrontTexLoaded.value = 1; + material.uniforms.uFrontTexLoaded.needsUpdate = true; + frontTexture.removeEventListener('load', load); + }; + frontTexture.addEventListener('load', load); + } + const backTexture = getCardBackTexture(); { - const geometry = cardBackGeometry; - const material = _makeCardBackMaterial(); - const back = new THREE.Mesh(geometry, material); - mesh.add(back); - mesh.back = back; + const load = () => { + material.uniforms.uBackTexLoaded.value = 1; + material.uniforms.uBackTexLoaded.needsUpdate = true; + backTexture.removeEventListener('load', load); + }; + backTexture.addEventListener('load', load); } - - return mesh; + + const material = new WebaverseShaderMaterial({ + uniforms: { + uFrontTex: { + value: frontTexture, + needsUpdate: true, + }, + uBackTex: { + value: backTexture, + needsUpdate: true, + }, + uFrontTexLoaded: { + value: 0, + needsUpdate: true, + }, + uBackTexLoaded: { + value: 0, + needsUpdate: true, + }, + }, + vertexShader: `\ + // uniform vec4 cameraBillboardQuaternion; + attribute int side; + varying vec2 vUv; + flat varying int vSide; + + + /* vec3 rotate_vertex_position(vec3 position, vec4 q) { + return position + 2.0 * cross(q.xyz, cross(q.xyz, position) + q.w * position); + } */ + + void main() { + vec3 pos = position; + + // pos = rotate_vertex_position(pos, cameraBillboardQuaternion); + + gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0); + vUv = uv; + vSide = side; + } + `, + fragmentShader: `\ + uniform sampler2D uFrontTex; + uniform sampler2D uBackTex; + uniform int uFrontTexLoaded; + uniform int uBackTexLoaded; + varying vec2 vUv; + flat varying int vSide; + + void main() { + vec4 diffuseColor; + if (vSide == 0) { + diffuseColor = uFrontTexLoaded == 1 ? texture2D(uFrontTex, vUv) : vec4(vec3(0.0), 1.0); + } else { + diffuseColor = uBackTexLoaded == 1 ? texture2D(uBackTex, vUv) : vec4(vec3(0.0), 1.0); + } + gl_FragColor = diffuseColor; + if (gl_FragColor.a < 0.1) { + discard; + } + } + `, + // side: THREE.DoubleSide, + transparent: true, + }); + const itemletMesh = new THREE.Mesh(geometry, material); + // itemletMesh.velocity = new THREE.Vector3(0, 3, 0); + // itemletMesh.frustumCulled = false; + // itemletMesh.updateMatrixWorld(); + return itemletMesh; }; + export default () => { const app = useApp(); - let cardMesh = null; - (async() => { - const id = 1; - const w = 1024; - const ext = 'png'; - const u = `${cardPreviewHost}/?t=${id}&w=${w}&ext=${ext}`; - const img = await _loadImage(u); - cardMesh = _makeCardMesh(img); - cardMesh.rotation.order = 'YXZ'; + const appUrl = app.getComponent('appUrl'); + + if (appUrl) { + const cardMesh = _makeCardMesh({ + appUrl, + }); app.add(cardMesh); - })(); - - useFrame(() => { - if (cardMesh) { - const maxTime = 2000; - const f = (Date.now() % maxTime) / maxTime; - cardMesh.rotation.y = f * (2*Math.PI); - } - }); - + cardMesh.updateMatrixWorld(); + } else { + console.warn('card has no app url', app, new Error().stack); + } + return app; }; \ No newline at end of file diff --git a/metaverse_modules/comet/.metaversefile b/metaverse_modules/comet/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/comet/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/comet/index.js b/metaverse_modules/comet/index.js new file mode 100644 index 0000000000..a76f941f75 --- /dev/null +++ b/metaverse_modules/comet/index.js @@ -0,0 +1,513 @@ +import * as THREE from 'three'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import metaversefile from 'metaversefile'; +const {useApp, useFrame, useCleanup, useMaterials, useSound, useLocalPlayer, useDropManager, useDefaultModules} = metaversefile; + +const baseUrl = import.meta.url.replace(/(\/)[^\/\\]*$/, '$1'); + +// const cardWidth = 0.063; +// const cardHeight = cardWidth / 2.5 * 3.5; +// const cardHeight = cardWidth; +// const cardsBufferFactor = 1.1; +// const menuWidth = cardWidth * cardsBufferFactor * 4; +// const menuHeight = cardHeight * cardsBufferFactor * 4; +// const menuRadius = 0.025; + +/* function mod(a, n) { + return (a % n + n) % n; +} */ + +const numCylinders = 3; +const minRadius = 0.4; +// const radiusStep = minRadius; +const maxRadius = minRadius + minRadius * numCylinders; +const explosionScaleFactor = 4; +const dropItemSize = 0.2; +const pickUpDistance = 1; + +const localVector = new THREE.Vector3(); +const localVector2D = new THREE.Vector2(); +const localEuler = new THREE.Euler(); + +const zeroVector = new THREE.Vector3(0, 0, 0); +const gravity = new THREE.Vector3(0, -9.8, 0); + +const makeSeamlessNoiseTexture = () => { + const img = new Image(); + const texture = new THREE.Texture(img); + texture.wrapS = THREE.RepeatWrapping; + texture.wrapT = THREE.RepeatWrapping; + texture.minFilter = THREE.LinearFilter; + texture.magFilter = THREE.LinearFilter; + + img.crossOrigin = 'Anonymous'; + img.onload = () => { + // console.log('load image', img); + // document.body.appendChild(img); + texture.needsUpdate = true; + }; + img.onerror = err => { + console.warn(err); + }; + img.src = `${baseUrl}perlin-noise.jpg`; + + return texture; +}; +const getSeamlessNoiseTexture = (() => { + let noiseTexture = null; + return () => { + if (!noiseTexture) { + noiseTexture = makeSeamlessNoiseTexture(); + } + return noiseTexture; + }; +})(); + +function createShockwaveGeometry() { + const radius = 1; + const g = new THREE.SphereGeometry( + radius, // radius + 8, // widthSegments + 6, // heightSegments + 0, // phiStart + Math.PI * 2, // phiLength + 0, // thetaStart + Math.PI / 2, // thetaLength + ) + .rotateX(Math.PI) + .translate(0, radius - radius/2, 0) + .scale(1, 2, 1); + + for (let i = 0; i < g.attributes.uv.count; i++) { + localVector2D.fromArray(g.attributes.uv.array, i * 2); + localVector2D.y = 1 - localVector2D.y; + localVector2D.toArray(g.attributes.uv.array, i * 2); + } + + const instances = new Float32Array(g.attributes.position.count).fill(-1); + g.setAttribute('instance', new THREE.BufferAttribute(instances, 1)); + + return g; +} +function createCylindersGeometry(front) { + const radiusTop = 1.5; + const radiusBottom = 1; + const height = 2; + const radialSegments = 8; + const heightSegments = 1; + const openEnded = true; + const baseGeometry = new THREE.CylinderGeometry( + radiusTop, + radiusBottom, + height, + radialSegments, + heightSegments, + openEnded, + ).translate(0, height/2, 0); + + const geometries = []; + const _push = i => { + const g = baseGeometry.clone(); + const instances = new Float32Array(g.attributes.position.count).fill(i); + g.setAttribute('instance', new THREE.BufferAttribute(instances, 1)); + geometries.push(g); + } + if (!front) { + for (let i = 0; i < numCylinders; i++) { + _push(i); + } + } else { + for (let i = numCylinders - 1; i >= 0; i--) { + _push(i); + } + } + + const geometry = BufferGeometryUtils.mergeBufferGeometries(geometries); + return geometry; +} +function createExplosionGeometry(front) { + const radius = 1; + const sphereGeometry = new THREE.SphereGeometry( + radius, // radius + 8, // widthSegments + 6, // heightSegments + 0, // phiStart + Math.PI * 2, // phiLength + 0, // thetaStart + Math.PI / 2, // thetaLength + ); + const haloRadius = radius * 0.5; + const cylinderGeometry = new THREE.CylinderGeometry( + 1, // radiusTop + 1, // radiusBottom + haloRadius, // height + 8, // radialSegments + 1, // heightSegments + true, // openEnded + ).translate(0, haloRadius / 2, 0); + + const geometries = [ + cylinderGeometry, + sphereGeometry, + ]; + + if (!front) { + geometries.reverse(); + } + const g = BufferGeometryUtils.mergeBufferGeometries(geometries); + const instances = new Float32Array(g.attributes.position.count).fill(-1); + g.setAttribute('instance', new THREE.BufferAttribute(instances, 1)); + return g; +} +const vertexShader = `\ +precision highp float; +precision highp int; + +attribute float instance; +uniform float uTime; +uniform sampler2D uSeamlessNoiseTexture; +varying vec2 vUv; +varying float vInstance; +varying float vDistance; + +// #define PI 3.1415926535897932384626433832795 + +void main() { + vec3 p = position; + + if (instance >= 0.) { + float factor = mod(uTime, 1.); + float distance1 = ${minRadius.toFixed(8)} + instance * ${(minRadius).toFixed(8)};; + float distance2 = distance1 + ${minRadius.toFixed(8)}; + float distance = distance1 * (1.0 - factor) + distance2 * factor - ${(minRadius).toFixed(8)}; + p.xz *= distance / distance1; + + float distanceFactor = (distance) / ${(maxRadius - minRadius).toFixed(8)}; + distanceFactor = mod(distanceFactor, 1.); + vDistance = distanceFactor; // sin(distanceFactor * PI); + float vDistance2 = sin(distanceFactor * PI * 0.8); + p.y *= vDistance2; + } + + vec4 mvPosition = modelViewMatrix * vec4(p, 1.0); + gl_Position = projectionMatrix * mvPosition; + + vUv = uv; + vInstance = instance; +} +`; +const fragmentShader = `\ +uniform float uTime; +uniform float uOpacity; +varying vec2 vUv; +varying float vDistance; +varying float vInstance; + +#define nsin(x) (sin(x) * 0.5 + 0.5) +#define PI 3.1415926535897932384626433832795 + +float rand(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +float hermite(float t) +{ + return t * t * (3.0 - 2.0 * t); +} + +float noise(vec2 co, float frequency) +{ + vec2 v = vec2(co.x * frequency, co.y * frequency); + + float ix1 = floor(v.x); + float iy1 = floor(v.y); + float ix2 = floor(v.x + 1.0); + float iy2 = floor(v.y + 1.0); + + float fx = hermite(fract(v.x)); + float fy = hermite(fract(v.y)); + + float fade1 = mix(rand(vec2(ix1, iy1)), rand(vec2(ix2, iy1)), fx); + float fade2 = mix(rand(vec2(ix1, iy2)), rand(vec2(ix2, iy2)), fx); + + return mix(fade1, fade2, fy); +} + +float pnoise(vec2 co, float freq, int steps, float persistence) +{ + float value = 0.0; + float ampl = 1.0; + float sum = 0.0; + for(int i=0 ; i= 0. ? 0.1 : 1.; + + vec2 pos = uv; + pos.y -= uTime * uvSpeed; + + vec4 brighterColor = vec4(1.0, 0.65, 0.1, 0.25); + vec4 darkerColor = vec4(1.0, 0.0, 0.15, 0.0625); + vec4 middleColor = mix(brighterColor, darkerColor, 0.5); + + float noiseTexel = pnoise(pos, 10.0, 5, 0.5); + + float firstStep = smoothstep(0.0, noiseTexel, gradient); + float darkerColorStep = smoothstep(0.0, noiseTexel, gradient - gradientStep); + float darkerColorPath = firstStep - darkerColorStep; + vec4 color = mix(brighterColor, darkerColor, darkerColorPath); + + float middleColorStep = smoothstep(0.0, noiseTexel, gradient - 0.2 * 2.0); + + color = mix(color, middleColor, darkerColorStep - middleColorStep); + color = mix(vec4(0.0), color, firstStep); + color *= 1.5; + fragColor = color; + + fragColor.a *= (1. - vDistance) * 2. * uOpacity; +} + +void main() { + mainImage(gl_FragColor, vUv); +} + +/** SHADERDATA +{ + "title": "Fire shader", + "description": "Fire shader after @febucci", + "model": "nothing" +} +*/ +`; +const _makeCometMesh = () => { + const {WebaverseShaderMaterial} = useMaterials(); + // const localPlayer = useLocalPlayer(); + + // console.log('make cylinders mesh'); + + const object = new THREE.Object3D(); + + const shockwaveGeometry = createShockwaveGeometry(); + const frontGeometry = BufferGeometryUtils.mergeBufferGeometries([ + shockwaveGeometry, + createCylindersGeometry(true), + ]); + const backGeometry = BufferGeometryUtils.mergeBufferGeometries([ + shockwaveGeometry, + createCylindersGeometry(false), + ]); + const explosionFrontGeometry = createExplosionGeometry(true); + const explosionBackGeometry = createExplosionGeometry(false); + const frontMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + value: 0, + needsUpdate: true, + }, + uOpacity: { + value: 1, + needsUpdate: true, + }, + uSeamlessNoiseTexture: { + value: getSeamlessNoiseTexture(), + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.BackSide, + transparent: true, + }); + const backMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + value: 0, + needsUpdate: true, + }, + uOpacity: { + value: 1, + needsUpdate: true, + }, + uSeamlessNoiseTexture: { + value: getSeamlessNoiseTexture(), + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.FrontSide, + transparent: true, + }); + + const frontMesh = new THREE.Mesh(frontGeometry, frontMaterial); + object.add(frontMesh); + const backMesh = new THREE.Mesh(backGeometry, backMaterial); + object.add(backMesh); + const explosionFrontMesh = new THREE.Mesh(explosionFrontGeometry, frontMaterial); + object.add(explosionFrontMesh); + const explosionBackMesh = new THREE.Mesh(explosionBackGeometry, backMaterial); + object.add(explosionBackMesh); + + let explosionStartTime = NaN; + let dropped = false; + object.update = (timestamp, timeDiff) => { + frontMesh.visible = false; + backMesh.visible = false; + explosionFrontMesh.visible = false; + explosionBackMesh.visible = false; + + const timeSinceLastExplosion = timestamp - explosionStartTime; + + // animate + if (isNaN(explosionStartTime)) { + object.position.y -= timeDiff * 0.01; + } else { + const scaleFactor = Math.pow( + Math.min(Math.max(timeSinceLastExplosion / 1000, 0), 1), + 0.1 + ); + object.scale.setScalar(scaleFactor * explosionScaleFactor); + } + object.updateMatrixWorld(); + + // check for collision + if (isNaN(explosionStartTime)) { + const worldPosition = localVector.setFromMatrixPosition(object.matrixWorld); + if (worldPosition.y >= 0) { + // nothing + } else { + explosionStartTime = timestamp; + + if (!dropped) { + object.dispatchEvent({ + type: 'drop', + }); + + dropped = true; + } + } + } + + // check for explosion timeout + /* if (timeSinceLastExplosion > 1000) { + explosionStartTime = NaN; + + object.position.y += 10; + object.scale.setScalar(1); + object.updateMatrixWorld(); + } */ + + // set visibility + if (isNaN(explosionStartTime)) { + frontMesh.visible = true; + backMesh.visible = true; + } else { + explosionFrontMesh.visible = true; + explosionBackMesh.visible = true; + } + + // update uniforms + const _updateUniforms = () => { + const maxTime = 400; + const f = (timestamp / maxTime) % maxTime; + const timeSinceLastExplosion2 = (timestamp - explosionStartTime) / 1000; + const opacityFactor = isNaN(explosionStartTime) ? 1 : Math.min(Math.max(1 - timeSinceLastExplosion2, 0), 1); + + frontMaterial.uniforms.uTime.value = f; + frontMaterial.uniforms.uTime.needsUpdate = true; + frontMaterial.uniforms.uOpacity.value = opacityFactor; + frontMaterial.uniforms.uOpacity.needsUpdate = true; + + backMaterial.uniforms.uTime.value = f; + backMaterial.uniforms.uTime.needsUpdate = true; + backMaterial.uniforms.uOpacity.value = opacityFactor; + backMaterial.uniforms.uOpacity.needsUpdate = true; + }; + _updateUniforms(); + }; + return object; +}; +export default () => { + const app = useApp(); + const dropManager = useDropManager(); + const {moduleUrls} = useDefaultModules(); + // const sounds = useSound(); + + app.name = 'comet'; + + app.setComponent('renderPriority', 'lower'); + + const mesh = _makeCometMesh(); + + // const dropMeshes = []; + mesh.addEventListener('drop', e => { + /* const dropMesh = _makeDropMesh(); + dropMesh.position.copy(worldPosition); + // dropMesh.position.y += 0.5; + // dropMesh.updateMatrixWorld(); + dropMeshes.push(dropMesh); */ + + (async () => { + const worldPosition = localVector.setFromMatrixPosition(mesh.matrixWorld); + const dropApp = await dropManager.createDropApp({ + type: 'key', + start_url: moduleUrls.card, + components: [ + { + key: 'appName', + value: 'Silsword' + }, + { + key: 'appUrl', + value: 'https://webaverse.github.io/silsword/', + }, + { + key: 'voucher', + value: 'fakeVoucher', + }, + ], + position: worldPosition.clone() + .add(new THREE.Vector3(0, 0.5, 0)), + // quaternion: app.quaternion, + // scale: app.scale + velocity: new THREE.Vector3(0, 3, 0), + }); + + // remove + add for sorting + const parent = app.parent; + parent.remove(app); + parent.add(app); + })(); + }); + app.add(mesh); + mesh.updateMatrixWorld(); + + useFrame(({timestamp, timeDiff}) => { + mesh.update(timestamp, timeDiff); + + /* for (let i = 0; i < dropMeshes.length; i++) { + const dropMesh = dropMeshes[i]; + dropMesh.update(timestamp, timeDiff); + } */ + }); + + /* useCleanup(() => { + for (let i = 0; i < dropMeshes.length; i++) { + const dropMesh = dropMeshes[i]; + dropMesh.parent.remove(dropMesh); + } + }); */ + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/firedrop/.metaversefile b/metaverse_modules/firedrop/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/firedrop/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/firedrop/index.js b/metaverse_modules/firedrop/index.js new file mode 100644 index 0000000000..ca6c3c3dea --- /dev/null +++ b/metaverse_modules/firedrop/index.js @@ -0,0 +1,84 @@ +import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +const {useApp, useScene, usePhysics, useParticleSystem, useProcGen, useCleanup} = metaversefile; + +// const baseUrl = import.meta.url.replace(/(\/)[^\/\\]*$/, '$1'); + +// const localVector = new THREE.Vector3(); + +const size = 1; +const numParticles = 128; +const particleNames = [ + 'Elements - Fire 114 Torch Windy loop noCT noRSZ.mov', + 'Elements - Fire 113 Torch Windy loop noCT noRSZ.mov', + 'Elements - Fire 112 Torch Calm loop noCT noRSZ.mov', + 'Elements - Fire 018 Torch Fireball Up Loop noCT noRSZ.mov', + 'Elements - Fire 008 Up Projectile Loop noCT noRSZ.mov', + // 'Elements - Fire 047 Up Wide loop.mov', +]; +const downQuaternion = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(1, 0, 0), -Math.PI/2); + +export default e => { + const app = useApp(); + const scene = useScene(); + const physicsManager = usePhysics(); + const particleSystemManager = useParticleSystem(); + const procGen = useProcGen(); + const {alea} = procGen; + + app.name = 'firedrop'; + + const rng = alea(app.name); + const r = n => -n + 2 * n * rng(); + + let particleSystem = null; + const particles = []; + e.waitUntil((async () => { + { + const localParticleSystem = particleSystemManager.createParticleSystem({ + particleNames, + size, + maxParticles: numParticles, + }); + await localParticleSystem.waitForLoad(); + scene.add(localParticleSystem); + particleSystem = localParticleSystem; + } + + const _addParticle = (particleName, position) => { + const duration = 1000; + const loop = true; + const particle = particleSystem.addParticle(particleName, { + duration, + loop, + }); + particle.position.copy(position); + particle.updateMatrixWorld(); + particles.push(particle); + return particle; + }; + const particleName = particleNames[Math.floor(rng() * particleNames.length)]; + const dropParticle = _addParticle(particleName, app.position); + + const result = physicsManager.raycast(dropParticle.position, downQuaternion); + if (result) { + const basePoint = new THREE.Vector3().fromArray(result.point); + const numExtraParticles = numParticles - 1; + for (let i = 0; i < numExtraParticles; i++) { + const particleName = particleNames[Math.floor(rng() * particleNames.length)]; + _addParticle( + particleName, + basePoint.clone() + .add(new THREE.Vector3(r(3), size * 0.25, r(3))) + ); + } + } + })()); + + useCleanup(() => { + scene.remove(particleSystem); + particleSystem.destroy(); + }); + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/flare/.metaversefile b/metaverse_modules/flare/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/flare/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/flare/index.js b/metaverse_modules/flare/index.js new file mode 100644 index 0000000000..14eac59dbe --- /dev/null +++ b/metaverse_modules/flare/index.js @@ -0,0 +1,104 @@ +import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +const {useApp, useScene, useParticleSystem, useProcGen, useLocalPlayer, useFrame} = metaversefile; + +// const baseUrl = import.meta.url.replace(/(\/)[^\/\\]*$/, '$1'); + +const localVector = new THREE.Vector3(); + +// const emptyArray = []; +// const fnEmptyArray = () => emptyArray; +const numParticles = 100; + +const particleNames = [ + 'Elements - Explosion 003 Up noCT noRSZ.mov', + 'Elements - Explosion 004 Radial noCT noRSZ.mov', + 'Elements - Explosion 006 Up noCT noRSZ.mov', + 'Elements - Explosion 007 Up noCT noRSZ.mov', + 'Elements - Explosion 008 Up noCT noRSZ.mov', + 'Elements - Explosion 009 Up MIX noCT noRSZ.mov', + 'Elements - Explosion 010 Hit Radial MIX noCT noRSZ.mov', + 'Elements - Explosion 011 Hit Radial noCT noRSZ.mov', + 'Elements - Explosion 012 Up MIX noCT noRSZ.mov', + 'Elements - Explosion 013 Shot Hit Right MIX noCT noRSZ.mov', + 'Elements - Explosion 013 Up MIX noCT noRSZ.mov', + 'Elements - Explosion 015 Up MIX noCT noRSZ.mov', + 'Elements - Explosion 017 Radial MIX noCT noRSZ.mov', + 'Elements - Explosion 018 Up MIX noCT noRSZ.mov', +]; + +export default e => { + const app = useApp(); + const scene = useScene(); + const particleSystemManager = useParticleSystem(); + const procGen = useProcGen(); + const {alea} = procGen; + + app.name = 'flare'; + + class ParticlePlayer extends THREE.Object3D { + constructor(particleSystem) { + super(); + + this.particleSystem = particleSystem; + + this.timeout = null; + this.particles = []; + + const now = performance.now() + this.lastRoundTimestamp = now; + } + update(timestamp) { + const timeSinceLastRound = timestamp - this.lastRoundTimestamp; + const roundTime = 3000; + + if (timeSinceLastRound > roundTime) { + for (const particle of this.particles) { + particle.destroy(); + } + this.particles.length = 0; + } + if (this.particles.length === 0) { + const localPlayer = useLocalPlayer(); + // const timeDiff = timestamp - this.lastParticleTimestamp; + + const rng = alea('lol'); + const r = n => -n + rng() * n * 2; + for (let i = 0; i < numParticles; i++) { + const particleName = particleNames[Math.floor(rng() * particleNames.length)]; + const duration = 2000; + const particle = this.particleSystem.addParticle(particleName, { + duration, + // loop: false, + }); + particle.position.copy(localPlayer.position) + .add(localVector.set(r(1), r(1), r(1))); + this.particles.push(particle); + } + + this.lastRoundTimestamp = timestamp; + } + } + } + + let particleSystem = null; + let particlePlayer = null; + ((async () => { + particleSystem = particleSystemManager.createParticleSystem({ + particleNames, + maxParticles: numParticles, + }); + await particleSystem.waitForLoad(); + + scene.add(particleSystem); + particleSystem.updateMatrixWorld(); + + particlePlayer = new ParticlePlayer(particleSystem); + })()); + + useFrame(({timestamp, timeDiff}) => { + particlePlayer && particlePlayer.update(timestamp); + }); + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/land/.metaversefile b/metaverse_modules/land/.metaversefile new file mode 100644 index 0000000000..ac997433c0 --- /dev/null +++ b/metaverse_modules/land/.metaversefile @@ -0,0 +1,4 @@ +{ + "name": "land", + "start_url": "index.js" +} diff --git a/metaverse_modules/land/.nojekyll b/metaverse_modules/land/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metaverse_modules/land/index.js b/metaverse_modules/land/index.js new file mode 100644 index 0000000000..15f146fe84 --- /dev/null +++ b/metaverse_modules/land/index.js @@ -0,0 +1,161 @@ +// import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +const {useApp, useCleanup} = metaversefile; + +export default e => { + const app = useApp(); + + app.name = 'land'; + + const landApps = [ + { + "start_url": "https://webaverse.github.io/dual-contouring-terrain/" + }, + /* { + "start_url": "https://webaverse.github.io/silk-grass/" + }, + { + "start_url": "https://webaverse.github.io/plants/" + }, + { + "start_url": "/metaverse_modules/spawner/", + "components": [ + { + "key": "appUrls", + "value": [ + "../../ghost/", + "../../silkworm-biter/", + "../../silkworm-bloater/", + "../../silkworm-queen/", + "../../silkworm-runner/", + "../../silkworm-slasher/" + ], + }, + ], + }, */ + ]; + const passComponents = []; + const seed = app.getComponent('seed'); + const clipRange = app.getComponent('clipRange'); + const physicsInstance = app.getComponent('physicsInstance'); + const wait = app.getComponent('wait'); + const debug = app.getComponent('debug'); + + const renderPosition = app.getComponent('renderPosition'); + if (renderPosition !== undefined) { + passComponents.push({ + "key": "renderPosition", + "value": renderPosition, + }); + } + const minLodRange = app.getComponent('minLodRange'); + if (minLodRange !== undefined) { + passComponents.push({ + "key": "minLodRange", + "value": minLodRange, + }); + } + const lods = app.getComponent('lods'); + if (lods !== undefined) { + passComponents.push({ + "key": "lods", + "value": lods, + }); + } + if (seed !== undefined) { + passComponents.push({ + "key": "seed", + "value": seed, + }); + } + if (clipRange !== undefined) { + passComponents.push({ + "key": "clipRange", + "value": clipRange, + }); + } + if (physicsInstance !== undefined) { + passComponents.push({ + "key": "physicsInstance", + "value": physicsInstance, + }); + } + if (wait !== undefined) { + passComponents.push({ + "key": "wait", + "value": wait, + }); + } + if (debug !== undefined) { + passComponents.push({ + "key": "debug", + "value": debug, + }); + } + + app.addEventListener('componentsupdate', e => { + const {keys} = e; + const components = {}; + for (const key of keys) { + components[key] = app.getComponent(key); + } + + for (const subApp of subApps) { + subApp.setComponents(components); + } + }); + + const subApps = []; + const loadPromise = (async () => { + await Promise.all(landApps.map(async spec => { + const {start_url, components} = spec; + const components2 = (components ?? []).concat(passComponents); + + const keys = []; + const componentsupdate = (e) => { + keys.push(...e.keys); + }; + app.addEventListener('componentsupdate', componentsupdate); + + const subApp = await metaversefile.createAppAsync({ + start_url, + parent: app, + components: components2, + }); + subApps.push(subApp); + + app.removeEventListener('componentsupdate', componentsupdate); + for (const key of keys) { + subApp.setComponent(key, app.getComponent(key)); + } + })); + })(); + if (wait) { + e.waitUntil(loadPromise); + } + + app.getPhysicsObjects = () => { + const result = []; + for (const subApp of subApps) { + const physicsObjects = subApp.getPhysicsObjects(); + result.push(...physicsObjects); + } + return result; + }; + app.getChunkForPhysicsObject = physicsObject => { + for (const subApp of subApps) { + if (subApp.getChunkForPhysicsObject) { + return subApp.getChunkForPhysicsObject(physicsObject); + } + } + return null; + } + + useCleanup(() => { + for (const subApp of subApps) { + subApp.destroy(); + } + }); + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/limit/.metaversefile b/metaverse_modules/limit/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/limit/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/limit/index.js b/metaverse_modules/limit/index.js new file mode 100644 index 0000000000..4dc4a30049 --- /dev/null +++ b/metaverse_modules/limit/index.js @@ -0,0 +1,289 @@ +import * as THREE from 'three'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import metaversefile from 'metaversefile'; +const {useApp, useFrame, useMaterials, useLocalPlayer} = metaversefile; + +// const cardWidth = 0.063; +// const cardHeight = cardWidth / 2.5 * 3.5; +// const cardHeight = cardWidth; +// const cardsBufferFactor = 1.1; +// const menuWidth = cardWidth * cardsBufferFactor * 4; +// const menuHeight = cardHeight * cardsBufferFactor * 4; +// const menuRadius = 0.025; + +/* function mod(a, n) { + return (a % n + n) % n; +} */ + +const numCylinders = 3; +const minRadius = 0.4; +const radiusStep = minRadius; +const maxRadius = minRadius + minRadius * numCylinders; + +function createCylindersGeometry(front) { + const radiusTop = 1.5; + const radiusBottom = 1; + const height = 2; + const radialSegments = 8; + const heightSegments = 1; + const openEnded = true; + const baseGeometry = new THREE.CylinderGeometry( + radiusTop, + radiusBottom, + height, + radialSegments, + heightSegments, + openEnded, + ).translate(0, height/2, 0); + + const geometries = []; + const _push = i => { + const radius = minRadius + i * radiusStep; + const g = baseGeometry.clone(); + g.scale(radius, 1, radius); + const instances = new Float32Array(g.attributes.position.count).fill(i); + g.setAttribute('instance', new THREE.BufferAttribute(instances, 1)); + geometries.push(g); + } + if (!front) { + for (let i = 0; i < numCylinders; i++) { + _push(i); + } + } else { + for (let i = numCylinders - 1; i >= 0; i--) { + _push(i); + } + } + + const geometry = BufferGeometryUtils.mergeBufferGeometries(geometries); + return geometry; +}; +const vertexShader = `\ +precision highp float; +precision highp int; + +attribute float instance; +uniform float uTime; +// uniform vec4 uBoundingBox; +varying vec2 vUv; +varying float vInstance; +varying float vDistance; +// varying vec3 vNormal; +// varying float vFactor; + +// #define PI 3.1415926535897932384626433832795 + +void main() { + vec3 p = position; + float factor = mod(uTime, 1.); + // float distance1 = length(p.xz); + float distance1 = ${minRadius.toFixed(8)} + instance * ${(minRadius).toFixed(8)};; + float distance2 = distance1 + ${minRadius.toFixed(8)}; + float distance = distance1 * (1.0 - factor) + distance2 * factor - ${(minRadius).toFixed(8)}; + p.xz *= distance / distance1; + + float distanceFactor = (distance) / ${(maxRadius - minRadius).toFixed(8)}; + distanceFactor = mod(distanceFactor, 1.); + vDistance = distanceFactor; // sin(distanceFactor * PI); + float vDistance2 = sin(distanceFactor * PI * 0.8); + p.y *= vDistance2; + + /* if (position.y > 1.) { + p.xz *= 1.5; + } */ + + vec4 mvPosition = modelViewMatrix * vec4(p, 1.0); + gl_Position = projectionMatrix * mvPosition; + + vUv = uv; + vInstance = instance; +} +`; +const fragmentShader = `\ +uniform float uTime; +varying vec2 vUv; +varying float vDistance; +varying float vInstance; + +#define nsin(x) (sin(x) * 0.5 + 0.5) +#define PI 3.1415926535897932384626433832795 + +float cnoise(vec2 uv) { + const vec4 noise = vec4(0.0, 1.2, 0.5, 1.0); + const vec4 aurora_color_b = vec4(0.0, 0.4, 0.6, 1.0); + + float f = 200.0; + + float t = + nsin(-uTime + uv.x * f + vInstance * PI * .2) * 0.075 + + nsin(uTime + uv.x * distance(uv.x, 0.5) * f + vInstance * PI * .2) * 0.3 + + nsin(uTime + uv.x * distance(uv.x, 0.) * f * 0.25 + 100. + vInstance * PI * .2) * 0.3 + + nsin(uTime + uv.x * distance(uv.x, 1.) * f * 0.25 + 200. + vInstance * PI * .2) * 0.3 + + nsin(uTime + uv.x * distance(uv.x, 0.5) * f * 2. + 300. + vInstance * PI * .2) * -0.2; + return t; +} + + +float rand(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +float hermite(float t) +{ + return t * t * (3.0 - 2.0 * t); +} + +float noise(vec2 co, float frequency) +{ + vec2 v = vec2(co.x * frequency, co.y * frequency); + + float ix1 = floor(v.x); + float iy1 = floor(v.y); + float ix2 = floor(v.x + 1.0); + float iy2 = floor(v.y + 1.0); + + float fx = hermite(fract(v.x)); + float fy = hermite(fract(v.y)); + + float fade1 = mix(rand(vec2(ix1, iy1)), rand(vec2(ix2, iy1)), fx); + float fade2 = mix(rand(vec2(ix1, iy2)), rand(vec2(ix2, iy2)), fx); + + return mix(fade1, fade2, fy); +} + +float pnoise(vec2 co, float freq, int steps, float persistence) +{ + float value = 0.0; + float ampl = 1.0; + float sum = 0.0; + for(int i=0 ; i { + const {WebaverseShaderMaterial} = useMaterials(); + const localPlayer = useLocalPlayer(); + + // console.log('make cylinders mesh'); + + const object = new THREE.Object3D(); + + const frontGeometry = createCylindersGeometry(true); + const backGeometry = createCylindersGeometry(false); + const frontMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + type: 'f', + value: 0, + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.BackSide, + transparent: true, + }); + const backMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + type: 'f', + value: 0, + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.FrontSide, + transparent: true, + }); + const frontMesh = new THREE.Mesh(frontGeometry, frontMaterial); + object.add(frontMesh); + + const backMesh = new THREE.Mesh(backGeometry, backMaterial); + object.add(backMesh); + + object.update = (timestamp, timeDiff) => { + frontMesh.visible = false; + backMesh.visible = false; + + if (localPlayer.avatar) { + const maxTime = 400; + const f = (timestamp / maxTime) % maxTime; + + const Root = localPlayer.avatar.modelBones.Root; + object.position.setFromMatrixPosition(Root.matrixWorld); + object.updateMatrixWorld(); + + frontMesh.visible = true; + backMesh.visible = true; + + frontMaterial.uniforms.uTime.value = f; + frontMaterial.uniforms.uTime.needsUpdate = true; + backMaterial.uniforms.uTime.value = f; + backMaterial.uniforms.uTime.needsUpdate = true; + } + }; + return object; +}; +export default () => { + const app = useApp(); + app.setComponent('renderPriority', 'lower'); + + const mesh = _makeCylindersMesh(); + app.add(mesh); + mesh.updateMatrixWorld(); + + useFrame(({timestamp, timeDiff}) => { + mesh.update(timestamp, timeDiff); + }); + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/magic/.metaversefile b/metaverse_modules/magic/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/magic/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/magic/index.js b/metaverse_modules/magic/index.js new file mode 100644 index 0000000000..301607a26f --- /dev/null +++ b/metaverse_modules/magic/index.js @@ -0,0 +1,270 @@ +import * as THREE from 'three'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import metaversefile from 'metaversefile'; +const {useApp, useFrame, useMaterials, useLocalPlayer} = metaversefile; + +// const cardWidth = 0.063; +// const cardHeight = cardWidth / 2.5 * 3.5; +// const cardHeight = cardWidth; +// const cardsBufferFactor = 1.1; +// const menuWidth = cardWidth * cardsBufferFactor * 4; +// const menuHeight = cardHeight * cardsBufferFactor * 4; +// const menuRadius = 0.025; + +/* function mod(a, n) { + return (a % n + n) % n; +} */ + +const numCylinders = 5; +const minRadius = 0.2; +const radiusStep = minRadius; +const maxRadius = minRadius + minRadius * numCylinders; + +function createCylindersGeometry(front) { + const radiusTop = 1; + const radiusBottom = 1; + const height = 1.25; + const radialSegments = 8; + const heightSegments = 1; + const openEnded = true; + const baseGeometry = new THREE.CylinderGeometry( + radiusTop, + radiusBottom, + height, + radialSegments, + heightSegments, + openEnded, + ).translate(0, height/2, 0); + + const geometries = []; + const _push = i => { + const radius = minRadius + i * radiusStep; + const g = baseGeometry.clone(); + g.scale(radius, 1, radius); + const instances = new Float32Array(g.attributes.position.count).fill(i); + g.setAttribute('instance', new THREE.BufferAttribute(instances, 1)); + geometries.push(g); + } + if (!front) { + for (let i = 0; i < numCylinders; i++) { + _push(i); + } + } else { + for (let i = numCylinders - 1; i >= 0; i--) { + _push(i); + } + } + + const geometry = BufferGeometryUtils.mergeBufferGeometries(geometries); + return geometry; +}; +const vertexShader = `\ +precision highp float; +precision highp int; + +attribute float instance; +uniform float uTime; +// uniform vec4 uBoundingBox; +varying vec2 vUv; +varying float vInstance; +varying float vDistance; +// varying vec3 vNormal; +// varying float vFactor; + +// #define PI 3.1415926535897932384626433832795 + +void main() { + vec3 p = position; + float factor = mod(uTime, 1.); + float distance1 = length(vec2(p.xz)); + float distance2 = distance1 + ${minRadius.toFixed(8)}; + float distance = distance1 * (1.0 - factor) + distance2 * factor; + p.xz *= distance / distance1; + + float distanceFactor = (distance - ${(minRadius).toFixed(8)}) / ${(maxRadius - minRadius).toFixed(8)}; + vDistance = sin(distanceFactor * PI); + p.y *= vDistance; + + vec4 mvPosition = modelViewMatrix * vec4(p, 1.0); + gl_Position = projectionMatrix * mvPosition; + + vUv = uv; + vInstance = instance; +} +`; +const fragmentShader = `\ +precision highp float; +precision highp int; + +#define PI 3.1415926535897932384626433832795 + +// uniform vec4 uBoundingBox; +uniform float uTime; +// uniform float uTimeCubic; +varying vec2 vUv; +// varying float vF; +varying float vInstance; +varying float vDistance; +// varying vec3 vNormal; + +vec3 hueShift( vec3 color, float hueAdjust ){ + const vec3 kRGBToYPrime = vec3 (0.299, 0.587, 0.114); + const vec3 kRGBToI = vec3 (0.596, -0.275, -0.321); + const vec3 kRGBToQ = vec3 (0.212, -0.523, 0.311); + + const vec3 kYIQToR = vec3 (1.0, 0.956, 0.621); + const vec3 kYIQToG = vec3 (1.0, -0.272, -0.647); + const vec3 kYIQToB = vec3 (1.0, -1.107, 1.704); + + float YPrime = dot (color, kRGBToYPrime); + float I = dot (color, kRGBToI); + float Q = dot (color, kRGBToQ); + float hue = atan (Q, I); + float chroma = sqrt (I * I + Q * Q); + + hue += hueAdjust; + + Q = chroma * sin (hue); + I = chroma * cos (hue); + + vec3 yIQ = vec3 (YPrime, I, Q); + + return vec3( dot (yIQ, kYIQToR), dot (yIQ, kYIQToG), dot (yIQ, kYIQToB) ); +} + +float rand(float n){return fract(sin(n) * 43758.5453123);} + +#define nsin(x) (sin(x) * 0.5 + 0.5) + +void draw_auroras(inout vec4 color, vec2 uv) { + color = vec4(0.0); + + const vec4 aurora_color_a = vec4(0.0, 1.2, 0.5, 1.0); + const vec4 aurora_color_b = vec4(0.0, 0.4, 0.6, 1.0); + + float f = 200.0; + + float factor = uTime; // mod(uTime, 1.); + float t = -1.5 + + nsin(-factor + uv.x * f) * 0.075 + + nsin(factor + uv.x * distance(uv.x, 0.5) * f) * 0.3 + + nsin(factor + uv.x * distance(uv.x, 0.) * f * 0.25 + 100.) * 0.3 + + nsin(factor + uv.x * distance(uv.x, 1.) * f * 0.25 + 200.) * 0.3 + + nsin(factor + uv.x * distance(uv.x, 0.5) * f * 2. + 300.) * -0.2; + // t += uv.y; + // t = pow(t, 0.5); + t = 1.0 - smoothstep(1.0 - uv.y - 4.0, 1.0 - uv.y * 2.0, t); + // t = pow(t, 2.); + + vec4 final_color = mix(aurora_color_a, aurora_color_b, clamp(uv.y * t, 0.0, 1.0)); + final_color += final_color * final_color; + color += final_color * t * (t + 0.5) * 0.75; +} + +void main() { + vec3 c1 = vec3(1., 1., 0.195); + vec3 c2 = vec3(53./255., 254./255., 52./255.); + + float factor = mod(uTime, 1.); + float lerpInstance = vInstance + factor; + float dfa = (1. - lerpInstance/${numCylinders.toFixed(8)}); + float dfb = (1. - lerpInstance/${(numCylinders - 1).toFixed(8)}); + + float radiusFactor2 = vInstance - floor(uTime); + // float radiusFactor = (lerpInstance + 1.) / ${numCylinders.toFixed(8)}; + // vec3 c = mix(c1, c2, radiusFactor); + + vec2 uv = vUv; + // uv.y /= vDistance; + // uv.y = min(max(uv.y, 0.), 1.); + uv.x = mod(uv.x + rand(radiusFactor2), 1.); + draw_auroras(gl_FragColor, uv); + gl_FragColor.a *= dfa; + + /* float c = vUv.y > 0.9 ? 1. : 0.; + gl_FragColor.r = c; + gl_FragColor.a = c; + if (gl_FragColor.a <= 0.05) { + discard; + } */ +} +`; +const _makeCylindersMesh = () => { + const {WebaverseShaderMaterial} = useMaterials(); + const localPlayer = useLocalPlayer(); + + // console.log('make cylinders mesh'); + + const object = new THREE.Object3D(); + + const frontGeometry = createCylindersGeometry(true); + const backGeometry = createCylindersGeometry(false); + const frontMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + type: 'f', + value: 0, + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.BackSide, + transparent: true, + }); + const backMaterial = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + type: 'f', + value: 0, + needsUpdate: true, + }, + }, + vertexShader, + fragmentShader, + side: THREE.FrontSide, + transparent: true, + }); + const frontMesh = new THREE.Mesh(frontGeometry, frontMaterial); + object.add(frontMesh); + + const backMesh = new THREE.Mesh(backGeometry, backMaterial); + object.add(backMesh); + + object.update = (timestamp, timeDiff) => { + frontMesh.visible = false; + backMesh.visible = false; + + if (localPlayer.avatar) { + const maxTime = 150; + const f = (timestamp / maxTime) % 1000; + + const Root = localPlayer.avatar.modelBones.Root; + object.position.setFromMatrixPosition(Root.matrixWorld); + object.updateMatrixWorld(); + + frontMesh.visible = true; + backMesh.visible = true; + + frontMaterial.uniforms.uTime.value = f; + frontMaterial.uniforms.uTime.needsUpdate = true; + backMaterial.uniforms.uTime.value = f; + backMaterial.uniforms.uTime.needsUpdate = true; + } + }; + return object; +}; +export default () => { + const app = useApp(); + app.setComponent('renderPriority', 'lowest'); + + const mesh = _makeCylindersMesh(); + app.add(mesh); + mesh.updateMatrixWorld(); + + useFrame(({timestamp, timeDiff}) => { + mesh.update(timestamp, timeDiff); + }); + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/mesh-lod-item/.metaversefile b/metaverse_modules/mesh-lod-item/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/mesh-lod-item/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/mesh-lod-item/.nojekyll b/metaverse_modules/mesh-lod-item/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/metaverse_modules/mesh-lod-item/index.js b/metaverse_modules/mesh-lod-item/index.js new file mode 100644 index 0000000000..529c11aafb --- /dev/null +++ b/metaverse_modules/mesh-lod-item/index.js @@ -0,0 +1,125 @@ +import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +const {useApp, useFrame, usePhysics, useWear, useMeshLodder, useCleanup, useDefaultModules, addTrackedApp} = metaversefile; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localQuaternion = new THREE.Quaternion(); +const localMatrix = new THREE.Matrix4(); + +const r = () => (-0.5+Math.random())*2; + +const _copyTransform = (dst, src) => { + dst.position.copy(src.position); + dst.quaternion.copy(src.quaternion); + dst.scale.copy(src.scale); + dst.matrix.copy(src.matrix); + dst.matrixWorld.copy(src.matrixWorld); +}; + +export default () => { + const app = useApp(); + const physicsManager = usePhysics(); + const meshLodManager = useMeshLodder(); + const {moduleUrls} = useDefaultModules(); + + app.name = 'mesh-lod-item'; + + const meshLodderId = app.getComponent('meshLodderId'); + const physicsId = app.getComponent('physicsId'); + + const meshLodder = meshLodManager.getMeshLodder(meshLodderId); + + let itemDiceMesh = null; + { + itemDiceMesh = meshLodder.cloneItemDiceMesh(physicsId); + app.add(itemDiceMesh); + itemDiceMesh.updateMatrixWorld(); + } + + let itemMesh = null; + const physicsObjects = []; + { + itemMesh = meshLodder.cloneItemMesh(physicsId); + itemMesh.position.set(0, 0, 0); + itemMesh.quaternion.identity(); + itemMesh.scale.set(1, 1, 1); + + app.add(itemMesh); + itemMesh.updateMatrixWorld(); + } + { + const physicsObject = meshLodder.clonePhysicsObject(physicsId); + physicsObjects.push(physicsObject); + } + + useFrame(() => { + if (!wearing) { + const physicsObject = physicsObjects[0]; + itemMesh.position.copy(physicsObject.position); + itemMesh.quaternion.copy(physicsObject.quaternion); + itemMesh.scale.copy(physicsObject.scale); + itemMesh.matrix.copy(physicsObject.matrix); + itemMesh.matrixWorld.copy(physicsObject.matrixWorld); + itemMesh.matrix + .premultiply( + localMatrix.copy(app.matrixWorld).invert() + ) + .decompose(itemMesh.position, itemMesh.quaternion, itemMesh.scale); + + _copyTransform(itemDiceMesh, itemMesh); + } else { + itemMesh.position.set(0, 0, 0); + itemMesh.quaternion.identity(); + itemMesh.scale.set(1, 1, 1); + itemMesh.updateMatrixWorld(); + + _copyTransform(itemDiceMesh, itemMesh); + } + }); + + let wearing = false; + useWear(e => { + wearing = e.wear; + }); + + app.addEventListener('die', async () => { + const numSilks = Math.floor(1 + Math.random() * 6); + const promises = []; + for (let i = 0; i < numSilks; i++) { + const components = [ + { + key: 'drop', + value: { + velocity: new THREE.Vector3(r(), 1+Math.random(), r()) + .normalize() + .multiplyScalar(5) + .toArray(), + angularVelocity: new THREE.Vector3(0, 0.001, 0) + .toArray(), + }, + }, + ]; + + const p = addTrackedApp( + moduleUrls.silk, + localVector.setFromMatrixPosition(itemMesh.matrixWorld), + localQuaternion.identity(), + localVector2.set(1, 1, 1), + components + ); + promises.push(p); + } + await Promise.all(promises); + }); + + useCleanup(() => { + for (const physicsObject of physicsObjects) { + physicsManager.removeGeometry(physicsObject); + } + }); + + app.getPhysicsObjects = () => physicsObjects; + + return app; +}; \ No newline at end of file diff --git a/metaverse_modules/silk/index.js b/metaverse_modules/silk/index.js index 43560596b3..2c359c1321 100644 --- a/metaverse_modules/silk/index.js +++ b/metaverse_modules/silk/index.js @@ -9,6 +9,8 @@ const simplex = new Simplex('lol'); export default () => { const app = useApp(); + app.name = 'Silk'; + const silkMesh = new THREE.Mesh(new THREE.BoxBufferGeometry(0.1, 0.05, 0.1, 10, 10, 10), new THREE.MeshNormalMaterial()); const defaultScale = new THREE.Vector3(1, 0.3, 1).multiplyScalar(0.5); silkMesh.scale.copy(defaultScale); diff --git a/metaverse_modules/silks/.metaversefile b/metaverse_modules/silks/.metaversefile new file mode 100644 index 0000000000..6823789879 --- /dev/null +++ b/metaverse_modules/silks/.metaversefile @@ -0,0 +1,3 @@ +{ + "start_url": "index.js" +} diff --git a/metaverse_modules/silks/index.js b/metaverse_modules/silks/index.js new file mode 100644 index 0000000000..d85cefae55 --- /dev/null +++ b/metaverse_modules/silks/index.js @@ -0,0 +1,279 @@ +import * as THREE from 'three'; +import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; +import metaversefile from 'metaversefile'; +const {useFrame, useMaterials, useLocalPlayer, useMathUtils} = metaversefile; + +const upVector = new THREE.Vector3(0, 1, 0); + +const radiusTop = 0.005; +const radiusBottom = radiusTop; +const playerCenterRadius = 0.3; +// const height = 1; +const radialSegments = 8; +const heightSegments = 16; +const openEnded = true; +const segmentLength = 0.05; +const verticesPerHeightSegment = radialSegments + 1; +const verticesPerPart = verticesPerHeightSegment * (heightSegments + 1); +const numPointSets = 2; + +// const localVector2D = new THREE.Vector2(); + +let lastPartPositions = Array(numPointSets); +for (let i = 0; i < numPointSets; i++) { + lastPartPositions[i] = new THREE.Vector3(); +} +const _updatePoints = (player, pointSets) => { + // const leftPartPosition = player.position.clone() + // .add(new THREE.Vector3(-playerCenterRadius, 0, 0).applyQuaternion(player.quaternion)); + // const rightPartPosition = player.position.clone() + // .add(new THREE.Vector3(playerCenterRadius, 0, 0).applyQuaternion(player.quaternion)); + // const partPositions = [leftPartPosition, rightPartPosition]; + for (let pointSetIndex = 0; pointSetIndex < pointSets.length; pointSetIndex++) { + const points = pointSets[pointSetIndex]; + const {offset} = points; + + const partPosition = player.position.clone() + .add( + offset.clone() + .applyQuaternion(player.quaternion) + ); + const lastPartPosition = lastPartPositions[pointSetIndex]; + const quaternion = new THREE.Quaternion().setFromRotationMatrix( + new THREE.Matrix4().lookAt(lastPartPosition, partPosition, upVector) + ); + + points[0].position.copy(partPosition); + points[0].quaternion.copy(quaternion); + + for (let i = 1; i <= heightSegments; i++) { + const point = points[i]; + const nextPoint = points[i - 1]; + const pointQuaternion = new THREE.Quaternion().setFromRotationMatrix( + new THREE.Matrix4().lookAt(point.position, nextPoint.position, upVector) + ); + point.position.copy(nextPoint.position) + .add(new THREE.Vector3(0, 0, segmentLength).applyQuaternion(pointQuaternion)); + point.quaternion.copy(pointQuaternion); + } + + lastPartPositions[pointSetIndex] = partPosition; + } +}; +const _setPoints = (geometry, pointSets) => { + for (let pointSetIndex = 0; pointSetIndex < pointSets.length; pointSetIndex++) { + const points = pointSets[pointSetIndex]; + const partVertexOffset = pointSetIndex * verticesPerPart; + + for (let heightSegment = 0; heightSegment < points.length; heightSegment++) { + const { + position, + quaternion, + } = points[heightSegment]; + for (let j = 0; j < verticesPerHeightSegment; j++) { + position.toArray(geometry.attributes.p.array, heightSegment * verticesPerHeightSegment * 3 + j * 3 + partVertexOffset * 3); + quaternion.toArray(geometry.attributes.q.array, heightSegment * verticesPerHeightSegment * 4 + j * 4 + partVertexOffset * 4); + } + } + geometry.attributes.p.needsUpdate = true; + geometry.attributes.q.needsUpdate = true; + } +}; + +function createSilksGeometry() { + const geometry = new THREE.CylinderGeometry( + radiusTop, + radiusBottom, + 0, // height, + radialSegments, + heightSegments, + openEnded, + ).rotateX(-Math.PI / 2); + /* geometry.setAttribute( + 'offset', + new THREE.BufferAttribute(new Float32Array(geometry.attributes.position.count), 1) + ); */ + geometry.setAttribute( + 'p', + new THREE.BufferAttribute(new Float32Array(geometry.attributes.position.count * 3), 3) + ); + geometry.setAttribute( + 'q', + new THREE.BufferAttribute(new Float32Array(geometry.attributes.position.count * 4), 4) + ); + return geometry; +}; +/* const _incrementUvs = (geometry, duv) => { + for (let i = 0; i < geometry.attributes.uv.count; i++) { + localVector2D.fromArray(geometry.attributes.uv.array, i * 2) + .add(duv) + .toArray(geometry.attributes.uv.array, i * 2); + } +}; */ +/* const _setOffsets = (geometry, offsetValue) => { + for (let i = 0; i < geometry.attributes.offset.array.length; i++) { + geometry.attributes.offset.array[i] = offsetValue; + } + geometry.attributes.offset.needsUpdate = true; +}; */ +const _makeSilksMesh = () => { + const {WebaverseShaderMaterial} = useMaterials(); + + const geometry1 = createSilksGeometry(); + const geometry2 = createSilksGeometry(); + // _incrementUvs(geometry2, new THREE.Vector2(0, 1)); + // _setOffsets(geometry1, -1); + // _setOffsets(geometry2, 1); + const geometry = BufferGeometryUtils.mergeBufferGeometries([geometry1, geometry2]); + // _setOffsets(geometry, 1); + + const material = new WebaverseShaderMaterial({ + uniforms: { + uTime: { + type: 'f', + value: 0, + needsUpdate: true, + }, + }, + vertexShader: `\ + precision highp float; + precision highp int; + + uniform float uTime; + attribute vec3 p; + attribute vec4 q; + varying vec2 vUv; + + const float radius = ${playerCenterRadius.toFixed(8)}; + + vec4 quat_from_axis_angle(vec3 axis, float angle) { + vec4 qr; + float half_angle = (angle * 0.5); + qr.x = axis.x * sin(half_angle); + qr.y = axis.y * sin(half_angle); + qr.z = axis.z * sin(half_angle); + qr.w = cos(half_angle); + return qr; + } + + vec3 rotate_vertex_position(vec3 position, vec4 q) { + vec3 v = position.xyz; + return v + 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v); + } + + void main() { + vec3 pos = position; + + { + pos = rotate_vertex_position(pos, q); + pos += p; + } + + /* { + vec4 qt = quat_from_axis_angle(vec3(0.0, 1.0, 0.0), uTime * PI * 2.); + pos = rotate_vertex_position(pos, qt); + } */ + + vec4 mvPosition = modelViewMatrix * vec4(pos, 1.0); + gl_Position = projectionMatrix * mvPosition; + + vUv = uv; + } + `, + fragmentShader: `\ + precision highp float; + precision highp int; + + #define PI 3.1415926535897932384626433832795 + + uniform float uTime; + varying float vOffset; + varying vec2 vUv; + + vec3 hueShift( vec3 color, float hueAdjust ){ + const vec3 kRGBToYPrime = vec3 (0.299, 0.587, 0.114); + const vec3 kRGBToI = vec3 (0.596, -0.275, -0.321); + const vec3 kRGBToQ = vec3 (0.212, -0.523, 0.311); + + const vec3 kYIQToR = vec3 (1.0, 0.956, 0.621); + const vec3 kYIQToG = vec3 (1.0, -0.272, -0.647); + const vec3 kYIQToB = vec3 (1.0, -1.107, 1.704); + + float YPrime = dot (color, kRGBToYPrime); + float I = dot (color, kRGBToI); + float Q = dot (color, kRGBToQ); + float hue = atan (Q, I); + float chroma = sqrt (I * I + Q * Q); + + hue += hueAdjust; + + Q = chroma * sin (hue); + I = chroma * cos (hue); + + vec3 yIQ = vec3 (YPrime, I, Q); + + return vec3( dot (yIQ, kYIQToR), dot (yIQ, kYIQToG), dot (yIQ, kYIQToB) ); + } + + void main() { + float t = pow(uTime, 0.5)/2. + 0.5; + + gl_FragColor = vec4(hueShift(vec3(1., 0., 0.), vUv.y * PI * 2.), 1.); + + /* bool draw; + if (vF > 0.5) { + draw = vF < t; + } else { + draw = (1.-vF) < t; + } + if (draw) { + gl_FragColor = vec4(hueShift(vec3(1., 0., 0.), vF * PI * 3.), 1.); + } else { + discard; + } */ + } + `, + // side: THREE.DoubleSide, + }); + const mesh = new THREE.Mesh(geometry, material); + mesh.frustumCulled = false; + + const pointsSets = Array(numPointSets); + for (let i = 0; i < numPointSets; i++) { + const points = Array(heightSegments + 1); + for (let j = 0; j < points.length; j++) { + points[j] = { + position: new THREE.Vector3(0, 0, j / heightSegments), + quaternion: new THREE.Quaternion(), + }; + } + points.offset = new THREE.Vector3((-1 + i * 2) * playerCenterRadius, 0, 0); + pointsSets[i] = points; + } + + mesh.update = (timestamp, timeDiff) => { + const maxTime = 3000; + const f = (timestamp % maxTime) / maxTime; + + const localPlayer = useLocalPlayer(); + _updatePoints(localPlayer, pointsSets); + _setPoints(geometry, pointsSets); + + /* mesh.position.copy(localPlayer.position); + mesh.quaternion.copy(localPlayer.quaternion); + mesh.updateMatrixWorld(); */ + + material.uniforms.uTime.value = f; + material.uniforms.uTime.needsUpdate = true; + }; + return mesh; +}; +export default () => { + const mesh = _makeSilksMesh(); + + useFrame(({timestamp, timeDiff}) => { + mesh.update(timestamp, timeDiff); + }); + + return mesh; +}; \ No newline at end of file diff --git a/metaverse_modules/spawner/index.js b/metaverse_modules/spawner/index.js index f504da4b3b..9fa3111819 100644 --- a/metaverse_modules/spawner/index.js +++ b/metaverse_modules/spawner/index.js @@ -1,69 +1,63 @@ -// import * as THREE from 'three'; -// import hpManager from './hp-manager.js'; +import * as THREE from 'three'; import metaversefile from 'metaversefile'; -const {useApp, createApp, useHpManager} = metaversefile; +const {useApp, useProcGenManager, useMobManager, useFrame, useScene, useCleanup} = metaversefile; -export default () => { +export default e => { const app = useApp(); - const hpManager = useHpManager(); - - const spawnUrl = app.getComponent('spawnUrl') ?? ''; - - const range = app.getComponent('range') ?? 3; - const r = () => -range + Math.random() * 2 * range; - const maxMobs = 10; - - let subApps = []; - (async () => { - const m = await metaversefile.import(spawnUrl); - - const promises = []; - for (let i = 0; i < maxMobs; i++) { - promises.push((async () => { - const subApp = createApp(); - subApp.name = `spawn-${m.name}-${i}`; - - subApp.position.set( - r(), - 0, // r(), - r() - ); - subApp.quaternion.copy(app.quaternion); - app.add(subApp); - subApp.updateMatrixWorld(); - - await subApp.addModule(m); - - const hitTracker = hpManager.makeHitTracker(); - hitTracker.bind(subApp); - hitTracker.addEventListener('die', () => { - hitTracker.unbind(subApp); - app.remove(subApp); - }); - - return subApp; - })()); + const mobManager = useMobManager(); + const scene = useScene(); + const procGenManager = useProcGenManager(); + + app.name = 'spawner'; + + const appUrls = app.getComponent('appUrls') ?? []; + + const seed = app.getComponent('seed') ?? null; + let range = app.getComponent('range') ?? null; + const wait = app.getComponent('wait') ?? false; + if (range) { + range = new THREE.Box3( + new THREE.Vector3(range[0][0], range[0][1], range[0][2]), + new THREE.Vector3(range[1][0], range[1][1], range[1][2]) + ); + } + + let mobber = null; + e.waitUntil((async () => { + let live = true; + useCleanup(() => { + live = false; + }); + + const mobData = await mobManager.loadData(appUrls); + if (!live) return; + + const procGenInstance = procGenManager.getInstance(seed, range); + mobber = mobManager.createMobber({ + procGenInstance, + mobData, + }); + + const chunks = mobber.getChunks(); + app.add(chunks); + chunks.updateMatrixWorld(); + + if (wait) { + await mobber.waitForUpdate(); } - subApps = await Promise.all(promises); - })(); + })()); - app.getPhysicsObjects = () => { - const result = []; - for (const subApp of subApps) { - result.push.apply(result, subApp.getPhysicsObjects()); - } - return result; - }; - app.hit = (damage, opts) => { - const {physicsObject} = opts; - for (const subApp of subApps) { - const physicsObjects = subApp.getPhysicsObjects(); - if (physicsObjects.includes(physicsObject)) { - subApp.hit(damage, opts); - break; - } + useFrame(({timestamp, timeDiff}) => { + mobber && mobber.update(timestamp, timeDiff); + }); + + useCleanup(() => { + if (mobber) { + const chunks = mobber.getChunks(); + scene.remove(chunks); + mobber.destroy(); } - }; + }); return app; }; \ No newline at end of file diff --git a/metaverse_modules/target-reticle/index.js b/metaverse_modules/target-reticle/index.js index e9c453309d..fd98bcc88c 100644 --- a/metaverse_modules/target-reticle/index.js +++ b/metaverse_modules/target-reticle/index.js @@ -1,7 +1,7 @@ import * as THREE from 'three'; import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; import metaversefile from 'metaversefile'; -const {useFrame, useMaterials, useLocalPlayer} = metaversefile; +const {useFrame, useMaterials, useCamera, useLocalPlayer} = metaversefile; // const cardWidth = 0.063; // const cardHeight = cardWidth / 2.5 * 3.5; @@ -13,26 +13,36 @@ const menuRadius = 0.025; */ const localVector = new THREE.Vector3(); const localVector2D = new THREE.Vector2(); +const localQuaternion = new THREE.Quaternion(); -const targetTypes = [ +/* const targetTypes = [ 'object', 'enemy', 'friend', +]; */ +const targetTypeColors = [ + { + name: 'object', + colors: [ + new THREE.Color(0x42a5f5), + new THREE.Color(0x1976d2), + ], + }, + { + name: 'enemy', + colors: [ + new THREE.Color(0xffca28), + new THREE.Color(0xffa000), + ], + }, + { + name: 'friend', + colors: [ + new THREE.Color(0x66bb6a), + new THREE.Color(0x388e3c), + ], + }, ]; -const targetTypeColors = { - object: [ - new THREE.Color(0xffa726), - new THREE.Color(0xf57c00), - ], - enemy: [ - new THREE.Color(0xef5350), - new THREE.Color(0xd32f2f), - ], - friend: [ - new THREE.Color(0x66bb6a), - new THREE.Color(0x388e3c), - ], -}; const triangleHalfSize = 0.08; const triangleSize = triangleHalfSize * 2; const innerRadius = 0.3; @@ -49,6 +59,30 @@ function createTargetReticleGeometry() { shape.lineTo(a.x, a.y); const baseGeometry = new THREE.ShapeGeometry(shape); + + const _setOffsets = g => { + const offsets = new Float32Array(g.attributes.position.count * 3); + baseGeometry.setAttribute('offset', new THREE.BufferAttribute(offsets, 3)); + }; + _setOffsets(baseGeometry); + + const _setQuaternions = g => { + const quaternions = new Float32Array(g.attributes.position.count * 4); + baseGeometry.setAttribute('quaternion', new THREE.BufferAttribute(quaternions, 4)); + }; + _setQuaternions(baseGeometry); + + const _setTypes = g => { + const types = new Int32Array(g.attributes.position.count); + baseGeometry.setAttribute('type', new THREE.BufferAttribute(types, 1)); + }; + _setTypes(baseGeometry); + + const _setZooms = g => { + const zooms = new Float32Array(g.attributes.position.count); + baseGeometry.setAttribute('zoom', new THREE.BufferAttribute(zooms, 1)); + } + _setZooms(baseGeometry); const _setUvs = g => { const positions = g.attributes.position.array; @@ -70,7 +104,6 @@ function createTargetReticleGeometry() { for (let i = 0; i < g.attributes.normal2.count; i++) { normal2D.toArray(normal2s, i * 2); } - // console.log('got normnal 2s', normal2s); g.attributes.normal2.needsUpdate = true; return g; }; @@ -103,10 +136,23 @@ function createTargetReticleGeometry() { ]; return BufferGeometryUtils.mergeBufferGeometries(geometries); }; +function createTargetReticleGeometries(count) { + const geometry = createTargetReticleGeometry(); + const geometries = Array(count); + for (let i = 0; i < count; i++) { + geometries[i] = geometry; + } + const result = BufferGeometryUtils.mergeBufferGeometries(geometries); + result.drawStride = geometry.attributes.position.count; + return result; +} const _makeTargetReticleMesh = () => { const {WebaverseShaderMaterial} = useMaterials(); + const camera = useCamera(); + // const localPlayer = useLocalPlayer(); - const geometry = createTargetReticleGeometry(); + const geometry = createTargetReticleGeometries(16); + geometry.setDrawRange(0, 0); const material = new WebaverseShaderMaterial({ uniforms: { /* uBoundingBox: { @@ -126,7 +172,6 @@ const _makeTargetReticleMesh = () => { uColor2: { value: new THREE.Color(0xFFFFFF), needsUpdate: true, - }, uZoom: { // type: 'f', @@ -145,10 +190,13 @@ const _makeTargetReticleMesh = () => { // #define PI 3.1415926535897932384626433832795 - // attribute float f; + attribute vec3 offset; + attribute vec4 quaternion; + attribute int type; attribute vec2 normal2; + attribute float zoom; // uniform vec4 uBoundingBox; - uniform float uZoom; + // uniform float uZoom; uniform float uTime; // varying vec3 vColor; // varying float vF; @@ -156,8 +204,9 @@ const _makeTargetReticleMesh = () => { // varying vec2 vNormal2; // varying vec3 vNormal; varying vec3 vBarycentric; + flat varying int vType; - const float zoomDistance = 20.; + const float zoomDistance = 5.; vec2 rotate2D(vec2 v, float a) { return vec2( @@ -165,11 +214,20 @@ const _makeTargetReticleMesh = () => { v.x * sin(a) + v.y * cos(a) ); } + vec3 rotateVec3Quat( vec3 v, vec4 q ) { + return v + 2.0*cross(cross(v, q.xyz ) + q.w*v, q.xyz); + } void main() { - float angle = uTime * PI * 2.; - // vec2 direction = rotate2D(normal2, angle); - vec3 p = vec3(rotate2D(position.xy, angle) + rotate2D(normal2 * uZoom * zoomDistance, angle), position.z); + float uZoom = zoom; + + vec3 p = position; + { + float angle = uTime * PI * 2.; + p = vec3(rotate2D(p.xy, angle) + rotate2D(normal2 * uZoom * zoomDistance, angle), p.z); + } + p = rotateVec3Quat(p, quaternion); + p += offset; vec4 mvPosition = modelViewMatrix * vec4(p, 1.0); gl_Position = projectionMatrix * mvPosition; @@ -190,6 +248,8 @@ const _makeTargetReticleMesh = () => { } else { vBarycentric = vec3(0., 0., 1.); } + + vType = type; } `, fragmentShader: `\ @@ -198,15 +258,9 @@ const _makeTargetReticleMesh = () => { #define PI 3.1415926535897932384626433832795 - // uniform vec4 uBoundingBox; uniform float uTime; - uniform vec3 uColor1; - uniform vec3 uColor2; - // uniform float uZoom; - // uniform float uTimeCubic; - // varying vec3 vColor; - // varying float vF; varying vec2 vUv; + flat varying int vType; // varying vec2 vNormal2; // varying vec3 vNormal; varying vec3 vBarycentric; @@ -261,6 +315,19 @@ const _makeTargetReticleMesh = () => { } void main() { + vec3 uColor1; + vec3 uColor2; + if (vType == 0) { + uColor1 = vec3(${targetTypeColors[0].colors[0].toArray().join(', ')}); + uColor2 = vec3(${targetTypeColors[0].colors[1].toArray().join(', ')}); + } else if (vType == 1) { + uColor1 = vec3(${targetTypeColors[1].colors[0].toArray().join(', ')}); + uColor2 = vec3(${targetTypeColors[1].colors[1].toArray().join(', ')}); + } else if (vType == 2) { + uColor1 = vec3(${targetTypeColors[2].colors[0].toArray().join(', ')}); + uColor2 = vec3(${targetTypeColors[2].colors[1].toArray().join(', ')}); + } + /* float t = pow(uTime, 0.5)/2. + 0.5; bool draw; if (vF > 0.5) { @@ -299,37 +366,39 @@ const _makeTargetReticleMesh = () => { side: THREE.DoubleSide, }); const mesh = new THREE.Mesh(geometry, material); + mesh.frustumCulled = false; mesh.update = (timestamp, timeDiff) => { const maxTime = 3000; const f = (timestamp % maxTime) / maxTime; - /* const localPlayer = useLocalPlayer(); - mesh.position.copy(localPlayer.position); - mesh.quaternion.copy(localPlayer.quaternion); - mesh.updateMatrixWorld(); */ - - const targetType = 'friend'; - // const targetTypeIndex = targetTypes.indexOf(targetType); - const targetTypeColor = targetTypeColors[targetType]; - material.uniforms.uColor1.value.copy(targetTypeColor[0])//.multiplyScalar(0.75); - material.uniforms.uColor1.needsUpdate = true; - material.uniforms.uColor2.value.copy(targetTypeColor[1])//.multiplyScalar(0.75); - material.uniforms.uColor2.needsUpdate = true; - - let f2; - if (f < 1/4) { - f2 = f * 4; - } else if (f < 3/4) { - f2 = 1; - } else { - f2 = 1 - ((f - 3/4) * 4); - } - material.uniforms.uZoom.value = 1 - f2; - material.uniforms.uZoom.needsUpdate = true; - material.uniforms.uTime.value = f; material.uniforms.uTime.needsUpdate = true; }; + + mesh.setReticles = reticles => { + const numReticles = reticles.length; + for (let i = 0; i < numReticles; i++) { + const reticle = reticles[i]; + + const position = reticle.position; + const quaternion = localQuaternion.copy(camera.quaternion).invert(); + const type = reticle.type; + const typeIndex = targetTypeColors.findIndex(t => t.name === type); + const zoom = reticle.zoom; + + for (let j = 0; j < geometry.drawStride; j++) { + position.toArray(geometry.attributes.offset.array, (i * geometry.drawStride * 3) + (j * 3)); + quaternion.toArray(geometry.attributes.quaternion.array, (i * geometry.drawStride * 3) + (j * 4)); + geometry.attributes.type.array[i * geometry.drawStride + j] = typeIndex; + geometry.attributes.zoom.array[i * geometry.drawStride + j] = zoom; + } + } + geometry.attributes.offset.needsUpdate = true; + geometry.attributes.quaternion.needsUpdate = true; + geometry.attributes.type.needsUpdate = true; + geometry.attributes.zoom.needsUpdate = true; + geometry.setDrawRange(0, geometry.drawStride * numReticles); + }; return mesh; }; export default () => { diff --git a/metaversefile-api.js b/metaversefile-api.js index 5c13810224..779c53e47d 100644 --- a/metaversefile-api.js +++ b/metaversefile-api.js @@ -9,7 +9,7 @@ import {Text} from 'troika-three-text'; import React from 'react'; import * as ReactThreeFiber from '@react-three/fiber'; import metaversefile from 'metaversefile'; -import {getRenderer, scene, sceneHighPriority, sceneLowPriority, rootScene, camera} from './renderer.js'; +import {getRenderer, scene, sceneHighPriority, sceneLowPriority, sceneLowerPriority, sceneLowestPriority, rootScene, camera} from './renderer.js'; import cameraManager from './camera-manager.js'; import physicsManager from './physics-manager.js'; import Avatar from './avatars/avatars.js'; @@ -23,17 +23,18 @@ import postProcessing from './post-processing.js'; import {getRandomString, memoize} from './util.js'; import * as mathUtils from './math-utils.js'; import JSON6 from 'json-6'; -import * as materials from './materials.js'; import * as geometries from './geometries.js'; -import {MeshLodder} from './mesh-lodder.js'; +import * as materials from './materials.js'; +import meshLodManager from './mesh-lodder.js'; import * as avatarCruncher from './avatar-cruncher.js'; import * as avatarSpriter from './avatar-spriter.js'; import {chatManager} from './chat-manager.js'; import loreAI from './ai/lore/lore-ai.js'; import npcManager from './npc-manager.js'; +import mobManager from './mob-manager.js'; import universe from './universe.js'; import {PathFinder} from './npc-utils.js'; -import {localPlayer, remotePlayers} from './players.js'; +import {getLocalPlayer, remotePlayers} from './players.js'; import loaders from './loaders.js'; import * as voices from './voices.js'; import * as procgen from './procgen/procgen.js'; @@ -46,15 +47,19 @@ import debug from './debug.js'; import * as sceneCruncher from './scene-cruncher.js'; import * as scenePreviewer from './scene-previewer.js'; import * as sounds from './sounds.js'; +import * as lodder from './lod.js'; import hpManager from './hp-manager.js'; import particleSystemManager from './particle-system.js'; +import domRenderEngine from './dom-renderer.jsx'; +import dropManager from './drop-manager.js'; +import hitManager from './character-hitter.js'; +// import dcWorkerManager from './dc-worker-manager.js'; +import procGenManager from './procgen-manager.js'; +import cardsManager from './cards-manager.js'; +import * as instancing from './instancing.js'; +import * as atlasing from './atlasing.js'; -// const localVector = new THREE.Vector3(); -// const localVector2 = new THREE.Vector3(); const localVector2D = new THREE.Vector2(); -// const localQuaternion = new THREE.Quaternion(); -// const localMatrix = new THREE.Matrix4(); -// const localMatrix2 = new THREE.Matrix4(); class App extends THREE.Object3D { constructor() { @@ -131,13 +136,15 @@ class App extends THREE.Object3D { } } get contentId() { - return this.getComponent('contentId') + ''; + const contentIdComponent = this.getComponent('contentId'); + return (contentIdComponent !== null) ? contentIdComponent : ''; } set contentId(contentId) { this.setComponent('contentId', contentId + ''); } get instanceId() { - return this.getComponent('instanceId') + ''; + const instanceIdComponent = this.getComponent('instanceId'); + return (instanceIdComponent !== null) ? instanceIdComponent : ''; } set instanceId(instanceId) { this.setComponent('instanceId', instanceId + ''); @@ -167,15 +174,20 @@ class App extends THREE.Object3D { return null; } } - activate() { + activate({ + physicsId = -1, + } = {}) { this.dispatchEvent({ type: 'activate', + physicsId, }); } wear() { + const localPlayer = getLocalPlayer(); localPlayer.wear(this); } unwear() { + const localPlayer = getLocalPlayer(); localPlayer.unwear(this); } use() { @@ -196,6 +208,7 @@ const defaultModules = { modules, }; +const localPlayer = getLocalPlayer(); const loreAIScene = loreAI.createScene(localPlayer); const _bindAppManagerToLoreAIScene = (appManager, loreAIScene) => { const bindings = new WeakMap(); @@ -215,6 +228,7 @@ const _bindAppManagerToLoreAIScene = (appManager, loreAIScene) => { }); }; _bindAppManagerToLoreAIScene(world.appManager, loreAIScene); +world.loreAIScene = loreAIScene; class ErrorBoundary extends React.Component { constructor(props) { @@ -349,7 +363,7 @@ metaversefile.setApi({ } s = `/@proxy/${s}`; } - // console.log('do import', s); + // console.log('js import', s); try { const m = await import(s); return m; @@ -490,6 +504,7 @@ metaversefile.setApi({ recursion++; if (recursion === 1) { // scene.directionalLight.castShadow = false; + const localPlayer = getLocalPlayer(); if (localPlayer.avatar) { wasDecapitated = localPlayer.avatar.decapitated; localPlayer.avatar.undecapitate(); @@ -500,6 +515,7 @@ metaversefile.setApi({ recursion--; if (recursion === 0) { // console.log('was decap', wasDecapitated); + const localPlayer = getLocalPlayer(); if (localPlayer.avatar && wasDecapitated) { localPlayer.avatar.decapitate(); localPlayer.avatar.skeleton.update(); @@ -517,7 +533,7 @@ metaversefile.setApi({ } }, useLocalPlayer() { - return localPlayer; + return getLocalPlayer(); }, useRemotePlayer(playerId) { let player = remotePlayers.get(playerId); @@ -532,28 +548,36 @@ metaversefile.setApi({ useNpcManager() { return npcManager; }, + useMobManager() { + return mobManager; + }, usePathFinder() { return PathFinder; }, useLoaders() { return loaders; }, + useLodder() { + return lodder; + }, useMeshLodder() { - return MeshLodder; + return meshLodManager; }, - usePhysics() { + usePhysics(instance = null) { const app = currentAppRender; if (app) { - const physics = {}; + const physicsScene = physicsManager.getScene(instance) + .clone(); + /* const physics = {}; for (const k in physicsManager) { physics[k] = physicsManager[k]; - } + } */ /* const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); const localQuaternion = new THREE.Quaternion(); const localMatrix = new THREE.Matrix4(); */ // const localMatrix2 = new THREE.Matrix4(); - physics.addBoxGeometry = (addBoxGeometry => function(position, quaternion, size, dynamic) { + physicsScene.addBoxGeometry = (addBoxGeometry => function(position, quaternion, size, dynamic) { /* const basePosition = position; const baseQuaternion = quaternion; const baseScale = size; @@ -581,8 +605,8 @@ metaversefile.setApi({ app.physicsObjects.push(physicsObject); return physicsObject; - })(physics.addBoxGeometry); - physics.addCapsuleGeometry = (addCapsuleGeometry => function(position, quaternion, radius, halfHeight, physicsMaterial, dynamic, flags) { + })(physicsScene.addBoxGeometry); + physicsScene.addCapsuleGeometry = (addCapsuleGeometry => function(position, quaternion, radius, halfHeight, physicsMaterial, dynamic, flags) { // const basePosition = position; // const baseQuaternion = quaternion; // const baseScale = new THREE.Vector3(radius, halfHeight*2, radius) @@ -623,7 +647,7 @@ metaversefile.setApi({ // physicsManager.pushUpdate(app, physicsObject); //physicsManager.setTransform(physicsObject); return physicsObject; - })(physics.addCapsuleGeometry); + })(physicsScene.addCapsuleGeometry); /* physics.addSphereGeometry = (addSphereGeometry => function(position, quaternion, radius, physicsMaterial, ccdEnabled) { const basePosition = position; const baseQuaternion = quaternion; @@ -653,7 +677,7 @@ metaversefile.setApi({ // physicsManager.pushUpdate(app, physicsObject); return physicsObject; })(physics.addSphereGeometry); */ - physics.addGeometry = (addGeometry => function(mesh) { + physicsScene.addGeometry = (addGeometry => function(mesh) { /* const oldParent = mesh.parent; const parentMesh = new THREE.Object3D(); @@ -678,62 +702,26 @@ metaversefile.setApi({ // app.add(physicsObject); app.physicsObjects.push(physicsObject); return physicsObject; - })(physics.addGeometry); - physics.addCookedGeometry = (addCookedGeometry => function(buffer, position, quaternion, scale) { + })(physicsScene.addGeometry); + physicsScene.addCookedGeometry = (addCookedGeometry => function(buffer, position, quaternion, scale) { const physicsObject = addCookedGeometry.apply(this, arguments); // app.add(physicsObject); app.physicsObjects.push(physicsObject); return physicsObject; - })(physics.addCookedGeometry); - physics.addConvexGeometry = (addConvexGeometry => function(mesh) { + })(physicsScene.addCookedGeometry); + physicsScene.addConvexGeometry = (addConvexGeometry => function(mesh) { const physicsObject = addConvexGeometry.apply(this, arguments); // app.add(physicsObject); app.physicsObjects.push(physicsObject); return physicsObject; - })(physics.addConvexGeometry); - physics.addCookedConvexGeometry = (addCookedConvexGeometry => function(buffer, position, quaternion, scale) { + })(physicsScene.addConvexGeometry); + physicsScene.addCookedConvexGeometry = (addCookedConvexGeometry => function(buffer, position, quaternion, scale) { const physicsObject = addCookedConvexGeometry.apply(this, arguments); // app.add(physicsObject); app.physicsObjects.push(physicsObject); return physicsObject; - })(physics.addCookedConvexGeometry); - /* physics.enablePhysicsObject = (enablePhysicsObject => function(physicsObject) { - enablePhysicsObject.call(this, physicsObject); - })(physics.enablePhysicsObject); - physics.disablePhysicsObject = (disablePhysicsObject => function(physicsObject) { - disablePhysicsObject.call(this, physicsObject); - })(physics.disablePhysicsObject); - physics.enableGeometryQueries = (enableGeometryQueries => function(physicsObject) { - enableGeometryQueries.call(this, physicsObject); - })(physics.enableGeometryQueries); - physics.disableGeometryQueries = (disableGeometryQueries => function(physicsObject) { - disableGeometryQueries.call(this, physicsObject); - })(physics.disableGeometryQueries); */ - - /* physics.setTransform = (setTransform => function(physicsObject) { - setTransform.call(this, physicsObject); - })(physics.setTransform); */ - /* physics.getPhysicsTransform = (getPhysicsTransform => function(physicsId) { - const transform = getPhysicsTransform.apply(this, arguments); - const {position, quaternion} = transform; - app.updateMatrixWorld(); - localMatrix - .compose(position, quaternion, localVector2.set(1, 1, 1)) - .premultiply(localMatrix2.copy(app.matrixWorld).invert()) - .decompose(position, quaternion, localVector2); - return transform; - })(physics.getPhysicsTransform); - physics.setPhysicsTransform = (setPhysicsTransform => function(physicsId, position, quaternion, scale) { - app.updateMatrixWorld(); - localMatrix - .compose(position, quaternion, scale) - .premultiply(app.matrixWorld) - .decompose(localVector, localQuaternion, localVector2); - position = localVector; - quaternion = localQuaternion; - return setPhysicsTransform.call(this, physicsId, position, quaternion, scale); - })(physics.setPhysicsTransform); */ - physics.removeGeometry = (removeGeometry => function(physicsObject) { + })(physicsScene.addCookedConvexGeometry); + physicsScene.removeGeometry = (removeGeometry => function(physicsObject) { removeGeometry.apply(this, arguments); const index = app.physicsObjects.indexOf(physicsObject); @@ -741,9 +729,9 @@ metaversefile.setApi({ app.remove(physicsObject); app.physicsObjects.splice(index); } - })(physics.removeGeometry); + })(physicsScene.removeGeometry); - return physics; + return physicsScene; } else { throw new Error('usePhysics cannot be called outside of render()'); } @@ -864,6 +852,7 @@ metaversefile.setApi({ matrixNeedsUpdate = true; } if (in_front) { + const localPlayer = getLocalPlayer(); app.position.copy(localPlayer.position).add(new THREE.Vector3(0, 0, -1).applyQuaternion(localPlayer.quaternion)); app.quaternion.copy(localPlayer.quaternion); app.scale.setScalar(1); @@ -968,74 +957,150 @@ export default () => { return world.appManager.removeTrackedApp.apply(world.appManager, arguments); }, getAppByInstanceId(instanceId) { - let result = world.appManager.getAppByInstanceId(instanceId) || - localPlayer.appManager.getAppByInstanceId(instanceId); + // local + const localPlayer = getLocalPlayer(); + let result = world.appManager.getAppByInstanceId(instanceId) || localPlayer.appManager.getAppByInstanceId(instanceId); if (result) { return result; - } else { - const remotePlayers = metaversefile.useRemotePlayers(); - for (const remotePlayer of remotePlayers) { - const remoteApp = remotePlayer.appManager.getAppByInstanceId(instanceId); - if (remoteApp) { - return remoteApp; - } + } + + // npc + for (const npc of npcManager.npcs) { + const npcApp = npc.appManager.getAppByInstanceId(instanceId); + if (npcApp) { + return npcApp; + } + } + + // remote + const remotePlayers = metaversefile.useRemotePlayers(); + for (const remotePlayer of remotePlayers) { + const remoteApp = remotePlayer.appManager.getAppByInstanceId(instanceId); + if (remoteApp) { + return remoteApp; } - return null; } + + // default + return null; }, getAppByPhysicsId(physicsId) { - let result = world.appManager.getAppByPhysicsId(physicsId) || - localPlayer.appManager.getAppByPhysicsId(physicsId); + // local player + const localPlayer = getLocalPlayer(); + let result = world.appManager.getAppByPhysicsId(physicsId); if (result) { return result; - } else { - const remotePlayers = metaversefile.useRemotePlayers(); - for (const remotePlayer of remotePlayers) { - const remoteApp = remotePlayer.appManager.getAppByPhysicsId(physicsId); - if (remoteApp) { - return remoteApp; + } + + // local app + result = localPlayer.appManager.getAppByPhysicsId(physicsId); + if (result) { + return result; + } + + // remote player + const remotePlayers = metaversefile.useRemotePlayers(); + for (const remotePlayer of remotePlayers) { + const remoteApp = remotePlayer.appManager.getAppByPhysicsId(physicsId); + if (remoteApp) { + return remoteApp; + } + } + + // mob + for (const mob of mobManager.mobs) { + const mobPhysicsObjects = mob.getPhysicsObjects(); + for (const mobPhysicsObject of mobPhysicsObjects) { + if (mobPhysicsObject.physicsId === physicsId) { + return mob.subApp; } } - return null; } + + // default + return null; }, getPhysicsObjectByPhysicsId(physicsId) { - let result = world.appManager.getPhysicsObjectByPhysicsId(physicsId) || - localPlayer.appManager.getPhysicsObjectByPhysicsId(physicsId); + // local player + const localPlayer = getLocalPlayer(); + let result = world.appManager.getPhysicsObjectByPhysicsId(physicsId); if (result) { return result; - } else { - const remotePlayers = metaversefile.useRemotePlayers(); - for (const remotePlayer of remotePlayers) { - const remotePhysicsObject = remotePlayer.appManager.getPhysicsObjectByPhysicsId(physicsId); - if (remotePhysicsObject) { - return remotePhysicsObject; + } + + // local app + result = localPlayer.appManager.getPhysicsObjectByPhysicsId(physicsId); + if (result) { + return result; + } + + // remote player + const remotePlayers = metaversefile.useRemotePlayers(); + for (const remotePlayer of remotePlayers) { + const remotePhysicsObject = remotePlayer.appManager.getPhysicsObjectByPhysicsId(physicsId); + if (remotePhysicsObject) { + return remotePhysicsObject; + } + } + + // mob + for (const mob of mobManager.mobs) { + const mobPhysicsObjects = mob.getPhysicsObjects(); + for (const mobPhysicsObject of mobPhysicsObjects) { + if (mobPhysicsObject.physicsId === physicsId) { + return mobPhysicsObject; } } - return null; } + + // default + return null; }, getPairByPhysicsId(physicsId) { - let result = world.appManager.getPairByPhysicsId(physicsId) || - localPlayer.appManager.getPairByPhysicsId(physicsId); + // local player + const localPlayer = getLocalPlayer(); + let result = world.appManager.getPairByPhysicsId(physicsId); if (result) { + // console.log('return 1'); return result; - } else { - const remotePlayers = metaversefile.useRemotePlayers(); - for (const remotePlayer of remotePlayers) { - const remotePair = remotePlayer.appManager.getPairByPhysicsId(physicsId); - if (remotePair) { - return remotePair; + } + + // local app + result = localPlayer.appManager.getPairByPhysicsId(physicsId); + if (result) { + // console.log('return 2'); + return result; + } + + // remote player + const remotePlayers = metaversefile.useRemotePlayers(); + for (const remotePlayer of remotePlayers) { + const remotePair = remotePlayer.appManager.getPairByPhysicsId(physicsId); + if (remotePair) { + // console.log('return 3'); + return remotePair; + } + } + + // mob + for (const mob of mobManager.mobs) { + const mobPhysicsObjects = mob.getPhysicsObjects(); + for (const mobPhysicsObject of mobPhysicsObjects) { + if (mobPhysicsObject.physicsId === physicsId) { + // console.log('return 4'); + return [mob.subApp, mobPhysicsObject]; } } - return null; } + + // default + return null; }, getAvatarHeight(obj) { return getHeight(obj); }, useInternals() { - if (!iframeContainer) { + /* if (!iframeContainer) { iframeContainer = document.getElementById('iframe-container'); iframeContainer.getFov = () => camera.projectionMatrix.elements[ 5 ] * (window.innerHeight / 2); @@ -1053,7 +1118,7 @@ export default () => { `; }; iframeContainer.updateSize(); - } + } */ const renderer = getRenderer(); return { @@ -1065,6 +1130,8 @@ export default () => { camera, sceneHighPriority, sceneLowPriority, + sceneLowerPriority, + sceneLowestPriority, iframeContainer, }; }, @@ -1080,6 +1147,12 @@ export default () => { useGeometries() { return geometries; }, + useInstancing() { + return instancing; + }, + useAtlasing() { + return atlasing; + }, useMaterials() { return materials; }, @@ -1095,6 +1168,21 @@ export default () => { async waitForSceneLoaded() { await universe.waitForSceneLoaded(); }, + useDomRenderer() { + return domRenderEngine; + }, + useDropManager() { + return dropManager; + }, + useHitManager() { + return hitManager; + }, + useProcGenManager() { + return procGenManager; + }, + useCardsManager() { + return cardsManager; + }, useDebug() { return debug; }, @@ -1268,7 +1356,7 @@ export default () => { onCreated: state => { // state = newState; // scene.add(state.scene); - console.log('got state', state); + // console.log('got state', state); const {scene: newRtfScene} = state; if (newRtfScene !== rtfScene) { if (rtfScene) { diff --git a/mob-manager.js b/mob-manager.js index 9c01221997..f6af5e14ae 100644 --- a/mob-manager.js +++ b/mob-manager.js @@ -1,6 +1,16 @@ import * as THREE from 'three'; -import {localPlayer} from './players.js'; +import * as SkeletonUtils from 'three/examples/jsm/utils/SkeletonUtils.js'; +import metaversefile from 'metaversefile'; +import {getLocalPlayer} from './players.js'; import physicsManager from './physics-manager.js'; +import hpManager from './hp-manager.js'; +// import {LodChunkTracker} from './lod.js'; +import {alea} from './procgen/procgen.js'; +import {createRelativeUrl} from './util.js'; +import dropManager from './drop-manager.js'; +import loaders from './loaders.js'; +import {InstancedBatchedMesh, InstancedGeometryAllocator} from './instancing.js'; +import {createTextureAtlas} from './atlasing.js'; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); @@ -8,32 +18,76 @@ const localVector3 = new THREE.Vector3(); const localVector4 = new THREE.Vector3(); const localVector5 = new THREE.Vector3(); const localVector6 = new THREE.Vector3(); +const localVector7 = new THREE.Vector3(); const localQuaternion = new THREE.Quaternion(); const localQuaternion2 = new THREE.Quaternion(); const localEuler = new THREE.Euler(); const localMatrix = new THREE.Matrix4(); const upVector = new THREE.Vector3(0, 1, 0); +const identityMatrix = new THREE.Matrix4(); +const chunkWorldSize = 16; +const minDistance = 1; +const hitDistance = 1.5; +const maxAnisotropy = 16; + +const maxInstancesPerDrawCall = 128; +const maxDrawCallsPerGeometry = 1; +const maxBonesPerInstance = 128; + +// window.THREE = THREE; const _zeroY = v => { v.y = 0; return v; }; +const _findMesh = o => { + let mesh = null; + const _recurse = o => { + if (o.isMesh) { + mesh = o; + } else if (o.children) { + for (const child of o.children) { + _recurse(child); + if (mesh) { + break; + } + } + } + }; + _recurse(o); + return mesh; +}; +const _findBone = o => { + let bone = null; + const _recurse = o => { + if (o.isBone) { + bone = o; + } else if (o.children) { + for (const child of o.children) { + _recurse(child); + if (bone) { + break; + } + } + } + }; + _recurse(o); + return bone; +}; function makeCharacterController(app, { radius, height, - position, + physicsOffset, }) { - // const radius = 0.2; const innerHeight = height - radius * 2; const contactOffset = 0.1 * height; const stepOffset = 0.1 * height; - app.matrixWorld.decompose(localVector, localQuaternion, localVector2); const characterPosition = localVector.setFromMatrixPosition(app.matrixWorld) .add( - localVector3.copy(position) + localVector3.copy(physicsOffset) .applyQuaternion(localQuaternion) ); @@ -44,28 +98,111 @@ function makeCharacterController(app, { stepOffset, characterPosition ); - // this.characterControllerObject = new THREE.Object3D(); return characterController; } class Mob { - constructor(app) { + constructor(app = null, srcUrl = '') { this.app = app; - + this.subApp = null; + + this.name = this.app.name + '@' + this.app.position.toArray().join(','); + this.updateFns = []; this.cleanupFns = []; - const mobComponent = app.getComponent('mob'); + if (srcUrl) { + (async () => { + await this.loadApp(srcUrl); + })(); + } + } + #getRng() { + return alea(this.name); + } + async loadApp(mobJsonUrl) { + let live = true; + this.cleanupFns.push(() => { + live = false; + }); + + const res = await fetch(mobJsonUrl); + if (!live) return; + const json = await res.json(); + if (!live) return; + + const mobComponent = json; if (mobComponent) { - const { + let { + mobUrl = '', radius = 0.3, height = 1, - position = [0, 0, 0], + physicsPosition = [0, 0, 0], + // physicsQuaternion = [0, 0, 0], + // modelPosition = [0, 0, 0], + modelQuaternion = [0, 0, 0, 1], + extraPhysics = [], } = mobComponent; - const offset = new THREE.Vector3().fromArray(position); + mobUrl = createRelativeUrl(mobUrl, mobJsonUrl); + const physicsOffset = new THREE.Vector3().fromArray(physicsPosition); + // const physicsRotation = new THREE.Quaternion().fromArray(physicsQuaternion); + // const modelOffset = new THREE.Vector3().fromArray(modelPosition); + const modelPrerotation = new THREE.Quaternion().fromArray(modelQuaternion); + + const subApp = await metaversefile.createAppAsync({ + start_url: mobUrl, + position: this.app.position, + quaternion: this.app.quaternion, + scale: this.app.scale, + }); + if (!live) return; + + const rng = this.#getRng(); + const numDrops = Math.floor(rng() * 3) + 1; + let lastHitTime = 0; + + const _attachToApp = () => { + this.app.add(subApp); + this.subApp = subApp; + + this.app.position.set(0, 0, 0); + this.app.quaternion.identity(); + this.app.scale.set(1, 1, 1); + this.app.updateMatrixWorld(); + + this.cleanupFns.push(() => { + this.app.clear(); + }); + }; + _attachToApp(); + + const _drop = () => { + const {moduleUrls} = metaversefile.useDefaultModules(); + const silkStartUrl = moduleUrls.silk; + for (let i = 0; i < numDrops; i++) { + dropManager.createDropApp({ + start_url: silkStartUrl, + position: subApp.position.clone() + .add(new THREE.Vector3(0, 0.7, 0)), + quaternion: subApp.quaternion, + scale: subApp.scale + }); + } + }; + const _bindHitTracker = () => { + const hitTracker = hpManager.makeHitTracker(); + hitTracker.bind(subApp); + subApp.dispatchEvent({type: 'hittrackeradded'}); + const die = () => { + this.app.destroy(); + _drop(); + }; + subApp.addEventListener('die', die, {once: true}); + }; + _bindHitTracker(); - const mesh = app; - const animations = app.glb.animations; + const mesh = subApp; + const animations = subApp.glb.animations; let {idleAnimation = ['idle'], aggroDistance, walkSpeed = 1} = mobComponent; if (idleAnimation) { if (!Array.isArray(idleAnimation)) { @@ -75,25 +212,62 @@ class Mob { idleAnimation = []; } - const characterController = makeCharacterController(app, { + const characterController = makeCharacterController(subApp, { radius, height, - position: offset, + physicsOffset, + }); + const _getPhysicsExtraPositionQuaternion = ( + spec, + localVector, + localQuaternion, + localVector2, + localMatrix + ) => { + const { + position, + quaternion, + } = spec; + + localVector.fromArray(position); + localQuaternion.fromArray(quaternion); + localVector2.set(1, 1, 1); + localMatrix.compose(localVector, localQuaternion, localVector2) + .premultiply(mesh.matrixWorld) + .decompose(localVector, localQuaternion, localVector2); + }; + const extraPhysicsObjects = extraPhysics.map(spec => { + const { + radius, + halfHeight, + } = spec; + _getPhysicsExtraPositionQuaternion(spec, localVector, localQuaternion, localVector2, localMatrix); + const physicsObject = physicsManager.addCapsuleGeometry(localVector, localQuaternion, radius, halfHeight); + physicsObject.spec = spec; + return physicsObject; + }); + const physicsObjects = [characterController].concat(extraPhysicsObjects); + subApp.getPhysicsObjects = () => physicsObjects; + + this.cleanupFns.push(() => { + physicsManager.destroyCharacterController(characterController); + for (const extraPhysicsObject of extraPhysicsObjects) { + physicsManager.removeGeometry(extraPhysicsObject); + } }); - const physicsObjects = [characterController]; - app.getPhysicsObjects = () => physicsObjects; + // rotation hacks + { + mesh.position.y = 0; + localEuler.setFromQuaternion(mesh.quaternion, 'YXZ'); + localEuler.x = 0; + localEuler.z = 0; + mesh.quaternion.setFromEuler(localEuler); + } + + // initialize animation const idleAnimationClips = idleAnimation.map(name => animations.find(a => a.name === name)).filter(a => !!a); if (idleAnimationClips.length > 0) { - // hacks - { - mesh.position.y = 0; - localEuler.setFromQuaternion(mesh.quaternion, 'YXZ'); - localEuler.x = 0; - localEuler.z = 0; - mesh.quaternion.setFromEuler(localEuler); - } - const mixer = new THREE.AnimationMixer(mesh); const idleActions = idleAnimationClips.map(idleAnimationClip => mixer.clipAction(idleAnimationClip)); for (const idleAction of idleActions) { @@ -106,18 +280,12 @@ class Mob { }); } + // set up frame loop let animation = null; + let velocity = new THREE.Vector3(0, 0, 0); this.updateFns.push((timestamp, timeDiff) => { - // console.log('update'); + const localPlayer = getLocalPlayer(); const timeDiffS = timeDiff / 1000; - // console.log('do update'); - - /* const _updatePhysics = () => { - const physicsIds = mesh.getPhysicsIds(); - for (const physicsId of physicsIds) { - physicsManager.setPhysicsTransform(physicsId, mesh.position, mesh.quaternion, mesh.scale); - } - }; */ if (animation) { mesh.position.add(localVector.copy(animation.velocity).multiplyScalar(timeDiff/1000)); @@ -132,66 +300,117 @@ class Mob { // _updatePhysics(); } else { - // const head = rigManager.localRig.model.isVrm ? rigManager.localRig.modelBones.Head : rigManager.localRig.model; - // const position = localVector.copy(localPlayer.position) - + // decompose world transform mesh.matrixWorld.decompose(localVector2, localQuaternion, localVector3); const meshPosition = localVector2; const meshQuaternion = localQuaternion; const meshScale = localVector3; - const meshPositionY0 = _zeroY(localVector4.copy(meshPosition)); - const characterPositionY0 = _zeroY(localVector5.copy(localPlayer.position)); - - const distance = meshPositionY0 - .distanceTo(characterPositionY0); - if (distance < aggroDistance) { - const minDistance = 1; - if (distance > minDistance) { - const direction = characterPositionY0.sub(meshPositionY0).normalize(); - const maxMoveDistance = distance - minDistance; - const moveDistance = Math.min(walkSpeed * timeDiff * 1000, maxMoveDistance); - const moveDelta = localVector6.copy(direction).multiplyScalar(moveDistance); - const minDist = 0; - - const flags = physicsManager.moveCharacterController( - characterController, - moveDelta, - minDist, - timeDiffS, - characterController.position - ); - // window.flags = flags; - - meshPosition.copy(characterController.position) - .sub(offset); - - const targetQuaternion = localQuaternion2 - .setFromRotationMatrix( - localMatrix - .lookAt( - meshPosition, - localPlayer.position, - upVector - ) + const meshPositionY0 = localVector4.copy(meshPosition); + const characterPositionY0 = localVector5.copy(localPlayer.position) + .add(localVector6.set(0, localPlayer.avatar ? -localPlayer.avatar.height : 0, 0)); + const distance = meshPositionY0.distanceTo(characterPositionY0); + + _zeroY(meshPositionY0); + _zeroY(characterPositionY0); + + const _handleAggroMovement = () => { + if (distance < aggroDistance) { + if (distance > minDistance) { + const movementDirection = _zeroY(characterPositionY0.sub(meshPositionY0)) + .normalize(); + const maxMoveDistance = distance - minDistance; + const moveDistance = Math.min(walkSpeed * timeDiff * 1000, maxMoveDistance); + const moveDelta = localVector6.copy(movementDirection) + .multiplyScalar(moveDistance) + .add(localVector7.copy(velocity).multiplyScalar(timeDiffS)); + const minDist = 0; + + const popExtraGeometry = (() => { + for (const extraPhysicsObject of extraPhysicsObjects) { + physicsManager.disableActor(extraPhysicsObject); + } + return () => { + for (const extraPhysicsObject of extraPhysicsObjects) { + physicsManager.enableActor(extraPhysicsObject); + } + }; + })(); + + const flags = physicsManager.moveCharacterController( + characterController, + moveDelta, + minDist, + timeDiffS, + characterController.position ); - localEuler.setFromQuaternion(targetQuaternion, 'YXZ'); - localEuler.x = 0; - localEuler.y += Math.PI; - localEuler.z = 0; - localQuaternion2.setFromEuler(localEuler); - meshQuaternion.slerp(targetQuaternion, 0.1); - - mesh.matrixWorld.compose(meshPosition, meshQuaternion, meshScale); - mesh.matrix.copy(mesh.matrixWorld); - if (app.parent) { - mesh.matrix.premultiply(localMatrix.copy(app.parent.matrixWorld).invert()); + popExtraGeometry(); + + // const collided = flags !== 0; + let grounded = !!(flags & 0x1); + if (!grounded) { + velocity.add( + localVector.copy(physicsManager.getGravity()) + .multiplyScalar(timeDiffS) + ); + } else { + velocity.set(0, 0, 0); + } + + meshPosition.copy(characterController.position) + .sub(physicsOffset); + + const targetQuaternion = localQuaternion2 + .setFromRotationMatrix( + localMatrix + .lookAt( + meshPosition, + localPlayer.position, + upVector + ) + ).premultiply(modelPrerotation); + localEuler.setFromQuaternion(targetQuaternion, 'YXZ'); + localEuler.x = 0; + localEuler.y += Math.PI; + localEuler.z = 0; + localQuaternion2.setFromEuler(localEuler); + meshQuaternion.slerp(targetQuaternion, 0.1); + + mesh.matrixWorld.compose(meshPosition, meshQuaternion, meshScale); + mesh.matrix.copy(mesh.matrixWorld); + if (app.parent) { + mesh.matrix.premultiply(localMatrix.copy(app.parent.matrixWorld).invert()); + } + mesh.matrix.decompose(mesh.position, mesh.quaternion, mesh.scale); } - mesh.matrix.decompose(mesh.position, mesh.quaternion, mesh.scale); - - // _updatePhysics(); } - } + }; + _handleAggroMovement(); + + const _handleAggroHit = () => { + if (distance < hitDistance) { + const timeSinceLastHit = timestamp - lastHitTime; + if (timeSinceLastHit > 1000) { + localPlayer.characterHitter.getHit(Math.random() * 10); + lastHitTime = timestamp; + } + } + }; + _handleAggroHit(); + + const _updateExtraPhysics = () => { + for (const extraPhysicsObject of extraPhysicsObjects) { + const {spec} = extraPhysicsObject; + + _getPhysicsExtraPositionQuaternion(spec, localVector, localQuaternion, localVector2, localMatrix); + + extraPhysicsObject.position.copy(localVector); + extraPhysicsObject.quaternion.copy(localQuaternion); + extraPhysicsObject.updateMatrixWorld(); + physicsManager.setTransform(extraPhysicsObject); + } + }; + _updateExtraPhysics(); } }); const hit = e => { @@ -205,12 +424,19 @@ class Mob { velocity: new THREE.Vector3(0, 6, -5).applyQuaternion(quaternion).multiplyScalar(hitSpeed), }; }; - app.addEventListener('hit', hit); + subApp.addEventListener('hit', hit); this.cleanupFns.push(() => { - app.removeEventListener('hit', hit); + subApp.removeEventListener('hit', hit); }); } } + getPhysicsObjects() { + if (this.subApp) { + return this.subApp.getPhysicsObjects(); + } else { + return []; + } + } update(timestamp, timeDiff) { for (const fn of this.updateFns) { fn(timestamp, timeDiff); @@ -223,19 +449,745 @@ class Mob { } } +class MobInstance { + constructor(skeleton, mixer) { + this.skeleton = skeleton; + this.mixer = mixer; + } +} + +class InstancedSkeleton extends THREE.Skeleton { + constructor(parent) { + super(); + + this.parent = parent; + + // bone texture + const boneTexture = this.parent.allocator.getTexture('boneTexture'); + this.boneMatrices = boneTexture.image.data; + this.boneTexture = boneTexture; + this.boneTextureSize = boneTexture.image.width; + } + update() { + const boneMatrices = this.boneMatrices; + const boneTexture = this.parent.allocator.getTexture('boneTexture'); + + for (let drawCallIndex = 0; drawCallIndex < this.parent.drawCalls.length; drawCallIndex++) { + const drawCall = this.parent.drawCalls[drawCallIndex]; + + if (drawCall) { + // const {geometryIndex} = drawCall; + + for (let instanceIndex = 0; instanceIndex < drawCall.instances.length; instanceIndex++) { + const mobInstance = drawCall.instances[instanceIndex]; + const {skeleton} = mobInstance; + + // geometry -> instance (skeleton) -> bone -> matrix + const dstOffset = drawCall.freeListEntry.start * maxDrawCallsPerGeometry * maxInstancesPerDrawCall * maxBonesPerInstance * 16 + + instanceIndex * maxBonesPerInstance * 16; + + const bones = skeleton.bones; + const boneInverses = skeleton.boneInverses; + + // flatten bone matrices to array + + for ( let i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + const matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; + + localMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + localMatrix.toArray( boneMatrices, dstOffset + i * 16 ); + + } + } + } + } + + boneTexture.needsUpdate = true; + } +} + +class MobBatchedMesh extends InstancedBatchedMesh { + constructor({ + procGenInstance, + mobData, + }) { + const { + glbs, + skinnedMeshes: meshes, + } = mobData; + const { + // atlas, + // atlasImages, + atlasTextures, + geometries, + } = createTextureAtlas(meshes, { + attributes: ['position', 'normal', 'uv', 'skinIndex', 'skinWeight'], + textures: ['map', 'normalMap', 'roughnessMap', 'metalnessMap'], + }); + + // allocator + + const allocator = new InstancedGeometryAllocator(geometries, [ + { + name: 'p', + Type: Float32Array, + itemSize: 3, + }, + { + name: 'q', + Type: Float32Array, + itemSize: 4, + }, + { + name: 'boneTexture', + Type: Float32Array, + itemSize: maxBonesPerInstance * 16, + }, + ], { + maxInstancesPerDrawCall, + maxDrawCallsPerGeometry, + }); + const {geometry, textures: attributeTextures} = allocator; + for (const k in attributeTextures) { + const texture = attributeTextures[k]; + texture.anisotropy = maxAnisotropy; + } + + // material + + const material = new THREE.MeshStandardMaterial({ + map: atlasTextures.map, + normalMap: atlasTextures.normalMap, + roughnessMap: atlasTextures.roughnessMap, + metalnessMap: atlasTextures.metalnessMap, + // side: THREE.DoubleSide, + // transparent: true, + // alphaTest: 0.5, + onBeforeCompile: (shader) => { + // console.log('on before compile', shader.fragmentShader); + + shader.uniforms.pTexture = { + value: attributeTextures.p, + needsUpdate: true, + }; + shader.uniforms.qTexture = { + value: attributeTextures.q, + needsUpdate: true, + }; + + // skin vertex + + window.shader = shader; + window.vertexShader = shader.vertexShader; + + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +// #undef USE_SKINNING + +#ifdef USE_SKINNING +uniform mat4 bindMatrix; +uniform mat4 bindMatrixInverse; +uniform highp sampler2D boneTexture; +uniform int boneTextureSize; +mat4 getBoneMatrix( const in float base, const in float i ) { + float j = base + i * 4.0; + float x = mod( j, float( boneTextureSize ) ); + float y = floor( j / float( boneTextureSize ) ); + float dx = 1.0 / float( boneTextureSize ); + float dy = 1.0 / float( boneTextureSize ); + y = dy * ( y + 0.5 ); + vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); + vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); + vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); + vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); + mat4 bone = mat4( v1, v2, v3, v4 ); + return bone; +} +#endif + `); + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +int boneTextureInstanceIndex = gl_DrawID * ${maxInstancesPerDrawCall} * ${maxBonesPerInstance} + + gl_InstanceID * ${maxBonesPerInstance}; +float boneIndexOffset = float(boneTextureInstanceIndex) * 4.; + +#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( boneIndexOffset, skinIndex.x ); + mat4 boneMatY = getBoneMatrix( boneIndexOffset, skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( boneIndexOffset, skinIndex.z ); + mat4 boneMatW = getBoneMatrix( boneIndexOffset, skinIndex.w ); + + /* mat4 boneMatX = mat4(1.); + mat4 boneMatY = mat4(1.); + mat4 boneMatZ = mat4(1.); + mat4 boneMatW = mat4(1.); */ +#endif + `); + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif + `); + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif + `); + + // vertex shader + + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +#undef USE_INSTANCING + +#include + +uniform sampler2D pTexture; +uniform sampler2D qTexture; + +vec3 rotate_vertex_position(vec3 position, vec4 q) { + return position + 2.0 * cross(q.xyz, cross(q.xyz, position) + q.w * position); +} + `); + shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +int instanceIndex = gl_DrawID * ${maxInstancesPerDrawCall} + gl_InstanceID; +const float width = ${attributeTextures.p.image.width.toFixed(8)}; +const float height = ${attributeTextures.p.image.height.toFixed(8)}; +float x = mod(float(instanceIndex), width); +float y = floor(float(instanceIndex) / width); +vec2 pUv = (vec2(x, y) + 0.5) / vec2(width, height); +vec3 p = texture2D(pTexture, pUv).xyz; +vec4 q = texture2D(qTexture, pUv).xyzw; + +// instance offset position +{ + transformed = rotate_vertex_position(transformed, q); + transformed += p; +} + +vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition; + `); + /* shader.vertexShader = shader.vertexShader.replace(`#include `, `\ +#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif + `); */ + + // fragment shader + + shader.fragmentShader = shader.fragmentShader.replace(`#include `, `\ +#undef USE_INSTANCING + +#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) + varying vec2 vUv; +#endif + `); + + return shader; + }, + }); + + // mesh + + super(geometry, material, allocator); + this.frustumCulled = false; + + this.procGenInstance = procGenInstance; + + { + this.isSkinnedMesh = true; + + this.bindMode = 'attached'; + this.bindMatrix = new THREE.Matrix4(); + this.bindMatrixInverse = new THREE.Matrix4(); + + /* const bones = []; + const boneInverses = []; + for (let i = 0; i < meshes.length; i++) { + const mesh = meshes[i]; + if (bones.length > maxBonesPerInstance) { + throw new Error('too many bones in base mesh skeleton: ' + bones.length); + } + bones.push.apply(bones, mesh.skeleton.bones); + boneInverses.push.apply(boneInverses, mesh.skeleton.boneInverses); + } */ + + // this.bindMode = 'attached'; + // this.bindMatrix = this.matrixWorld; + // this.bindMatrixInverse = this.bindMatrix.clone().invert(); + + this.skeleton = new InstancedSkeleton(this); + + // window.skeleton = this.skeleton; // XXX + } + + // window.shader = shader; + // window.vertexShader = shader.vertexShader; + // window.fragmentShader = shader.fragmentShader; + // window.geometry = geometry; + + this.glbs = glbs; + this.meshes = meshes; + // this.rootBones = rootBones; + this.drawCalls = Array(meshes.length).fill(null); + + this.animationMixers = []; + + /* this.meshes = lodMeshes; + this.shapeAddresses = shapeAddresses; + this.physics = physics; + this.physicsObjects = []; */ + } + async addChunk(chunk, { + signal, + } = {}) { + if (chunk.y === 0) { + let live = true; + signal.addEventListener('abort', e => { + live = false; + }); + + const _getMobData = async chunk => { + const lod = 1; + return await this.procGenInstance.dcWorkerManager.createMobSplat(chunk.x * chunkWorldSize, chunk.z * chunkWorldSize, lod); + }; + const mobData = await _getMobData(chunk); + // mobData.instances.length > 0 && console.log('got mob data', mobData, chunk); // XXX + if (!live) return; + + const _getDrawCall = geometryIndex => { + // console.log('alloc geometry', geometryIndex); + let drawCall = this.drawCalls[geometryIndex]; + if (!drawCall) { + drawCall = this.allocator.allocDrawCall(geometryIndex); + drawCall.instances = []; + + this.drawCalls[geometryIndex] = drawCall; + } + return drawCall; + }; + const _renderMobGeometry = (drawCall, ps, qs, index) => { + // locals + + const instanceIndex = drawCall.getInstanceCount(); + const pTexture = drawCall.getTexture('p'); + const pOffset = drawCall.getTextureOffset('p'); + const qTexture = drawCall.getTexture('q'); + const qOffset = drawCall.getTextureOffset('q'); + // const boneTextureOffsetTexture = drawCall.getTexture('boneTextureOffset'); + // const boneTextureOffsetOffset = drawCall.getTextureOffset('boneTextureOffset'); + + // position + + const px = ps[index * 3]; + const py = ps[index * 3 + 1]; + const pz = ps[index * 3 + 2]; + pTexture.image.data[pOffset + instanceIndex * 3] = px; + pTexture.image.data[pOffset + instanceIndex * 3 + 1] = py; + pTexture.image.data[pOffset + instanceIndex * 3 + 2] = pz; + + drawCall.updateTexture('p', pOffset / 3 + instanceIndex, 1); + + // quaternion + + const qx = qs[index * 4]; + const qy = qs[index * 4 + 1]; + const qz = qs[index * 4 + 2]; + const qw = qs[index * 4 + 3]; + qTexture.image.data[qOffset + instanceIndex * 4] = qx; + qTexture.image.data[qOffset + instanceIndex * 4 + 1] = qy; + qTexture.image.data[qOffset + instanceIndex * 4 + 2] = qz; + qTexture.image.data[qOffset + instanceIndex * 4 + 3] = qw; + + drawCall.updateTexture('q', qOffset / 4 + instanceIndex, 1); + + // bone texture offset + + // XXX allocate space in the bone texture via instanced skeleton + // each bone requires a mat4, i.e 4 vec4 pixels per bone + // console.log('free list', this.skeleton.boneTextureFreeList); + /* console.log('alloc', { + boneTextureSize: this.skeleton.boneTextureSize, + boneTextureOffsetSize: this.skeleton.boneTextureSize * this.skeleton.boneTextureSize, + allocSize: mesh.skeleton.bones.length * 4, + }); */ + // const boneTextureEntry = this.skeleton.boneTextureFreeList.alloc(mesh.skeleton.bones.length * 4); + // boneTextureOffsetTexture.image.data[boneTextureOffsetOffset] = boneTextureEntry.start; + + // drawCall.updateTexture('boneTextureOffset', boneTextureOffsetOffset + instanceIndex, 1); + + + + + // mob instance + + const glb = this.glbs[drawCall.geometryIndex]; + const glb2Scene = SkeletonUtils.clone(glb.scene); + const mesh2 = _findMesh(glb2Scene); + const rootBone2 = _findBone(glb2Scene); + const skeleton2 = mesh2.skeleton; + if (skeleton2.bones.length > maxBonesPerInstance) { + throw new Error('too many bones in base mesh skeleton: ' + bones.length); + } + /* if (skeleton.bones.some(b => { + return mesh.skeleton.includes(b); + })) { + debugger; + } */ + + // animations + let mixer = null; + /* for (const glb of glbs)*/ { + // const glb = this.glbs[drawCall.geometryIndex]; + // const rootBone = this.rootBones[drawCall.geometryIndex]; + // const rootBone = skeleton2.bones[0]; + const {animations} = glb; + // console.log('got animations', animations); + // const idleAnimation = animations.find(a => a.name === 'idle'); + const clip = animations[0]; + if (clip) { + // console.log('new mixer', rootBone); + // try { + mixer = new THREE.AnimationMixer(rootBone2); + // console.log('new action', clip); + const action = mixer.clipAction(clip); + action.play(); + mixer.updateMatrixWorld = () => { + glb2Scene.updateMatrixWorld(); + + // window.glb2Scene = glb2Scene; // XXX + }; + + this.animationMixers.push(mixer); + /* } catch (err) { + debugger; + } */ + } + } + + const instance = new MobInstance(skeleton2, mixer); + drawCall.instances.push(instance); + + // physics + // const shapeAddress = this.#getShapeAddress(drawCall.geometryIndex); + // const physicsObject = this.#addPhysicsShape(shapeAddress, px, py, pz, qx, qy, qz, qw); + // this.physicsObjects.push(physicsObject); + + // bookkeeping + + drawCall.incrementInstanceCount(); + + // return + + return instance; + }; + const _unrenderMobGeometry = (drawCall, mobInstance) => { + const instanceIndex = drawCall.instances.indexOf(mobInstance); + if (drawCall.instances.length >= 2) { + // locals + + const lastInstanceIndex = drawCall.getInstanceCount() - 1; + const oldInstance = drawCall.instances[instanceIndex]; + + const pTexture = drawCall.getTexture('p'); + const pOffset = drawCall.getTextureOffset('p'); + const qTexture = drawCall.getTexture('q'); + const qOffset = drawCall.getTextureOffset('q'); + const boneTextureOffsetTexture = drawCall.getTexture('boneTexture'); + const boneTextureOffsetOffset = drawCall.getTextureOffset('boneTexture'); + + // delete by replacing current instance with last instance + + pTexture.image.data[pOffset + instanceIndex * 3] = pTexture.image.data[pOffset + lastInstanceIndex * 3]; + pTexture.image.data[pOffset + instanceIndex * 3 + 1] = pTexture.image.data[pOffset + lastInstanceIndex * 3 + 1]; + pTexture.image.data[pOffset + instanceIndex * 3 + 2] = pTexture.image.data[pOffset + lastInstanceIndex * 3 + 2]; + + qTexture.image.data[qOffset + instanceIndex * 4] = qTexture.image.data[qOffset + lastInstanceIndex * 4]; + qTexture.image.data[qOffset + instanceIndex * 4 + 1] = qTexture.image.data[qOffset + lastInstanceIndex * 4 + 1]; + qTexture.image.data[qOffset + instanceIndex * 4 + 2] = qTexture.image.data[qOffset + lastInstanceIndex * 4 + 2]; + qTexture.image.data[qOffset + instanceIndex * 4 + 3] = qTexture.image.data[qOffset + lastInstanceIndex * 4 + 3]; + + // copy the last instance bone matrix (a block of maxBonesPerInstance bones) to the current location + boneTextureOffsetTexture.image.data.set(boneTextureOffsetTexture.image.data.subarray( + boneTextureOffsetOffset + lastInstanceIndex * maxBonesPerInstance * 16, + boneTextureOffsetOffset + (lastInstanceIndex + 1) * maxBonesPerInstance * 16 + ), boneTextureOffsetOffset + instanceIndex * maxBonesPerInstance * 16); + + drawCall.updateTexture('p', pOffset / 3 + instanceIndex, 1); + drawCall.updateTexture('q', qOffset / 4 + instanceIndex, 1); + drawCall.updateTexture('boneTexture', boneTextureOffsetOffset + instanceIndex, 1); + + // animations + + const mixerIndex = oldInstance.mixer !== null ? this.animationMixers.indexOf(oldInstance.mixer) : -1; + if (mixerIndex !== -1) { + this.animationMixers.splice(mixerIndex, 1); + } + + // this.skeleton.boneTextureFreeList.free(oldInstance.boneTextureEntry); + // this.skeleton.removeSkeleton(oldInstance.skeleton); + + // mob instance + + drawCall.instances[instanceIndex] = drawCall.instances[drawCall.instances.length - 1]; + drawCall.instances.length--; + } else { + drawCall.instances.length = 0; + } + + // bookkeeping + + drawCall.decrementInstanceCount(); + } + + for (let i = 0; i < mobData.instances.length; i++) { + const geometryNoise = mobData.instances[i]; + // console.log('got noise', geometryNoise); + const geometryIndex = Math.floor(geometryNoise * this.meshes.length); + + const drawCall = _getDrawCall(geometryIndex); + const mobInstance = _renderMobGeometry(drawCall, mobData.ps, mobData.qs, i); + // window.drawCall = drawCall; + + signal.addEventListener('abort', e => { + _unrenderMobGeometry(drawCall, mobInstance); + }); + } + } + } + update(timestamp, timeDiff) { + // console.log('update', timestamp, timeDiff); + if (this.animationMixers.length > 0) { + const deltaSeconds = timeDiff / 1000; + for (const mixer of this.animationMixers) { + mixer.update(deltaSeconds); + mixer.updateMatrixWorld(); + } + } + this.skeleton.update(); + } +} + +class MobsCompiledData { + constructor({ + appUrls = [], + } = {}) { + this.glbs = null; + this.skinnedMeshes = null; + + this.loadPromise = (async () => { + // lod mob modules + const glbs = await Promise.all(appUrls.map(async u => { + const m = await metaversefile.import(u); + + // load glb + const glb = await (async () => { + const mobJsonUrl = m.srcUrl; + const res = await fetch(mobJsonUrl); + const j = await res.json(); + + return await new Promise((accept, reject) => { + const mobUrl = createRelativeUrl(j.mobUrl, mobJsonUrl); + loaders.gltfLoader.load(mobUrl, accept, function onProgress() {}, reject); + }); + })(); + return glb; + })); + const skinnedMeshSpecs = glbs.map(glb => { + const mesh = _findMesh(glb.scene); + + return { + glb, + mesh, + }; + }); + const skinnedMeshes = skinnedMeshSpecs.map(spec => spec.mesh); + + this.glbs = glbs; + this.skinnedMeshes = skinnedMeshes; + })(); + } + waitForLoad() { + return this.loadPromise; + } +} + +class MobGenerator { + constructor({ + procGenInstance, + mobData, + }) { + // this.procGenInstance = procGenInstance; + // this.mobData = mobData; + + this.object = new THREE.Object3D(); + this.object.name = 'mob-chunks'; + + // make batched mesh + const mobBatchedMesh = new MobBatchedMesh({ + procGenInstance, + mobData, + }); + this.object.add(mobBatchedMesh); + this.mobBatchedMesh = mobBatchedMesh; + } + getMobModuleNames() { + return Object.keys(this.mobModules).sort(); + } + generateChunk(chunk) { + const abortController = new AbortController(); + const {signal} = abortController; + + (async () => { + await this.mobBatchedMesh.addChunk(chunk, { + signal, + }); + })(); + + chunk.binding = { + abortController, + }; + } + disposeChunk(chunk) { + const {abortController} = chunk.binding; + abortController.abort(); + chunk.binding = null; + } + update(timestamp, timeDiff) { + this.mobBatchedMesh.update(timestamp, timeDiff); + } + destroy() { + // nothing; the owning lod tracker disposes of our contents + } +} + +class Mobber { + constructor({ + procGenInstance, + mobData, + }) { + this.procGenInstance = procGenInstance; + this.mobData = mobData; + + const generator = new MobGenerator({ + procGenInstance, + mobData, + }); + this.generator = generator; + /* this.tracker = new LodChunkTracker(this.generator, { + chunkWorldSize, + }); */ + const numLods = 1; + const tracker = procGenInstance.getChunkTracker({ + numLods, + // trackY: true, + // relod: true, + }); + const chunkadd = e => { + const {chunk, waitUntil} = e.data; + waitUntil(generator.generateChunk(chunk)); + }; + tracker.addEventListener('chunkadd', chunkadd); + const chunkremove = e => { + const {chunk} = e.data; + generator.disposeChunk(chunk); + }; + tracker.addEventListener('chunkremove', chunkremove); + this.tracker = tracker; + } + async waitForUpdate() { + await new Promise((accept, reject) => { + this.tracker.addEventListener('update', () => { + accept(); + }); + }); + } + /* async addMobModule(srcUrl) { + const m = await metaversefile.import(srcUrl); + this.mobModules[srcUrl] = m; + } + compile() { + this.compiled = true; + } */ + getChunks() { + return this.generator.object; + } + update(timestamp, timeDiff) { + const localPlayer = getLocalPlayer(); + !this.procGenInstance.range && this.tracker.update(localPlayer.position); + this.generator.update(timestamp, timeDiff); + } + destroy() { + this.tracker.destroy(); + this.generator.destroy(); + } +} + class MobManager { constructor() { + this.mobbers = []; this.mobs = []; } - async addMob(app) { - if (app.appType !== 'glb') { - throw new Error('only glb apps can be mobs'); + createMobber({ + procGenInstance, + mobData, + }) { + const mobber = new Mobber({ + procGenInstance, + mobData, + }); + this.mobbers.push(mobber); + return mobber; + } + destroyMobber(mobber) { + mobber.destroy(); + this.mobbers.splice(this.mobbers.indexOf(mobber), 1); + } + async loadData(appUrls) { + const mobData = new MobsCompiledData({ + appUrls, + }); + await mobData.waitForLoad(); + return mobData; + } + addMobApp(app, srcUrl) { + if (app.appType !== 'mob') { + console.warn('not a mob app', app); + throw new Error('only mob apps can be mobs'); + } + if (!srcUrl) { + console.warn('no srcUrl', app); + throw new Error('srcUrl is required'); } - const mob = new Mob(app); + const mob = new Mob(app, srcUrl); this.mobs.push(mob); } - removeMob(app) { + removeMobApp(app) { const index = this.mobs.findIndex(mob => mob.app === app); if (index !== -1) { const mob = this.mobs[index]; @@ -243,7 +1195,21 @@ class MobManager { this.mobs.splice(index, 1); } } + getPhysicsObjects() { + let results = []; + for (const mob of this.mobs) { + const physicsObjects = mob.getPhysicsObjects(); + results.push(physicsObjects); + } + results = results.flat(); + return results; + } update(timestamp, timeDiff) { + // mobber is updated by the app that created it + /* for (const mobber of this.mobbers) { + mobber.update(timestamp, timeDiff); + } */ + for (const mob of this.mobs) { mob.update(timestamp, timeDiff); } diff --git a/music-manager.js b/music-manager.js index 34f1ca1206..134d443637 100644 --- a/music-manager.js +++ b/music-manager.js @@ -6,9 +6,9 @@ import WSRTC from 'wsrtc/wsrtc.js'; import {defaultMusicVolume} from './constants.js'; class Music { - constructor({name, urls}, audioContext) { + constructor({name, urls, url}, audioContext) { this.name = name; - this.urls = urls; + this.urls = urls ?? [url]; this.audioContext = audioContext; this.audioBuffers = null; this.audioBufferIndex = 0; // Math.floor(Math.random() * this.urls.length); @@ -101,30 +101,34 @@ class MusicManager { .then(() => {}); this.currentMusic = null; } - getMusic(name) { - const music = this.musics.find(music => music.name); - /* if (music) { - await music.waitForLoad(); - } */ - return music || null; + async fetchMusic(url, name = url) { + const music = new Music({ + name, + url, + }, this.audioContext); + await music.waitForLoad(); + return music; } - playCurrentMusic(name, { + playCurrentMusic(newMusic, { repeat = false, } = {}) { this.stopCurrentMusic(); + this.currentMusic = newMusic.play({ + repeat, + }); + + const localCurrentMusic = this.currentMusic; + this.currentMusic.source.addEventListener('ended', () => { + if (this.currentMusic === localCurrentMusic) { + this.currentMusic = null; + } + }); + } + playCurrentMusicName(name, opts) { const newMusic = this.musics.find(music => music.name === name); if (newMusic) { - this.currentMusic = newMusic.play({ - repeat, - }); - - const localCurrentMusic = this.currentMusic; - this.currentMusic.source.addEventListener('ended', () => { - if (this.currentMusic === localCurrentMusic) { - this.currentMusic = null; - } - }); + this.playCurrentMusic(newMusic, opts); } } stopCurrentMusic() { diff --git a/npc-manager.js b/npc-manager.js index 55eee6b4ad..91f3078dc1 100644 --- a/npc-manager.js +++ b/npc-manager.js @@ -1,4 +1,17 @@ -import {NpcPlayer} from './character-controller.js'; +import * as THREE from 'three'; +import Avatar from './avatars/avatars.js'; +import physicsManager from './physics-manager.js'; +import {LocalPlayer} from './character-controller.js'; +import {getLocalPlayer} from './players.js'; +import * as voices from './voices.js'; +import {world} from './world.js'; +import {chatManager} from './chat-manager.js'; +import {createRelativeUrl} from './util.js'; + +const localVector = new THREE.Vector3(); + +const physicsScene = physicsManager.getScene(); +const cancelFnMap = new WeakMap(); class NpcManager extends EventTarget { constructor() { @@ -7,15 +20,20 @@ class NpcManager extends EventTarget { this.npcs = []; } - createNpc({ + async createNpcAsync({ name, - avatarApp, + npcApp, + // avatarApp, + avatarUrl, position, quaternion, scale, detached, }) { - const npcPlayer = new NpcPlayer(); + const npcPlayer = new LocalPlayer({ + npc: true, + detached, + }); npcPlayer.name = name; let matrixNeedsUpdate = false; @@ -35,15 +53,15 @@ class NpcManager extends EventTarget { npcPlayer.updateMatrixWorld(); } - npcPlayer.setAvatarApp(avatarApp); + npcPlayer.npcApp = npcApp; // for lore AI + if (npcApp) { + npcApp.npcPlayer = npcPlayer; // for character select + } + + await npcPlayer.setAvatarUrl(avatarUrl); if (!detached) { this.npcs.push(npcPlayer); - this.dispatchEvent(new MessageEvent('npcadd', { - data: { - player: npcPlayer, - }, - })); } return npcPlayer; @@ -55,11 +73,253 @@ class NpcManager extends EventTarget { const removeIndex = this.npcs.indexOf(npcPlayer); if (removeIndex !== -1) { this.npcs.splice(removeIndex, 1); - this.dispatchEvent(new MessageEvent('npcremove', { - data: { - player: npcPlayer, - }, - })); + } + } + + async addNpcApp(app, srcUrl) { + const localPlayer = getLocalPlayer(); + + let live = true; + let json = null; + let npcPlayer = null; + let character = null; + const cancelFns = [ + () => { + live = false; + + if (npcPlayer) { + npcManager.destroyNpc(npcPlayer); + } + if (character) { + world.loreAIScene.removeCharacter(character); + } + }, + ]; + cancelFnMap.set(app, () => { + for (const cancelFn of cancelFns) { + cancelFn(); + } + }); + + const mode = app.getComponent('mode') ?? 'attached'; + + const animations = Avatar.getAnimations(); + const hurtAnimation = animations.find(a => a.isHurt); + const hurtAnimationDuration = hurtAnimation.duration; + + app.getPhysicsObjects = () => npcPlayer ? [npcPlayer.characterController] : []; + app.getLoreSpec = () => { + const name = json.name ?? 'Anon'; + const description = json.bio ?? ''; + return { + name, + description, + } + }; + + // events + let targetSpec = null; + if (mode === 'attached') { + const _listenEvents = () => { + const hittrackeradd = e => { + app.hitTracker.addEventListener('hit', e => { + if (!npcPlayer.hasAction('hurt')) { + const newAction = { + type: 'hurt', + animation: 'pain_back', + }; + npcPlayer.addAction(newAction); + + setTimeout(() => { + npcPlayer.removeAction('hurt'); + }, hurtAnimationDuration * 1000); + } + }); + }; + app.addEventListener('hittrackeradded', hittrackeradd); + + const activate = () => { + if (targetSpec?.object !== localPlayer) { + targetSpec = { + type: 'follow', + object: localPlayer, + }; + } else { + targetSpec = null; + } + }; + app.addEventListener('activate', activate); + + const slowdownFactor = 0.4; + const walkSpeed = 0.075 * slowdownFactor; + const runSpeed = walkSpeed * 8; + const speedDistanceRate = 0.07; + const frame = e => { + if (npcPlayer && physicsScene.getPhysicsEnabled()) { + const {timestamp, timeDiff} = e.data; + + if (targetSpec) { + const target = targetSpec.object; + const v = localVector.setFromMatrixPosition(target.matrixWorld) + .sub(npcPlayer.position); + v.y = 0; + const distance = v.length(); + if (targetSpec.type === 'moveto' && distance < 2) { + targetSpec = null; + } else { + const speed = Math.min(Math.max(walkSpeed + ((distance - 1.5) * speedDistanceRate), 0), runSpeed); + v.normalize() + .multiplyScalar(speed * timeDiff); + npcPlayer.characterPhysics.applyWasd(v); + } + } + + npcPlayer.eyeballTarget.copy(localPlayer.position); + npcPlayer.eyeballTargetEnabled = true; + + /* if (isNaN(npcPlayer.position.x)) { + debugger; + } */ + npcPlayer.updatePhysics(timestamp, timeDiff); + /* if (isNaN(npcPlayer.position.x)) { + debugger; + } */ + npcPlayer.updateAvatar(timestamp, timeDiff); + /* if (isNaN(npcPlayer.position.x)) { + debugger; + } */ + } + }; + world.appManager.addEventListener('frame', frame); + + cancelFns.push(() => { + app.removeEventListener('hittrackeradded', hittrackeradd); + app.removeEventListener('activate', activate); + world.appManager.removeEventListener('frame', frame); + }); + }; + _listenEvents(); + } + + // load + if (mode === 'attached') { + // load json + const res = await fetch(srcUrl); + if (!live) return; + json = await res.json(); + if (!live) return; + + // npc pameters + let avatarUrl = json.avatarUrl; + avatarUrl = createRelativeUrl(avatarUrl, srcUrl); + const npcName = json.name ?? 'Anon'; + const npcVoiceName = json.voice ?? 'Shining armor'; + const npcBio = json.bio ?? 'A generic avatar.'; + const npcDetached = !!json.detached; + let npcWear = json.wear ?? []; + if (!Array.isArray(npcWear)) { + npcWear = [npcWear]; + } + + // ai scene + const _addToAiScene = () => { + character = world.loreAIScene.addCharacter({ + name: npcName, + bio: npcBio, + }); + character.addEventListener('say', e => { + console.log('got character say', e.data); + const {message, emote, action, object, target} = e.data; + chatManager.addPlayerMessage(npcPlayer, message); + if (emote === 'supersaiyan' || action === 'supersaiyan' || /supersaiyan/i.test(object) || /supersaiyan/i.test(target)) { + const newSssAction = { + type: 'sss', + }; + npcPlayer.addAction(newSssAction); + } else if (action === 'follow' || (object === 'none' && target === localPlayer.name)) { // follow player + targetSpec = { + type: 'follow', + object: localPlayer, + }; + } else if (action === 'stop') { // stop + targetSpec = null; + } else if (action === 'moveto' || (object !== 'none' && target === 'none')) { // move to object + console.log('move to object', object); + } else if (action === 'moveto' || (object === 'none' && target !== 'none')) { // move to player + targetSpec = { + type: 'moveto', + object: localPlayer, + }; + } else if (['pickup', 'grab', 'take', 'get'].includes(action)) { // pick up object + console.log('pickup', action, object, target); + } else if (['use', 'activate'].includes(action)) { // use object + console.log('use', action, object, target); + } + }); + }; + _addToAiScene(); + + // create npc + const newNpcPlayer = await npcManager.createNpcAsync({ + name: npcName, + npcApp: app, + // avatarApp: vrmApp, + avatarUrl, + position: app.position.clone() + .add(new THREE.Vector3(0, 1, 0)), + quaternion: app.quaternion, + scale: app.scale, + detached: npcDetached, + }); + + // attach to scene + const _addPlayerAvatarToApp = () => { + app.position.set(0, 0, 0); + app.quaternion.identity(); + app.scale.set(1, 1, 1); + + // app.add(vrmApp); + app.updateMatrixWorld(); + }; + _addPlayerAvatarToApp(); + + // voice endpoint setup + const _setVoiceEndpoint = () => { + const voice = voices.voiceEndpoints.find(v => v.name === npcVoiceName); + if (voice) { + newNpcPlayer.setVoiceEndpoint(voice.drive_id); + } else { + console.warn('unknown voice name', npcVoiceName, voices.voiceEndpoints); + } + }; + _setVoiceEndpoint(); + + // wearables + const _updateWearables = async () => { + const wearablePromises = npcWear.map(wear => (async () => { + const {start_url} = wear; + const app = await newNpcPlayer.appManager.addTrackedApp(start_url); + /* const app = await metaversefile.createAppAsync({ + start_url, + }); */ + // if (!live) return; + + newNpcPlayer.wear(app); + })()); + await wearablePromises; + }; + await _updateWearables(); + if (!live) return; + + // latch + npcPlayer = newNpcPlayer; + } + } + removeNpcApp(app) { + const cancelFn = cancelFnMap.get(app); + if (cancelFn) { + cancelFnMap.delete(app); + cancelFn(); } } } diff --git a/object-screenshotter.js b/object-screenshotter.js index 6f3d02df6b..eed6c375b1 100644 --- a/object-screenshotter.js +++ b/object-screenshotter.js @@ -25,7 +25,6 @@ export const screenshotObjectUrl = async ({ start_url, width = 300, height = 300, - canvas }) => { const app = await metaversefile.createAppAsync({ start_url, @@ -34,7 +33,6 @@ export const screenshotObjectUrl = async ({ app, width, height, - canvas }); }; @@ -62,28 +60,15 @@ const sideCamera = new THREE.PerspectiveCamera(); }); */ export const screenshotObjectApp = async ({ app, - width, - height, + width = 300, + height = 300, clearColor = 0xFFFFFF, clearAlpha = 1, - canvas } = {}) => { // const {devicePixelRatio: pixelRatio} = window; // console.log('create object sprite', app, size, numFrames); - if (canvas && (width || height)) { - - throw( 'screenshotObjectApp method should receive only "canvas" or "width"/"height" arguments and not both.' ); - - } - - if (!canvas && (!width || !height)) { - - throw( 'screenshotObjectApp method should receive at least "canvas" or "width"/"height" arguments.' ); - - } - const renderer = getRenderer(); const size = renderer.getSize(localVector2D); const pixelRatio = renderer.getPixelRatio(); @@ -92,20 +77,9 @@ export const screenshotObjectApp = async ({ // const numFramesPerRow = Math.ceil(Math.sqrt(numFramesPow2)); // const frameSize = size / numFramesPerRow; - const writeCanvas = canvas ?? document.createElement('canvas'); - - if (!canvas) { - - writeCanvas.width = width ?? 80; - writeCanvas.height = height ?? 80; - - } else { - - width = writeCanvas.width; - height = writeCanvas.height; - - } - + const writeCanvas = document.createElement('canvas'); + writeCanvas.width = width; + writeCanvas.height = height; const writeCtx = writeCanvas.getContext('2d'); { @@ -184,4 +158,4 @@ export const screenshotObjectApp = async ({ } return writeCanvas; -}; +}; \ No newline at end of file diff --git a/offscreen-engine.js b/offscreen-engine.js index cde4fe92eb..c31caeb580 100644 --- a/offscreen-engine.js +++ b/offscreen-engine.js @@ -3,49 +3,55 @@ import {inappPreviewHost} from './constants.js'; class OffscreenEngine { constructor() { - const id = getRandomString(); + this.id = getRandomString(); + this.frame = null; this.port = null; - const iframe = document.createElement('iframe'); - iframe.width = '0px'; - iframe.height = '0px'; - iframe.style.cssText = `\ - border: 0; - `; - - this.iframe = iframe; - this.live = true; - - const setport = new Promise((resolve, reject) => { - const message = (e) => { - if (e.data?.method === 'engineReady' && e.data.id === id && e.data.port instanceof MessagePort){ - window.removeEventListener('message', message); - resolve(e.data.port); - } - }; - window.addEventListener('message', message); - }); - - const loading = new Promise((resolve, reject) => { - iframe.onload = () => { - resolve(); - iframe.onload = null; - iframe.onerror = null; - }; - iframe.onerror = reject; - }); - - this.loadPromise = Promise.all([loading, setport]); - - iframe.src = `${inappPreviewHost}/engine.html#id=${id}`; - document.body.appendChild(iframe); + this.loadPromise = null; } - waitForLoad() { - return this.loadPromise.then(([, port]) => { - this.port = port; - this.port.start(); - return port; - }); + async waitForLoad() { + if (!this.loadPromise) { + this.loadPromise = (async () => { + const iframe = document.createElement('iframe'); + iframe.width = '0px'; + iframe.height = '0px'; + iframe.style.cssText = `\ + border: 0; + `; + + // this.live = true; + + const messageChannel = new MessageChannel(); + const {port1, port2} = messageChannel; + + const iframeLoadPromise = new Promise((resolve, reject) => { + iframe.onload = () => { + resolve(); + iframe.onload = null; + iframe.onerror = null; + }; + iframe.onerror = reject; + }); + + iframe.allow = 'cross-origin-isolated'; + iframe.src = `${inappPreviewHost}/engine.html#id=${this.id}`; + document.body.appendChild(iframe); + this.iframe = iframe; + + await iframeLoadPromise; + + iframe.contentWindow.postMessage({ + method: 'initializeEngine', + port: port2, + }, '*', [port2]); + + return port1; + })(); + } + const port = await this.loadPromise; + port.start(); + this.port = port; + return port; } createFunction(o) { if (!Array.isArray(o)) { @@ -85,6 +91,7 @@ export default _default_export_;`; if (!error) { accept(result); } else { + console.warn(error); reject(error); } this.port.removeEventListener('message', message); @@ -95,20 +102,34 @@ export default _default_export_;`; })(); const self = this; - async function callRemoteFn() { - const args = Array.from(arguments); - + async function callRemoteFn(args = [], { + signal = null, + } = {}) { await loadPromise; const id = getRandomString(); - self.port.postMessage({ - method: 'callHandler', - id, - handlerId, - args, - }); - + const _postMessage = () => { + try { + self.port.postMessage({ + method: 'callHandler', + id, + handlerId, + args, + }); + } catch(err) { + console.warn('post message error', err); + throw err; + } + }; + _postMessage(); const result = await new Promise((accept, reject) => { + const cleanups = []; + const _cleanup = () => { + for (const cleanupFn of cleanups) { + cleanupFn(); + } + }; + const message = e => { const {method, id: localId} = e.data; if (method === 'response' && localId === id) { @@ -118,17 +139,33 @@ export default _default_export_;`; } else { reject(error); } - self.port.removeEventListener('message', message); + _cleanup(); } }; self.port.addEventListener('message', message); + cleanups.push(() => { + self.port.removeEventListener('message', message); + }); + + if (signal) { + const abort = () => { + // XXX we can post the abort to the worker process to make it stop faster + reject(new Error('abort')); + _cleanup(); + }; + signal.addEventListener('abort', abort); + cleanups.push(() => { + signal.removeEventListener('abort', abort); + }); + } }); return result; } return callRemoteFn; } destroy() { - this.live = false; + // this.live = false; + if (this.iframe) { this.iframe.parentElement.removeChild(this.iframe); this.iframe = null; diff --git a/overrides.js b/overrides.js new file mode 100644 index 0000000000..a45de1c8ca --- /dev/null +++ b/overrides.js @@ -0,0 +1,26 @@ +class Override extends EventTarget { + constructor(value) { + super(); + this.value = value; + } + get() { + return this.value; + } + set(value) { + if (value !== this.value) { + this.value = value; + this.dispatchEvent(new MessageEvent('change', { + data: { + value, + }, + })); + } + } +} +const overrides = { + overrideVoicePack: new Override(null), + overrideVoiceEndpoint: new Override(null), + userVoicePack: new Override(null), + userVoiceEndpoint: new Override(null), +} +export default overrides; \ No newline at end of file diff --git a/overworld.js b/overworld.js index 3e8a04341c..90e444d4ba 100644 --- a/overworld.js +++ b/overworld.js @@ -1,6 +1,6 @@ import * as THREE from 'three'; // import metaversefile from 'metaversefile'; -import {localPlayer} from './players.js'; +import {getLocalPlayer} from './players.js'; import {world} from './world.js'; import {scene} from './renderer.js'; import {ScenePreviewer} from './scene-previewer.js'; @@ -63,6 +63,7 @@ class OverworldApp { } const loadOverworld = async () => { + const localPlayer = getLocalPlayer(); const chunks = [ { name: 'street', diff --git a/package-lock.json b/package-lock.json index cad6ad1c40..5ca691b567 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,29 +9,20 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@3id/connect": "^0.2.5", - "@babel/preset-react": "^7.14.5", - "@ceramicnetwork/3id-did-resolver": "^1.4.3", - "@ceramicnetwork/http-client": "^1.3.0", - "@ceramicstudio/idx": "^0.12.2", - "@glazed/devtools": "^0.1.3", + "@babel/preset-react": "^7.17.12", "@pixiv/three-vrm": "./packages/three-vrm", - "@react-three/fiber": "^7.0.6", - "@shaderfrog/glsl-parser": "^0.1.20", + "@react-three/fiber": "^7.0.29", + "@shaderfrog/glsl-parser": "^0.1.23", "classnames": "^2.3.1", - "dids": "^2.4.0", "encoding-japanese": "^1.0.30", - "ethers": "^5.6.4", - "express": "^4.17.1", - "forever": "^4.0.1", + "ethers": "^5.6.8", + "express": "^4.18.1", + "forever": "^4.0.3", "gpt-3-encoder": "^1.1.3", "json-6": "^1.1.4", - "key-did-provider-ed25519": "^1.1.0", - "key-did-resolver": "^1.4.0", - "maxrects-packer": "^2.7.2", + "maxrects-packer": "^2.7.3", "metaversefile": "./packages/totum", - "node-fetch": "^3.1.0", - "openai-api": "^1.2.6", + "openai-api": "^1.3.1", "react": "17.0.2", "react-dom": "17.0.2", "smile2emoji": "^1.1.6", @@ -44,68 +35,33 @@ "zjs": "./packages/zjs" }, "devDependencies": { - "@vitejs/plugin-react-refresh": "^1.3.1", - "eslint": "^7.8.1", + "@vitejs/plugin-react-refresh": "^1.3.6", + "eslint": "^7.32.0", "eslint-config-semistandard": "^15.0.1", "eslint-config-standard": "^14.1.1", - "eslint-plugin-import": "^2.22.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.1", - "spectorjs": "^0.9.27", - "vite": "^2.5.1" - } - }, - "node_modules/@3id/common": { - "version": "0.2.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "errors-utils": "^0.1.0", - "uint8arrays": "^2.1.5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@3id/connect": { - "version": "0.2.5", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@3id/common": "^0.2.1", - "@3id/connect-display": "^0.2.1", - "@3id/window-auth-provider": "^0.2.5", - "@ceramicnetwork/blockchain-utils-linking": "^1.2.0", - "postmsg-rpc": "^2.4.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" - } - }, - "node_modules/@3id/connect-display": { - "version": "0.2.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/rpc-window": "^0.1.1", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "rxjs": "^6.6.6" - }, - "engines": { - "node": ">=12" + "eslint-plugin-promise": "^4.3.1", + "eslint-plugin-standard": "^4.1.0", + "vite": "^2.9.12" } }, - "node_modules/@3id/window-auth-provider": { - "version": "0.2.5", - "license": "(Apache-2.0 OR MIT)", + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dependencies": { - "@ceramicnetwork/rpc-window": "^0.1.1", - "caip": "^0.9.2" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dependencies": { "@babel/highlight": "^7.16.7" }, @@ -114,31 +70,33 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.16.8", - "license": "MIT", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.15.8", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dependencies": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -149,9 +107,10 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.16.5", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, - "license": "MIT", "dependencies": { "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", @@ -166,20 +125,35 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.8", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dependencies": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dependencies": { "@babel/types": "^7.16.7" }, @@ -189,8 +163,9 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-explode-assignable-expression": "^7.16.7", "@babel/types": "^7.16.7" @@ -200,12 +175,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -216,14 +192,15 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7" @@ -236,12 +213,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" }, "engines": { "node": ">=6.9.0" @@ -251,9 +229,10 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -269,19 +248,18 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" - }, + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -290,22 +268,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "license": "MIT", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -313,7 +281,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dependencies": { "@babel/types": "^7.16.7" }, @@ -322,11 +291,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.7", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -334,7 +304,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dependencies": { "@babel/types": "^7.16.7" }, @@ -343,17 +314,18 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "license": "MIT", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" }, "engines": { "node": ">=6.9.0" @@ -361,8 +333,9 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -371,16 +344,18 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "license": "MIT", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-wrap-function": "^7.16.8", @@ -391,25 +366,27 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" @@ -417,8 +394,9 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.16.0" }, @@ -428,7 +406,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dependencies": { "@babel/types": "^7.16.7" }, @@ -438,22 +417,25 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.16.7", "@babel/template": "^7.16.7", @@ -465,20 +447,22 @@ } }, "node_modules/@babel/helpers": { - "version": "7.15.4", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.7", - "license": "MIT", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -489,8 +473,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.8", - "license": "MIT", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", "bin": { "parser": "bin/babel-parser.js" }, @@ -499,11 +484,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -513,13 +499,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/plugin-proposal-optional-chaining": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -529,11 +516,12 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -545,12 +533,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -560,12 +549,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -577,8 +567,9 @@ }, "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -591,11 +582,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -606,11 +598,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -621,11 +614,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -636,11 +630,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -652,8 +647,9 @@ }, "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -666,15 +662,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -685,8 +682,9 @@ }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -699,11 +697,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -715,12 +714,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -730,13 +730,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -747,12 +748,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=4" @@ -763,8 +765,9 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -774,8 +777,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -785,8 +789,9 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -799,8 +804,9 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -810,8 +816,9 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -819,10 +826,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -831,10 +854,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "license": "MIT", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -845,8 +869,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -856,8 +881,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -867,8 +893,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -878,8 +905,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -889,8 +917,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -900,8 +929,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -911,8 +941,9 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -925,8 +956,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -938,11 +970,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -952,12 +985,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { @@ -969,8 +1003,9 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -982,11 +1017,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -996,16 +1032,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, @@ -1017,11 +1054,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1031,11 +1069,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1046,8 +1085,9 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1060,11 +1100,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1075,8 +1116,9 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1089,11 +1131,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1104,8 +1147,9 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-function-name": "^7.16.7", @@ -1119,11 +1163,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1134,8 +1179,9 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1147,12 +1193,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1163,13 +1210,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1180,13 +1228,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1198,12 +1247,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1213,11 +1263,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1227,11 +1279,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1242,8 +1295,9 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7" @@ -1256,11 +1310,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1271,8 +1326,9 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1284,10 +1340,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.15.1", - "license": "MIT", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1297,14 +1354,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.14.9", - "license": "MIT", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", + "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.9" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/types": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1314,10 +1372,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "license": "MIT", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.14.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1327,11 +1386,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.14.9", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.17.12.tgz", + "integrity": "sha512-7S9G2B44EnYOx74mue02t1uD8ckWZ/ee6Uz/qfdzc35uWHX5NgRy9i+iJSb2LFRgMd+QV9zNcStQaazzzZ3n3Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1341,11 +1401,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1355,11 +1416,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "license": "MIT", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz", + "integrity": "sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1369,11 +1431,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", "dev": true, - "license": "MIT", "dependencies": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" }, "engines": { "node": ">=6.9.0" @@ -1383,11 +1447,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1398,8 +1463,9 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1411,11 +1477,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { @@ -1427,8 +1494,9 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1440,11 +1508,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1454,11 +1523,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -1469,8 +1539,9 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.16.7" }, @@ -1483,8 +1554,9 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", "@babel/helper-plugin-utils": "^7.16.7" @@ -1497,36 +1569,38 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.8", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1536,44 +1610,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, "engines": { @@ -1585,8 +1659,9 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -1599,15 +1674,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.14.5", - "license": "MIT", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.17.12.tgz", + "integrity": "sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.17.12", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1617,8 +1693,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.4", - "license": "MIT", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1628,7 +1705,8 @@ }, "node_modules/@babel/template": { "version": "7.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -1639,17 +1717,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.16.8", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.8", - "@babel/types": "^7.16.8", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1658,8 +1737,9 @@ } }, "node_modules/@babel/types": { - "version": "7.16.8", - "license": "MIT", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -1668,193 +1748,29 @@ "node": ">=6.9.0" } }, - "node_modules/@ceramicnetwork/3id-did-resolver": { - "version": "1.4.4", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/stream-tile": "^1.3.2", - "@ceramicnetwork/streamid": "^1.3.0", - "cids": "~1.1.6", - "cross-fetch": "^3.1.4", - "lru_map": "^0.4.1", - "uint8arrays": "^2.0.5" - } - }, - "node_modules/@ceramicnetwork/blockchain-utils-linking": { - "version": "1.2.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@stablelib/sha256": "^1.0.0", - "caip": "~0.9.2", - "uint8arrays": "^2.0.5" - } - }, - "node_modules/@ceramicnetwork/common": { - "version": "1.6.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/streamid": "^1.3.0", - "@overnightjs/logger": "^1.2.0", - "cids": "~1.1.6", - "cross-fetch": "^3.1.4", - "flat": "^5.0.2", - "lodash.clonedeep": "^4.5.0", - "logfmt": "^1.3.2", - "rxjs": "^7.0.0", - "uint8arrays": "^2.0.5" - } - }, - "node_modules/@ceramicnetwork/common/node_modules/rxjs": { - "version": "7.4.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/@ceramicnetwork/common/node_modules/tslib": { - "version": "2.1.0", - "license": "0BSD" - }, - "node_modules/@ceramicnetwork/http-client": { - "version": "1.4.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/stream-caip10-link": "^1.1.6", - "@ceramicnetwork/stream-tile": "^1.3.2", - "@ceramicnetwork/streamid": "^1.3.0", - "query-string": "7.0.1", - "rxjs": "^7.0.0" - } - }, - "node_modules/@ceramicnetwork/http-client/node_modules/rxjs": { - "version": "7.4.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/@ceramicnetwork/http-client/node_modules/tslib": { - "version": "2.1.0", - "license": "0BSD" - }, - "node_modules/@ceramicnetwork/rpc-postmessage": { - "version": "0.4.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/rpc-transport": "^0.3.0", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "@ceramicnetwork/transport-subject": "^0.3.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ceramicnetwork/rpc-transport": { - "version": "0.3.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/transport-subject": "^0.3.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ceramicnetwork/rpc-window": { - "version": "0.1.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/rpc-postmessage": "^0.4.0", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "rpc-utils": "^0.4.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ceramicnetwork/stream-caip10-link": { - "version": "1.1.6", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/streamid": "^1.3.0", - "caip": "~0.9.2" - } - }, - "node_modules/@ceramicnetwork/stream-tile": { - "version": "1.3.2", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/streamid": "^1.3.0", - "@stablelib/random": "^1.0.0", - "fast-json-patch": "^2.2.1", - "uint8arrays": "^2.0.5" - } - }, - "node_modules/@ceramicnetwork/streamid": { - "version": "1.3.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "cids": "~1.1.6", - "ipld-dag-cbor": "^0.17.0", - "multibase": "~4.0.2", - "typescript-memoize": "^1.0.0-alpha.4", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" - } - }, - "node_modules/@ceramicnetwork/transport-postmessage": { - "version": "0.3.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/transport-subject": "^0.3.0", - "rxjs": "^6.6.6" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ceramicnetwork/transport-subject": { - "version": "0.3.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "rxjs": "^6.6.6" - }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "engines": { - "node": ">=12" + "node": ">=0.1.90" } }, - "node_modules/@ceramicstudio/idx": { - "version": "0.12.2", - "license": "(Apache-2.0 OR MIT)", + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "dependencies": { - "@ceramicnetwork/stream-caip10-link": "^1.0.0", - "@ceramicnetwork/stream-tile": "^1.0.0", - "@ceramicstudio/idx-constants": "^1.0.0", - "caip": "^0.9.2", - "cross-fetch": "^3.1.4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ceramicstudio/idx-constants": { - "version": "1.0.0", - "license": "(Apache-2.0 OR MIT)", - "engines": { - "node": ">=12" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -1872,8 +1788,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1886,9 +1803,10 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.11.0", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1901,13 +1819,14 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/@ethersproject/abi": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.1.tgz", - "integrity": "sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.3.tgz", + "integrity": "sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw==", "funding": [ { "type": "individual", @@ -1919,21 +1838,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz", - "integrity": "sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", "funding": [ { "type": "individual", @@ -1945,19 +1864,19 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", + "@ethersproject/networks": "^5.6.3", "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0" + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", - "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", "funding": [ { "type": "individual", @@ -1969,17 +1888,17 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0" } }, "node_modules/@ethersproject/address": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz", - "integrity": "sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", "funding": [ { "type": "individual", @@ -1991,17 +1910,17 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.0" + "@ethersproject/rlp": "^5.6.1" } }, "node_modules/@ethersproject/base64": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz", - "integrity": "sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", "funding": [ { "type": "individual", @@ -2013,13 +1932,13 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0" + "@ethersproject/bytes": "^5.6.1" } }, "node_modules/@ethersproject/basex": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz", - "integrity": "sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", "funding": [ { "type": "individual", @@ -2031,14 +1950,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/properties": "^5.6.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", - "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", "funding": [ { "type": "individual", @@ -2050,9 +1969,9 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "bn.js": "^4.11.9" + "bn.js": "^5.2.1" } }, "node_modules/@ethersproject/bytes": { @@ -2074,9 +1993,9 @@ } }, "node_modules/@ethersproject/constants": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz", - "integrity": "sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", "funding": [ { "type": "individual", @@ -2088,13 +2007,13 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0" + "@ethersproject/bignumber": "^5.6.2" } }, "node_modules/@ethersproject/contracts": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", - "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", "funding": [ { "type": "individual", @@ -2106,22 +2025,22 @@ } ], "dependencies": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0" + "@ethersproject/transactions": "^5.6.2" } }, "node_modules/@ethersproject/hash": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz", - "integrity": "sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", "funding": [ { "type": "individual", @@ -2133,20 +2052,20 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@ethersproject/hdnode": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", - "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", "funding": [ { "type": "individual", @@ -2158,24 +2077,24 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", "@ethersproject/properties": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "node_modules/@ethersproject/json-wallets": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz", - "integrity": "sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", "funding": [ { "type": "individual", @@ -2187,25 +2106,25 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "node_modules/@ethersproject/keccak256": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz", - "integrity": "sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", "funding": [ { "type": "individual", @@ -2217,7 +2136,7 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "js-sha3": "0.8.0" } }, @@ -2237,9 +2156,9 @@ ] }, "node_modules/@ethersproject/networks": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.2.tgz", - "integrity": "sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz", + "integrity": "sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ==", "funding": [ { "type": "individual", @@ -2255,9 +2174,9 @@ } }, "node_modules/@ethersproject/pbkdf2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz", - "integrity": "sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", "funding": [ { "type": "individual", @@ -2269,8 +2188,8 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/sha2": "^5.6.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" } }, "node_modules/@ethersproject/properties": { @@ -2292,9 +2211,9 @@ } }, "node_modules/@ethersproject/providers": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.4.tgz", - "integrity": "sha512-WAdknnaZ52hpHV3qPiJmKx401BLpup47h36Axxgre9zT+doa/4GC/Ne48ICPxTm0BqndpToHjpLP1ZnaxyE+vw==", + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", "funding": [ { "type": "individual", @@ -2306,51 +2225,32 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", + "@ethersproject/networks": "^5.6.3", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", "bech32": "1.1.4", "ws": "7.4.6" } }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@ethersproject/random": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz", - "integrity": "sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", "funding": [ { "type": "individual", @@ -2362,14 +2262,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz", - "integrity": "sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", "funding": [ { "type": "individual", @@ -2381,14 +2281,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/sha2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz", - "integrity": "sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", "funding": [ { "type": "individual", @@ -2400,15 +2300,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.0.tgz", - "integrity": "sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", "funding": [ { "type": "individual", @@ -2420,18 +2320,18 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "bn.js": "^4.11.9", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/solidity": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz", - "integrity": "sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", "funding": [ { "type": "individual", @@ -2443,18 +2343,18 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@ethersproject/strings": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz", - "integrity": "sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", "funding": [ { "type": "individual", @@ -2466,15 +2366,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", - "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", "funding": [ { "type": "individual", @@ -2486,21 +2386,21 @@ } ], "dependencies": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0" + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" } }, "node_modules/@ethersproject/units": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz", - "integrity": "sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", "funding": [ { "type": "individual", @@ -2512,15 +2412,15 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/wallet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz", - "integrity": "sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", "funding": [ { "type": "individual", @@ -2532,27 +2432,27 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/json-wallets": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "node_modules/@ethersproject/web": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz", - "integrity": "sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", "funding": [ { "type": "individual", @@ -2564,17 +2464,17 @@ } ], "dependencies": { - "@ethersproject/base64": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@ethersproject/wordlists": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz", - "integrity": "sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", "funding": [ { "type": "individual", @@ -2586,79 +2486,109 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@gar/promisify": { - "version": "1.1.2", - "dev": true, - "license": "MIT" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, - "node_modules/@glazed/constants": { - "version": "0.1.1", - "license": "(Apache-2.0 OR MIT)", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=14.14" + "node": ">=10.10.0" } }, - "node_modules/@glazed/devtools": { - "version": "0.1.3", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@ceramicnetwork/common": "^1.3.0", - "@ceramicnetwork/stream-tile": "^1.2.0", - "@ceramicnetwork/streamid": "^1.1.2", - "@glazed/constants": "^0.1.1", - "@glazed/did-datastore-model": "^0.1.1", - "ajv": "^8.6.2", - "ajv-formats": "^2.1.1", - "change-case": "^4.1.2", - "cids": "^1.1.8", - "fast-deep-equal": "^3.1.3", - "uint8arrays": "^3.0.0" + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { - "node": ">=14.14" + "node": ">=6.0.0" } }, - "node_modules/@glazed/devtools/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@glazed/did-datastore-model": { - "version": "0.1.1", - "license": "(Apache-2.0 OR MIT)", + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", "engines": { - "node": ">=14.14" + "node": ">=6.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.0.0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } }, "node_modules/@mark.probst/typescript-json-schema": { "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@mark.probst/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz", + "integrity": "sha512-OoD+5D7Mka80FIcmvPyuAKV7g5Of5S04R74S4DTAG8pr9REDWySUh9pOloro7SNFwWt/+2f90wyP+DtGHykVfg==", "dev": true, "dependencies": { "glob": "~7.1.3", @@ -2670,268 +2600,51 @@ "typescript-json-schema": "bin/typescript-json-schema" } }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/ansi-regex": { - "version": "3.0.0", + "node_modules/@mark.probst/typescript-json-schema/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "license": "MIT", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=4" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/cliui": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/get-caller-file": { - "version": "1.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/glob": { - "version": "7.1.7", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/string-width": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/wrap-ansi": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/yargs": { - "version": "12.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "node_modules/@mark.probst/typescript-json-schema/node_modules/yargs-parser": { - "version": "11.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@mark.probst/unicode-properties": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mark.probst/unicode-properties/-/unicode-properties-1.1.0.tgz", + "integrity": "sha512-7AQsO0hMmpqDledV7AhBuSYqYPFsKP9PaltMecX9nlnsyFxqtsqUg9/pvB2L/jxvskrDrNkdKYz2KTbQznCtng==", "dev": true, - "license": "MIT", "dependencies": { "brfs": "^1.4.0", "unicode-trie": "^0.3.0" } }, - "node_modules/@multiformats/base-x": { - "version": "4.0.1", - "license": "MIT" - }, "node_modules/@npmcli/fs": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2944,8 +2657,9 @@ }, "node_modules/@npmcli/git": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^1.3.2", "lru-cache": "^6.0.0", @@ -2959,8 +2673,9 @@ }, "node_modules/@npmcli/git/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -2969,9 +2684,10 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2984,8 +2700,9 @@ }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -2999,8 +2716,9 @@ }, "node_modules/@npmcli/move-file": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -3011,8 +2729,9 @@ }, "node_modules/@npmcli/move-file/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3022,21 +2741,24 @@ }, "node_modules/@npmcli/node-gyp": { "version": "1.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true }, "node_modules/@npmcli/promise-spawn": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", "dev": true, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" } }, "node_modules/@npmcli/run-script": { "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", @@ -3044,27 +2766,21 @@ "read-package-json-fast": "^2.0.1" } }, - "node_modules/@overnightjs/logger": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "colors": "^1.3.3", - "util": "^0.11.1" - } - }, "node_modules/@pixiv/three-vrm": { "resolved": "packages/three-vrm", "link": true }, "node_modules/@react-three/fiber": { - "version": "7.0.17", - "license": "MIT", + "version": "7.0.29", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-7.0.29.tgz", + "integrity": "sha512-TE+/iaGrjluGsPwN2RkLXxKD4ak+unsh0YKIFKGcuAOW9jYcAyMGKAtgFO8MS7/HNCrZZQQSg23sJ8IPgtdkDg==", "dependencies": { "@babel/runtime": "^7.13.10", + "@types/react-reconciler": "^0.26.2", "react-merge-refs": "^1.1.0", "react-reconciler": "^0.26.2", "react-three-fiber": "0.0.0-deprecated", - "react-use-measure": "^2.0.4", + "react-use-measure": "^2.1.1", "resize-observer-polyfill": "^1.5.1", "scheduler": "^0.20.2", "use-asset": "^1.0.4", @@ -3074,7 +2790,7 @@ "peerDependencies": { "react": ">=17.0", "react-dom": ">=17.0", - "three": ">=0.126" + "three": ">=0.133" }, "peerDependenciesMeta": { "react-dom": { @@ -3083,9 +2799,10 @@ } }, "node_modules/@rollup/plugin-babel": { - "version": "5.3.0", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -3106,8 +2823,9 @@ }, "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -3122,18 +2840,20 @@ }, "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.1.3", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" }, @@ -3146,8 +2866,9 @@ }, "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -3162,13 +2883,15 @@ }, "node_modules/@rollup/plugin-node-resolve/node_modules/estree-walker": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true }, "node_modules/@rollup/pluginutils": { - "version": "4.1.1", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dev": true, - "license": "MIT", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -3178,191 +2901,100 @@ } }, "node_modules/@shaderfrog/glsl-parser": { - "version": "0.1.20", - "license": "ISC", + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@shaderfrog/glsl-parser/-/glsl-parser-0.1.23.tgz", + "integrity": "sha512-VPXA4Wm1FYtwq+Nu3yCpyFTuI40Vy3rAulLBXfVxpHH6ads4NGd9OCwufSEY6nasfCV2jZjguLWRN9zA2J1dqQ==", "engines": { "node": ">=16" } }, - "node_modules/@stablelib/aead": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/@stablelib/binary": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/int": "^1.0.1" + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" } }, - "node_modules/@stablelib/bytes": { - "version": "1.0.1", - "license": "MIT" + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, - "node_modules/@stablelib/chacha": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/chacha20poly1305": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/aead": "^1.0.1", - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/poly1305": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/constant-time": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/@stablelib/ed25519": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "@stablelib/random": "^1.0.1", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/hash": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/@stablelib/int": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/@stablelib/keyagreement": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/bytes": "^1.0.1" - } - }, - "node_modules/@stablelib/poly1305": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/random": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/sha256": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, - "node_modules/@stablelib/sha512": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/node": { + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz", + "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==", + "dev": true }, - "node_modules/@stablelib/wipe": { - "version": "1.0.1", - "license": "MIT" + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, - "node_modules/@stablelib/x25519": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "node_modules/@stablelib/xchacha20": { - "version": "1.0.1", - "license": "MIT", + "node_modules/@types/react": { + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.12.tgz", + "integrity": "sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg==", "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/wipe": "^1.0.1" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/@stablelib/xchacha20poly1305": { - "version": "1.0.1", - "license": "MIT", + "node_modules/@types/react-reconciler": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", "dependencies": { - "@stablelib/aead": "^1.0.1", - "@stablelib/chacha20poly1305": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1", - "@stablelib/xchacha20": "^1.0.1" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" + "@types/react": "*" } }, - "node_modules/@types/estree": { - "version": "0.0.39", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "17.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, "node_modules/@types/three": { "version": "0.132.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.132.2.tgz", + "integrity": "sha512-DpaP0sObpHvKX8zdfCqyTK526N8lQ86Qstp6MnQJ3jNYie7Bv9AMRTALuoIH8dgVZ62z9twuNvEarWHXOZwmSw==", + "dev": true }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" }, "node_modules/@vitejs/plugin-react-refresh": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz", + "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==", + "deprecated": "This package has been deprecated in favor of @vitejs/plugin-react", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.14.8", "@babel/plugin-transform-react-jsx-self": "^7.14.5", @@ -3381,15 +3013,17 @@ }, "node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/accepts": { - "version": "1.3.7", - "license": "MIT", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -3397,8 +3031,9 @@ }, "node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3408,8 +3043,9 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3417,12 +3053,13 @@ "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -3431,9 +3068,10 @@ } }, "node_modules/agentkeepalive": { - "version": "4.2.0", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -3443,10 +3081,20 @@ "node": ">= 8.0.0" } }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3456,8 +3104,10 @@ } }, "node_modules/ajv": { - "version": "8.6.3", - "license": "MIT", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3469,44 +3119,34 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/alea": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/alea/-/alea-1.0.1.tgz", + "integrity": "sha512-QU+wv+ziDXaMxRdsQg/aH7sVfWdhKps5YP97IIwFkHCsbDZA3k87JXoZ5/iuemf4ntytzIWeScrRpae8+lDrXA==" }, "node_modules/ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "license": "MIT", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -3519,8 +3159,9 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3530,14 +3171,16 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -3547,7 +3190,8 @@ }, "node_modules/anymatch": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dependencies": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -3555,7 +3199,8 @@ }, "node_modules/anymatch/node_modules/normalize-path": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -3565,22 +3210,31 @@ }, "node_modules/aproba": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3593,45 +3247,51 @@ }, "node_modules/are-we-there-yet/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/arr-diff": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "engines": { "node": ">=0.10.0" } }, "node_modules/arr-flatten": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "engines": { "node": ">=0.10.0" } }, "node_modules/arr-union": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/array-back": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, - "license": "MIT", "dependencies": { "typical": "^2.6.1" }, @@ -3641,16 +3301,18 @@ }, "node_modules/array-flatten": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-includes": { - "version": "3.1.4", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" }, @@ -3663,8 +3325,9 @@ }, "node_modules/array-union": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, - "license": "MIT", "dependencies": { "array-uniq": "^1.0.1" }, @@ -3674,27 +3337,31 @@ }, "node_modules/array-uniq": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-unique": { "version": "0.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/array.prototype.flat": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -3705,51 +3372,59 @@ }, "node_modules/asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/assign-symbols": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "engines": { "node": ">=0.10.0" } }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "1.5.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" }, "node_modules/async-each": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, "node_modules/asynckit": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/atob": { "version": "2.1.2", - "license": "(MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "bin": { "atob": "bin/atob.js" }, @@ -3757,41 +3432,57 @@ "node": ">= 4.5.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true }, "node_modules/axios": { "version": "0.21.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, - "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", + "@babel/helper-define-polyfill-provider": "^0.3.1", "semver": "^6.1.1" }, "peerDependencies": { @@ -3799,23 +3490,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.0", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.20.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0" + "@babel/helper-define-polyfill-provider": "^0.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3823,11 +3516,13 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base": { "version": "0.11.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -3843,7 +3538,8 @@ }, "node_modules/base/node_modules/define-property": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -3851,28 +3547,11 @@ "node": ">=0.10.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/basic-auth": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "5.1.2" }, @@ -3882,13 +3561,15 @@ }, "node_modules/batch": { "version": "0.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -3900,67 +3581,75 @@ }, "node_modules/bidi-js": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.2.tgz", + "integrity": "sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw==", "dependencies": { "require-from-string": "^2.0.2" } }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "1.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/blakejs": { - "version": "1.1.1", - "license": "CC0-1.0" + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } }, "node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/body-parser": { - "version": "1.19.0", - "license": "MIT", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/boxen": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -3980,8 +3669,9 @@ }, "node_modules/boxen/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3992,10 +3682,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/boxen/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4009,8 +3712,9 @@ }, "node_modules/boxen/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4020,21 +3724,24 @@ }, "node_modules/boxen/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/boxen/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4044,7 +3751,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4052,7 +3760,8 @@ }, "node_modules/braces": { "version": "2.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -4071,8 +3780,9 @@ }, "node_modules/brfs": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", "dev": true, - "license": "MIT", "dependencies": { "quote-stream": "^1.0.1", "resolve": "^1.1.5", @@ -4085,6 +3795,8 @@ }, "node_modules/broadway": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "integrity": "sha512-zivf7KWx8ftTEsXaKfmve6wdSfbDJ6NLXwhwWN4Q1z5+/nsHWALP952KV9jJbJGwjZHEMZABHyuKqEAh3wb2kw==", "dependencies": { "cliff": "0.1.9", "eventemitter2": "0.4.14", @@ -4097,10 +3809,14 @@ } }, "node_modules/broadway/node_modules/async": { - "version": "0.2.10" + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "node_modules/broadway/node_modules/cliff": { "version": "0.1.9", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "integrity": "sha512-2EECQDk23AtYy9WTUDS0UwdlyGJe62IatdR9dOfG/T3+VIoC6/SA5AnYJWGTjXjweTYL360HEGu4DchCeee4Ng==", "dependencies": { "colors": "0.x.x", "eyes": "0.1.x", @@ -4112,23 +3828,29 @@ }, "node_modules/broadway/node_modules/colors": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", "engines": { "node": ">=0.1.90" } }, "node_modules/broadway/node_modules/eventemitter2": { "version": "0.4.14", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==" }, "node_modules/broadway/node_modules/pkginfo": { "version": "0.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", "engines": { "node": ">= 0.4.0" } }, "node_modules/broadway/node_modules/winston": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "integrity": "sha1-YdCDD6aZcGISIGsKK1ymmpMENmg=", "dependencies": { "async": "0.2.x", "colors": "0.6.x", @@ -4143,12 +3865,14 @@ }, "node_modules/brorand": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/brotli-size": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz", + "integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==", "dev": true, - "license": "MIT", "dependencies": { "duplexer": "0.1.1" }, @@ -4158,25 +3882,40 @@ }, "node_modules/brotli-size/node_modules/duplexer": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", "dev": true }, "node_modules/browser-or-node": { "version": "1.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz", + "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==", + "dev": true }, "node_modules/browser-stdout": { "version": "1.3.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserslist": { - "version": "4.19.1", - "license": "MIT", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -4184,29 +3923,28 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer-equal": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/builtin-modules": { - "version": "3.2.0", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -4216,20 +3954,23 @@ }, "node_modules/builtins": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true }, "node_modules/bytes": { - "version": "3.1.0", - "license": "MIT", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -4256,8 +3997,9 @@ }, "node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -4267,7 +4009,8 @@ }, "node_modules/cache-base": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -4283,14 +4026,10 @@ "node": ">=0.10.0" } }, - "node_modules/caip": { - "version": "0.9.2", - "license": "MIT" - }, "node_modules/call-bind": { "version": "1.0.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -4300,67 +4039,53 @@ } }, "node_modules/caller": { - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "tape": "~2.3.2" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz", + "integrity": "sha512-tfj+ErW/0SbOyfoXriRtdjCMTwrZAvLXj2jHqlh8YCcgoZVzUI22E/JJLxbiuZqDs0Ke7BuRrHTVuxm3EwYbJQ==" }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/camelcase": { - "version": "6.2.1", - "license": "MIT", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001299", - "license": "CC-BY-4.0", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/canonicalize": { - "version": "1.0.5", - "license": "Apache-2.0" - }, - "node_modules/capital-case": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } + "version": "1.0.30001352", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", + "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, "node_modules/caseless": { "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4370,27 +4095,11 @@ "node": ">=4" } }, - "node_modules/change-case": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/chokidar": { "version": "2.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -4410,7 +4119,8 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "3.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dependencies": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -4418,7 +4128,8 @@ }, "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dependencies": { "is-extglob": "^2.1.0" }, @@ -4428,36 +4139,17 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/cids": { - "version": "1.1.9", - "license": "MIT", - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/class-utils": { "version": "0.3.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -4470,7 +4162,8 @@ }, "node_modules/class-utils/node_modules/define-property": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -4480,7 +4173,8 @@ }, "node_modules/class-utils/node_modules/is-accessor-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -4490,7 +4184,8 @@ }, "node_modules/class-utils/node_modules/is-data-descriptor": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -4500,7 +4195,8 @@ }, "node_modules/class-utils/node_modules/is-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -4512,27 +4208,31 @@ }, "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "engines": { "node": ">=0.10.0" } }, "node_modules/classnames": { "version": "2.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -4542,8 +4242,9 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4553,8 +4254,9 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -4568,8 +4270,9 @@ }, "node_modules/cli-truncate/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4582,8 +4285,9 @@ }, "node_modules/cli-truncate/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4593,13 +4297,15 @@ }, "node_modules/cli-truncate/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/cli-truncate/node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -4611,6 +4317,8 @@ }, "node_modules/cliff": { "version": "0.1.10", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", + "integrity": "sha512-roZWcC2Cxo/kKjRXw7YUpVNtxJccbvcl7VzTjUYgLQk6Ot0R8bm2netbhSZYWWNrKlOO/7HD6GXHl8dtzE6SiQ==", "dependencies": { "colors": "~1.0.3", "eyes": "~0.1.8", @@ -4620,45 +4328,193 @@ "node": ">= 0.4.0" } }, + "node_modules/cliff/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, "node_modules/cliff/node_modules/colors": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/cliff/node_modules/pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/cliff/node_modules/winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "dependencies": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/cliff/node_modules/winston/node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", "engines": { "node": ">=0.1.90" } }, "node_modules/cliui": { - "version": "7.0.4", - "license": "ISC", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clone": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "engines": { "node": ">=0.8" } }, "node_modules/code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/collection-utils": { "version": "1.0.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/collection-utils/-/collection-utils-1.0.1.tgz", + "integrity": "sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==", + "dev": true }, "node_modules/collection-visit": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -4667,41 +4523,66 @@ "node": ">=0.10.0" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/colorette": { - "version": "2.0.16", - "dev": true, - "license": "MIT" + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", + "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==", + "dev": true }, - "node_modules/colors": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">=0.1.90" + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" } }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4711,8 +4592,9 @@ }, "node_modules/command-line-args": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "dev": true, - "license": "MIT", "dependencies": { "array-back": "^2.0.0", "find-replace": "^1.0.3", @@ -4724,8 +4606,9 @@ }, "node_modules/command-line-usage": { "version": "5.0.5", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz", + "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==", "dev": true, - "license": "MIT", "dependencies": { "array-back": "^2.0.0", "chalk": "^2.4.1", @@ -4738,28 +4621,34 @@ }, "node_modules/commander": { "version": "2.20.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/component-emitter": { "version": "1.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -4767,10 +4656,17 @@ "typedarray": "^0.0.6" } }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4783,16 +4679,18 @@ }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/concurrently": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "date-fns": "^2.16.1", @@ -4812,8 +4710,9 @@ }, "node_modules/concurrently/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4826,8 +4725,9 @@ }, "node_modules/concurrently/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4841,8 +4741,9 @@ }, "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4850,10 +4751,22 @@ "node": ">=8" } }, + "node_modules/concurrently/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/concurrently/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4863,21 +4776,45 @@ }, "node_modules/concurrently/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/concurrently/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/concurrently/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4888,9 +4825,52 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/concurrently/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/configstore": { "version": "4.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", "dependencies": { "dot-prop": "^4.1.0", "graceful-fs": "^4.1.2", @@ -4905,66 +4885,84 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/constant-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "license": "MIT", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/content-type": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/cookie": { - "version": "0.4.0", - "license": "MIT", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/copy-descriptor": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "engines": { "node": ">=0.10.0" } }, "node_modules/core-js-compat": { - "version": "3.20.2", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.19.1", + "browserslist": "^4.20.3", "semver": "7.0.0" }, "funding": { @@ -4974,20 +4972,23 @@ }, "node_modules/core-js-compat/node_modules/semver": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/core-util-is": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cors": { "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, - "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -4998,8 +4999,9 @@ }, "node_modules/cosmiconfig": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5011,24 +5013,11 @@ "node": ">=10" } }, - "node_modules/cross-fetch": { - "version": "3.1.4", - "license": "MIT", - "dependencies": { - "node-fetch": "2.6.1" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.1", - "license": "MIT", - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5040,32 +5029,30 @@ }, "node_modules/crypto-random-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "engines": { "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, "node_modules/cycle": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", "engines": { "node": ">=0.4.0" } }, - "node_modules/dag-jose-utils": { - "version": "0.1.1", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "cids": "^1.1.6", - "ipld-dag-cbor": "^0.17.1", - "multihashes": "^4.0.2", - "uint8arrays": "^2.1.4", - "varint": "^6.0.0" - } - }, "node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -5073,21 +5060,14 @@ "node": ">=0.10" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dependencies": { - "abab": "^2.0.3", + "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" + "whatwg-url": "^11.0.0" }, "engines": { "node": ">=12" @@ -5113,9 +5093,9 @@ } }, "node_modules/data-urls/node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -5126,8 +5106,9 @@ }, "node_modules/date-fns": { "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.11" }, @@ -5138,11 +5119,13 @@ }, "node_modules/debounce": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "node_modules/debug": { - "version": "4.3.2", - "license": "MIT", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -5156,66 +5139,105 @@ } }, "node_modules/decamelize": { - "version": "4.0.0", - "license": "MIT", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/decode-uri-component": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", "engines": { "node": ">=0.10" } }, "node_modules/dedent": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, "node_modules/deep-equal": { - "version": "0.1.2", - "license": "MIT" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "dependencies": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/define-properties": { - "version": "1.1.3", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -5224,107 +5246,59 @@ "node": ">=0.10.0" } }, - "node_modules/defined": { - "version": "0.0.0", - "license": "MIT" - }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/delimit-stream": { - "version": "0.1.0", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/depd": { - "version": "1.1.2", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "license": "MIT" - }, - "node_modules/did-jwt": { - "version": "5.8.0", - "license": "Apache-2.0", - "dependencies": { - "@stablelib/ed25519": "^1.0.2", - "@stablelib/random": "^1.0.1", - "@stablelib/sha256": "^1.0.1", - "@stablelib/x25519": "^1.0.1", - "@stablelib/xchacha20poly1305": "^1.0.1", - "canonicalize": "^1.0.5", - "did-resolver": "^3.1.1", - "elliptic": "^6.5.4", - "js-sha3": "^0.8.0", - "multiformats": "^9.4.8", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/did-jwt/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/did-resolver": { - "version": "3.1.2", - "license": "Apache-2.0" - }, - "node_modules/dids": { - "version": "2.4.0", - "license": "MIT", - "dependencies": { - "@stablelib/random": "^1.0.1", - "cids": "^1.1.6", - "dag-jose-utils": "^0.1.1", - "did-jwt": "^5.6.1", - "did-resolver": "^3.1.0", - "query-string": "^7.0.0", - "rpc-utils": "^0.3.4", - "uint8arrays": "^2.1.5" - } - }, - "node_modules/dids/node_modules/rpc-utils": { - "version": "0.3.4", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "nanoid": "^3.1.21" - }, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": ">=12" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/diff": { "version": "5.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "engines": { "node": ">=0.3.1" } }, "node_modules/director": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", + "integrity": "sha512-Cuia7IBvmSanM+7ZmKYtP9hq+Du7n7mv2cpCt8GiEIkUDni0ecSlVCFJUL6HWwGzqLX03uA49xVOZOjwnabWmQ==", "engines": { "node": ">= 0.8.0" } }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -5333,9 +5307,10 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -5347,27 +5322,30 @@ }, "node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/domelementtype": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { - "version": "4.3.0", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -5380,8 +5358,9 @@ }, "node_modules/domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -5391,17 +5370,10 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/dot-prop": { "version": "4.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "dependencies": { "is-obj": "^1.0.0" }, @@ -5411,27 +5383,37 @@ }, "node_modules/dotenv": { "version": "8.6.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "engines": { "node": ">=10" } }, "node_modules/duplexer": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "node_modules/duplexer2": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/duplexer2/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5444,16 +5426,18 @@ }, "node_modules/duplexer2/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -5461,15 +5445,18 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.43", - "license": "ISC" + "version": "1.4.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", + "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==" }, "node_modules/elliptic": { "version": "6.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -5480,38 +5467,54 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/email-addresses": { "version": "3.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/encodeurl": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "devOptional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/encoding-japanese": { "version": "1.0.30", - "license": "MIT" + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-1.0.30.tgz", + "integrity": "sha512-bd/DFLAoJetvv7ar/KIpE3CNO8wEuyrt9Xuw6nSMiZ+Vrz/Q21BPsMHvARL2Wz6IKHKXgb+DWZqtRg1vql9cBg==" }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -5521,16 +5524,18 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -5540,8 +5545,9 @@ }, "node_modules/entities": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -5551,56 +5557,56 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/err-code": { - "version": "3.0.1", - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/errors-utils": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=12" - } + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/es-abstract": { - "version": "1.19.1", - "dev": true, - "license": "MIT", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5609,10 +5615,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -5626,67 +5659,386 @@ } }, "node_modules/esbuild": { - "version": "0.13.8", + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", + "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, + "engines": { + "node": ">=12" + }, "optionalDependencies": { - "esbuild-android-arm64": "0.13.8", - "esbuild-darwin-64": "0.13.8", - "esbuild-darwin-arm64": "0.13.8", - "esbuild-freebsd-64": "0.13.8", - "esbuild-freebsd-arm64": "0.13.8", - "esbuild-linux-32": "0.13.8", - "esbuild-linux-64": "0.13.8", - "esbuild-linux-arm": "0.13.8", - "esbuild-linux-arm64": "0.13.8", - "esbuild-linux-mips64le": "0.13.8", - "esbuild-linux-ppc64le": "0.13.8", - "esbuild-netbsd-64": "0.13.8", - "esbuild-openbsd-64": "0.13.8", - "esbuild-sunos-64": "0.13.8", - "esbuild-windows-32": "0.13.8", - "esbuild-windows-64": "0.13.8", - "esbuild-windows-arm64": "0.13.8" + "esbuild-android-64": "0.14.43", + "esbuild-android-arm64": "0.14.43", + "esbuild-darwin-64": "0.14.43", + "esbuild-darwin-arm64": "0.14.43", + "esbuild-freebsd-64": "0.14.43", + "esbuild-freebsd-arm64": "0.14.43", + "esbuild-linux-32": "0.14.43", + "esbuild-linux-64": "0.14.43", + "esbuild-linux-arm": "0.14.43", + "esbuild-linux-arm64": "0.14.43", + "esbuild-linux-mips64le": "0.14.43", + "esbuild-linux-ppc64le": "0.14.43", + "esbuild-linux-riscv64": "0.14.43", + "esbuild-linux-s390x": "0.14.43", + "esbuild-netbsd-64": "0.14.43", + "esbuild-openbsd-64": "0.14.43", + "esbuild-sunos-64": "0.14.43", + "esbuild-windows-32": "0.14.43", + "esbuild-windows-64": "0.14.43", + "esbuild-windows-arm64": "0.14.43" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", + "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", + "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", + "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", + "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", + "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", + "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", + "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", + "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", + "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", + "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", + "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", + "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", + "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", + "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", + "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", + "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", + "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", + "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", + "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/esbuild-linux-64": { - "version": "0.13.8", + "node_modules/esbuild-windows-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", + "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", "cpu": [ - "x64" + "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">=12" + } }, "node_modules/escalade": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/escodegen": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -5706,8 +6058,9 @@ }, "node_modules/escodegen/node_modules/esprima": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5718,8 +6071,9 @@ }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -5730,8 +6084,9 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -5746,6 +6101,8 @@ }, "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -5753,8 +6110,9 @@ }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -5762,8 +6120,9 @@ }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -5773,8 +6132,9 @@ }, "node_modules/eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -5829,13 +6189,15 @@ }, "node_modules/eslint-config-mdcs": { "version": "5.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eslint-config-mdcs/-/eslint-config-mdcs-5.0.0.tgz", + "integrity": "sha512-d4lzeT/sQ3TkI69hd+N/dtQ15g3GrbIboTfCAw6FaDQTLjWK2O3+dNfOOfkAC5TlwyU9BxztR1TE+x8iSzyuPw==", + "dev": true }, "node_modules/eslint-config-semistandard": { "version": "15.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-15.0.1.tgz", + "integrity": "sha512-sfV+qNBWKOmF0kZJll1VH5XqOAdTmLlhbOl9WKI11d2eMEe+Kicxnpm24PQWHOqAfk5pAWU2An0LjNCXKa4Usg==", "dev": true, - "license": "ISC", "peerDependencies": { "eslint": ">=6.0.1", "eslint-config-standard": ">=14.1.0", @@ -5847,8 +6209,9 @@ }, "node_modules/eslint-config-standard": { "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true, - "license": "MIT", "peerDependencies": { "eslint": ">=6.2.2", "eslint-plugin-import": ">=2.18.0", @@ -5859,8 +6222,9 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7", "resolve": "^1.20.0" @@ -5868,20 +6232,21 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.7.1", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "engines": { "node": ">=4" @@ -5889,38 +6254,60 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, "node_modules/eslint-plugin-html": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.2.0.tgz", + "integrity": "sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==", "dev": true, - "license": "ISC", "dependencies": { "htmlparser2": "^7.1.2" } }, "node_modules/eslint-plugin-import": { - "version": "2.25.2", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.4", "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.7.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -5931,16 +6318,18 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -5950,13 +6339,15 @@ }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/eslint-plugin-node": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, - "license": "MIT", "dependencies": { "eslint-plugin-es": "^3.0.0", "eslint-utils": "^2.0.0", @@ -5972,42 +6363,28 @@ "eslint": ">=5.16.0" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.8", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/eslint-plugin-promise": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=6" } }, "node_modules/eslint-plugin-standard": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", + "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", "dev": true, "funding": [ { @@ -6023,15 +6400,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6042,8 +6419,9 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -6056,32 +6434,36 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6095,8 +6477,9 @@ }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6109,8 +6492,9 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6124,8 +6508,9 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6135,13 +6520,15 @@ }, "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6150,9 +6537,10 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.11.0", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -6165,21 +6553,24 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6192,8 +6583,9 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6203,8 +6595,9 @@ }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -6216,16 +6609,18 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -6236,8 +6631,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -6246,17 +6642,19 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -6265,45 +6663,50 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/ethers": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.4.tgz", - "integrity": "sha512-62UIfxAQXdf67TeeOaoOoPctm5hUlYgfd0iW3wxfj7qRYKDcvvy0f+sJ3W2/Pyx77R8dblvejA8jokj+lS+ATQ==", + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.8.tgz", + "integrity": "sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w==", "funding": [ { "type": "individual", @@ -6315,41 +6718,42 @@ } ], "dependencies": { - "@ethersproject/abi": "5.6.1", - "@ethersproject/abstract-provider": "5.6.0", - "@ethersproject/abstract-signer": "5.6.0", - "@ethersproject/address": "5.6.0", - "@ethersproject/base64": "5.6.0", - "@ethersproject/basex": "5.6.0", - "@ethersproject/bignumber": "5.6.0", + "@ethersproject/abi": "5.6.3", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", "@ethersproject/bytes": "5.6.1", - "@ethersproject/constants": "5.6.0", - "@ethersproject/contracts": "5.6.0", - "@ethersproject/hash": "5.6.0", - "@ethersproject/hdnode": "5.6.0", - "@ethersproject/json-wallets": "5.6.0", - "@ethersproject/keccak256": "5.6.0", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", "@ethersproject/logger": "5.6.0", - "@ethersproject/networks": "5.6.2", - "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/networks": "5.6.3", + "@ethersproject/pbkdf2": "5.6.1", "@ethersproject/properties": "5.6.0", - "@ethersproject/providers": "5.6.4", - "@ethersproject/random": "5.6.0", - "@ethersproject/rlp": "5.6.0", - "@ethersproject/sha2": "5.6.0", - "@ethersproject/signing-key": "5.6.0", - "@ethersproject/solidity": "5.6.0", - "@ethersproject/strings": "5.6.0", - "@ethersproject/transactions": "5.6.0", - "@ethersproject/units": "5.6.0", - "@ethersproject/wallet": "5.6.0", - "@ethersproject/web": "5.6.0", - "@ethersproject/wordlists": "5.6.0" + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" } }, "node_modules/event-stream": { "version": "3.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", "dependencies": { "duplexer": "~0.1.1", "from": "~0", @@ -6362,7 +6766,8 @@ }, "node_modules/event-stream/node_modules/split": { "version": "0.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "dependencies": { "through": "2" }, @@ -6372,12 +6777,14 @@ }, "node_modules/eventemitter2": { "version": "6.4.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" }, "node_modules/execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -6398,7 +6805,8 @@ }, "node_modules/expand-brackets": { "version": "2.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -6414,14 +6822,16 @@ }, "node_modules/expand-brackets/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/expand-brackets/node_modules/define-property": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -6431,7 +6841,8 @@ }, "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -6441,7 +6852,8 @@ }, "node_modules/expand-brackets/node_modules/is-data-descriptor": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -6451,7 +6863,8 @@ }, "node_modules/expand-brackets/node_modules/is-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -6463,46 +6876,50 @@ }, "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "engines": { "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express": { - "version": "4.17.1", - "license": "MIT", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -6513,23 +6930,46 @@ }, "node_modules/express/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/extend": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/extend-shallow": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6539,7 +6979,8 @@ }, "node_modules/extglob": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -6556,7 +6997,8 @@ }, "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -6566,88 +7008,61 @@ }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/eyes": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", "engines": { "node": "> 0.1.90" } }, "node_modules/falafel": { - "version": "2.2.4", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", + "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" + "isarray": "^2.0.1" }, "engines": { "node": ">=0.4.0" } }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-json-patch": { - "version": "2.2.1", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^2.0.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fast-json-patch/node_modules/fast-deep-equal": { - "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, - "node_modules/fetch-blob": { - "version": "3.1.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -6655,18 +7070,26 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/filenamify": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, - "license": "MIT", "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.1", @@ -6681,15 +7104,17 @@ }, "node_modules/filesize": { "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } }, "node_modules/fill-range": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -6700,23 +7125,17 @@ "node": ">=0.10.0" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/finalhandler": { - "version": "1.1.2", - "license": "MIT", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -6725,124 +7144,54 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "semver": "^6.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-replace": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", + "integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==", "dev": true, - "license": "MIT", "dependencies": { "array-back": "^1.0.4", "test-value": "^2.1.0" @@ -6853,8 +7202,9 @@ }, "node_modules/find-replace/node_modules/array-back": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, - "license": "MIT", "dependencies": { "typical": "^2.6.0" }, @@ -6864,8 +7214,9 @@ }, "node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -6875,15 +7226,17 @@ }, "node_modules/flat": { "version": "5.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -6894,6 +7247,8 @@ }, "node_modules/flatiron": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", + "integrity": "sha512-+X3/0hl9in0FJPsPB5/xTpkxxMzDSoA4cyon46HtXhrfEbpqBvKxpR+HJGqMjKv4jcBmoLjEtTVIAADJjLjv8A==", "dependencies": { "broadway": "~0.3.2", "director": "1.2.7", @@ -6908,19 +7263,26 @@ } }, "node_modules/flatted": { - "version": "3.2.2", - "dev": true, - "license": "ISC" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.14.4", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6930,26 +7292,31 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/foreach": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/forever": { - "version": "4.0.1", - "license": "MIT", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/forever/-/forever-4.0.3.tgz", + "integrity": "sha512-N8aVtvB3bdh3lXPE9Rb+ErISSnJsAkv0GgZ0h6qtN8UXFgcSqJNMyBst9r3SBNk6+n4iBVaZso16mr1SUVvG3Q==", "dependencies": { "async": "^1.5.2", "cliff": "^0.1.10", "clone": "^2.1.2", - "colors": "^0.6.2", + "colors": "0.6.2", "configstore": "4.0.0", "eventemitter2": "6.4.4", "flatiron": "~0.4.3", @@ -6957,9 +7324,9 @@ "mkdirp": "^0.5.5", "nssocket": "^0.6.0", "object-assign": "^4.1.1", - "prettyjson": "^1.2.1", + "prettyjson": "^1.2.2", "shush": "^1.0.0", - "winston": "~0.8.1" + "winston": "^3.4.0" }, "bin": { "forever": "bin/forever" @@ -6970,15 +7337,17 @@ }, "node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/forever-monitor": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-3.0.3.tgz", + "integrity": "sha512-7YGDo0UlbMy++6G3lzncWISDaT5CVp+yPVAkZ7FDFF0ec+0HKgBOWOhPGKpMF0hjcm3Ps/HbtrETrQLYREZ7YQ==", "dependencies": { "async": "^1.5.2", "chokidar": "^2.1.8", @@ -6992,14 +7361,17 @@ }, "node_modules/forever/node_modules/colors": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", "engines": { "node": ">=0.1.90" } }, "node_modules/form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -7009,26 +7381,18 @@ "node": ">= 0.12" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/forwarded": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } }, "node_modules/fragment-cache": { "version": "0.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dependencies": { "map-cache": "^0.2.2" }, @@ -7038,19 +7402,22 @@ }, "node_modules/fresh": { "version": "0.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } }, "node_modules/from": { "version": "0.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" }, "node_modules/fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -7062,8 +7429,9 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7073,22 +7441,68 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gauge": { "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -7102,16 +7516,18 @@ }, "node_modules/gauge/node_modules/ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/gauge/node_modules/is-fullwidth-code-point": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, - "license": "MIT", "dependencies": { "number-is-nan": "^1.0.0" }, @@ -7121,8 +7537,9 @@ }, "node_modules/gauge/node_modules/string-width": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, - "license": "MIT", "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7134,8 +7551,9 @@ }, "node_modules/gauge/node_modules/strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -7145,26 +7563,26 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "dev": true, - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7172,13 +7590,15 @@ }, "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true }, "node_modules/get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -7191,8 +7611,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -7206,23 +7626,26 @@ }, "node_modules/get-value": { "version": "2.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "engines": { "node": ">=0.10.0" } }, "node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/gh-pages": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", "dev": true, - "license": "MIT", "dependencies": { "async": "^2.6.1", "commander": "^2.18.0", @@ -7241,21 +7664,23 @@ } }, "node_modules/gh-pages/node_modules/async": { - "version": "2.6.3", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -7268,7 +7693,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { "is-glob": "^4.0.1" }, @@ -7278,15 +7704,17 @@ }, "node_modules/globals": { "version": "11.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^1.0.1", "glob": "^7.0.3", @@ -7300,39 +7728,45 @@ }, "node_modules/globby/node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/gpt-3-encoder": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.3.tgz", + "integrity": "sha512-Ep1+I5hQ5VcLF5qKc2FyqvSj2T0Al9LNC0uXNq6Cx0Twl6Gq2RWG7Q5Mo/9Of30xcAegsgemNtuulPEiwanUww==" }, "node_modules/graceful-fs": { - "version": "4.2.8", - "license": "ISC" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/graphql": { "version": "0.11.7", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.11.7.tgz", + "integrity": "sha512-x7uDjyz8Jx+QPbpCFCMQ8lltnQa4p4vSYHx6ADe8rVYRTdsyhCJbvSty5DAsLVmU6cGakl+r8HQYolKHxk/tiw==", "dev": true, - "license": "MIT", "dependencies": { "iterall": "1.1.3" } }, "node_modules/growl": { "version": "1.10.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "engines": { "node": ">=4.x" } }, "node_modules/gzip-size": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dev": true, - "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, @@ -7345,16 +7779,19 @@ }, "node_modules/har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, - "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -7365,8 +7802,9 @@ }, "node_modules/har-validator/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7380,13 +7818,14 @@ }, "node_modules/har-validator/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/has": { "version": "1.0.3", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { "function-bind": "^1.1.1" }, @@ -7395,24 +7834,36 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -7422,8 +7873,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { "has-symbols": "^1.0.2" }, @@ -7436,12 +7887,14 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/has-value": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -7453,7 +7906,8 @@ }, "node_modules/has-values": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -7464,7 +7918,8 @@ }, "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -7474,7 +7929,8 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -7482,22 +7938,16 @@ }, "node_modules/he": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "bin": { "he": "bin/he" } }, - "node_modules/header-case": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/hmac-drbg": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -7506,8 +7956,9 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7517,6 +7968,8 @@ }, "node_modules/htmlparser2": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -7525,7 +7978,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", @@ -7535,31 +7987,30 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, "node_modules/http-errors": { - "version": "1.7.2", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "license": "ISC" - }, "node_modules/http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -7571,8 +8022,9 @@ }, "node_modules/http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -7584,9 +8036,10 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -7597,29 +8050,34 @@ }, "node_modules/human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/i": { "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", "engines": { "node": ">=0.4" } }, "node_modules/iconv-lite": { "version": "0.4.24", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7627,44 +8085,29 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^3.0.4" } }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7678,27 +8121,31 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7706,16 +8153,18 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/internal-slot": { "version": "1.0.3", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "dependencies": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -7727,95 +8176,31 @@ }, "node_modules/invert-kv": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/ip": { - "version": "1.1.5", - "dev": true, - "license": "MIT" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true }, "node_modules/ipaddr.js": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "engines": { "node": ">= 0.10" } }, - "node_modules/ipld-dag-cbor": { - "version": "0.17.1", - "license": "MIT", - "dependencies": { - "borc": "^2.1.2", - "cids": "^1.0.0", - "is-circular": "^1.0.2", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "uint8arrays": "^2.1.3" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/borc": { - "version": "2.1.2", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0", - "buffer": "^5.5.0", - "commander": "^2.15.0", - "ieee754": "^1.1.13", - "iso-url": "~0.4.7", - "json-text-sequence": "~0.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ipld-dag-cbor/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/ipld-dag-cbor/node_modules/iso-url": { - "version": "0.4.7", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ipld-dag-cbor/node_modules/json-text-sequence": { - "version": "0.1.1", - "license": "MIT", - "dependencies": { - "delimit-stream": "0.1.0" - } - }, "node_modules/is-accessor-descriptor": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dependencies": { "kind-of": "^6.0.0" }, @@ -7825,20 +8210,36 @@ }, "node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-bigint": { "version": "1.0.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { "has-bigints": "^1.0.1" }, @@ -7848,7 +8249,8 @@ }, "node_modules/is-binary-path": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dependencies": { "binary-extensions": "^1.0.0" }, @@ -7858,8 +8260,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7873,12 +8275,25 @@ }, "node_modules/is-buffer": { "version": "1.1.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/is-callable": { "version": "1.2.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "engines": { "node": ">= 0.4" }, @@ -7886,14 +8301,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-circular": { - "version": "1.0.2", - "license": "MIT" - }, "node_modules/is-core-module": { - "version": "2.8.0", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -7903,7 +8315,8 @@ }, "node_modules/is-data-descriptor": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dependencies": { "kind-of": "^6.0.0" }, @@ -7913,15 +8326,16 @@ }, "node_modules/is-data-descriptor/node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-date-object": { "version": "1.0.5", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7934,7 +8348,8 @@ }, "node_modules/is-descriptor": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -7946,15 +8361,17 @@ }, "node_modules/is-descriptor/node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -7967,28 +8384,32 @@ }, "node_modules/is-extendable": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-extglob": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7998,18 +8419,28 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-module": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -8019,7 +8450,8 @@ }, "node_modules/is-number": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -8028,9 +8460,9 @@ } }, "node_modules/is-number-object": { - "version": "1.0.6", - "dev": true, - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8043,21 +8475,24 @@ }, "node_modules/is-obj": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-obj": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "engines": { "node": ">=8" } }, "node_modules/is-plain-object": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { "isobject": "^3.0.1" }, @@ -8067,8 +8502,8 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8082,24 +8517,36 @@ }, "node_modules/is-regexp": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { "version": "2.0.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" }, @@ -8109,8 +8556,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8123,8 +8570,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { "has-symbols": "^1.0.2" }, @@ -8135,14 +8582,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { "node": ">=10" }, @@ -8152,15 +8619,36 @@ }, "node_modules/is-url": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-weakref": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8168,15 +8656,17 @@ }, "node_modules/is-windows": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -8185,24 +8675,28 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "engines": { "node": ">=0.10.0" } }, "node_modules/isomorphic-fetch": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" @@ -8210,16 +8704,18 @@ }, "node_modules/isomorphic-fetch/node_modules/is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isomorphic-fetch/node_modules/node-fetch": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dev": true, - "license": "MIT", "dependencies": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -8227,17 +8723,20 @@ }, "node_modules/isstream": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/iterall": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz", + "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==", + "dev": true }, "node_modules/jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8249,16 +8748,18 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8268,21 +8769,25 @@ }, "node_modules/js-base64": { "version": "2.6.4", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true }, "node_modules/js-sha3": { "version": "0.8.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8293,12 +8798,14 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/jsesc": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "bin": { "jsesc": "bin/jsesc" }, @@ -8308,7 +8815,8 @@ }, "node_modules/json-6": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json-6/-/json-6-1.1.4.tgz", + "integrity": "sha512-ljsNv5ARPvSDpWmjFwja8NjzzEFkOis2OMRtvO5GRtr217DXaQseFYZO6fgVPThPPuaWpOI5/cs/fUCfqQlWiA==", "bin": { "json-6": "lib/cli.js" }, @@ -8318,42 +8826,47 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema": { "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/json-stable-stringify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", "dev": true, - "license": "MIT", "dependencies": { "jsonify": "~0.0.0" } }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" }, @@ -8363,28 +8876,36 @@ }, "node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonify": { "version": "0.0.0", - "license": "Public Domain" + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==", + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/jsprim": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8395,43 +8916,10 @@ "node": ">=0.6.0" } }, - "node_modules/key-did-provider-ed25519": { - "version": "1.1.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@stablelib/ed25519": "^1.0.1", - "did-jwt": "^5.0.1", - "fast-json-stable-stringify": "^2.1.0", - "rpc-utils": "^0.3.4", - "uint8arrays": "^2.1.5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/key-did-provider-ed25519/node_modules/rpc-utils": { - "version": "0.3.4", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "nanoid": "^3.1.21" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/key-did-resolver": { - "version": "1.4.0", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@stablelib/ed25519": "^1.0.2", - "multibase": "~4.0.2", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" - } - }, "node_modules/kind-of": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -8439,17 +8927,24 @@ "node": ">=0.10.0" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "node_modules/lazy": { "version": "1.0.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", "engines": { "node": ">=0.2.0" } }, "node_modules/lcid": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, - "license": "MIT", "dependencies": { "invert-kv": "^2.0.0" }, @@ -8459,8 +8954,9 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -8471,13 +8967,15 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/lint-staged": { "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "cli-truncate": "^2.1.0", @@ -8504,8 +9002,9 @@ }, "node_modules/lint-staged/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8518,8 +9017,9 @@ }, "node_modules/lint-staged/node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -8529,8 +9029,9 @@ }, "node_modules/lint-staged/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8544,8 +9045,9 @@ }, "node_modules/lint-staged/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8555,21 +9057,24 @@ }, "node_modules/lint-staged/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/lint-staged/node_modules/commander": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/lint-staged/node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8579,27 +9084,30 @@ }, "node_modules/lint-staged/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lint-staged/node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/lint-staged/node_modules/micromatch": { - "version": "4.0.4", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -8607,8 +9115,9 @@ }, "node_modules/lint-staged/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8618,8 +9127,9 @@ }, "node_modules/lint-staged/node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8628,16 +9138,17 @@ } }, "node_modules/listr2": { - "version": "3.13.5", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, - "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.4.0", + "rxjs": "^7.5.1", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -8653,23 +9164,11 @@ } } }, - "node_modules/listr2/node_modules/rxjs": { - "version": "7.4.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/listr2/node_modules/tslib": { - "version": "2.1.0", - "dev": true, - "license": "0BSD" - }, "node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -8680,36 +9179,38 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.padend": { "version": "4.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8723,7 +9224,8 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -8736,7 +9238,8 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8750,7 +9253,8 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -8760,18 +9264,21 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -8781,8 +9288,9 @@ }, "node_modules/log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -8798,8 +9306,9 @@ }, "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8812,8 +9321,9 @@ }, "node_modules/log-update/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8823,13 +9333,15 @@ }, "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8839,20 +9351,22 @@ "node": ">=8" } }, - "node_modules/logfmt": { - "version": "1.3.2", - "license": "MIT", + "node_modules/logform": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", + "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", "dependencies": { - "split": "0.2.x", - "through": "2.3.x" - }, - "bin": { - "logfmt": "bin/logfmt" + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" } }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -8860,21 +9374,11 @@ "loose-envify": "cli.js" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru_map": { - "version": "0.4.1", - "license": "MIT" - }, "node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8884,15 +9388,17 @@ }, "node_modules/magic-string": { "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", "dev": true, - "license": "MIT", "dependencies": { "vlq": "^0.2.2" } }, "node_modules/make-dir": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dependencies": { "pify": "^3.0.0" }, @@ -8902,8 +9408,9 @@ }, "node_modules/make-fetch-happen": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.1.3", "cacache": "^15.2.0", @@ -8928,8 +9435,9 @@ }, "node_modules/map-age-cleaner": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, - "license": "MIT", "dependencies": { "p-defer": "^1.0.0" }, @@ -8939,17 +9447,21 @@ }, "node_modules/map-cache": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "engines": { "node": ">=0.10.0" } }, "node_modules/map-stream": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, "node_modules/map-visit": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dependencies": { "object-visit": "^1.0.0" }, @@ -8958,20 +9470,23 @@ } }, "node_modules/maxrects-packer": { - "version": "2.7.2", - "license": "MIT" + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/maxrects-packer/-/maxrects-packer-2.7.3.tgz", + "integrity": "sha512-bG6qXujJ1QgttZVIH4WDanhoJtvbud/xP/XPyf6A69C9RdA61BM4TomFALCq2nrTa+tARRIBB4LuIFsnUQU2wA==" }, "node_modules/media-typer": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } }, "node_modules/mem": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, - "license": "MIT", "dependencies": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", @@ -8983,20 +9498,23 @@ }, "node_modules/merge-descriptors": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/merge-source-map": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", "dev": true, - "license": "MIT", "dependencies": { "source-map": "^0.5.6" } }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/metaversefile": { "resolved": "packages/totum", @@ -9004,14 +9522,16 @@ }, "node_modules/methods": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "3.1.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -9033,7 +9553,8 @@ }, "node_modules/micromatch/node_modules/extend-shallow": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -9044,7 +9565,8 @@ }, "node_modules/micromatch/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -9054,14 +9576,16 @@ }, "node_modules/micromatch/node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/mime": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { "mime": "cli.js" }, @@ -9070,17 +9594,19 @@ } }, "node_modules/mime-db": { - "version": "1.50.0", - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.33", - "license": "MIT", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.50.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -9088,23 +9614,27 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { - "version": "3.0.4", - "license": "ISC", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9113,13 +9643,15 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "license": "MIT" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/minipass": { "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -9129,8 +9661,9 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9140,8 +9673,9 @@ }, "node_modules/minipass-fetch": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.0", "minipass-sized": "^1.0.3", @@ -9156,8 +9690,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9167,8 +9702,9 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -9176,8 +9712,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9187,8 +9724,9 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9198,8 +9736,9 @@ }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -9210,7 +9749,8 @@ }, "node_modules/mixin-deep": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -9221,7 +9761,8 @@ }, "node_modules/mixin-deep/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -9230,40 +9771,42 @@ } }, "node_modules/mkdirp": { - "version": "0.5.5", - "license": "MIT", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "node_modules/mocha": { - "version": "9.1.3", - "license": "MIT", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -9280,9 +9823,18 @@ "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, "node_modules/mocha/node_modules/anymatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -9293,18 +9845,21 @@ }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/mocha/node_modules/binary-extensions": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/braces": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { "fill-range": "^7.0.1" }, @@ -9313,8 +9868,15 @@ } }, "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.2", - "license": "MIT", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9331,9 +9893,41 @@ "fsevents": "~2.3.2" } }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, @@ -9343,7 +9937,8 @@ }, "node_modules/mocha/node_modules/fill-range": { "version": "7.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9353,7 +9948,8 @@ }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -9365,9 +9961,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/mocha/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/mocha/node_modules/glob": { - "version": "7.1.7", - "license": "ISC", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9383,16 +10001,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/is-binary-path": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9402,14 +10033,16 @@ }, "node_modules/mocha/node_modules/is-number": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { "node": ">=0.12.0" } }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { "argparse": "^2.0.1" }, @@ -9419,7 +10052,8 @@ }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { "p-locate": "^5.0.0" }, @@ -9430,13 +10064,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mocha/node_modules/nanoid": { - "version": "3.1.25", - "license": "MIT", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9446,7 +10093,8 @@ }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -9459,7 +10107,8 @@ }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { "p-limit": "^3.0.2" }, @@ -9472,14 +10121,16 @@ }, "node_modules/mocha/node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/mocha/node_modules/readdirp": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { "picomatch": "^2.2.1" }, @@ -9489,7 +10140,8 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, @@ -9502,7 +10154,8 @@ }, "node_modules/mocha/node_modules/to-regex-range": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" }, @@ -9510,109 +10163,69 @@ "node": ">=8.0" } }, - "node_modules/moment": { - "version": "2.29.1", - "dev": true, - "license": "MIT", + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/multibase": { - "version": "4.0.6", - "license": "MIT", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dependencies": { - "@multiformats/base-x": "^4.0.1" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multicodec": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" + "node": ">=10" } }, - "node_modules/multiformats": { - "version": "9.4.9", - "license": "(Apache-2.0 AND MIT)" - }, - "node_modules/multihashes": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" + "node": ">=10" } }, - "node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "license": "MIT" - }, - "node_modules/multihashing-async": { - "version": "2.1.4", - "license": "MIT", - "dependencies": { - "blakejs": "^1.1.0", - "err-code": "^3.0.0", - "js-sha3": "^0.8.0", - "multihashes": "^4.0.1", - "murmurhash3js-revisited": "^3.0.0", - "uint8arrays": "^3.0.0" - }, + "node_modules/moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "dev": true, "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/uint8arrays": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" + "node": "*" } }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mute-stream": { "version": "0.0.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "optional": true }, "node_modules/nanoid": { - "version": "3.1.30", - "license": "MIT", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9622,7 +10235,8 @@ }, "node_modules/nanomatch": { "version": "1.2.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -9642,7 +10256,8 @@ }, "node_modules/nanomatch/node_modules/extend-shallow": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -9653,7 +10268,8 @@ }, "node_modules/nanomatch/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -9663,18 +10279,22 @@ }, "node_modules/nanomatch/node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/nconf": { "version": "0.6.9", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", + "integrity": "sha512-MHiYHIc2igQsoI1v0IcVE4MVaV/+yIQtduOwUcQNoLd+pPgoKblWKbgU3itkhC0az5w2VMdQlQuAO+oi4qxtJg==", "dependencies": { "async": "0.2.9", "ini": "1.x.x", @@ -9685,63 +10305,65 @@ } }, "node_modules/nconf/node_modules/async": { - "version": "0.2.9" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", + "integrity": "sha512-OAtM6mexGteNKdU29wcUfRW+VuBr94A3hx9h9yzBnPaQAbKoW1ORd68XM4CCAOpdL5wlNFgO29hsY1TKv2vAKw==" }, "node_modules/ncp": { "version": "0.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==", "bin": { "ncp": "bin/ncp" } }, "node_modules/negotiator": { - "version": "0.6.2", - "license": "MIT", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node_modules/node-fetch": { - "version": "3.1.0", - "license": "MIT", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.2", - "formdata-polyfill": "^4.0.10" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "4.x || >=6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-forge": { - "version": "0.10.0", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/node-gyp": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -9762,9 +10384,10 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9776,13 +10399,15 @@ } }, "node_modules/node-releases": { - "version": "2.0.1", - "license": "MIT" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "node_modules/nopt": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -9795,23 +10420,26 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-install-checks": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -9820,9 +10448,10 @@ } }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9835,13 +10464,15 @@ }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/npm-package-arg": { "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^4.0.1", "semver": "^7.3.4", @@ -9852,9 +10483,10 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9867,8 +10499,9 @@ }, "node_modules/npm-packlist": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.6", "ignore-walk": "^3.0.3", @@ -9884,8 +10517,9 @@ }, "node_modules/npm-pick-manifest": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^4.0.0", "npm-normalize-package-bin": "^1.0.1", @@ -9894,9 +10528,10 @@ } }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9909,8 +10544,9 @@ }, "node_modules/npm-registry-fetch": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^9.0.1", "minipass": "^3.1.3", @@ -9925,8 +10561,9 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -9936,8 +10573,9 @@ }, "node_modules/npmlog": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -9947,7 +10585,8 @@ }, "node_modules/nssocket": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", "dependencies": { "eventemitter2": "~0.4.14", "lazy": "~1.0.11" @@ -9958,34 +10597,39 @@ }, "node_modules/nssocket/node_modules/eventemitter2": { "version": "0.4.14", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==" }, "node_modules/number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/oauth-sign": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-copy": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -9997,7 +10641,8 @@ }, "node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -10007,7 +10652,8 @@ }, "node_modules/object-copy/node_modules/is-accessor-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -10017,7 +10663,8 @@ }, "node_modules/object-copy/node_modules/is-data-descriptor": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -10027,7 +10674,8 @@ }, "node_modules/object-copy/node_modules/is-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -10039,30 +10687,47 @@ }, "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.11.0", - "dev": true, - "license": "MIT", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } }, "node_modules/object-visit": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dependencies": { "isobject": "^3.0.0" }, @@ -10072,8 +10737,8 @@ }, "node_modules/object.assign": { "version": "4.1.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -10089,7 +10754,8 @@ }, "node_modules/object.pick": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dependencies": { "isobject": "^3.0.1" }, @@ -10099,8 +10765,9 @@ }, "node_modules/object.values": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -10114,8 +10781,9 @@ } }, "node_modules/on-finished": { - "version": "2.3.0", - "license": "MIT", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -10125,15 +10793,25 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -10145,23 +10823,26 @@ } }, "node_modules/open": { - "version": "7.4.2", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, - "license": "MIT", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/openai-api": { - "version": "1.2.6", - "license": "ISC", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/openai-api/-/openai-api-1.3.1.tgz", + "integrity": "sha512-wKhm/BZS/PyzQRJTdl6kciwL4LpqqyertLYEbbPYDg7ySk1tEywPSBnMio0xdSQaRmdSYVS8VHzJvnwKb9tqkw==", "dependencies": { "axios": "^0.21.1", "dotenv": "^8.2.0" @@ -10169,7 +10850,8 @@ }, "node_modules/optimist": { "version": "0.6.0", - "license": "MIT/X11", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "integrity": "sha512-ubrZPyOU0AHpXkmwqfWolap+eHMwQ484AKivkf0ZGyysd6fUJZl7ow9iu5UNV1vCZv46HQ7EM83IC3NGJ820hg==", "dependencies": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" @@ -10177,12 +10859,14 @@ }, "node_modules/optimist/node_modules/minimist": { "version": "0.0.10", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==" }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -10197,8 +10881,9 @@ }, "node_modules/os-locale": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -10210,8 +10895,9 @@ }, "node_modules/os-locale/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -10225,8 +10911,9 @@ }, "node_modules/os-locale/node_modules/execa": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -10242,8 +10929,9 @@ }, "node_modules/os-locale/node_modules/get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -10253,16 +10941,18 @@ }, "node_modules/os-locale/node_modules/is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/os-locale/node_modules/npm-run-path": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^2.0.0" }, @@ -10272,24 +10962,27 @@ }, "node_modules/os-locale/node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/os-locale/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/os-locale/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -10299,16 +10992,18 @@ }, "node_modules/os-locale/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/os-locale/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10318,32 +11013,36 @@ }, "node_modules/p-defer": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/p-finally": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/p-is-promise": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -10353,8 +11052,9 @@ }, "node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -10364,8 +11064,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -10378,16 +11079,18 @@ }, "node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pacote": { "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^2.1.0", "@npmcli/installed-package-contents": "^1.0.6", @@ -10418,8 +11121,9 @@ }, "node_modules/pacote/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -10428,21 +11132,16 @@ } }, "node_modules/pako": { - "version": "2.0.4", - "license": "(MIT AND Zlib)" - }, - "node_modules/param-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -10452,8 +11151,9 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -10469,100 +11169,94 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { "node": ">= 0.8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/pascalcase": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/path-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-dirname": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" }, "node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pause-stream": { "version": "0.0.11", - "license": [ - "MIT", - "Apache2" - ], + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", "dependencies": { "through": "~2.3" } }, "node_modules/performance-now": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { - "version": "2.3.0", - "license": "MIT", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -10572,23 +11266,26 @@ }, "node_modules/pify": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "engines": { "node": ">=4" } }, "node_modules/pinkie": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie-promise": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, - "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -10597,115 +11294,191 @@ } }, "node_modules/pkg-dir": { - "version": "2.0.0", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^2.1.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/pkginfo": { - "version": "0.4.1", - "license": "MIT", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/please-upgrade-node": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, - "license": "MIT", "dependencies": { "semver-compare": "^1.0.0" } }, "node_modules/pluralize": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/posix-character-classes": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss": { - "version": "8.3.9", + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postmsg-rpc": { - "version": "2.4.0", - "license": "MIT", - "dependencies": { - "shortid": "^2.2.8" } }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettyjson": { - "version": "1.2.1", - "license": "MIT", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", + "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", "dependencies": { - "colors": "^1.1.2", + "colors": "1.4.0", "minimist": "^1.2.0" }, "bin": { "prettyjson": "bin/prettyjson" } }, + "node_modules/prettyjson/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -10716,11 +11489,14 @@ }, "node_modules/promise-retry/node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/prompt": { "version": "0.2.14", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha512-jDK5yEbAakJmNm+260gZG1+PuzX3jT5Jy0VZAUGrrW9RQ1JEWEDEVNnhO70mL3+U5r6bSJo02xsE34wOS/LnrA==", "dependencies": { "pkginfo": "0.x.x", "read": "1.0.x", @@ -10732,9 +11508,48 @@ "node": ">= 0.6.6" } }, + "node_modules/prompt/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "node_modules/prompt/node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/prompt/node_modules/pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/prompt/node_modules/winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "dependencies": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -10745,7 +11560,8 @@ }, "node_modules/ps-tree": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "dependencies": { "event-stream": "=3.3.4" }, @@ -10758,13 +11574,15 @@ }, "node_modules/psl": { "version": "1.8.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -10772,38 +11590,31 @@ }, "node_modules/punycode": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.7.0", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "7.0.1", - "license": "MIT", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=6" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/quicktype": { - "version": "15.0.260", + "version": "15.0.261", + "resolved": "https://registry.npmjs.org/quicktype/-/quicktype-15.0.261.tgz", + "integrity": "sha512-y2Se/GFGSeFNfON7X0MEJO8K+Lm23hWEZs5UMP9dVy3ShSYng6HTVw1YmqreUwGCLRGn4jD9TjNB1oqyaT3NBw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@mark.probst/typescript-json-schema": "~0.32.0", "@mark.probst/unicode-properties": "~1.1.0", @@ -10816,7 +11627,7 @@ "is-url": "^1.2.4", "isomorphic-fetch": "^2.2.1", "js-base64": "^2.4.3", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "moment": "^2.22.1", "node-fetch": "^2.6.1", "pako": "^1.0.6", @@ -10825,7 +11636,7 @@ "stream-json": "1.1.3", "string-to-stream": "^1.1.0", "typescript": "~3.2.1", - "urijs": "^1.19.4", + "urijs": "^1.19.6", "uuid": "^3.2.1", "wordwrap": "^1.0.0", "yaml": "^1.5.0" @@ -10834,31 +11645,23 @@ "quicktype": "dist/cli/index.js" } }, - "node_modules/quicktype/node_modules/node-fetch": { - "version": "2.6.6", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/quicktype/node_modules/pako": { - "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" + "node_modules/quicktype/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/quicktype/node_modules/process-nextick-args": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", + "dev": true }, "node_modules/quicktype/node_modules/readable-stream": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", + "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10871,21 +11674,24 @@ }, "node_modules/quicktype/node_modules/string_decoder": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/quicktype/node_modules/wordwrap": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true }, "node_modules/quote-stream": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", "dev": true, - "license": "MIT", "dependencies": { "buffer-equal": "0.0.1", "minimist": "^1.1.3", @@ -10897,24 +11703,27 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.4.0", - "license": "MIT", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -10924,7 +11733,8 @@ }, "node_modules/react": { "version": "17.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -10935,7 +11745,8 @@ }, "node_modules/react-dom": { "version": "17.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -10947,7 +11758,8 @@ }, "node_modules/react-merge-refs": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz", + "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" @@ -10955,7 +11767,8 @@ }, "node_modules/react-reconciler": { "version": "0.26.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", + "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -10970,21 +11783,24 @@ }, "node_modules/react-refresh": { "version": "0.10.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", + "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-three-fiber": { "version": "0.0.0-deprecated", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-three-fiber/-/react-three-fiber-0.0.0-deprecated.tgz", + "integrity": "sha512-EblIqTAsIpkYeM8bZtC4lcpTE0A2zCEGipFB52RgcQq/q+0oryrk7Sxt+sqhIjUu6xMNEVywV8dr74lz5yWO6A==" }, "node_modules/react-use-measure": { - "version": "2.0.4", - "license": "MIT", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", + "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==", "dependencies": { - "debounce": "^1.2.0" + "debounce": "^1.2.1" }, "peerDependencies": { "react": ">=16.13", @@ -10993,7 +11809,8 @@ }, "node_modules/read": { "version": "1.0.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dependencies": { "mute-stream": "~0.0.4" }, @@ -11003,8 +11820,9 @@ }, "node_modules/read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -11015,7 +11833,8 @@ }, "node_modules/readable-stream": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11027,7 +11846,8 @@ }, "node_modules/readdirp": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dependencies": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -11037,9 +11857,15 @@ "node": ">=0.10" } }, + "node_modules/readdirp/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/readdirp/node_modules/readable-stream": { "version": "2.3.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11052,28 +11878,32 @@ }, "node_modules/readdirp/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/reduce-flatten": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", + "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/regenerate": { "version": "1.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -11083,19 +11913,22 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.9", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "node_modules/regenerator-transform": { - "version": "0.14.5", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regex-not": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -11106,7 +11939,8 @@ }, "node_modules/regex-not/node_modules/extend-shallow": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -11117,7 +11951,8 @@ }, "node_modules/regex-not/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -11125,10 +11960,27 @@ "node": ">=0.10.0" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -11137,14 +11989,15 @@ } }, "node_modules/regexpu-core": { - "version": "4.8.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -11153,14 +12006,16 @@ } }, "node_modules/regjsgen": { - "version": "0.5.2", - "dev": true, - "license": "MIT" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true }, "node_modules/regjsparser": { - "version": "0.7.0", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -11170,6 +12025,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -11177,26 +12034,31 @@ }, "node_modules/remove-trailing-separator": { "version": "1.1.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, "node_modules/repeat-element": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/repeat-string": { "version": "1.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "engines": { "node": ">=0.10" } }, "node_modules/request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, - "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -11225,42 +12087,52 @@ }, "node_modules/request/node_modules/qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, "node_modules/resolve": { - "version": "1.20.0", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11268,20 +12140,24 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve-url": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -11290,44 +12166,42 @@ "node": ">=8" } }, - "node_modules/resumer": { - "version": "0.0.0", - "license": "MIT", - "dependencies": { - "through": "~2.3.4" - } - }, "node_modules/ret": { "version": "0.1.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "engines": { "node": ">=0.12" } }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/revalidator": { "version": "0.1.8", - "license": "Apache 2.0", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==", "engines": { "node": ">= 0.4.0" } }, "node_modules/rfdc": { "version": "1.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -11339,9 +12213,10 @@ } }, "node_modules/rollup": { - "version": "2.58.0", + "version": "2.75.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.6.tgz", + "integrity": "sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -11354,8 +12229,9 @@ }, "node_modules/rollup-plugin-filesize": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz", + "integrity": "sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.8", "boxen": "^5.0.0", @@ -11370,55 +12246,20 @@ "node": ">=10.0.0" } }, - "node_modules/rollup-plugin-filesize/node_modules/acorn": { - "version": "8.7.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/rollup-plugin-filesize/node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/rollup-plugin-filesize/node_modules/terser": { - "version": "5.10.0", + "node_modules/rollup-plugin-filesize/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } + "node": ">=0.1.90" } }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "jest-worker": "^26.2.1", @@ -11429,129 +12270,154 @@ "rollup": "^2.0.0" } }, - "node_modules/rollup-plugin-terser/node_modules/acorn": { - "version": "8.7.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, - "node_modules/rollup-plugin-terser/node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/terser": { - "version": "5.10.0", + "node_modules/rollup-plugin-visualizer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.6.0.tgz", + "integrity": "sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" + "nanoid": "^3.1.32", + "open": "^8.4.0", + "source-map": "^0.7.3", + "yargs": "^17.3.1" }, "bin": { - "terser": "bin/terser" + "rollup-plugin-visualizer": "dist/bin/cli.js" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } + "rollup": "^2.0.0" } }, - "node_modules/rollup-plugin-visualizer": { - "version": "5.5.2", + "node_modules/rollup-plugin-visualizer/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "MIT", "dependencies": { - "nanoid": "^3.1.22", - "open": "^7.4.2", - "source-map": "^0.7.3", - "yargs": "^16.2.0" - }, - "bin": { - "rollup-plugin-visualizer": "dist/bin/cli.js" - }, + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "engines": { - "node": ">=10.16" - }, - "peerDependencies": { - "rollup": "^2.0.0" + "node": "6.* || 8.* || >= 10.*" } }, "node_modules/rollup-plugin-visualizer/node_modules/source-map": { - "version": "0.7.3", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, - "node_modules/rpc-utils": { - "version": "0.4.0", - "license": "(Apache-2.0 OR MIT)", + "node_modules/rollup-plugin-visualizer/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, "dependencies": { - "nanoid": "^3.1.21" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" }, "engines": { "node": ">=12" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, "engines": { - "npm": ">=2.0.0" + "node": ">=12" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } }, "node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dependencies": { "ret": "~0.1.10" } }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/scheduler": { "version": "0.20.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -11564,46 +12430,54 @@ }, "node_modules/secure-compare": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true }, "node_modules/selfsigned": { - "version": "1.10.14", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, - "license": "MIT", "dependencies": { - "node-forge": "^0.10.0" + "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver": { "version": "6.3.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" } }, "node_modules/semver-compare": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true }, "node_modules/send": { - "version": "0.17.1", - "license": "MIT", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -11611,39 +12485,35 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "license": "MIT" - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-javascript": { "version": "6.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -11659,16 +12529,27 @@ }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, - "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -11681,27 +12562,40 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "ISC" + "engines": { + "node": ">= 0.6" + } }, "node_modules/serve-static": { - "version": "1.14.1", - "license": "MIT", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -11709,42 +12603,46 @@ }, "node_modules/server-destroy": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true }, "node_modules/servez": { - "version": "1.12.0", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/servez/-/servez-1.14.1.tgz", + "integrity": "sha512-p0NntkNbUfltQMM19fRXTR/PVUCZzhfXobJ0THzldJaAFoEAMH1e+GC7iKjQebszhQRhvq2tPT8xaJhqt/pNjQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "color-support": "^1.1.3", "optionator": "^0.8.2", - "servez-lib": "^2.4.0" + "servez-lib": "^2.6.0" }, "bin": { "servez": "bin/servez" } }, "node_modules/servez-lib": { - "version": "2.4.0", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/servez-lib/-/servez-lib-2.6.0.tgz", + "integrity": "sha512-4XfLkK8MUWEkWYzlDRPwvZ5aABNEkc8ryrn44IP3eRG132d17TMpSkJ00Zv+61L0kzO5Crv0ijF0xaX4DqfQHg==", "dev": true, - "license": "MIT", "dependencies": { "basic-auth": "^2.0.1", "cors": "^2.8.5", - "debug": "^4.1.1", - "express": "^4.17.1", + "debug": "^4.3.4", + "express": "^4.17.3", "secure-compare": "^3.0.1", - "selfsigned": "^1.10.8", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "server-destroy": "^1.0.1" } }, "node_modules/servez/node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -11755,8 +12653,9 @@ }, "node_modules/servez/node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -11771,6 +12670,8 @@ }, "node_modules/servez/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -11778,8 +12679,9 @@ }, "node_modules/servez/node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -11789,12 +12691,14 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/set-value": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -11806,18 +12710,21 @@ } }, "node_modules/setprototypeof": { - "version": "1.1.1", - "license": "ISC" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shallow-copy": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", + "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -11827,45 +12734,34 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/shortid": { - "version": "2.2.16", - "license": "MIT", - "dependencies": { - "nanoid": "^2.1.0" - } - }, - "node_modules/shortid/node_modules/nanoid": { - "version": "2.1.11", - "license": "MIT" - }, "node_modules/shush": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/shush/-/shush-1.0.1.tgz", + "integrity": "sha512-baDDBPaPcFwVeQNfj1lYkE/NkqQr1WkXUlOePHnA5I8hw9Fz0Tu72ZC0XENeV4tM9tesaGA/Wi2mW07EOeKRuQ==", "dependencies": { - "caller": "~0.0.1", - "strip-json-comments": "~0.1.1" + "caller": "~1.0.1", + "strip-json-comments": "~2.0.1" } }, "node_modules/shush/node_modules/strip-json-comments": { - "version": "0.1.3", - "license": "MIT", - "bin": { - "strip-json-comments": "cli.js" - }, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, "node_modules/side-channel": { - "version": "1.0.4", - "dev": true, - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -11876,13 +12772,23 @@ } }, "node_modules/signal-exit": { - "version": "3.0.5", - "license": "ISC" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -11897,8 +12803,9 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11911,8 +12818,9 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11922,13 +12830,15 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -11936,19 +12846,13 @@ }, "node_modules/smile2emoji": { "version": "1.1.6", - "license": "MIT" - }, - "node_modules/snake-case": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "resolved": "https://registry.npmjs.org/smile2emoji/-/smile2emoji-1.1.6.tgz", + "integrity": "sha512-l5RqlYuqVDUayBSs4tGjvmIrnnSzQZYHyxDdKrf50a8kPxhYritYH40f9AQ4UVR3/e9JZZT8PqOuD0oKhE2Psg==" }, "node_modules/snapdragon": { "version": "0.8.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", @@ -11965,7 +12869,8 @@ }, "node_modules/snapdragon-node": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -11977,7 +12882,8 @@ }, "node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -11987,7 +12893,8 @@ }, "node_modules/snapdragon-util": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dependencies": { "kind-of": "^3.2.0" }, @@ -11997,14 +12904,16 @@ }, "node_modules/snapdragon/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/snapdragon/node_modules/define-property": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -12014,7 +12923,8 @@ }, "node_modules/snapdragon/node_modules/is-accessor-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12024,7 +12934,8 @@ }, "node_modules/snapdragon/node_modules/is-data-descriptor": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12034,7 +12945,8 @@ }, "node_modules/snapdragon/node_modules/is-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -12046,22 +12958,25 @@ }, "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "engines": { "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/socks": { - "version": "2.6.1", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -12069,13 +12984,14 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.1.1", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -12083,22 +12999,26 @@ }, "node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { - "version": "0.6.2", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-resolve": { "version": "0.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -12109,8 +13029,9 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12118,45 +13039,29 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-url": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" }, "node_modules/spawn-command": { "version": "0.0.2-1", - "dev": true, - "license": "MIT" - }, - "node_modules/spectorjs": { - "version": "0.9.27", - "dev": true, - "license": "MIT" - }, - "node_modules/split": { - "version": "0.2.10", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true }, "node_modules/split-string": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dependencies": { "extend-shallow": "^3.0.0" }, @@ -12166,7 +13071,8 @@ }, "node_modules/split-string/node_modules/extend-shallow": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -12177,7 +13083,8 @@ }, "node_modules/split-string/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -12187,13 +13094,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, - "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -12216,8 +13125,9 @@ }, "node_modules/ssri": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -12227,23 +13137,26 @@ }, "node_modules/stack-trace": { "version": "0.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "engines": { "node": "*" } }, "node_modules/static-eval": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", "dev": true, - "license": "MIT", "dependencies": { "escodegen": "^1.11.1" } }, "node_modules/static-eval/node_modules/escodegen": { "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -12263,8 +13176,9 @@ }, "node_modules/static-eval/node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -12275,8 +13189,9 @@ }, "node_modules/static-eval/node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -12291,6 +13206,8 @@ }, "node_modules/static-eval/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -12298,8 +13215,9 @@ }, "node_modules/static-eval/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -12307,8 +13225,9 @@ }, "node_modules/static-eval/node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -12318,7 +13237,8 @@ }, "node_modules/static-extend": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -12329,7 +13249,8 @@ }, "node_modules/static-extend/node_modules/define-property": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -12339,7 +13260,8 @@ }, "node_modules/static-extend/node_modules/is-accessor-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12349,7 +13271,8 @@ }, "node_modules/static-extend/node_modules/is-data-descriptor": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12359,7 +13282,8 @@ }, "node_modules/static-extend/node_modules/is-descriptor": { "version": "0.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -12371,15 +13295,17 @@ }, "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "engines": { "node": ">=0.10.0" } }, "node_modules/static-module": { "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", "dev": true, - "license": "MIT", "dependencies": { "concat-stream": "~1.6.0", "convert-source-map": "^1.5.1", @@ -12397,15 +13323,23 @@ "through2": "~2.0.3" } }, + "node_modules/static-module/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/static-module/node_modules/object-inspect": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true }, "node_modules/static-module/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12418,59 +13352,61 @@ }, "node_modules/static-module/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/stats.js": { "version": "0.17.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" }, "node_modules/statuses": { - "version": "1.5.0", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/stream-chain": { - "version": "2.2.4", - "dev": true, - "license": "BSD-3-Clause" + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true }, "node_modules/stream-combiner": { "version": "0.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", "dependencies": { "duplexer": "~0.1.1" } }, "node_modules/stream-json": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.1.3.tgz", + "integrity": "sha512-y+ChhCov2A5nDqC2aZ6HKXs3OvDlvAp0Ps3BF1P/Iv8tUZJQQsMVaSzk0WryVTVoGITKv01UYahCXMpAs7I0lQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "stream-chain": "^2.0.3" } }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -12484,30 +13420,38 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/string-argv": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6.19" } }, "node_modules/string-to-stream": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.1.0" } }, + "node_modules/string-to-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/string-to-stream/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12520,15 +13464,17 @@ }, "node_modules/string-to-stream/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12539,24 +13485,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "dev": true, - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12564,8 +13512,9 @@ }, "node_modules/stringify-object": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -12577,7 +13526,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12587,31 +13537,35 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-eof": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "engines": { "node": ">=8" }, @@ -12621,8 +13575,9 @@ }, "node_modules/strip-outer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -12632,7 +13587,8 @@ }, "node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -12640,13 +13596,25 @@ "node": ">=4" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/table": { - "version": "6.7.2", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -12658,8 +13626,9 @@ }, "node_modules/table-layout": { "version": "0.4.5", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", + "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", "dev": true, - "license": "MIT", "dependencies": { "array-back": "^2.0.0", "deep-extend": "~0.6.0", @@ -12671,25 +13640,11 @@ "node": ">=4.0.0" } }, - "node_modules/tape": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "deep-equal": "~0.1.0", - "defined": "~0.0.0", - "inherits": "~2.0.1", - "jsonify": "~0.0.0", - "resumer": "~0.0.0", - "through": "~2.3.4" - }, - "bin": { - "tape": "bin/tape" - } - }, "node_modules/tar": { "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -12704,8 +13659,9 @@ }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -12713,10 +13669,41 @@ "node": ">=10" } }, + "node_modules/terser": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/test-value": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", + "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", "dev": true, - "license": "MIT", "dependencies": { "array-back": "^1.0.3", "typical": "^2.6.0" @@ -12727,8 +13714,9 @@ }, "node_modules/test-value/node_modules/array-back": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, - "license": "MIT", "dependencies": { "typical": "^2.6.0" }, @@ -12736,10 +13724,16 @@ "node": ">=0.12.0" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/three": { "resolved": "packages/three", @@ -12747,21 +13741,30 @@ }, "node_modules/through": { "version": "2.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/through2/node_modules/readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12774,27 +13777,31 @@ }, "node_modules/through2/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/tiny-inflate": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "engines": { "node": ">=4" } }, "node_modules/to-object-path": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -12804,7 +13811,8 @@ }, "node_modules/to-regex": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dependencies": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -12817,7 +13825,8 @@ }, "node_modules/to-regex-range": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -12828,7 +13837,8 @@ }, "node_modules/to-regex/node_modules/extend-shallow": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -12839,7 +13849,8 @@ }, "node_modules/to-regex/node_modules/is-extendable": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -12848,16 +13859,18 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -12868,20 +13881,23 @@ }, "node_modules/tr46": { "version": "0.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/trim-repeated": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -12889,9 +13905,15 @@ "node": ">=0.10.0" } }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, "node_modules/troika-three-text": { "version": "0.43.1-alpha.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.43.1-alpha.0.tgz", + "integrity": "sha512-bayeycChrNM4HgpN6Y0GkuL1Ib9eCf0SOMfT0SH0msML5qpICjEdvTSqJUJYdmbv59gJlfAJ2bsnQrkr3IgyZw==", "dependencies": { "bidi-js": "^1.0.2", "troika-three-utils": "^0.43.0", @@ -12901,32 +13923,36 @@ "three": ">=0.103.0" } }, - "node_modules/troika-three-text/node_modules/troika-three-utils": { + "node_modules/troika-three-utils": { "version": "0.43.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.43.0.tgz", + "integrity": "sha512-UVc4jOob1VjrX0awA0dHxmHZ8yvgq8W/kmtihMnMeObm0HNOobPKAWm/N6o34/k/FPgOtUMDHYgkw+TG2RNouA==", "peerDependencies": { "three": ">=0.103.0" } }, "node_modules/troika-worker-utils": { "version": "0.43.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.43.0.tgz", + "integrity": "sha512-8YXWwfviJ1N/9+nuE5dT9RFttmDsIF8CP7d6rRsBBhH55il3fBqpFSuzTlOcdgC1yq8Hmhi6GgIl6eK4Zt+hTw==" }, "node_modules/tsconfig-paths": { - "version": "3.11.0", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -12935,13 +13961,16 @@ } }, "node_modules/tslib": { - "version": "2.3.1", - "license": "0BSD" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -12951,13 +13980,15 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -12967,8 +13998,9 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -12978,7 +14010,8 @@ }, "node_modules/type-is": { "version": "1.6.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -12989,13 +14022,15 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true }, "node_modules/typescript": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13004,30 +14039,20 @@ "node": ">=4.2.0" } }, - "node_modules/typescript-memoize": { - "version": "1.0.1", - "license": "MIT" - }, "node_modules/typical": { "version": "2.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/uint8arrays": { - "version": "2.1.10", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", + "dev": true }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -13036,16 +14061,18 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -13056,24 +14083,27 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-trie": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", "dev": true, - "license": "MIT", "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" @@ -13081,12 +14111,14 @@ }, "node_modules/unicode-trie/node_modules/pako": { "version": "0.2.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true }, "node_modules/union-value": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -13099,23 +14131,26 @@ }, "node_modules/unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/unique-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dependencies": { "crypto-random-string": "^1.0.0" }, @@ -13125,29 +14160,33 @@ }, "node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/unix-path": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unix-path/-/unix-path-0.2.0.tgz", + "integrity": "sha512-x8ccHoiBE8Ykw4mpAqS49vXxaQrovLCyTunbhJgNhtDOpmIdlwnQuA8bHTnQWo+i64gJ4cIwOSn/ZVNAyaiBDQ==", "engines": { "node": ">=6" } }, "node_modules/unpipe": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } }, "node_modules/unset-value": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -13158,7 +14197,8 @@ }, "node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dependencies": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -13170,7 +14210,8 @@ }, "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dependencies": { "isarray": "1.0.0" }, @@ -13180,59 +14221,59 @@ }, "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "engines": { "node": ">=0.10.0" } }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/upath": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "engines": { "node": ">=4", "yarn": "*" } }, - "node_modules/upper-case": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } }, "node_modules/urijs": { - "version": "1.19.7", - "dev": true, - "license": "MIT" + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", + "dev": true }, "node_modules/urix": { "version": "0.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, "node_modules/use": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/use-asset": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-asset/-/use-asset-1.0.4.tgz", + "integrity": "sha512-7/hqDrWa0iMnCoET9W1T07EmD4Eg/Wmoj/X8TGBc++ECRK4m5yTsjP4O6s0yagbxfqIOuUkIxe2/sA+VR2GxZA==", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -13240,23 +14281,15 @@ "react": ">=17.0" } }, - "node_modules/util": { - "version": "0.11.1", - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utile": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha512-ltfvuCJNa/JFOhKBBiQ9qDyyFwLstoMMO1ru0Yg/Mcl8dp1Z3IBaL7n+5dHpyma+d3lCogkgBQnWKtGxzNyqhg==", "dependencies": { "async": "~0.2.9", "deep-equal": "*", @@ -13270,11 +14303,14 @@ } }, "node_modules/utile/node_modules/async": { - "version": "0.2.10" + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "node_modules/utile/node_modules/rimraf": { "version": "2.7.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dependencies": { "glob": "^7.1.3" }, @@ -13284,57 +14320,61 @@ }, "node_modules/utility-types": { "version": "3.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", "engines": { "node": ">= 4" } }, "node_modules/utils-merge": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, - "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-name": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^1.0.3" } }, - "node_modules/varint": { - "version": "6.0.0", - "license": "MIT" - }, "node_modules/vary": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -13343,18 +14383,20 @@ }, "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "node_modules/vite": { - "version": "2.6.10", + "version": "2.9.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.12.tgz", + "integrity": "sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==", "dev": true, - "license": "MIT", "dependencies": { - "esbuild": "^0.13.2", - "postcss": "^8.3.8", - "resolve": "^1.20.0", - "rollup": "^2.57.0" + "esbuild": "^0.14.27", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": "^2.59.0" }, "bin": { "vite": "bin/vite.js" @@ -13382,30 +14424,41 @@ } } }, - "node_modules/vlq": { - "version": "0.2.3", + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "MIT" - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.0", - "license": "MIT", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "node_modules/webidl-conversions": { "version": "3.0.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "node_modules/webm-writer": { "version": "1.0.0", - "license": "WTFPL" + "resolved": "https://registry.npmjs.org/webm-writer/-/webm-writer-1.0.0.tgz", + "integrity": "sha512-xafP4mzUqht03HBXP0Ov2YGsxfD08uncad9fQeshYwQXrcP6Z/4uxd1IUaGKqKigFPAgaD9xb6JEKA8SXLQMLA==" }, "node_modules/whatwg-fetch": { "version": "3.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true }, "node_modules/whatwg-mimetype": { "version": "3.0.0", @@ -13417,7 +14470,8 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13425,7 +14479,8 @@ }, "node_modules/which": { "version": "2.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -13438,8 +14493,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -13451,23 +14506,59 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/widest-line": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, @@ -13476,55 +14567,65 @@ } }, "node_modules/winston": { - "version": "0.8.3", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", "dependencies": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" }, "engines": { - "node": ">= 0.6.0" + "node": ">= 12.0.0" } }, - "node_modules/winston/node_modules/async": { - "version": "0.2.10" - }, - "node_modules/winston/node_modules/colors": { - "version": "0.6.2", + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 6.4.0" } }, - "node_modules/winston/node_modules/pkginfo": { - "version": "0.3.1", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } + "node_modules/winston/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "0.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "engines": { "node": ">=0.4.0" } }, "node_modules/wordwrapjs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", + "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", "dev": true, - "license": "MIT", "dependencies": { "reduce-flatten": "^1.0.1", "typical": "^2.6.1" @@ -13534,12 +14635,14 @@ } }, "node_modules/workerpool": { - "version": "6.1.5", - "license": "Apache-2.0" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13554,7 +14657,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -13567,7 +14671,8 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -13577,15 +14682,18 @@ }, "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { "version": "2.4.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -13593,10 +14701,11 @@ } }, "node_modules/ws": { - "version": "8.2.3", - "license": "MIT", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -13617,72 +14726,84 @@ }, "node_modules/xdg-basedir": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "engines": { "node": ">=4" } }, "node_modules/xhr2": { "version": "0.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", "engines": { "node": ">= 6" } }, "node_modules/xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { - "version": "5.0.8", - "license": "ISC", - "engines": { - "node": ">=10" - } + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { - "version": "16.2.0", - "license": "MIT", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "license": "ISC", - "engines": { - "node": ">=10" + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -13693,9 +14814,136 @@ "node": ">=10" } }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, @@ -13708,8 +14956,9 @@ "link": true }, "node_modules/zustand": { - "version": "3.5.14", - "license": "MIT", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", "engines": { "node": ">=12.7.0" }, @@ -13762,8 +15011,9 @@ }, "packages/three/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13776,8 +15026,9 @@ }, "packages/three/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13791,8 +15042,9 @@ }, "packages/three/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13802,21 +15054,24 @@ }, "packages/three/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "packages/three/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "packages/three/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13835,19 +15090,14 @@ "mime-types": "^2.1.32", "node-fetch": "^2.6.1", "pako": "^2.0.4", - "unix-path": "^0.2.0" - } - }, - "packages/totum/node_modules/node-fetch": { - "version": "2.6.6", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" + "unix-path": "^0.2.0" } }, + "packages/totum/node_modules/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, "packages/wsrtc": { "version": "0.0.6", "license": "ISC", @@ -13862,11 +15112,32 @@ }, "packages/wsrtc/node_modules/dotenv": { "version": "10.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "engines": { "node": ">=10" } }, + "packages/wsrtc/node_modules/ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "packages/zjs": { "version": "0.0.1", "license": "ISC", @@ -13877,71 +15148,54 @@ } }, "dependencies": { - "@3id/common": { - "version": "0.2.1", - "requires": { - "errors-utils": "^0.1.0", - "uint8arrays": "^2.1.5" - } - }, - "@3id/connect": { - "version": "0.2.5", - "requires": { - "@3id/common": "^0.2.1", - "@3id/connect-display": "^0.2.1", - "@3id/window-auth-provider": "^0.2.5", - "@ceramicnetwork/blockchain-utils-linking": "^1.2.0", - "postmsg-rpc": "^2.4.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" - } - }, - "@3id/connect-display": { - "version": "0.2.1", - "requires": { - "@ceramicnetwork/rpc-window": "^0.1.1", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "rxjs": "^6.6.6" - } - }, - "@3id/window-auth-provider": { - "version": "0.2.5", + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "requires": { - "@ceramicnetwork/rpc-window": "^0.1.1", - "caip": "^0.9.2" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "requires": { "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.8" + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" }, "@babel/core": { - "version": "7.15.8", - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" } }, "@babel/eslint-parser": { - "version": "7.16.5", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, "requires": { "eslint-scope": "^5.1.1", @@ -13950,21 +15204,39 @@ } }, "@babel/generator": { - "version": "7.16.8", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "requires": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } } }, "@babel/helper-annotate-as-pure": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.16.7", @@ -13972,37 +15244,45 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "browserslist": "^4.20.2", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", "@babel/helper-replace-supers": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -14016,76 +15296,86 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==" }, "@babel/helper-explode-assignable-expression": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.16.7", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-module-imports": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" } }, "@babel/helper-optimise-call-expression": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7" + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==" }, "@babel/helper-remap-async-to-generator": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", @@ -14094,24 +15384,30 @@ } }, "@babel/helper-replace-supers": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/helper-simple-access": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { "@babel/types": "^7.16.0" @@ -14119,18 +15415,26 @@ }, "@babel/helper-split-export-declaration": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "requires": { "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.16.7" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { - "version": "7.16.7" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" }, "@babel/helper-wrap-function": { "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.16.7", @@ -14140,15 +15444,19 @@ } }, "@babel/helpers": { - "version": "7.15.4", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" } }, "@babel/highlight": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -14156,52 +15464,66 @@ } }, "@babel/parser": { - "version": "7.16.8" + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/plugin-proposal-optional-chaining": "^7.17.12" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", @@ -14209,39 +15531,49 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", @@ -14249,18 +15581,22 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "@babel/plugin-transform-parameters": "^7.17.12" } }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", @@ -14268,42 +15604,52 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14311,6 +15657,8 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -14318,6 +15666,8 @@ }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -14325,6 +15675,8 @@ }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14332,26 +15684,43 @@ }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.14.5", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -14359,6 +15728,8 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14366,6 +15737,8 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -14373,6 +15746,8 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14380,6 +15755,8 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14387,6 +15764,8 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -14394,6 +15773,8 @@ }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -14401,71 +15782,89 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-remap-async-to-generator": "^7.16.8" } }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-classes": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-dotall-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", @@ -14473,14 +15872,18 @@ } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", @@ -14488,14 +15891,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.16.7", + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-function-name": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.16.7", @@ -14504,73 +15911,92 @@ } }, "@babel/plugin-transform-literals": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-member-expression-literals": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-object-super": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", @@ -14578,114 +16004,147 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-property-literals": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.15.1", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.14.9", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", + "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.9" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/types": "^7.17.12" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.14.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.14.9", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.17.12.tgz", + "integrity": "sha512-7S9G2B44EnYOx74mue02t1uD8ckWZ/ee6Uz/qfdzc35uWHX5NgRy9i+iJSb2LFRgMd+QV9zNcStQaazzzZ3n3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz", + "integrity": "sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.7", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-shorthand-properties": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-spread": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.7", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/plugin-transform-unicode-escapes": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7" @@ -14693,6 +16152,8 @@ }, "@babel/plugin-transform-unicode-regex": { "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.16.7", @@ -14700,35 +16161,38 @@ } }, "@babel/preset-env": { - "version": "7.16.8", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -14738,255 +16202,136 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", "@babel/plugin-transform-unicode-escapes": "^7.16.7", "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", + "@babel/types": "^7.18.2", "babel-plugin-polyfill-corejs2": "^0.3.0", "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", + "core-js-compat": "^3.22.1", "semver": "^6.3.0" } }, - "@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.14.5", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" - } - }, - "@babel/runtime": { - "version": "7.15.4", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.16.8", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.8", - "@babel/types": "^7.16.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.16.8", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@ceramicnetwork/3id-did-resolver": { - "version": "1.4.4", - "requires": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/stream-tile": "^1.3.2", - "@ceramicnetwork/streamid": "^1.3.0", - "cids": "~1.1.6", - "cross-fetch": "^3.1.4", - "lru_map": "^0.4.1", - "uint8arrays": "^2.0.5" - } - }, - "@ceramicnetwork/blockchain-utils-linking": { - "version": "1.2.1", - "requires": { - "@stablelib/sha256": "^1.0.0", - "caip": "~0.9.2", - "uint8arrays": "^2.0.5" - } - }, - "@ceramicnetwork/common": { - "version": "1.6.0", - "requires": { - "@ceramicnetwork/streamid": "^1.3.0", - "@overnightjs/logger": "^1.2.0", - "cids": "~1.1.6", - "cross-fetch": "^3.1.4", - "flat": "^5.0.2", - "lodash.clonedeep": "^4.5.0", - "logfmt": "^1.3.2", - "rxjs": "^7.0.0", - "uint8arrays": "^2.0.5" - }, - "dependencies": { - "rxjs": { - "version": "7.4.0", - "requires": { - "tslib": "~2.1.0" - } - }, - "tslib": { - "version": "2.1.0" - } - } - }, - "@ceramicnetwork/http-client": { - "version": "1.4.0", - "requires": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/stream-caip10-link": "^1.1.6", - "@ceramicnetwork/stream-tile": "^1.3.2", - "@ceramicnetwork/streamid": "^1.3.0", - "query-string": "7.0.1", - "rxjs": "^7.0.0" - }, - "dependencies": { - "rxjs": { - "version": "7.4.0", - "requires": { - "tslib": "~2.1.0" - } - }, - "tslib": { - "version": "2.1.0" - } - } - }, - "@ceramicnetwork/rpc-postmessage": { - "version": "0.4.1", - "requires": { - "@ceramicnetwork/rpc-transport": "^0.3.0", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "@ceramicnetwork/transport-subject": "^0.3.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" - } - }, - "@ceramicnetwork/rpc-transport": { - "version": "0.3.1", + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, "requires": { - "@ceramicnetwork/transport-subject": "^0.3.0", - "rpc-utils": "^0.4.0", - "rxjs": "^6.6.6" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, - "@ceramicnetwork/rpc-window": { - "version": "0.1.1", + "@babel/preset-react": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.17.12.tgz", + "integrity": "sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA==", "requires": { - "@ceramicnetwork/rpc-postmessage": "^0.4.0", - "@ceramicnetwork/transport-postmessage": "^0.3.0", - "rpc-utils": "^0.4.0" + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.17.12", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" } }, - "@ceramicnetwork/stream-caip10-link": { - "version": "1.1.6", + "@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", "requires": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/streamid": "^1.3.0", - "caip": "~0.9.2" + "regenerator-runtime": "^0.13.4" } }, - "@ceramicnetwork/stream-tile": { - "version": "1.3.2", + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "requires": { - "@ceramicnetwork/common": "^1.6.0", - "@ceramicnetwork/streamid": "^1.3.0", - "@stablelib/random": "^1.0.0", - "fast-json-patch": "^2.2.1", - "uint8arrays": "^2.0.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, - "@ceramicnetwork/streamid": { - "version": "1.3.0", + "@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "requires": { - "cids": "~1.1.6", - "ipld-dag-cbor": "^0.17.0", - "multibase": "~4.0.2", - "typescript-memoize": "^1.0.0-alpha.4", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" } }, - "@ceramicnetwork/transport-postmessage": { - "version": "0.3.0", + "@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", "requires": { - "@ceramicnetwork/transport-subject": "^0.3.0", - "rxjs": "^6.6.6" + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" } }, - "@ceramicnetwork/transport-subject": { - "version": "0.3.0", - "requires": { - "rxjs": "^6.6.6" - } + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" }, - "@ceramicstudio/idx": { - "version": "0.12.2", + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "requires": { - "@ceramicnetwork/stream-caip10-link": "^1.0.0", - "@ceramicnetwork/stream-tile": "^1.0.0", - "@ceramicstudio/idx-constants": "^1.0.0", - "caip": "^0.9.2", - "cross-fetch": "^3.1.4" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "@ceramicstudio/idx-constants": { - "version": "1.0.0" - }, "@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -15002,6 +16347,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -15011,7 +16358,9 @@ } }, "globals": { - "version": "13.11.0", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -15019,89 +16368,91 @@ }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true } } }, "@ethersproject/abi": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.1.tgz", - "integrity": "sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w==", - "requires": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.3.tgz", + "integrity": "sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw==", + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "@ethersproject/abstract-provider": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz", - "integrity": "sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", + "@ethersproject/networks": "^5.6.3", "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0" + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" } }, "@ethersproject/abstract-signer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz", - "integrity": "sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0" } }, "@ethersproject/address": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.0.tgz", - "integrity": "sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.0" + "@ethersproject/rlp": "^5.6.1" } }, "@ethersproject/base64": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.0.tgz", - "integrity": "sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", "requires": { - "@ethersproject/bytes": "^5.6.0" + "@ethersproject/bytes": "^5.6.1" } }, "@ethersproject/basex": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.0.tgz", - "integrity": "sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/properties": "^5.6.0" } }, "@ethersproject/bignumber": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.0.tgz", - "integrity": "sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "bn.js": "^4.11.9" + "bn.js": "^5.2.1" } }, "@ethersproject/bytes": { @@ -15113,90 +16464,90 @@ } }, "@ethersproject/constants": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.0.tgz", - "integrity": "sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", "requires": { - "@ethersproject/bignumber": "^5.6.0" + "@ethersproject/bignumber": "^5.6.2" } }, "@ethersproject/contracts": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.0.tgz", - "integrity": "sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw==", - "requires": { - "@ethersproject/abi": "^5.6.0", - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", + "requires": { + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/transactions": "^5.6.0" + "@ethersproject/transactions": "^5.6.2" } }, "@ethersproject/hash": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.0.tgz", - "integrity": "sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA==", - "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "@ethersproject/hdnode": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.0.tgz", - "integrity": "sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", "@ethersproject/properties": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "@ethersproject/json-wallets": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz", - "integrity": "sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ==", - "requires": { - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/pbkdf2": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "@ethersproject/keccak256": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.0.tgz", - "integrity": "sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "js-sha3": "0.8.0" } }, @@ -15206,20 +16557,20 @@ "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==" }, "@ethersproject/networks": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.2.tgz", - "integrity": "sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.3.tgz", + "integrity": "sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ==", "requires": { "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/pbkdf2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz", - "integrity": "sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/sha2": "^5.6.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" } }, "@ethersproject/properties": { @@ -15231,224 +16582,251 @@ } }, "@ethersproject/providers": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.4.tgz", - "integrity": "sha512-WAdknnaZ52hpHV3qPiJmKx401BLpup47h36Axxgre9zT+doa/4GC/Ne48ICPxTm0BqndpToHjpLP1ZnaxyE+vw==", - "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/basex": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/hash": "^5.6.0", + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/networks": "^5.6.0", + "@ethersproject/networks": "^5.6.3", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/web": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", "bech32": "1.1.4", "ws": "7.4.6" - }, - "dependencies": { - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } } }, "@ethersproject/random": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.0.tgz", - "integrity": "sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/rlp": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.0.tgz", - "integrity": "sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/sha2": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.0.tgz", - "integrity": "sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.0.tgz", - "integrity": "sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", "requires": { - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "bn.js": "^4.11.9", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "@ethersproject/solidity": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.0.tgz", - "integrity": "sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", - "@ethersproject/sha2": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" } }, "@ethersproject/strings": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.0.tgz", - "integrity": "sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/transactions": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.0.tgz", - "integrity": "sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg==", - "requires": { - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/constants": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/rlp": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0" + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" } }, "@ethersproject/units": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.0.tgz", - "integrity": "sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", "requires": { - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/constants": "^5.6.0", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/wallet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.0.tgz", - "integrity": "sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg==", - "requires": { - "@ethersproject/abstract-provider": "^5.6.0", - "@ethersproject/abstract-signer": "^5.6.0", - "@ethersproject/address": "^5.6.0", - "@ethersproject/bignumber": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", - "@ethersproject/hdnode": "^5.6.0", - "@ethersproject/json-wallets": "^5.6.0", - "@ethersproject/keccak256": "^5.6.0", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/random": "^5.6.0", - "@ethersproject/signing-key": "^5.6.0", - "@ethersproject/transactions": "^5.6.0", - "@ethersproject/wordlists": "^5.6.0" + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "@ethersproject/web": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.0.tgz", - "integrity": "sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", "requires": { - "@ethersproject/base64": "^5.6.0", - "@ethersproject/bytes": "^5.6.0", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "@ethersproject/wordlists": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.0.tgz", - "integrity": "sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", "requires": { - "@ethersproject/bytes": "^5.6.0", - "@ethersproject/hash": "^5.6.0", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", "@ethersproject/logger": "^5.6.0", "@ethersproject/properties": "^5.6.0", - "@ethersproject/strings": "^5.6.0" + "@ethersproject/strings": "^5.6.1" } }, "@gar/promisify": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "@glazed/constants": { - "version": "0.1.1" + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } }, - "@glazed/devtools": { - "version": "0.1.3", + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "requires": { - "@ceramicnetwork/common": "^1.3.0", - "@ceramicnetwork/stream-tile": "^1.2.0", - "@ceramicnetwork/streamid": "^1.1.2", - "@glazed/constants": "^0.1.1", - "@glazed/did-datastore-model": "^0.1.1", - "ajv": "^8.6.2", - "ajv-formats": "^2.1.1", - "change-case": "^4.1.2", - "cids": "^1.1.8", - "fast-deep-equal": "^3.1.3", - "uint8arrays": "^3.0.0" + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "dependencies": { - "uint8arrays": { - "version": "3.0.0", + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, "requires": { - "multiformats": "^9.4.2" + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" } } } }, - "@glazed/did-datastore-model": { - "version": "0.1.1" + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "dev": true, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "dev": true - }, "@mark.probst/typescript-json-schema": { "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@mark.probst/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz", + "integrity": "sha512-OoD+5D7Mka80FIcmvPyuAKV7g5Of5S04R74S4DTAG8pr9REDWySUh9pOloro7SNFwWt/+2f90wyP+DtGHykVfg==", "dev": true, "requires": { "glob": "~7.1.3", @@ -15457,40 +16835,10 @@ "yargs": "^12.0.5" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "dev": true - }, "glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -15500,134 +16848,23 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "@mark.probst/unicode-properties": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mark.probst/unicode-properties/-/unicode-properties-1.1.0.tgz", + "integrity": "sha512-7AQsO0hMmpqDledV7AhBuSYqYPFsKP9PaltMecX9nlnsyFxqtsqUg9/pvB2L/jxvskrDrNkdKYz2KTbQznCtng==", "dev": true, "requires": { "brfs": "^1.4.0", "unicode-trie": "^0.3.0" } }, - "@multiformats/base-x": { - "version": "4.0.1" - }, "@npmcli/fs": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "requires": { "@gar/promisify": "^1.0.1", @@ -15635,7 +16872,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -15645,6 +16884,8 @@ }, "@npmcli/git": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, "requires": { "@npmcli/promise-spawn": "^1.3.2", @@ -15659,10 +16900,14 @@ "dependencies": { "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -15672,6 +16917,8 @@ }, "@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, "requires": { "npm-bundled": "^1.1.1", @@ -15680,6 +16927,8 @@ }, "@npmcli/move-file": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -15688,16 +16937,22 @@ "dependencies": { "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } }, "@npmcli/node-gyp": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, "@npmcli/promise-spawn": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", "dev": true, "requires": { "infer-owner": "^1.0.4" @@ -15705,6 +16960,8 @@ }, "@npmcli/run-script": { "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", "dev": true, "requires": { "@npmcli/node-gyp": "^1.0.2", @@ -15713,13 +16970,6 @@ "read-package-json-fast": "^2.0.1" } }, - "@overnightjs/logger": { - "version": "1.2.1", - "requires": { - "colors": "^1.3.3", - "util": "^0.11.1" - } - }, "@pixiv/three-vrm": { "version": "file:packages/three-vrm", "requires": { @@ -15730,13 +16980,16 @@ } }, "@react-three/fiber": { - "version": "7.0.17", + "version": "7.0.29", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-7.0.29.tgz", + "integrity": "sha512-TE+/iaGrjluGsPwN2RkLXxKD4ak+unsh0YKIFKGcuAOW9jYcAyMGKAtgFO8MS7/HNCrZZQQSg23sJ8IPgtdkDg==", "requires": { "@babel/runtime": "^7.13.10", + "@types/react-reconciler": "^0.26.2", "react-merge-refs": "^1.1.0", "react-reconciler": "^0.26.2", "react-three-fiber": "0.0.0-deprecated", - "react-use-measure": "^2.0.4", + "react-use-measure": "^2.1.1", "resize-observer-polyfill": "^1.5.1", "scheduler": "^0.20.2", "use-asset": "^1.0.4", @@ -15745,7 +16998,9 @@ } }, "@rollup/plugin-babel": { - "version": "5.3.0", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.10.4", @@ -15754,6 +17009,8 @@ "dependencies": { "@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -15763,24 +17020,30 @@ }, "estree-walker": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } }, "@rollup/plugin-node-resolve": { - "version": "13.1.3", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" }, "dependencies": { "@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -15790,12 +17053,16 @@ }, "estree-walker": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } }, "@rollup/pluginutils": { - "version": "4.1.1", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dev": true, "requires": { "estree-walker": "^2.0.1", @@ -15803,156 +17070,92 @@ } }, "@shaderfrog/glsl-parser": { - "version": "0.1.20" - }, - "@stablelib/aead": { - "version": "1.0.1" - }, - "@stablelib/binary": { - "version": "1.0.1", - "requires": { - "@stablelib/int": "^1.0.1" - } - }, - "@stablelib/bytes": { - "version": "1.0.1" - }, - "@stablelib/chacha": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/chacha20poly1305": { - "version": "1.0.1", - "requires": { - "@stablelib/aead": "^1.0.1", - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/poly1305": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/constant-time": { - "version": "1.0.1" - }, - "@stablelib/ed25519": { - "version": "1.0.2", - "requires": { - "@stablelib/random": "^1.0.1", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/hash": { - "version": "1.0.1" - }, - "@stablelib/int": { - "version": "1.0.1" - }, - "@stablelib/keyagreement": { - "version": "1.0.1", - "requires": { - "@stablelib/bytes": "^1.0.1" - } - }, - "@stablelib/poly1305": { - "version": "1.0.1", - "requires": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/random": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha256": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha512": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/wipe": { - "version": "1.0.1" - }, - "@stablelib/x25519": { - "version": "1.0.1", - "requires": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/xchacha20": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/xchacha20poly1305": { - "version": "1.0.1", - "requires": { - "@stablelib/aead": "^1.0.1", - "@stablelib/chacha20poly1305": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1", - "@stablelib/xchacha20": "^1.0.1" - } + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@shaderfrog/glsl-parser/-/glsl-parser-0.1.23.tgz", + "integrity": "sha512-VPXA4Wm1FYtwq+Nu3yCpyFTuI40Vy3rAulLBXfVxpHH6ads4NGd9OCwufSEY6nasfCV2jZjguLWRN9zA2J1dqQ==" }, "@tootallnate/once": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, "@types/estree": { "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/node": { - "version": "17.0.8", + "version": "17.0.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz", + "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==", "dev": true }, "@types/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/react": { + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.12.tgz", + "integrity": "sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-reconciler": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", + "requires": { + "@types/react": "*" + } + }, "@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "requires": { "@types/node": "*" } }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, "@types/three": { "version": "0.132.2", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.132.2.tgz", + "integrity": "sha512-DpaP0sObpHvKX8zdfCqyTK526N8lQ86Qstp6MnQJ3jNYie7Bv9AMRTALuoIH8dgVZ62z9twuNvEarWHXOZwmSw==", "dev": true }, "@ungap/promise-all-settled": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" }, "@vitejs/plugin-react-refresh": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz", + "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==", "dev": true, "requires": { "@babel/core": "^7.14.8", @@ -15969,47 +17172,69 @@ }, "abbrev": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { - "version": "1.3.7", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { "debug": "4" } }, "agentkeepalive": { - "version": "4.2.0", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", "depd": "^1.1.2", "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } } }, "aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -16017,7 +17242,10 @@ } }, "ajv": { - "version": "8.6.3", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -16025,27 +17253,30 @@ "uri-js": "^4.2.2" } }, - "ajv-formats": { - "version": "2.1.1", - "requires": { - "ajv": "^8.0.0" - } - }, "alea": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/alea/-/alea-1.0.1.tgz", + "integrity": "sha512-QU+wv+ziDXaMxRdsQg/aH7sVfWdhKps5YP97IIwFkHCsbDZA3k87JXoZ5/iuemf4ntytzIWeScrRpae8+lDrXA==" }, "ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { "string-width": "^4.1.0" } }, "ansi-colors": { - "version": "4.1.1" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true }, "ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { "type-fest": "^0.21.3" @@ -16053,21 +17284,29 @@ "dependencies": { "type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "anymatch": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -16075,6 +17314,8 @@ "dependencies": { "normalize-path": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "requires": { "remove-trailing-separator": "^1.0.1" } @@ -16083,18 +17324,30 @@ }, "aproba": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, "are-we-there-yet": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -16108,6 +17361,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -16117,43 +17372,59 @@ }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" } }, "arr-diff": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" }, "arr-flatten": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { - "version": "3.1.0" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" }, "array-back": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, "requires": { "typical": "^2.6.1" } }, "array-flatten": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "array-includes": { - "version": "3.1.4", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" } }, "array-union": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -16161,22 +17432,31 @@ }, "array-uniq": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "array-unique": { - "version": "0.3.2" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" }, "array.prototype.flat": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" } }, "asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -16184,78 +17464,115 @@ }, "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "assign-symbols": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { - "version": "1.5.2" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" }, "async-each": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, "asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "atob": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "axios": { "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { "follow-redirects": "^1.14.0" } }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", + "@babel/helper-define-polyfill-provider": "^0.3.1", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.0", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.20.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" + "@babel/helper-define-polyfill-provider": "^0.3.1" } }, "balanced-match": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base": { "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -16268,17 +17585,18 @@ "dependencies": { "define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } } } }, - "base64-js": { - "version": "1.5.1" - }, "basic-auth": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "requires": { "safe-buffer": "5.1.2" @@ -16286,10 +17604,14 @@ }, "batch": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -16302,50 +17624,69 @@ }, "bidi-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.2.tgz", + "integrity": "sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw==", "requires": { "require-from-string": "^2.0.2" } }, - "bignumber.js": { - "version": "9.0.1" - }, "binary-extensions": { - "version": "1.13.1" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, - "blakejs": { - "version": "1.1.1" + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } }, "bn.js": { - "version": "4.12.0" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "body-parser": { - "version": "1.19.0", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "boxen": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", @@ -16360,13 +17701,23 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" } }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -16375,6 +17726,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -16382,14 +17735,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -16399,6 +17758,8 @@ }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16406,6 +17767,8 @@ }, "braces": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -16421,6 +17784,8 @@ }, "brfs": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", "dev": true, "requires": { "quote-stream": "^1.0.1", @@ -16431,6 +17796,8 @@ }, "broadway": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "integrity": "sha512-zivf7KWx8ftTEsXaKfmve6wdSfbDJ6NLXwhwWN4Q1z5+/nsHWALP952KV9jJbJGwjZHEMZABHyuKqEAh3wb2kw==", "requires": { "cliff": "0.1.9", "eventemitter2": "0.4.14", @@ -16440,10 +17807,14 @@ }, "dependencies": { "async": { - "version": "0.2.10" + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "cliff": { "version": "0.1.9", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "integrity": "sha512-2EECQDk23AtYy9WTUDS0UwdlyGJe62IatdR9dOfG/T3+VIoC6/SA5AnYJWGTjXjweTYL360HEGu4DchCeee4Ng==", "requires": { "colors": "0.x.x", "eyes": "0.1.x", @@ -16451,16 +17822,24 @@ } }, "colors": { - "version": "0.6.2" + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" }, "eventemitter2": { - "version": "0.4.14" + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==" }, "pkginfo": { - "version": "0.3.1" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==" }, "winston": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "integrity": "sha1-YdCDD6aZcGISIGsKK1ymmpMENmg=", "requires": { "async": "0.2.x", "colors": "0.6.x", @@ -16473,10 +17852,14 @@ } }, "brorand": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "brotli-size": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz", + "integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==", "dev": true, "requires": { "duplexer": "0.1.1" @@ -16484,48 +17867,68 @@ "dependencies": { "duplexer": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", "dev": true } } }, "browser-or-node": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz", + "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==", "dev": true }, "browser-stdout": { - "version": "1.3.1" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserslist": { - "version": "4.19.1", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" } }, "buffer-equal": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", "dev": true }, "buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builtin-modules": { - "version": "3.2.0", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, "builtins": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, "bytes": { - "version": "3.1.0" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "cacache": { "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "requires": { "@npmcli/fs": "^1.0.0", @@ -16550,12 +17953,16 @@ "dependencies": { "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } }, "cache-base": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -16568,82 +17975,57 @@ "unset-value": "^1.0.0" } }, - "caip": { - "version": "0.9.2" - }, "call-bind": { "version": "1.0.2", - "dev": true, + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } }, "caller": { - "version": "0.0.1", - "requires": { - "tape": "~2.3.2" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz", + "integrity": "sha512-tfj+ErW/0SbOyfoXriRtdjCMTwrZAvLXj2jHqlh8YCcgoZVzUI22E/JJLxbiuZqDs0Ke7BuRrHTVuxm3EwYbJQ==" }, "callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camel-case": { - "version": "4.1.2", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "camelcase": { - "version": "6.2.1" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "caniuse-lite": { - "version": "1.0.30001299" - }, - "canonicalize": { - "version": "1.0.5" - }, - "capital-case": { - "version": "1.0.4", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } + "version": "1.0.30001352", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", + "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==" }, "caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, - "change-case": { - "version": "4.1.2", - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "chokidar": { "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -16661,6 +18043,8 @@ "dependencies": { "glob-parent": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -16668,6 +18052,8 @@ "dependencies": { "is-glob": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -16678,27 +18064,14 @@ }, "chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, - "cids": { - "version": "1.1.9", - "requires": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, "class-utils": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -16708,24 +18081,32 @@ "dependencies": { "define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } }, "is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -16733,25 +18114,35 @@ }, "dependencies": { "kind-of": { - "version": "5.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } } } }, "classnames": { - "version": "2.3.1" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-boxes": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true }, "cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { "restore-cursor": "^3.1.0" @@ -16759,6 +18150,8 @@ }, "cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { "slice-ansi": "^3.0.0", @@ -16767,6 +18160,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -16774,6 +18169,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -16781,10 +18178,14 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -16796,65 +18197,225 @@ }, "cliff": { "version": "0.1.10", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", + "integrity": "sha512-roZWcC2Cxo/kKjRXw7YUpVNtxJccbvcl7VzTjUYgLQk6Ot0R8bm2netbhSZYWWNrKlOO/7HD6GXHl8dtzE6SiQ==", "requires": { "colors": "~1.0.3", "eyes": "~0.1.8", "winston": "0.8.x" }, "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, "colors": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==" + }, + "winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "requires": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" + } + } + } + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } } } }, - "cliui": { - "version": "7.0.4", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "clone": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, "code-point-at": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true }, "collection-utils": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collection-utils/-/collection-utils-1.0.1.tgz", + "integrity": "sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==", "dev": true }, "collection-visit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" } }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "colorette": { - "version": "2.0.16", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", + "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==", "dev": true }, - "colors": { - "version": "1.4.0" + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } }, "combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -16862,6 +18423,8 @@ }, "command-line-args": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "dev": true, "requires": { "array-back": "^2.0.0", @@ -16871,6 +18434,8 @@ }, "command-line-usage": { "version": "5.0.5", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz", + "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==", "dev": true, "requires": { "array-back": "^2.0.0", @@ -16880,20 +18445,31 @@ } }, "commander": { - "version": "2.20.3" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -16902,8 +18478,16 @@ "typedarray": "^0.0.6" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -16917,6 +18501,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -16926,6 +18512,8 @@ }, "concurrently": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -16940,6 +18528,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -16947,6 +18537,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -16955,6 +18547,8 @@ "dependencies": { "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -16962,8 +18556,21 @@ } } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -16971,23 +18578,79 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, "configstore": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", "requires": { "dot-prop": "^4.1.0", "graceful-fs": "^4.1.2", @@ -16999,59 +18662,80 @@ }, "console-control-strings": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, - "constant-case": { - "version": "3.0.4", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, "content-disposition": { - "version": "0.5.3", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "content-type": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "requires": { "safe-buffer": "~5.1.1" } }, "cookie": { - "version": "0.4.0" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, "cookie-signature": { - "version": "1.0.6" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "copy-descriptor": { - "version": "0.1.1" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" }, "core-js-compat": { - "version": "3.20.2", + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", "dev": true, "requires": { - "browserslist": "^4.19.1", + "browserslist": "^4.20.3", "semver": "7.0.0" }, "dependencies": { "semver": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, "core-util-is": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cors": { "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "requires": { "object-assign": "^4", @@ -17060,6 +18744,8 @@ }, "cosmiconfig": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -17069,19 +18755,10 @@ "yaml": "^1.10.0" } }, - "cross-fetch": { - "version": "3.1.4", - "requires": { - "node-fetch": "2.6.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1" - } - } - }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -17090,39 +18767,37 @@ } }, "crypto-random-string": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" }, - "cycle": { - "version": "1.0.3" + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" }, - "dag-jose-utils": { - "version": "0.1.1", - "requires": { - "cids": "^1.1.6", - "ipld-dag-cbor": "^0.17.1", - "multihashes": "^4.0.2", - "uint8arrays": "^2.1.4", - "varint": "^6.0.0" - } + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==" }, "dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" } }, - "data-uri-to-buffer": { - "version": "4.0.0" - }, "data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "requires": { - "abab": "^2.0.3", + "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" + "whatwg-url": "^11.0.0" }, "dependencies": { "tr46": { @@ -17139,9 +18814,9 @@ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, "whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "requires": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -17151,139 +18826,149 @@ }, "date-fns": { "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", "dev": true }, "debounce": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "debug": { - "version": "4.3.2", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } }, "decamelize": { - "version": "4.0.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true }, "decode-uri-component": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" }, "dedent": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-equal": { - "version": "0.1.2" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "requires": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + } }, "deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, "define-properties": { - "version": "1.1.3", - "dev": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" } }, - "defined": { - "version": "0.0.0" - }, "delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "delegates": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, - "delimit-stream": { - "version": "0.1.0" - }, "depd": { - "version": "1.1.2" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4" - }, - "did-jwt": { - "version": "5.8.0", - "requires": { - "@stablelib/ed25519": "^1.0.2", - "@stablelib/random": "^1.0.1", - "@stablelib/sha256": "^1.0.1", - "@stablelib/x25519": "^1.0.1", - "@stablelib/xchacha20poly1305": "^1.0.1", - "canonicalize": "^1.0.5", - "did-resolver": "^3.1.1", - "elliptic": "^6.5.4", - "js-sha3": "^0.8.0", - "multiformats": "^9.4.8", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "did-resolver": { - "version": "3.1.2" - }, - "dids": { - "version": "2.4.0", - "requires": { - "@stablelib/random": "^1.0.1", - "cids": "^1.1.6", - "dag-jose-utils": "^0.1.1", - "did-jwt": "^5.6.1", - "did-resolver": "^3.1.0", - "query-string": "^7.0.0", - "rpc-utils": "^0.3.4", - "uint8arrays": "^2.1.5" - }, - "dependencies": { - "rpc-utils": { - "version": "0.3.4", - "requires": { - "nanoid": "^3.1.21" - } - } - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "diff": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "director": { - "version": "1.2.7" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", + "integrity": "sha512-Cuia7IBvmSanM+7ZmKYtP9hq+Du7n7mv2cpCt8GiEIkUDni0ecSlVCFJUL6HWwGzqLX03uA49xVOZOjwnabWmQ==" }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" } }, "dom-serializer": { - "version": "1.3.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -17293,16 +18978,22 @@ "dependencies": { "entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true } } }, "domelementtype": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { - "version": "4.3.0", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "requires": { "domelementtype": "^2.2.0" @@ -17310,6 +19001,8 @@ }, "domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { "dom-serializer": "^1.0.1", @@ -17317,34 +19010,43 @@ "domhandler": "^4.2.0" } }, - "dot-case": { - "version": "3.0.4", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "dot-prop": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } }, "dotenv": { - "version": "8.6.0" + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, "duplexer": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "duplexer2": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "requires": { "readable-stream": "^2.0.2" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -17358,6 +19060,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -17367,6 +19071,8 @@ }, "ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -17374,13 +19080,19 @@ } }, "ee-first": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.43" + "version": "1.4.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", + "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==" }, "elliptic": { "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -17389,28 +19101,50 @@ "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "email-addresses": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", "dev": true }, "emoji-regex": { - "version": "8.0.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "encodeurl": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "encoding": { "version": "0.1.13", - "dev": true, + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "devOptional": true, "requires": { "iconv-lite": "^0.6.2" }, "dependencies": { "iconv-lite": { "version": "0.6.3", - "dev": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -17418,10 +19152,14 @@ } }, "encoding-japanese": { - "version": "1.0.30" + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-1.0.30.tgz", + "integrity": "sha512-bd/DFLAoJetvv7ar/KIpE3CNO8wEuyrt9Xuw6nSMiZ+Vrz/Q21BPsMHvARL2Wz6IKHKXgb+DWZqtRg1vql9cBg==" }, "end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" @@ -17429,106 +19167,293 @@ }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "3.0.1", - "dev": true + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + } + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", + "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.43", + "esbuild-android-arm64": "0.14.43", + "esbuild-darwin-64": "0.14.43", + "esbuild-darwin-arm64": "0.14.43", + "esbuild-freebsd-64": "0.14.43", + "esbuild-freebsd-arm64": "0.14.43", + "esbuild-linux-32": "0.14.43", + "esbuild-linux-64": "0.14.43", + "esbuild-linux-arm": "0.14.43", + "esbuild-linux-arm64": "0.14.43", + "esbuild-linux-mips64le": "0.14.43", + "esbuild-linux-ppc64le": "0.14.43", + "esbuild-linux-riscv64": "0.14.43", + "esbuild-linux-s390x": "0.14.43", + "esbuild-netbsd-64": "0.14.43", + "esbuild-openbsd-64": "0.14.43", + "esbuild-sunos-64": "0.14.43", + "esbuild-windows-32": "0.14.43", + "esbuild-windows-64": "0.14.43", + "esbuild-windows-arm64": "0.14.43" + } + }, + "esbuild-android-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", + "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", + "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", + "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", + "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", + "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", + "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", + "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", + "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", + "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", + "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", + "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", + "dev": true, + "optional": true }, - "env-paths": { - "version": "2.2.1", - "dev": true + "esbuild-linux-ppc64le": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", + "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", + "dev": true, + "optional": true }, - "err-code": { - "version": "3.0.1" + "esbuild-linux-riscv64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", + "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", + "dev": true, + "optional": true }, - "error-ex": { - "version": "1.3.2", + "esbuild-linux-s390x": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", + "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } + "optional": true }, - "errors-utils": { - "version": "0.1.0" + "esbuild-netbsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", + "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", + "dev": true, + "optional": true }, - "es-abstract": { - "version": "1.19.1", + "esbuild-openbsd-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", + "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } + "optional": true }, - "es-to-primitive": { - "version": "1.2.1", + "esbuild-sunos-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", + "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } + "optional": true }, - "esbuild": { - "version": "0.13.8", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.13.8", - "esbuild-darwin-64": "0.13.8", - "esbuild-darwin-arm64": "0.13.8", - "esbuild-freebsd-64": "0.13.8", - "esbuild-freebsd-arm64": "0.13.8", - "esbuild-linux-32": "0.13.8", - "esbuild-linux-64": "0.13.8", - "esbuild-linux-arm": "0.13.8", - "esbuild-linux-arm64": "0.13.8", - "esbuild-linux-mips64le": "0.13.8", - "esbuild-linux-ppc64le": "0.13.8", - "esbuild-netbsd-64": "0.13.8", - "esbuild-openbsd-64": "0.13.8", - "esbuild-sunos-64": "0.13.8", - "esbuild-windows-32": "0.13.8", - "esbuild-windows-64": "0.13.8", - "esbuild-windows-arm64": "0.13.8" - } + "esbuild-windows-32": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", + "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", + "dev": true, + "optional": true }, - "esbuild-linux-64": { - "version": "0.13.8", + "esbuild-windows-64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", + "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.43", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", + "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", "dev": true, "optional": true }, "escalade": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { - "version": "1.0.5" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -17540,10 +19465,14 @@ "dependencies": { "esprima": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true }, "levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -17552,6 +19481,8 @@ }, "optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", @@ -17564,15 +19495,21 @@ }, "prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true }, "type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -17582,6 +19519,8 @@ }, "eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", @@ -17628,6 +19567,8 @@ "dependencies": { "@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -17635,6 +19576,8 @@ }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17645,6 +19588,8 @@ }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -17652,6 +19597,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -17660,6 +19607,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -17667,14 +19616,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "globals": { - "version": "13.11.0", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -17682,14 +19637,20 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -17697,6 +19658,8 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -17706,20 +19669,28 @@ }, "eslint-config-mdcs": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-mdcs/-/eslint-config-mdcs-5.0.0.tgz", + "integrity": "sha512-d4lzeT/sQ3TkI69hd+N/dtQ15g3GrbIboTfCAw6FaDQTLjWK2O3+dNfOOfkAC5TlwyU9BxztR1TE+x8iSzyuPw==", "dev": true }, "eslint-config-semistandard": { "version": "15.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-15.0.1.tgz", + "integrity": "sha512-sfV+qNBWKOmF0kZJll1VH5XqOAdTmLlhbOl9WKI11d2eMEe+Kicxnpm24PQWHOqAfk5pAWU2An0LjNCXKa4Usg==", "dev": true, "requires": {} }, "eslint-config-standard": { "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true, "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "requires": { "debug": "^3.2.7", @@ -17728,6 +19699,8 @@ "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -17736,16 +19709,19 @@ } }, "eslint-module-utils": { - "version": "2.7.1", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", "dev": true, "requires": { "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -17753,15 +19729,29 @@ } } }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, "eslint-plugin-html": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.2.0.tgz", + "integrity": "sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==", "dev": true, "requires": { "htmlparser2": "^7.1.2" } }, "eslint-plugin-import": { - "version": "2.25.2", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -17769,18 +19759,20 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.0", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.7.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -17788,6 +19780,8 @@ }, "doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -17795,12 +19789,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "eslint-plugin-node": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "requires": { "eslint-plugin-es": "^3.0.0", @@ -17811,31 +19809,31 @@ "semver": "^6.1.0" }, "dependencies": { - "eslint-plugin-es": { - "version": "3.0.1", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - } - }, "ignore": { - "version": "5.1.8", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true } } }, "eslint-plugin-promise": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", "dev": true }, "eslint-plugin-standard": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", + "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", "dev": true, "requires": {} }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -17844,6 +19842,8 @@ }, "eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -17851,16 +19851,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", @@ -17870,94 +19876,116 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.2.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" }, "dependencies": { "estraverse": { - "version": "5.2.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } }, "estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "estree-walker": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { - "version": "1.8.1" + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "ethers": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.4.tgz", - "integrity": "sha512-62UIfxAQXdf67TeeOaoOoPctm5hUlYgfd0iW3wxfj7qRYKDcvvy0f+sJ3W2/Pyx77R8dblvejA8jokj+lS+ATQ==", - "requires": { - "@ethersproject/abi": "5.6.1", - "@ethersproject/abstract-provider": "5.6.0", - "@ethersproject/abstract-signer": "5.6.0", - "@ethersproject/address": "5.6.0", - "@ethersproject/base64": "5.6.0", - "@ethersproject/basex": "5.6.0", - "@ethersproject/bignumber": "5.6.0", + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.8.tgz", + "integrity": "sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w==", + "requires": { + "@ethersproject/abi": "5.6.3", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", "@ethersproject/bytes": "5.6.1", - "@ethersproject/constants": "5.6.0", - "@ethersproject/contracts": "5.6.0", - "@ethersproject/hash": "5.6.0", - "@ethersproject/hdnode": "5.6.0", - "@ethersproject/json-wallets": "5.6.0", - "@ethersproject/keccak256": "5.6.0", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", "@ethersproject/logger": "5.6.0", - "@ethersproject/networks": "5.6.2", - "@ethersproject/pbkdf2": "5.6.0", + "@ethersproject/networks": "5.6.3", + "@ethersproject/pbkdf2": "5.6.1", "@ethersproject/properties": "5.6.0", - "@ethersproject/providers": "5.6.4", - "@ethersproject/random": "5.6.0", - "@ethersproject/rlp": "5.6.0", - "@ethersproject/sha2": "5.6.0", - "@ethersproject/signing-key": "5.6.0", - "@ethersproject/solidity": "5.6.0", - "@ethersproject/strings": "5.6.0", - "@ethersproject/transactions": "5.6.0", - "@ethersproject/units": "5.6.0", - "@ethersproject/wallet": "5.6.0", - "@ethersproject/web": "5.6.0", - "@ethersproject/wordlists": "5.6.0" + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" } }, "event-stream": { "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", "requires": { "duplexer": "~0.1.1", "from": "~0", @@ -17970,6 +19998,8 @@ "dependencies": { "split": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "requires": { "through": "2" } @@ -17977,10 +20007,14 @@ } }, "eventemitter2": { - "version": "6.4.4" + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", + "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==" }, "execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -17996,6 +20030,8 @@ }, "expand-brackets": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -18008,30 +20044,40 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } }, "is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -18039,45 +20085,52 @@ }, "dependencies": { "kind-of": { - "version": "5.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "express": { - "version": "4.17.1", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -18085,27 +20138,42 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, "extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } }, "extglob": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -18119,6 +20187,8 @@ "dependencies": { "define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -18127,67 +20197,72 @@ }, "extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "eyes": { - "version": "0.1.8" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" }, "falafel": { - "version": "2.2.4", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", + "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", "dev": true, "requires": { "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "dev": true - } + "isarray": "^2.0.1" } }, "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-json-patch": { - "version": "2.2.1", - "requires": { - "fast-deep-equal": "^2.0.1" - }, - "dependencies": { - "fast-deep-equal": { - "version": "2.0.1" - } - } + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fetch-blob": { - "version": "3.1.3", - "requires": { - "web-streams-polyfill": "^3.0.3" - } + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, "file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filename-reserved-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true }, "filenamify": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, "requires": { "filename-reserved-regex": "^2.0.0", @@ -18197,10 +20272,14 @@ }, "filesize": { "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", "dev": true }, "fill-range": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -18208,34 +20287,39 @@ "to-regex-range": "^2.1.0" } }, - "filter-obj": { - "version": "1.1.0" - }, "finalhandler": { - "version": "1.1.2", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -18243,61 +20327,21 @@ "pkg-dir": "^4.1.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } } } }, "find-replace": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", + "integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==", "dev": true, "requires": { "array-back": "^1.0.4", @@ -18306,6 +20350,8 @@ "dependencies": { "array-back": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "requires": { "typical": "^2.6.0" @@ -18315,16 +20361,22 @@ }, "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" } }, "flat": { - "version": "5.0.2" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -18333,6 +20385,8 @@ }, "flatiron": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", + "integrity": "sha512-+X3/0hl9in0FJPsPB5/xTpkxxMzDSoA4cyon46HtXhrfEbpqBvKxpR+HJGqMjKv4jcBmoLjEtTVIAADJjLjv8A==", "requires": { "broadway": "~0.3.2", "director": "1.2.7", @@ -18341,26 +20395,43 @@ } }, "flatted": { - "version": "3.2.2", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "follow-redirects": { - "version": "1.14.4" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, - "for-in": { - "version": "1.0.2" + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } }, - "foreach": { - "version": "2.0.5", - "dev": true + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, "forever": { - "version": "4.0.1", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/forever/-/forever-4.0.3.tgz", + "integrity": "sha512-N8aVtvB3bdh3lXPE9Rb+ErISSnJsAkv0GgZ0h6qtN8UXFgcSqJNMyBst9r3SBNk6+n4iBVaZso16mr1SUVvG3Q==", "requires": { "async": "^1.5.2", "cliff": "^0.1.10", "clone": "^2.1.2", - "colors": "^0.6.2", + "colors": "0.6.2", "configstore": "4.0.0", "eventemitter2": "6.4.4", "flatiron": "~0.4.3", @@ -18368,22 +20439,28 @@ "mkdirp": "^0.5.5", "nssocket": "^0.6.0", "object-assign": "^4.1.1", - "prettyjson": "^1.2.1", + "prettyjson": "^1.2.2", "shush": "^1.0.0", - "winston": "~0.8.1" + "winston": "^3.4.0" }, "dependencies": { "colors": { - "version": "0.6.2" + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" } } }, "forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "forever-monitor": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-3.0.3.tgz", + "integrity": "sha512-7YGDo0UlbMy++6G3lzncWISDaT5CVp+yPVAkZ7FDFF0ec+0HKgBOWOhPGKpMF0hjcm3Ps/HbtrETrQLYREZ7YQ==", "requires": { "async": "^1.5.2", "chokidar": "^2.1.8", @@ -18394,6 +20471,8 @@ }, "form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -18401,29 +20480,33 @@ "mime-types": "^2.1.12" } }, - "formdata-polyfill": { - "version": "4.0.10", - "requires": { - "fetch-blob": "^3.1.2" - } - }, "forwarded": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fragment-cache": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "requires": { "map-cache": "^0.2.2" } }, "fresh": { - "version": "0.5.2" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "from": { - "version": "0.1.7" + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" }, "fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -18433,24 +20516,59 @@ }, "fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { "minipass": "^3.0.0" } }, "fs.realpath": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "function-bind": { "version": "1.1.1", - "dev": true + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "gauge": { "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "dev": true, "requires": { "aproba": "^1.0.3", @@ -18465,10 +20583,14 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -18476,6 +20598,8 @@ }, "string-width": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -18485,6 +20609,8 @@ }, "strip-ansi": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -18493,26 +20619,36 @@ } }, "gensync": { - "version": "1.0.0-beta.2" + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { - "version": "2.0.5" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-own-enumerable-property-symbols": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -18520,17 +20656,22 @@ }, "get-symbol-description": { "version": "1.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" } }, "get-value": { - "version": "2.0.6" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" }, "getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -18538,6 +20679,8 @@ }, "gh-pages": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", "dev": true, "requires": { "async": "^2.6.1", @@ -18550,7 +20693,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -18559,27 +20704,35 @@ } }, "glob": { - "version": "7.2.0", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { "is-glob": "^4.0.1" } }, "globals": { - "version": "11.12.0" + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -18591,28 +20744,40 @@ "dependencies": { "pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } }, "gpt-3-encoder": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.3.tgz", + "integrity": "sha512-Ep1+I5hQ5VcLF5qKc2FyqvSj2T0Al9LNC0uXNq6Cx0Twl6Gq2RWG7Q5Mo/9Of30xcAegsgemNtuulPEiwanUww==" }, "graceful-fs": { - "version": "4.2.8" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "graphql": { "version": "0.11.7", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.11.7.tgz", + "integrity": "sha512-x7uDjyz8Jx+QPbpCFCMQ8lltnQa4p4vSYHx6ADe8rVYRTdsyhCJbvSty5DAsLVmU6cGakl+r8HQYolKHxk/tiw==", "dev": true, "requires": { "iterall": "1.1.3" } }, "growl": { - "version": "1.10.5" + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" }, "gzip-size": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dev": true, "requires": { "duplexer": "^0.1.2" @@ -18620,10 +20785,14 @@ }, "har-schema": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true }, "har-validator": { "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { "ajv": "^6.12.3", @@ -18632,6 +20801,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -18642,41 +20813,61 @@ }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true } } }, "has": { "version": "1.0.3", - "dev": true, + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { "function-bind": "^1.1.1" } }, "has-bigints": { - "version": "1.0.1", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } }, "has-symbols": { - "version": "1.0.2", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "requires": { "has-symbols": "^1.0.2" } }, "has-unicode": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, "has-value": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -18685,6 +20876,8 @@ }, "has-values": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -18692,6 +20885,8 @@ "dependencies": { "kind-of": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "requires": { "is-buffer": "^1.1.5" } @@ -18700,23 +20895,22 @@ }, "hash.js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "he": { - "version": "1.2.0" - }, - "header-case": { - "version": "2.0.4", - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "hmac-drbg": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -18725,6 +20919,8 @@ }, "hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18732,6 +20928,8 @@ }, "htmlparser2": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -18742,25 +20940,26 @@ }, "http-cache-semantics": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-errors": { - "version": "1.7.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3" - } + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { "@tootallnate/once": "1", @@ -18770,6 +20969,8 @@ }, "http-signature": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -18778,7 +20979,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -18787,33 +20990,42 @@ }, "human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, "humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "requires": { "ms": "^2.0.0" } }, "i": { - "version": "0.3.7" + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", + "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" }, "iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, - "ieee754": { - "version": "1.2.1" - }, "ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "ignore-walk": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, "requires": { "minimatch": "^3.0.4" @@ -18821,6 +21033,8 @@ }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -18828,32 +21042,45 @@ } }, "imurmurhash": { - "version": "0.1.4" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "infer-owner": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.4" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.8" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "internal-slot": { "version": "1.0.3", - "dev": true, + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -18862,104 +21089,98 @@ }, "invert-kv": { "version": "2.0.0", - "dev": true - }, - "ip": { - "version": "1.1.5", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1" - }, - "ipld-dag-cbor": { - "version": "0.17.1", - "requires": { - "borc": "^2.1.2", - "cids": "^1.0.0", - "is-circular": "^1.0.2", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "uint8arrays": "^2.1.3" - }, - "dependencies": { - "borc": { - "version": "2.1.2", - "requires": { - "bignumber.js": "^9.0.0", - "buffer": "^5.5.0", - "commander": "^2.15.0", - "ieee754": "^1.1.13", - "iso-url": "~0.4.7", - "json-text-sequence": "~0.1.0", - "readable-stream": "^3.6.0" - } - }, - "buffer": { - "version": "5.7.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "iso-url": { - "version": "0.4.7" - }, - "json-text-sequence": { - "version": "0.1.1", - "requires": { - "delimit-stream": "0.1.0" - } - } - } + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-accessor-descriptor": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { - "version": "6.0.3" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-arrayish": { - "version": "0.2.1", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-bigint": { "version": "1.0.4", - "dev": true, + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "requires": { "has-bigints": "^1.0.1" } }, "is-binary-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "requires": { "binary-extensions": "^1.0.0" } }, "is-boolean-object": { "version": "1.1.2", - "dev": true, + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, "is-buffer": { - "version": "1.1.6" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } }, "is-callable": { "version": "1.2.4", - "dev": true - }, - "is-circular": { - "version": "1.0.2" + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-core-module": { - "version": "2.8.0", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -18967,24 +21188,31 @@ }, "is-data-descriptor": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { - "version": "6.0.3" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, "is-date-object": { "version": "1.0.5", - "dev": true, + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-descriptor": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -18992,69 +21220,101 @@ }, "dependencies": { "kind-of": { - "version": "6.0.3" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, "is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extendable": { - "version": "0.1.1" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, "is-extglob": { - "version": "2.1.1" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } }, "is-lambda": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + }, "is-module": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "is-negative-zero": { - "version": "2.0.1", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" } }, "is-number-object": { - "version": "1.0.6", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-obj": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" }, "is-plain-obj": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" }, "is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { "isobject": "^3.0.1" } }, "is-regex": { "version": "1.1.4", - "dev": true, + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -19062,69 +21322,128 @@ }, "is-regexp": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + }, "is-shared-array-buffer": { - "version": "1.0.1", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", - "dev": true + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-string": { "version": "1.0.7", - "dev": true, + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-symbol": { "version": "1.0.4", - "dev": true, + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" }, "is-url": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + }, "is-weakref": { - "version": "1.0.1", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" } }, "is-windows": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" } }, "isarray": { - "version": "1.0.0" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "isexe": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "isomorphic-fetch": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", "dev": true, "requires": { "node-fetch": "^1.0.1", @@ -19133,10 +21452,14 @@ "dependencies": { "is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, "node-fetch": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dev": true, "requires": { "encoding": "^0.1.11", @@ -19146,14 +21469,20 @@ } }, "isstream": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "iterall": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz", + "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ==", "dev": true }, "jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -19163,10 +21492,14 @@ "dependencies": { "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19176,16 +21509,24 @@ }, "js-base64": { "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "dev": true }, "js-sha3": { - "version": "0.8.0" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "js-tokens": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -19194,27 +21535,42 @@ }, "jsbn": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "jsesc": { - "version": "2.5.2" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-6": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-6/-/json-6-1.1.4.tgz", + "integrity": "sha512-ljsNv5ARPvSDpWmjFwja8NjzzEFkOis2OMRtvO5GRtr217DXaQseFYZO6fgVPThPPuaWpOI5/cs/fUCfqQlWiA==" }, "json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "json-stable-stringify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", "dev": true, "requires": { "jsonify": "~0.0.0" @@ -19222,34 +21578,46 @@ }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { - "version": "2.2.0", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, "jsonify": { - "version": "0.0.0" + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==", + "dev": true }, "jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true }, "jsprim": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", @@ -19258,44 +21626,28 @@ "verror": "1.10.0" } }, - "key-did-provider-ed25519": { - "version": "1.1.0", - "requires": { - "@stablelib/ed25519": "^1.0.1", - "did-jwt": "^5.0.1", - "fast-json-stable-stringify": "^2.1.0", - "rpc-utils": "^0.3.4", - "uint8arrays": "^2.1.5" - }, - "dependencies": { - "rpc-utils": { - "version": "0.3.4", - "requires": { - "nanoid": "^3.1.21" - } - } - } - }, - "key-did-resolver": { - "version": "1.4.0", - "requires": { - "@stablelib/ed25519": "^1.0.2", - "multibase": "~4.0.2", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" - } - }, "kind-of": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "lazy": { - "version": "1.0.11" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==" }, "lcid": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { "invert-kv": "^2.0.0" @@ -19303,6 +21655,8 @@ }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -19311,10 +21665,14 @@ }, "lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "lint-staged": { "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -19336,6 +21694,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -19343,6 +21703,8 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -19350,6 +21712,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -19358,6 +21722,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -19365,14 +21731,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "commander": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -19380,22 +21752,30 @@ }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "micromatch": { - "version": "4.0.4", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -19403,6 +21783,8 @@ }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -19411,7 +21793,9 @@ } }, "listr2": { - "version": "3.13.5", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, "requires": { "cli-truncate": "^2.1.0", @@ -19419,26 +21803,15 @@ "log-update": "^4.0.0", "p-map": "^4.0.0", "rfdc": "^1.3.0", - "rxjs": "^7.4.0", + "rxjs": "^7.5.1", "through": "^2.3.8", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "rxjs": { - "version": "7.4.0", - "dev": true, - "requires": { - "tslib": "~2.1.0" - } - }, - "tslib": { - "version": "2.1.0", - "dev": true - } } }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -19447,29 +21820,38 @@ }, "lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0" - }, "lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lodash.padend": { "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", "dev": true }, "lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -19477,12 +21859,16 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19490,18 +21876,26 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" } @@ -19510,6 +21904,8 @@ }, "log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { "ansi-escapes": "^4.3.0", @@ -19520,6 +21916,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -19527,6 +21925,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -19534,10 +21934,14 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -19547,30 +21951,30 @@ } } }, - "logfmt": { - "version": "1.3.2", + "logform": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", + "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==", "requires": { - "split": "0.2.x", - "through": "2.3.x" + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" } }, "loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lower-case": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - } - }, - "lru_map": { - "version": "0.4.1" - }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -19578,6 +21982,8 @@ }, "magic-string": { "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", "dev": true, "requires": { "vlq": "^0.2.2" @@ -19585,12 +21991,16 @@ }, "make-dir": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { "pify": "^3.0.0" } }, "make-fetch-happen": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "requires": { "agentkeepalive": "^4.1.3", @@ -19613,31 +22023,45 @@ }, "map-age-cleaner": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, "requires": { "p-defer": "^1.0.0" } }, "map-cache": { - "version": "0.2.2" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" }, "map-stream": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, "map-visit": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "requires": { "object-visit": "^1.0.0" } }, "maxrects-packer": { - "version": "2.7.2" + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/maxrects-packer/-/maxrects-packer-2.7.3.tgz", + "integrity": "sha512-bG6qXujJ1QgttZVIH4WDanhoJtvbud/xP/XPyf6A69C9RdA61BM4TomFALCq2nrTa+tARRIBB4LuIFsnUQU2wA==" }, "media-typer": { - "version": "0.3.0" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "mem": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", @@ -19646,10 +22070,14 @@ } }, "merge-descriptors": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "merge-source-map": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", "dev": true, "requires": { "source-map": "^0.5.6" @@ -19657,6 +22085,8 @@ }, "merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "metaversefile": { @@ -19671,19 +22101,22 @@ "unix-path": "^0.2.0" }, "dependencies": { - "node-fetch": { - "version": "2.6.6", - "requires": { - "whatwg-url": "^5.0.0" - } + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" } } }, "methods": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "micromatch": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -19702,6 +22135,8 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -19709,48 +22144,70 @@ }, "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } }, "kind-of": { - "version": "6.0.3" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, "mime": { - "version": "1.6.0" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.50.0" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.33", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.50.0" + "mime-db": "1.52.0" } }, "mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimalistic-assert": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimalistic-crypto-utils": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "minimatch": { - "version": "3.0.4", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minipass": { "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -19758,6 +22215,8 @@ }, "minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -19765,6 +22224,8 @@ }, "minipass-fetch": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, "requires": { "encoding": "^0.1.12", @@ -19775,6 +22236,8 @@ }, "minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -19782,6 +22245,8 @@ }, "minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "requires": { "jsonparse": "^1.3.1", @@ -19790,6 +22255,8 @@ }, "minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -19797,6 +22264,8 @@ }, "minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -19804,6 +22273,8 @@ }, "minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { "minipass": "^3.0.0", @@ -19812,6 +22283,8 @@ }, "mixin-deep": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -19819,6 +22292,8 @@ "dependencies": { "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -19826,61 +22301,80 @@ } }, "mkdirp": { - "version": "0.5.5", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "mocha": { - "version": "9.1.3", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "3.0.4", + "minimatch": "4.2.1", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, "anymatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "argparse": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "binary-extensions": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { "fill-range": "^7.0.1" } }, "chokidar": { - "version": "3.5.2", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -19892,24 +22386,68 @@ "readdirp": "~3.6.0" } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "escape-string-regexp": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { "to-regex-range": "^5.0.1" } }, "find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "glob": { - "version": "7.1.7", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -19917,153 +22455,173 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "has-flag": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "requires": { "binary-extensions": "^2.0.0" } }, "is-number": { - "version": "7.0.0" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "requires": { "argparse": "^2.0.1" } }, "locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "requires": { "p-locate": "^5.0.0" } }, + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "ms": { - "version": "2.1.3" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "nanoid": { - "version": "3.1.25" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" }, "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "requires": { "yocto-queue": "^0.1.0" } }, "p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "requires": { "p-limit": "^3.0.2" } }, "path-exists": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "requires": { "picomatch": "^2.2.1" } }, "supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { "has-flag": "^4.0.0" } }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { "is-number": "^7.0.0" } - } - } - }, - "moment": { - "version": "2.29.1", - "dev": true - }, - "ms": { - "version": "2.1.2" - }, - "multibase": { - "version": "4.0.6", - "requires": { - "@multiformats/base-x": "^4.0.1" - } - }, - "multicodec": { - "version": "3.2.1", - "requires": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "requires": { - "multiformats": "^9.4.2" - } - } - } - }, - "multiformats": { - "version": "9.4.9" - }, - "multihashes": { - "version": "4.0.3", - "requires": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { - "multiformats": "^9.4.2" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, - "varint": { - "version": "5.0.2" + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" } } }, - "multihashing-async": { - "version": "2.1.4", - "requires": { - "blakejs": "^1.1.0", - "err-code": "^3.0.0", - "js-sha3": "^0.8.0", - "multihashes": "^4.0.1", - "murmurhash3js-revisited": "^3.0.0", - "uint8arrays": "^3.0.0" - }, - "dependencies": { - "uint8arrays": { - "version": "3.0.0", - "requires": { - "multiformats": "^9.4.2" - } - } - } + "moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "dev": true }, - "murmurhash3js-revisited": { - "version": "3.0.0" + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { - "version": "0.0.8" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "optional": true }, "nanoid": { - "version": "3.1.30" + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true }, "nanomatch": { "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -20080,6 +22638,8 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -20087,21 +22647,29 @@ }, "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } }, "kind-of": { - "version": "6.0.3" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "nconf": { "version": "0.6.9", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", + "integrity": "sha512-MHiYHIc2igQsoI1v0IcVE4MVaV/+yIQtduOwUcQNoLd+pPgoKblWKbgU3itkhC0az5w2VMdQlQuAO+oi4qxtJg==", "requires": { "async": "0.2.9", "ini": "1.x.x", @@ -20109,41 +22677,46 @@ }, "dependencies": { "async": { - "version": "0.2.9" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", + "integrity": "sha512-OAtM6mexGteNKdU29wcUfRW+VuBr94A3hx9h9yzBnPaQAbKoW1ORd68XM4CCAOpdL5wlNFgO29hsY1TKv2vAKw==" } } }, "ncp": { - "version": "0.4.2" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==" }, "negotiator": { - "version": "0.6.2" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "nice-try": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "no-case": { - "version": "3.0.4", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node-fetch": { - "version": "3.1.0", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.2", - "formdata-polyfill": "^4.0.10" + "whatwg-url": "^5.0.0" } }, "node-forge": { - "version": "0.10.0", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "dev": true, "requires": { "env-paths": "^2.2.0", @@ -20159,7 +22732,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20168,20 +22743,28 @@ } }, "node-releases": { - "version": "2.0.1" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" }, "nopt": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "requires": { "abbrev": "1" } }, "normalize-path": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^1.0.1" @@ -20189,13 +22772,17 @@ }, "npm-install-checks": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", "dev": true, "requires": { "semver": "^7.1.1" }, "dependencies": { "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20205,10 +22792,14 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true }, "npm-package-arg": { "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -20217,7 +22808,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20227,6 +22820,8 @@ }, "npm-packlist": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", "dev": true, "requires": { "glob": "^7.1.6", @@ -20237,6 +22832,8 @@ }, "npm-pick-manifest": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, "requires": { "npm-install-checks": "^4.0.0", @@ -20246,7 +22843,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20256,6 +22855,8 @@ }, "npm-registry-fetch": { "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "requires": { "make-fetch-happen": "^9.0.1", @@ -20268,6 +22869,8 @@ }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -20275,6 +22878,8 @@ }, "npmlog": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { "are-we-there-yet": "~1.1.2", @@ -20285,29 +22890,41 @@ }, "nssocket": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", "requires": { "eventemitter2": "~0.4.14", "lazy": "~1.0.11" }, "dependencies": { "eventemitter2": { - "version": "0.4.14" + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==" } } }, "number-is-nan": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true }, "oauth-sign": { "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { - "version": "4.1.1" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -20316,24 +22933,32 @@ "dependencies": { "define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } }, "is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -20341,29 +22966,45 @@ }, "dependencies": { "kind-of": { - "version": "5.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } } } }, "object-inspect": { - "version": "1.11.0", - "dev": true + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", - "dev": true + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "requires": { "isobject": "^3.0.0" } }, "object.assign": { "version": "4.1.2", - "dev": true, + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -20373,12 +23014,16 @@ }, "object.pick": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "requires": { "isobject": "^3.0.1" } }, "object.values": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -20387,34 +23032,53 @@ } }, "on-finished": { - "version": "2.3.0", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, "onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, "open": { - "version": "7.4.2", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "openai-api": { - "version": "1.2.6", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/openai-api/-/openai-api-1.3.1.tgz", + "integrity": "sha512-wKhm/BZS/PyzQRJTdl6kciwL4LpqqyertLYEbbPYDg7ySk1tEywPSBnMio0xdSQaRmdSYVS8VHzJvnwKb9tqkw==", "requires": { "axios": "^0.21.1", "dotenv": "^8.2.0" @@ -20422,18 +23086,24 @@ }, "optimist": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "integrity": "sha512-ubrZPyOU0AHpXkmwqfWolap+eHMwQ484AKivkf0ZGyysd6fUJZl7ow9iu5UNV1vCZv46HQ7EM83IC3NGJ820hg==", "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { - "version": "0.0.10" + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==" } } }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -20446,6 +23116,8 @@ }, "os-locale": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { "execa": "^1.0.0", @@ -20455,6 +23127,8 @@ "dependencies": { "cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -20466,6 +23140,8 @@ }, "execa": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { "cross-spawn": "^6.0.0", @@ -20479,6 +23155,8 @@ }, "get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { "pump": "^3.0.0" @@ -20486,10 +23164,14 @@ }, "is-stream": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, "npm-run-path": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "requires": { "path-key": "^2.0.0" @@ -20497,14 +23179,20 @@ }, "path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -20512,10 +23200,14 @@ }, "shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -20525,18 +23217,26 @@ }, "p-defer": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "dev": true }, "p-finally": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-is-promise": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -20544,6 +23244,8 @@ }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -20551,6 +23253,8 @@ }, "p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -20558,10 +23262,14 @@ }, "p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "pacote": { "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, "requires": { "@npmcli/git": "^2.1.0", @@ -20587,22 +23295,22 @@ "dependencies": { "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true } } }, "pako": { - "version": "2.0.4" - }, - "param-case": { - "version": "3.0.4", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -20610,6 +23318,8 @@ }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -20619,92 +23329,162 @@ } }, "parseurl": { - "version": "1.3.3" - }, - "pascal-case": { - "version": "3.1.2", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { - "version": "0.1.1" - }, - "path-case": { - "version": "3.0.4", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" }, "path-dirname": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" }, "path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "path-is-absolute": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { - "version": "0.1.7" + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, "pause-stream": { "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", "requires": { "through": "~2.3" } }, "performance-now": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { - "version": "2.3.0" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" }, "pinkie": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" } }, "pkg-dir": { - "version": "2.0.0", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, - "pkginfo": { - "version": "0.4.1" - }, "please-upgrade-node": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, "requires": { "semver-compare": "^1.0.0" @@ -20712,56 +23492,69 @@ }, "pluralize": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, "posix-character-classes": { - "version": "0.1.1" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" }, "postcss": { - "version": "8.3.9", + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "dev": true, "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true - } - } - }, - "postmsg-rpc": { - "version": "2.4.0", - "requires": { - "shortid": "^2.2.8" + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettyjson": { - "version": "1.2.1", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", + "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", "requires": { - "colors": "^1.1.2", + "colors": "1.4.0", "minimist": "^1.2.0" + }, + "dependencies": { + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + } } }, "process-nextick-args": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise-inflight": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true }, "promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { "err-code": "^2.0.2", @@ -20770,22 +23563,59 @@ "dependencies": { "err-code": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true } } }, "prompt": { "version": "0.2.14", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "integrity": "sha512-jDK5yEbAakJmNm+260gZG1+PuzX3jT5Jy0VZAUGrrW9RQ1JEWEDEVNnhO70mL3+U5r6bSJo02xsE34wOS/LnrA==", "requires": { "pkginfo": "0.x.x", "read": "1.0.x", "revalidator": "0.1.x", "utile": "0.2.x", "winston": "0.8.x" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==" + }, + "winston": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", + "requires": { + "async": "0.2.x", + "colors": "0.6.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + } + } } }, "proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -20793,16 +23623,22 @@ }, "ps-tree": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "requires": { "event-stream": "=3.3.4" } }, "psl": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -20810,22 +23646,22 @@ } }, "punycode": { - "version": "2.1.1" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.7.0" - }, - "query-string": { - "version": "7.0.1", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "side-channel": "^1.0.4" } }, "quicktype": { - "version": "15.0.260", + "version": "15.0.261", + "resolved": "https://registry.npmjs.org/quicktype/-/quicktype-15.0.261.tgz", + "integrity": "sha512-y2Se/GFGSeFNfON7X0MEJO8K+Lm23hWEZs5UMP9dVy3ShSYng6HTVw1YmqreUwGCLRGn4jD9TjNB1oqyaT3NBw==", "dev": true, "requires": { "@mark.probst/typescript-json-schema": "~0.32.0", @@ -20839,7 +23675,7 @@ "is-url": "^1.2.4", "isomorphic-fetch": "^2.2.1", "js-base64": "^2.4.3", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "moment": "^2.22.1", "node-fetch": "^2.6.1", "pako": "^1.0.6", @@ -20848,29 +23684,28 @@ "stream-json": "1.1.3", "string-to-stream": "^1.1.0", "typescript": "~3.2.1", - "urijs": "^1.19.4", + "urijs": "^1.19.6", "uuid": "^3.2.1", "wordwrap": "^1.0.0", "yaml": "^1.5.0" }, "dependencies": { - "node-fetch": { - "version": "2.6.6", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "pako": { - "version": "1.0.11", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "process-nextick-args": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", "dev": true }, "readable-stream": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", + "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -20884,6 +23719,8 @@ }, "string_decoder": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -20891,12 +23728,16 @@ }, "wordwrap": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true } } }, "quote-stream": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", "dev": true, "requires": { "buffer-equal": "0.0.1", @@ -20906,24 +23747,32 @@ }, "randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" } }, "range-parser": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, "react": { "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -20931,6 +23780,8 @@ }, "react-dom": { "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -20938,10 +23789,14 @@ } }, "react-merge-refs": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz", + "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==" }, "react-reconciler": { "version": "0.26.2", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", + "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -20950,25 +23805,35 @@ }, "react-refresh": { "version": "0.10.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz", + "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==", "dev": true }, "react-three-fiber": { - "version": "0.0.0-deprecated" + "version": "0.0.0-deprecated", + "resolved": "https://registry.npmjs.org/react-three-fiber/-/react-three-fiber-0.0.0-deprecated.tgz", + "integrity": "sha512-EblIqTAsIpkYeM8bZtC4lcpTE0A2zCEGipFB52RgcQq/q+0oryrk7Sxt+sqhIjUu6xMNEVywV8dr74lz5yWO6A==" }, "react-use-measure": { - "version": "2.0.4", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", + "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==", "requires": { - "debounce": "^1.2.0" + "debounce": "^1.2.1" } }, "read": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "requires": { "mute-stream": "~0.0.4" } }, "read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -20977,6 +23842,8 @@ }, "readable-stream": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -20985,14 +23852,23 @@ }, "readdirp": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21005,6 +23881,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } @@ -21013,24 +23891,34 @@ }, "reduce-flatten": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", + "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", "dev": true }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "9.0.0", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.9" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regenerator-transform": { - "version": "0.14.5", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -21038,6 +23926,8 @@ }, "regex-not": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -21045,6 +23935,8 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -21052,34 +23944,54 @@ }, "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } } } }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "4.8.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "version": "0.5.2", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "dev": true }, "regjsparser": { - "version": "0.7.0", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -21087,21 +23999,31 @@ "dependencies": { "jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, "remove-trailing-separator": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, "repeat-element": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" }, "repeat-string": { - "version": "1.6.1" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "request": { "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -21128,82 +24050,118 @@ "dependencies": { "qs": { "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true } } }, "require-directory": { - "version": "2.1.1" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { - "version": "2.0.2" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, "resize-observer-polyfill": { - "version": "1.5.1" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, "resolve": { - "version": "1.20.0", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { - "version": "0.2.1" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" }, "restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, - "resumer": { - "version": "0.0.0", - "requires": { - "through": "~2.3.4" - } - }, "ret": { - "version": "0.1.15" + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, "revalidator": { - "version": "0.1.8" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==" }, "rfdc": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "rollup": { - "version": "2.58.0", + "version": "2.75.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.6.tgz", + "integrity": "sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==", "dev": true, "requires": { "fsevents": "~2.3.2" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "rollup-plugin-filesize": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz", + "integrity": "sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A==", "dev": true, "requires": { "@babel/runtime": "^7.13.8", @@ -21216,29 +24174,18 @@ "terser": "^5.6.0" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "dev": true, - "optional": true, - "peer": true - }, - "source-map": { - "version": "0.7.3", + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true - }, - "terser": { - "version": "5.10.0", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - } } } }, "rollup-plugin-terser": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", @@ -21247,81 +24194,117 @@ "terser": "^5.0.0" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "dev": true, - "optional": true, - "peer": true - }, "serialize-javascript": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { "randombytes": "^2.1.0" } - }, - "source-map": { - "version": "0.7.3", - "dev": true - }, - "terser": { - "version": "5.10.0", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - } } } }, "rollup-plugin-visualizer": { - "version": "5.5.2", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.6.0.tgz", + "integrity": "sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==", "dev": true, "requires": { - "nanoid": "^3.1.22", - "open": "^7.4.2", + "nanoid": "^3.1.32", + "open": "^8.4.0", "source-map": "^0.7.3", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "source-map": { - "version": "0.7.3", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true } } }, - "rpc-utils": { - "version": "0.4.0", - "requires": { - "nanoid": "^3.1.21" - } - }, "rxjs": { - "version": "6.6.7", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dev": true, "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1" - } + "tslib": "^2.1.0" } }, "safe-buffer": { - "version": "5.1.2" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "requires": { "ret": "~0.1.10" } }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==" + }, "safer-buffer": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "scheduler": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -21334,72 +24317,84 @@ }, "secure-compare": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", "dev": true }, "selfsigned": { - "version": "1.10.14", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1" } }, "semver": { - "version": "6.3.0" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-compare": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, "send": { - "version": "0.17.1", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" }, "dependencies": { "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "ms": { - "version": "2.1.1" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, - "sentence-case": { - "version": "3.0.4", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, "serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "requires": { "randombytes": "^2.1.0" } }, "serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -21413,13 +24408,23 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -21430,43 +24435,63 @@ }, "inherits": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } }, "serve-static": { - "version": "1.14.1", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "server-destroy": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", "dev": true }, "servez": { - "version": "1.12.0", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/servez/-/servez-1.14.1.tgz", + "integrity": "sha512-p0NntkNbUfltQMM19fRXTR/PVUCZzhfXobJ0THzldJaAFoEAMH1e+GC7iKjQebszhQRhvq2tPT8xaJhqt/pNjQ==", "dev": true, "requires": { "ansi-colors": "^4.1.1", "color-support": "^1.1.3", "optionator": "^0.8.2", - "servez-lib": "^2.4.0" + "servez-lib": "^2.6.0" }, "dependencies": { "levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -21475,6 +24500,8 @@ }, "optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", @@ -21487,10 +24514,14 @@ }, "prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -21499,25 +24530,31 @@ } }, "servez-lib": { - "version": "2.4.0", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/servez-lib/-/servez-lib-2.6.0.tgz", + "integrity": "sha512-4XfLkK8MUWEkWYzlDRPwvZ5aABNEkc8ryrn44IP3eRG132d17TMpSkJ00Zv+61L0kzO5Crv0ijF0xaX4DqfQHg==", "dev": true, "requires": { "basic-auth": "^2.0.1", "cors": "^2.8.5", - "debug": "^4.1.1", - "express": "^4.17.1", + "debug": "^4.3.4", + "express": "^4.17.3", "secure-compare": "^3.0.1", - "selfsigned": "^1.10.8", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "server-destroy": "^1.0.1" } }, "set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-value": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -21526,14 +24563,20 @@ } }, "setprototypeof": { - "version": "1.1.1" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "shallow-copy": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", "dev": true }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -21541,34 +24584,30 @@ }, "shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shortid": { - "version": "2.2.16", - "requires": { - "nanoid": "^2.1.0" - }, - "dependencies": { - "nanoid": { - "version": "2.1.11" - } - } - }, "shush": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/shush/-/shush-1.0.1.tgz", + "integrity": "sha512-baDDBPaPcFwVeQNfj1lYkE/NkqQr1WkXUlOePHnA5I8hw9Fz0Tu72ZC0XENeV4tM9tesaGA/Wi2mW07EOeKRuQ==", "requires": { - "caller": "~0.0.1", - "strip-json-comments": "~0.1.1" + "caller": "~1.0.1", + "strip-json-comments": "~2.0.1" }, "dependencies": { "strip-json-comments": { - "version": "0.1.3" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" } } }, "side-channel": { "version": "1.0.4", - "dev": true, + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -21576,10 +24615,22 @@ } }, "signal-exit": { - "version": "3.0.5" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -21589,6 +24640,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -21596,6 +24649,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -21603,26 +24658,27 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "smile2emoji": { - "version": "1.1.6" - }, - "snake-case": { - "version": "3.0.4", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/smile2emoji/-/smile2emoji-1.1.6.tgz", + "integrity": "sha512-l5RqlYuqVDUayBSs4tGjvmIrnnSzQZYHyxDdKrf50a8kPxhYritYH40f9AQ4UVR3/e9JZZT8PqOuD0oKhE2Psg==" }, "snapdragon": { "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -21636,30 +24692,40 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } }, "is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -21667,17 +24733,23 @@ }, "dependencies": { "kind-of": { - "version": "5.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "snapdragon-node": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -21686,6 +24758,8 @@ "dependencies": { "define-property": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -21694,36 +24768,48 @@ }, "snapdragon-util": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { "kind-of": "^3.2.0" } }, "socks": { - "version": "2.6.1", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "6.1.1", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" } }, "source-map": { - "version": "0.5.7" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-js": { - "version": "0.6.2", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-resolve": { "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -21734,6 +24820,8 @@ }, "source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -21742,38 +24830,35 @@ "dependencies": { "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "source-map-url": { - "version": "0.4.1" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" }, "spawn-command": { "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", "dev": true }, - "spectorjs": { - "version": "0.9.27", - "dev": true - }, - "split": { - "version": "0.2.10", - "requires": { - "through": "2" - } - }, - "split-on-first": { - "version": "1.1.0" - }, "split-string": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { "extend-shallow": "^3.0.0" }, "dependencies": { "extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -21781,6 +24866,8 @@ }, "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -21789,10 +24876,14 @@ }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "sshpk": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -21808,16 +24899,22 @@ }, "ssri": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { "minipass": "^3.1.1" } }, "stack-trace": { - "version": "0.0.10" + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" }, "static-eval": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", "dev": true, "requires": { "escodegen": "^1.11.1" @@ -21825,6 +24922,8 @@ "dependencies": { "escodegen": { "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "requires": { "esprima": "^4.0.1", @@ -21836,6 +24935,8 @@ }, "levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -21844,6 +24945,8 @@ }, "optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", @@ -21856,15 +24959,21 @@ }, "prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true }, "type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -21874,6 +24983,8 @@ }, "static-extend": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -21881,24 +24992,32 @@ "dependencies": { "define-property": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } }, "is-data-descriptor": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -21906,7 +25025,9 @@ }, "dependencies": { "kind-of": { - "version": "5.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } } @@ -21914,6 +25035,8 @@ }, "static-module": { "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", "dev": true, "requires": { "concat-stream": "~1.6.0", @@ -21932,12 +25055,22 @@ "through2": "~2.0.3" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "object-inspect": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", "dev": true }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -21951,6 +25084,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -21959,56 +25094,79 @@ } }, "stats.js": { - "version": "0.17.0" + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" }, "statuses": { - "version": "1.5.0" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "stream-chain": { - "version": "2.2.4", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", "dev": true }, "stream-combiner": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", "requires": { "duplexer": "~0.1.1" } }, "stream-json": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.1.3.tgz", + "integrity": "sha512-y+ChhCov2A5nDqC2aZ6HKXs3OvDlvAp0Ps3BF1P/Iv8tUZJQQsMVaSzk0WryVTVoGITKv01UYahCXMpAs7I0lQ==", "dev": true, "requires": { "stream-chain": "^2.0.3" } }, - "strict-uri-encode": { - "version": "2.0.0" - }, "string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" }, "dependencies": { "safe-buffer": { - "version": "5.2.1" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, "string-argv": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true }, "string-to-stream": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.1.0" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -22022,6 +25180,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -22031,6 +25191,8 @@ }, "string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -22038,23 +25200,29 @@ } }, "string.prototype.trimend": { - "version": "1.0.4", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "stringify-object": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, "requires": { "get-own-enumerable-property-symbols": "^3.0.0", @@ -22064,27 +25232,39 @@ }, "strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-eof": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true }, "strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "strip-outer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" @@ -22092,16 +25272,25 @@ }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "table": { - "version": "6.7.2", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, "requires": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -22110,6 +25299,8 @@ }, "table-layout": { "version": "0.4.5", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", + "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", "dev": true, "requires": { "array-back": "^2.0.0", @@ -22119,19 +25310,10 @@ "wordwrapjs": "^3.0.0" } }, - "tape": { - "version": "2.3.3", - "requires": { - "deep-equal": "~0.1.0", - "defined": "~0.0.0", - "inherits": "~2.0.1", - "jsonify": "~0.0.0", - "resumer": "~0.0.0", - "through": "~2.3.4" - } - }, "tar": { "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -22144,12 +25326,36 @@ "dependencies": { "mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "terser": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true } } }, "test-value": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", + "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", "dev": true, "requires": { "array-back": "^1.0.3", @@ -22158,6 +25364,8 @@ "dependencies": { "array-back": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", "dev": true, "requires": { "typical": "^2.6.0" @@ -22165,8 +25373,15 @@ } } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "three": { @@ -22193,6 +25408,8 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22200,6 +25417,8 @@ }, "chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -22208,6 +25427,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -22215,14 +25436,20 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -22231,18 +25458,30 @@ } }, "through": { - "version": "2.3.8" + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -22256,6 +25495,8 @@ }, "string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -22265,19 +25506,27 @@ }, "tiny-inflate": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "dev": true }, "to-fast-properties": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-object-path": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "requires": { "kind-of": "^3.0.2" } }, "to-regex": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -22287,6 +25536,8 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -22294,6 +25545,8 @@ }, "is-extendable": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -22302,16 +25555,22 @@ }, "to-regex-range": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" } }, "toidentifier": { - "version": "1.0.0" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tough-cookie": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { "psl": "^1.1.28", @@ -22319,48 +25578,67 @@ } }, "tr46": { - "version": "0.0.3" + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "trim-repeated": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.2" } }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, "troika-three-text": { "version": "0.43.1-alpha.0", + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.43.1-alpha.0.tgz", + "integrity": "sha512-bayeycChrNM4HgpN6Y0GkuL1Ib9eCf0SOMfT0SH0msML5qpICjEdvTSqJUJYdmbv59gJlfAJ2bsnQrkr3IgyZw==", "requires": { "bidi-js": "^1.0.2", "troika-three-utils": "^0.43.0", "troika-worker-utils": "^0.43.0" - }, - "dependencies": { - "troika-three-utils": { - "version": "0.43.0", - "requires": {} - } } }, + "troika-three-utils": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.43.0.tgz", + "integrity": "sha512-UVc4jOob1VjrX0awA0dHxmHZ8yvgq8W/kmtihMnMeObm0HNOobPKAWm/N6o34/k/FPgOtUMDHYgkw+TG2RNouA==", + "requires": {} + }, "troika-worker-utils": { - "version": "0.43.0" + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.43.0.tgz", + "integrity": "sha512-8YXWwfviJ1N/9+nuE5dT9RFttmDsIF8CP7d6rRsBBhH55il3fBqpFSuzTlOcdgC1yq8Hmhi6GgIl6eK4Zt+hTw==" }, "tsconfig-paths": { - "version": "3.11.0", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { "json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -22369,10 +25647,15 @@ } }, "tslib": { - "version": "2.3.1" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true }, "tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -22380,10 +25663,14 @@ }, "tweetnacl": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -22391,10 +25678,14 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -22402,41 +25693,43 @@ }, "typedarray": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typescript": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", "dev": true }, - "typescript-memoize": { - "version": "1.0.1" - }, "typical": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", "dev": true }, - "uint8arrays": { - "version": "2.1.10", - "requires": { - "multiformats": "^9.4.2" - } - }, "unbox-primitive": { - "version": "1.0.1", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -22445,14 +25738,20 @@ }, "unicode-match-property-value-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "unicode-trie": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", "dev": true, "requires": { "pako": "^0.2.5", @@ -22461,12 +25760,16 @@ "dependencies": { "pako": { "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "dev": true } } }, "union-value": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -22476,6 +25779,8 @@ }, "unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { "unique-slug": "^2.0.0" @@ -22483,6 +25788,8 @@ }, "unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -22490,22 +25797,32 @@ }, "unique-string": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "requires": { "crypto-random-string": "^1.0.0" } }, "universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, "unix-path": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/unix-path/-/unix-path-0.2.0.tgz", + "integrity": "sha512-x8ccHoiBE8Ykw4mpAqS49vXxaQrovLCyTunbhJgNhtDOpmIdlwnQuA8bHTnQWo+i64gJ4cIwOSn/ZVNAyaiBDQ==" }, "unpipe": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "unset-value": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -22513,6 +25830,8 @@ "dependencies": { "has-value": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -22521,6 +25840,8 @@ "dependencies": { "isobject": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "requires": { "isarray": "1.0.0" } @@ -22528,63 +25849,64 @@ } }, "has-values": { - "version": "0.1.4" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" } } }, "upath": { - "version": "1.2.0" - }, - "upper-case": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - } - }, - "upper-case-first": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } }, "urijs": { - "version": "1.19.7", + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", "dev": true }, "urix": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" }, "use": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "use-asset": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/use-asset/-/use-asset-1.0.4.tgz", + "integrity": "sha512-7/hqDrWa0iMnCoET9W1T07EmD4Eg/Wmoj/X8TGBc++ECRK4m5yTsjP4O6s0yagbxfqIOuUkIxe2/sA+VR2GxZA==", "requires": { "fast-deep-equal": "^3.1.3" } }, - "util": { - "version": "0.11.1", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3" - } - } - }, "util-deprecate": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utile": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "integrity": "sha512-ltfvuCJNa/JFOhKBBiQ9qDyyFwLstoMMO1ru0Yg/Mcl8dp1Z3IBaL7n+5dHpyma+d3lCogkgBQnWKtGxzNyqhg==", "requires": { "async": "~0.2.9", "deep-equal": "*", @@ -22595,10 +25917,14 @@ }, "dependencies": { "async": { - "version": "0.2.10" + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -22606,34 +25932,45 @@ } }, "utility-types": { - "version": "3.10.0" + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" }, "utils-merge": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-name": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "requires": { "builtins": "^1.0.3" } }, - "varint": { - "version": "6.0.0" - }, "vary": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -22643,36 +25980,54 @@ "dependencies": { "core-util-is": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true } } }, "vite": { - "version": "2.6.10", + "version": "2.9.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.12.tgz", + "integrity": "sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==", "dev": true, "requires": { - "esbuild": "^0.13.2", + "esbuild": "^0.14.27", "fsevents": "~2.3.2", - "postcss": "^8.3.8", - "resolve": "^1.20.0", - "rollup": "^2.57.0" + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "vlq": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", "dev": true }, - "web-streams-polyfill": { - "version": "3.2.0" - }, "webidl-conversions": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webm-writer": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webm-writer/-/webm-writer-1.0.0.tgz", + "integrity": "sha512-xafP4mzUqht03HBXP0Ov2YGsxfD08uncad9fQeshYwQXrcP6Z/4uxd1IUaGKqKigFPAgaD9xb6JEKA8SXLQMLA==" }, "whatwg-fetch": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", "dev": true }, "whatwg-mimetype": { @@ -22682,6 +26037,8 @@ }, "whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -22689,13 +26046,16 @@ }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } }, "which-boxed-primitive": { "version": "1.0.2", - "dev": true, + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -22704,12 +26064,40 @@ "is-symbol": "^1.0.3" } }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-module": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + } + }, "wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -22717,43 +26105,62 @@ }, "widest-line": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, "requires": { "string-width": "^4.0.0" } }, "winston": { - "version": "0.8.3", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", + "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", "requires": { - "async": "0.2.x", - "colors": "0.6.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" }, "dependencies": { "async": { - "version": "0.2.10" - }, - "colors": { - "version": "0.6.2" - }, - "pkginfo": { - "version": "0.3.1" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" } } }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wordwrap": { - "version": "0.0.3" + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, "wordwrapjs": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", + "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", "dev": true, "requires": { "reduce-flatten": "^1.0.1", @@ -22761,10 +26168,14 @@ } }, "workerpool": { - "version": "6.1.5" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==" }, "wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -22773,26 +26184,36 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, "wrappy": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -22800,7 +26221,9 @@ } }, "ws": { - "version": "8.2.3", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "requires": {} }, "wsrtc": { @@ -22812,57 +26235,185 @@ }, "dependencies": { "dotenv": { - "version": "10.0.0" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "requires": {} } } }, "xdg-basedir": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, "xhr2": { - "version": "0.2.1" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, "xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { - "version": "5.0.8" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { - "version": "16.2.0", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "yargs-parser": { - "version": "20.2.4" + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } }, "yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "requires": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" + } } }, "yocto-queue": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, "zjs": { "version": "file:packages/zjs", @@ -22872,7 +26423,9 @@ } }, "zustand": { - "version": "3.5.14", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", "requires": {} } } diff --git a/package.json b/package.json index b5a3012f96..b98d8b9fbb 100644 --- a/package.json +++ b/package.json @@ -14,29 +14,20 @@ "start-pm2": "pm2-runtime index.mjs -p --secret $PM2_SECRET_KEY --public $PM2_PUBLIC_KEY --no-auto-exit --instances 1 --restart-delay 60000" }, "dependencies": { - "@3id/connect": "^0.2.5", - "@babel/preset-react": "^7.14.5", - "@ceramicnetwork/3id-did-resolver": "^1.4.3", - "@ceramicnetwork/http-client": "^1.3.0", - "@ceramicstudio/idx": "^0.12.2", - "@glazed/devtools": "^0.1.3", + "@babel/preset-react": "^7.17.12", "@pixiv/three-vrm": "./packages/three-vrm", - "@react-three/fiber": "^7.0.6", - "@shaderfrog/glsl-parser": "^0.1.20", + "@react-three/fiber": "^7.0.29", + "@shaderfrog/glsl-parser": "^0.1.23", "classnames": "^2.3.1", - "dids": "^2.4.0", "encoding-japanese": "^1.0.30", - "ethers": "^5.6.4", - "express": "^4.17.1", - "forever": "^4.0.1", + "ethers": "^5.6.8", + "express": "^4.18.1", + "forever": "^4.0.3", "gpt-3-encoder": "^1.1.3", "json-6": "^1.1.4", - "key-did-provider-ed25519": "^1.1.0", - "key-did-resolver": "^1.4.0", - "maxrects-packer": "^2.7.2", + "maxrects-packer": "^2.7.3", "metaversefile": "./packages/totum", - "node-fetch": "^3.1.0", - "openai-api": "^1.2.6", + "openai-api": "^1.3.1", "react": "17.0.2", "react-dom": "17.0.2", "smile2emoji": "^1.1.6", @@ -62,15 +53,14 @@ "last 1 chrome version" ], "devDependencies": { - "@vitejs/plugin-react-refresh": "^1.3.1", - "eslint": "^7.8.1", + "@vitejs/plugin-react-refresh": "^1.3.6", + "eslint": "^7.32.0", "eslint-config-semistandard": "^15.0.1", "eslint-config-standard": "^14.1.1", - "eslint-plugin-import": "^2.22.0", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.1", - "spectorjs": "^0.9.27", - "vite": "^2.5.1" + "eslint-plugin-promise": "^4.3.1", + "eslint-plugin-standard": "^4.1.0", + "vite": "^2.9.12" } -} \ No newline at end of file +} diff --git a/packages/three b/packages/three index ff70991543..004de02ab0 160000 --- a/packages/three +++ b/packages/three @@ -1 +1 @@ -Subproject commit ff70991543a05fdae9db93da4551ad72de036f32 +Subproject commit 004de02ab045e73b9d8257dfdccbbd5431fac7fa diff --git a/packages/totum b/packages/totum index d8f87e8a20..61da3f8156 160000 --- a/packages/totum +++ b/packages/totum @@ -1 +1 @@ -Subproject commit d8f87e8a203d6eed7d1d75e296ca316e4a487d53 +Subproject commit 61da3f81567f6677f4b70685d85170d63d6a37fa diff --git a/particle-system.js b/particle-system.js index e8f8c28a2a..05d4579e5d 100644 --- a/particle-system.js +++ b/particle-system.js @@ -1,7 +1,7 @@ import * as THREE from 'three'; import {camera} from './renderer.js'; import {WebaverseShaderMaterial} from './materials.js'; -import {world} from './world.js'; +// import {world} from './world.js'; import loaders from './loaders.js'; // const baseUrl = import.meta.url.replace(/(\/)[^\/\\]*$/, '$1'); @@ -60,11 +60,12 @@ const _makePlaneGeometry = () => { }; const planeGeometry = _makePlaneGeometry(); -const _makeGeometry = maxParticles => { - const geometry = planeGeometry.clone(); +const _makeGeometry = (size, maxParticles) => { + const geometry = planeGeometry.clone() + .scale(size, size, 1); geometry.setAttribute('p', new THREE.InstancedBufferAttribute(new Float32Array(maxParticles * 3), 3)); // geometry.setAttribute('q', new THREE.InstancedBufferAttribute(new Float32Array(maxParticles * 4), 4)); - geometry.setAttribute('t', new THREE.InstancedBufferAttribute(new Float32Array(maxParticles * 2), 2)); + geometry.setAttribute('t', new THREE.InstancedBufferAttribute(new Float32Array(maxParticles * 3), 3)); geometry.setAttribute('textureIndex', new THREE.InstancedBufferAttribute(new Int32Array(maxParticles), 1)); return geometry; }; @@ -76,7 +77,7 @@ precision highp int; uniform float uTime; uniform vec4 cameraBillboardQuaternion; attribute vec3 p; -attribute vec2 t; +attribute vec3 t; varying vec2 vUv; varying float vTimeDiff; @@ -124,9 +125,11 @@ void main() { float startTime = t.x; float endTime = t.y; - float timeDiff = (uTime - startTime) / (endTime - startTime); - vTimeDiff = timeDiff; - // vPosition = position; + float loop = t.z; + vTimeDiff = (uTime - startTime) / (endTime - startTime); + if (loop > 0.5) { + vTimeDiff = mod(vTimeDiff, 1.); + } vTextureIndex = textureIndex; } @@ -182,8 +185,7 @@ vec2 getUv(float numFrames) { float frame = floor(f * numFrames); float x = mod(frame, rowSize); float y = floor(frame / rowSize); - vec2 uv = vec2(x / rowSize, y / rowSize) + vUv / rowSize; - // vec4 alphaColor = texture2D(uTex, vec2(0.)); + vec2 uv = vec2(x / rowSize, y / rowSize) + vec2(vUv.x, 1. - vUv.y) / rowSize; return uv; } @@ -284,13 +286,14 @@ const _makeMaterial = maxNumTextures => { } class Particle extends THREE.Object3D { - constructor(index, textureIndex, startTime, endTime, parent) { + constructor(index, textureIndex, startTime, endTime, loop, parent) { super(); this.index = index; this.textureIndex = textureIndex; this.startTime = startTime; this.endTime = endTime; + this.loop = loop; this.parent = parent; } update() { @@ -301,8 +304,12 @@ class Particle extends THREE.Object3D { } } class ParticleSystem extends THREE.InstancedMesh { - constructor(particleNames, maxParticles = defaultMaxParticles) { - const geometry = _makeGeometry(maxParticles); + constructor({ + particleNames, + size = 1, + maxParticles = defaultMaxParticles, + }) { + const geometry = _makeGeometry(size, maxParticles); const material = _makeMaterial(particleNames.length); super(geometry, material, maxParticles); @@ -326,6 +333,7 @@ class ParticleSystem extends THREE.InstancedMesh { addParticle(name, { offsetTime = 0, duration = 1000, + loop = false, } = {}) { const textureIndex = name ? this.#getParticleTextureIndex(name) : -1; if (textureIndex !== -1) { @@ -335,7 +343,7 @@ class ParticleSystem extends THREE.InstancedMesh { for (let i = 0; i < this.particles.length; i++) { let particle = this.particles[i]; if (particle === null) { - particle = new Particle(i, textureIndex, startTime, endTime, this); + particle = new Particle(i, textureIndex, startTime, endTime, loop, this); this.particles[i] = particle; this.needsUpdate = true; return particle; @@ -370,8 +378,9 @@ class ParticleSystem extends THREE.InstancedMesh { this.geometry.attributes.p.array[index*3 + 1] = particle.position.y; this.geometry.attributes.p.array[index*3 + 2] = particle.position.z; - this.geometry.attributes.t.array[index*2 + 0] = particle.startTime; - this.geometry.attributes.t.array[index*2 + 1] = particle.endTime; + this.geometry.attributes.t.array[index*3 + 0] = particle.startTime; + this.geometry.attributes.t.array[index*3 + 1] = particle.endTime; + this.geometry.attributes.t.array[index*3 + 2] = particle.loop ? 1 : 0; this.geometry.attributes.textureIndex.array[index] = particle.textureIndex; @@ -382,7 +391,7 @@ class ParticleSystem extends THREE.InstancedMesh { this.geometry.attributes.p.updateRange.count = index * 3; this.geometry.attributes.p.needsUpdate = true; - this.geometry.attributes.t.updateRange.count = index * 2; + this.geometry.attributes.t.updateRange.count = index * 3; this.geometry.attributes.t.needsUpdate = true; this.geometry.attributes.textureIndex.updateRange.count = index; @@ -399,8 +408,16 @@ class ParticleSystem extends THREE.InstancedMesh { } const particleSystems = []; -const createParticleSystem = (particleNames) => { - const particleSystem = new ParticleSystem(particleNames); +const createParticleSystem = ({ + particleNames, + size, + maxParticles, +}) => { + const particleSystem = new ParticleSystem({ + particleNames, + size, + maxParticles, + }); particleSystems.push(particleSystem); return particleSystem; }; diff --git a/physics-manager.js b/physics-manager.js index 78ec08c34b..86c0dad693 100644 --- a/physics-manager.js +++ b/physics-manager.js @@ -10,26 +10,30 @@ import physx from './physx.js' // import ioManager from './io-manager.js'; // import {getPlayerCrouchFactor} from './character-controller.js'; import metaversefileApi from 'metaversefile' -import { getNextPhysicsId, convertMeshToPhysicsMesh } from './util.js' +import { getNextPhysicsId, freePhysicsId, convertMeshToPhysicsMesh } from './util.js' // import {applyVelocity} from './util.js'; // import {groundFriction} from './constants.js'; import { CapsuleGeometry } from './geometries.js' +import physxWorkerManager from './physx-worker-manager.js'; -const localVector = new THREE.Vector3() +// const localVector = new THREE.Vector3() const localVector2 = new THREE.Vector3() -const localVector3 = new THREE.Vector3() +/* const localVector3 = new THREE.Vector3() const localVector4 = new THREE.Vector3() const localVector5 = new THREE.Vector3() const localQuaternion = new THREE.Quaternion() const localQuaternion2 = new THREE.Quaternion() -const localMatrix = new THREE.Matrix4() +const localMatrix = new THREE.Matrix4() */ + +// fake shared material to prevent shader instantiation +const redMaterial = new THREE.MeshBasicMaterial({ + color: 0xff0000, + // side: THREE.DoubleSide, +}); // const zeroVector = new THREE.Vector3(0, 0, 0); // const upVector = new THREE.Vector3(0, 1, 0); -const physicsManager = new EventTarget() - -const physicsUpdates = [] const _makePhysicsObject = (physicsId, position, quaternion, scale) => { const physicsObject = new THREE.Object3D() physicsObject.position.copy(position) @@ -41,356 +45,461 @@ const _makePhysicsObject = (physicsId, position, quaternion, scale) => { physicsObject.collided = true physicsObject.grounded = true return physicsObject -} -const _extractPhysicsGeometryForId = (physicsId) => { - const physicsGeometry = physicsManager.getGeometryForPhysicsId(physicsId) - const { positions, indices, bounds } = physicsGeometry - let geometry = new THREE.BufferGeometry() - geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)) - geometry.setIndex(new THREE.BufferAttribute(indices, 1)) - geometry = geometry.toNonIndexed() - geometry.computeVertexNormals() - geometry.boundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(bounds, 0), - new THREE.Vector3().fromArray(bounds, 3) - ) - return geometry -} +}; +const _updatePhysicsObjects = updatesOut => { + for (const updateOut of updatesOut) { + const { id, position, quaternion, collided, grounded } = updateOut + const physicsObject = metaversefileApi.getPhysicsObjectByPhysicsId(id) + if (physicsObject) { + // console.log('update physics object', id); + + physicsObject.position.copy(position) + physicsObject.quaternion.copy(quaternion) + physicsObject.updateMatrixWorld() + + physicsObject.collided = collided + physicsObject.grounded = grounded + } /* else { + console.warn('failed to update unknown physics id', id); + } */ + } +}; -physicsManager.addCapsuleGeometry = ( - position, - quaternion, - radius, - halfHeight, - material, - dynamic, - flags = {} -) => { - const physicsId = getNextPhysicsId() - physx.physxWorker.addCapsuleGeometryPhysics( - physx.physics, +const physicsUpdates = []; +const gravity = new THREE.Vector3(0, -9.8, 0); +class PhysicsScene extends EventTarget { + constructor(opts) { + super(); + + if (!opts) { + this.scene = null; + this.physicsEnabled = true; + + this.loadPromise = (async () => { + if (!physx.loaded) { + await physx.waitForLoad(); + this.loadPromise = null; + } + const scene = physx.physxWorker.makeScene(); + this.scene = scene; + return scene; + })(); + } else { + this.scene = opts.scene; + this.physicsEnabled = opts.physicsEnabled; + this.loadPromise = opts.loadPromise; + if (!this.scene) { + this.loadPromise.then(scene => { + this.scene = scene; + this.loadPromise = null; + }); + } + } + } + clone() { + return new PhysicsScene({ + scene: this.scene, + physicsEnabled: this.physicsEnabled, + loadPromise: this.loadPromise, + }); + } + addCapsuleGeometry( position, quaternion, radius, halfHeight, - physicsId, material, dynamic, - flags - ) - - const physicsObject = _makePhysicsObject( - physicsId, - position, - quaternion, - localVector2.set(1, 1, 1) - ) - const physicsMesh = new THREE.Mesh( - new CapsuleGeometry(radius, radius, halfHeight * 2) - ) - physicsMesh.visible = false - physicsObject.add(physicsMesh) - physicsMesh.updateMatrixWorld() - const { bounds } = physicsManager.getGeometryForPhysicsId(physicsId) - physicsMesh.geometry.boundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(bounds, 0), - new THREE.Vector3().fromArray(bounds, 3) - ) - physicsObject.physicsMesh = physicsMesh - return physicsObject -} - -physicsManager.addBoxGeometry = (position, quaternion, size, dynamic) => { - const physicsId = getNextPhysicsId() - physx.physxWorker.addBoxGeometryPhysics( - physx.physics, - position, - quaternion, - size, - physicsId, - dynamic - ) - - const physicsObject = _makePhysicsObject( - physicsId, - position, - quaternion, - localVector2.set(1, 1, 1) - ) - const physicsMesh = new THREE.Mesh(new THREE.BoxGeometry(2, 2, 2)) - physicsMesh.scale.copy(size) - physicsMesh.visible = false - physicsObject.add(physicsMesh) - physicsObject.updateMatrixWorld() - const { bounds } = physicsManager.getGeometryForPhysicsId(physicsId) - physicsMesh.geometry.boundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(bounds, 0), - new THREE.Vector3().fromArray(bounds, 3) - ) - physicsObject.physicsMesh = physicsMesh - return physicsObject -} -physicsManager.addGeometry = (mesh) => { - const physicsMesh = convertMeshToPhysicsMesh(mesh) - if (mesh.parent) { - mesh.parent.matrixWorld.decompose( - physicsMesh.position, - physicsMesh.quaternion, - physicsMesh.scale + flags = {} + ) { + const physicsId = getNextPhysicsId() + physx.physxWorker.addCapsuleGeometryPhysics( + this.scene, + position, + quaternion, + radius, + halfHeight, + physicsId, + material, + dynamic, + flags + ) + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + localVector2.set(1, 1, 1) ) + const physicsMesh = new THREE.Mesh( + new CapsuleGeometry(radius, radius, halfHeight * 2), + redMaterial + ) + physicsMesh.visible = false + physicsObject.add(physicsMesh) physicsMesh.updateMatrixWorld() + const { bounds } = this.getGeometryForPhysicsId(physicsId) + physicsMesh.geometry.boundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(bounds, 0), + new THREE.Vector3().fromArray(bounds, 3) + ) + physicsObject.physicsMesh = physicsMesh + return physicsObject } - - const physicsMaterial = [0.5, 0.5, 0] // staticFriction, dynamicFriction, restitution - - const physicsId = getNextPhysicsId() - physx.physxWorker.addGeometryPhysics( - physx.physics, - physicsMesh, - physicsId, - physicsMaterial - ) - physicsMesh.geometry = _extractPhysicsGeometryForId(physicsId) - - const physicsObject = _makePhysicsObject( - physicsId, - physicsMesh.position, - physicsMesh.quaternion, - physicsMesh.scale - ) - physicsObject.add(physicsMesh) - physicsMesh.position.set(0, 0, 0) - physicsMesh.quaternion.set(0, 0, 0, 1) - physicsMesh.scale.set(1, 1, 1) - physicsMesh.updateMatrixWorld() - physicsObject.physicsMesh = physicsMesh - return physicsObject -} -physicsManager.createMaterial = (physicsMaterial) => - physx.physxWorker.createMaterial(physx.physics, physicsMaterial) -physicsManager.destroyMaterial = (materialAddress) => - physx.physxWorker.destroyMaterial(physx.physics, materialAddress) -physicsManager.cookGeometry = (mesh) => - physx.physxWorker.cookGeometryPhysics(physx.physics, mesh) -physicsManager.addCookedGeometry = (buffer, position, quaternion, scale) => { - const physicsId = getNextPhysicsId() - physx.physxWorker.addCookedGeometryPhysics( - physx.physics, - buffer, - position, - quaternion, - scale, - physicsId - ) - - const physicsObject = _makePhysicsObject( - physicsId, - position, - quaternion, - scale - ) - const physicsMesh = new THREE.Mesh(_extractPhysicsGeometryForId(physicsId)) - physicsMesh.visible = false - physicsObject.add(physicsMesh) - physicsObject.physicsMesh = physicsMesh - return physicsObject -} - -physicsManager.addConvexGeometry = (mesh) => { - const physicsMesh = convertMeshToPhysicsMesh(mesh) - if (mesh.parent) { - mesh.parent.matrixWorld.decompose( + addBoxGeometry(position, quaternion, size, dynamic) { + const physicsId = getNextPhysicsId() + physx.physxWorker.addBoxGeometryPhysics( + this.scene, + position, + quaternion, + size, + physicsId, + dynamic + ) + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + localVector2.set(1, 1, 1) + ) + const physicsMesh = new THREE.Mesh(new THREE.BoxGeometry(2, 2, 2), redMaterial) + physicsMesh.scale.copy(size) + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsObject.updateMatrixWorld() + const { bounds } = this.getGeometryForPhysicsId(physicsId) + physicsMesh.geometry.boundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(bounds, 0), + new THREE.Vector3().fromArray(bounds, 3) + ) + physicsObject.physicsMesh = physicsMesh + return physicsObject + } + extractPhysicsGeometryForId(physicsId) { + const physicsGeometry = this.getGeometryForPhysicsId(physicsId) + const { positions, indices, bounds } = physicsGeometry + let geometry = new THREE.BufferGeometry() + geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)) + geometry.setIndex(new THREE.BufferAttribute(indices, 1)) + geometry = geometry.toNonIndexed() + geometry.computeVertexNormals() + geometry.boundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(bounds, 0), + new THREE.Vector3().fromArray(bounds, 3) + ); + return geometry + } + addGeometry(mesh) { + const physicsMesh = convertMeshToPhysicsMesh(mesh) + + const physicsId = getNextPhysicsId() + physx.physxWorker.addGeometryPhysics( + this.scene, + physicsMesh, + physicsId + ) + physicsMesh.geometry = this.extractPhysicsGeometryForId(physicsId) + + const physicsObject = _makePhysicsObject( + physicsId, physicsMesh.position, physicsMesh.quaternion, physicsMesh.scale ) + physicsObject.add(physicsMesh) + physicsMesh.position.set(0, 0, 0) + physicsMesh.quaternion.set(0, 0, 0, 1) + physicsMesh.scale.set(1, 1, 1) physicsMesh.updateMatrixWorld() + physicsObject.physicsMesh = physicsMesh + return physicsObject } - - const physicsId = getNextPhysicsId() - physx.physxWorker.addConvexGeometryPhysics( - physx.physics, - physicsMesh, - physicsId - ) - physicsMesh.geometry = _extractPhysicsGeometryForId(physicsId) - - const physicsObject = _makePhysicsObject( - physicsId, - mesh.position, - mesh.quaternion, - mesh.scale - ) - physicsObject.add(physicsMesh) - physicsMesh.position.set(0, 0, 0) - physicsMesh.quaternion.set(0, 0, 0, 1) - physicsMesh.scale.set(1, 1, 1) - physicsMesh.updateMatrixWorld() - physicsObject.physicsMesh = physicsMesh - return physicsObject -} -physicsManager.cookConvexGeometry = (mesh) => - physx.physxWorker.cookConvexGeometryPhysics(physx.physics, mesh) -physicsManager.addCookedConvexGeometry = ( - buffer, - position, - quaternion, - scale -) => { - const physicsId = getNextPhysicsId() - physx.physxWorker.addCookedConvexGeometryPhysics( - physx.physics, + createMaterial(physicsMaterial) { + return physx.physxWorker.createMaterial(this.scene, physicsMaterial) + } + destroyMaterial(materialAddress) { + physx.physxWorker.destroyMaterial(this.scene, materialAddress); + } + cookGeometry(mesh) { + const physicsMesh = convertMeshToPhysicsMesh(mesh); + const buffer = physx.physxWorker.cookGeometryPhysics(physicsMesh); + return buffer; + } + async cookGeometryAsync(mesh, { + signal = null, + } = {}) { + const physicsMesh = convertMeshToPhysicsMesh(mesh); + const buffer = await physxWorkerManager.cookGeometry(physicsMesh); + signal && signal.throwIfAborted(); + return buffer; + } + addCookedGeometry(buffer, position, quaternion, scale) { + const physicsId = getNextPhysicsId() + physx.physxWorker.addCookedGeometryPhysics( + this.scene, + buffer, + position, + quaternion, + scale, + physicsId + ) + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + scale + ) + const physicsMesh = new THREE.Mesh(this.extractPhysicsGeometryForId(physicsId), redMaterial) + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsObject.physicsMesh = physicsMesh + physicsMesh.updateMatrixWorld() + return physicsObject + } + addConvexGeometry(mesh) { + const physicsMesh = convertMeshToPhysicsMesh(mesh) + + const physicsId = getNextPhysicsId() + physx.physxWorker.addConvexGeometryPhysics( + this.scene, + physicsMesh, + physicsId + ) + physicsMesh.geometry = this.extractPhysicsGeometryForId(physicsId) + + const physicsObject = _makePhysicsObject( + physicsId, + mesh.position, + mesh.quaternion, + mesh.scale + ) + physicsObject.add(physicsMesh) + physicsMesh.position.set(0, 0, 0) + physicsMesh.quaternion.set(0, 0, 0, 1) + physicsMesh.scale.set(1, 1, 1) + physicsMesh.updateMatrixWorld() + physicsObject.physicsMesh = physicsMesh + return physicsObject + } + cookConvexGeometry(mesh) { + const physicsMesh = convertMeshToPhysicsMesh(mesh); + const buffer = physx.physxWorker.cookConvexGeometryPhysics(this.scene, physicsMesh); + return buffer; + } + async cookConvexGeometryAsync(mesh, { + signal = null, + } = {}) { + const physicsMesh = convertMeshToPhysicsMesh(mesh); + const buffer = await physxWorkerManager.cookConvexGeometry(physicsMesh); + signal && signal.throwIfAborted(); + return buffer; + } + addCookedConvexGeometry( buffer, position, quaternion, - scale, - physicsId - ) - - const physicsObject = _makePhysicsObject( - physicsId, - position, - quaternion, scale - ) - const physicsMesh = new THREE.Mesh(_extractPhysicsGeometryForId(physicsId)) - physicsMesh.visible = false - physicsObject.add(physicsMesh) - physicsObject.physicsMesh = physicsMesh - return physicsObject -} - -physicsManager.getGeometryForPhysicsId = (physicsId) => - physx.physxWorker.getGeometryPhysics(physx.physics, physicsId) -physicsManager.getBoundingBoxForPhysicsId = (physicsId, box) => - physx.physxWorker.getBoundsPhysics(physx.physics, physicsId, box) -physicsManager.enableActor = (physicsObject) => { - physx.physxWorker.enableActorPhysics(physx.physics, physicsObject.physicsId) -} -physicsManager.disableActor = (physicsObject) => { - physx.physxWorker.disableActorPhysics(physx.physics, physicsObject.physicsId) -} -physicsManager.disableGeometry = (physicsObject) => { - physx.physxWorker.disableGeometryPhysics( - physx.physics, - physicsObject.physicsId - ) -} -physicsManager.enableGeometry = (physicsObject) => { - physx.physxWorker.enableGeometryPhysics( - physx.physics, - physicsObject.physicsId - ) -} -physicsManager.disableGeometryQueries = (physicsObject) => { - physx.physxWorker.disableGeometryQueriesPhysics( - physx.physics, - physicsObject.physicsId - ) -} -physicsManager.enableGeometryQueries = (physicsObject) => { - physx.physxWorker.enableGeometryQueriesPhysics( - physx.physics, - physicsObject.physicsId - ) -} -physicsManager.setMassAndInertia = (physicsObject, mass, inertia) => { - physx.physxWorker.setMassAndInertiaPhysics( - physx.physics, - physicsObject.physicsId, - mass, - inertia - ) -} -physicsManager.setGravityEnabled = (physicsObject, enabled) => { - physx.physxWorker.setGravityEnabledPhysics( - physx.physics, - physicsObject.physicsId, - enabled - ) -} -physicsManager.removeGeometry = (physicsObject) => { - // try { - physx.physxWorker.removeGeometryPhysics( - physx.physics, - physicsObject.physicsId - ) - /* } catch(err) { - console.warn('failed to remove geometry', err.stack); - } */ -} -physicsManager.getLinearVelocity = (physicsObject, velocity) => { - physx.physxWorker.getLinearVelocityPhysics(physx.physics, physicsObject.physicsId, velocity); -}; -physicsManager.getAngularVelocity = (physicsObject, velocity) => { - physx.physxWorker.getAngularVelocityPhysics(physx.physics, physicsObject.physicsId, velocity); -}; -physicsManager.getGlobalPosition = (physicsObject, position) => { - physx.physxWorker.getGlobalPositionPhysics( - physx.physics, - physicsObject.physicsId, - position - ) -} -physicsManager.addForceAtPos = (physicsObject, velocity, position, autoWake) => { - physx.physxWorker.addForceAtPosPhysics(physx.physics, physicsObject.physicsId, velocity, position, autoWake); -} -physicsManager.addLocalForceAtPos = (physicsObject, velocity, position, autoWake) => { - physx.physxWorker.addLocalForceAtPosPhysics(physx.physics, physicsObject.physicsId, velocity, position, autoWake); -} -physicsManager.addForceAtLocalPos = (physicsObject, velocity, position, autoWake) => { - physx.physxWorker.addForceAtLocalPosPhysics(physx.physics, physicsObject.physicsId, velocity, position, autoWake); -} -physicsManager.addLocalForceAtLocalPos = (physicsObject, velocity, position, autoWake) => { - physx.physxWorker.addLocalForceAtLocalPosPhysics(physx.physics, physicsObject.physicsId, velocity, position, autoWake); -} -physicsManager.addForce = (physicsObject, velocity, autoWake) => { - physx.physxWorker.addForcePhysics(physx.physics, physicsObject.physicsId, velocity, autoWake); -} -physicsManager.addTorque = (physicsObject, velocity, autoWake) => { - physx.physxWorker.addTorquePhysics(physx.physics, physicsObject.physicsId, velocity, autoWake); -} -physicsManager.setVelocity = (physicsObject, velocity, autoWake) => { - physx.physxWorker.setVelocityPhysics( - physx.physics, - physicsObject.physicsId, - velocity, - autoWake - ) -} -physicsManager.setAngularVelocity = (physicsObject, velocity, autoWake) => { - physx.physxWorker.setAngularVelocityPhysics( - physx.physics, - physicsObject.physicsId, - velocity, - autoWake - ) -} -physicsManager.setTransform = (physicsObject, autoWake) => { - physx.physxWorker.setTransformPhysics( - physx.physics, - physicsObject.physicsId, - physicsObject.position, - physicsObject.quaternion, - physicsObject.scale, - autoWake - ) -} -physicsManager.setGeometryScale = (physicsId, newScale) => { - physx.physxWorker.setGeometryScale(physx.physics, physicsId, newScale) -} -physicsManager.getPath = ( - start, - dest, - isWalk, - hy, - heightTolerance, - maxIterDetect, - maxIterStep, - ignorePhysicsIds -) => { - return physx.physxWorker.getPathPhysics( - physx.physics, + ) { + const physicsId = getNextPhysicsId() + physx.physxWorker.addCookedConvexGeometryPhysics( + this.scene, + buffer, + position, + quaternion, + scale, + physicsId + ) + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + scale + ) + const physicsMesh = new THREE.Mesh(this.extractPhysicsGeometryForId(physicsId), redMaterial) + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsObject.physicsMesh = physicsMesh + physicsMesh.updateMatrixWorld() + return physicsObject + } + addShape(shapeAddress, position, quaternion, scale, external) { + const physicsId = getNextPhysicsId() + + physx.physxWorker.addShapePhysics( + this.scene, + shapeAddress, + position, + quaternion, + scale, + external, + physicsId + ); + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + scale + ) + const physicsMesh = new THREE.Mesh(this.extractPhysicsGeometryForId(physicsId), redMaterial) + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsObject.physicsMesh = physicsMesh; + physicsMesh.updateMatrixWorld() + return physicsObject + } + addConvexShape(shapeAddress, position, quaternion, scale, dynamic, external) { + const physicsId = getNextPhysicsId() + + physx.physxWorker.addConvexShapePhysics( + this.scene, + shapeAddress, + position, + quaternion, + scale, + dynamic, + external, + physicsId + ); + + const physicsObject = _makePhysicsObject( + physicsId, + position, + quaternion, + scale + ) + const geometry = this.extractPhysicsGeometryForId(physicsId); + const physicsMesh = new THREE.Mesh(geometry, redMaterial); + + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsObject.physicsMesh = physicsMesh; + physicsMesh.updateMatrixWorld(); + return physicsObject + } + getGeometryForPhysicsId(physicsId) { + return physx.physxWorker.getGeometryPhysics(this.scene, physicsId); + } + getBoundingBoxForPhysicsId(physicsId, box) { + return physx.physxWorker.getBoundsPhysics(this.scene, physicsId, box); + } + enableActor(physicsObject) { + physx.physxWorker.enableActorPhysics(this.scene, physicsObject.physicsId) + } + disableActor(physicsObject) { + physx.physxWorker.disableActorPhysics(this.scene, physicsObject.physicsId) + } + disableGeometry(physicsObject) { + physx.physxWorker.disableGeometryPhysics( + this.scene, + physicsObject.physicsId + ) + } + enableGeometry(physicsObject) { + physx.physxWorker.enableGeometryPhysics( + this.scene, + physicsObject.physicsId + ) + } + disableGeometryQueries(physicsObject) { + physx.physxWorker.disableGeometryQueriesPhysics( + this.scene, + physicsObject.physicsId + ) + } + enableGeometryQueries(physicsObject) { + physx.physxWorker.enableGeometryQueriesPhysics( + this.scene, + physicsObject.physicsId + ) + } + setMassAndInertia(physicsObject, mass, inertia) { + physx.physxWorker.setMassAndInertiaPhysics( + this.scene, + physicsObject.physicsId, + mass, + inertia + ) + } + setGravityEnabled(physicsObject, enabled) { + physx.physxWorker.setGravityEnabledPhysics( + this.scene, + physicsObject.physicsId, + enabled + ) + } + removeGeometry(physicsObject) { + physx.physxWorker.removeGeometryPhysics( + this.scene, + physicsObject.physicsId + ) + + freePhysicsId(physicsObject.physicsId) + } + getLinearVelocity(physicsObject, velocity) { + physx.physxWorker.getLinearVelocityPhysics(this.scene, physicsObject.physicsId, velocity); + } + getAngularVelocity(physicsObject, velocity) { + physx.physxWorker.getAngularVelocityPhysics(this.scene, physicsObject.physicsId, velocity); + } + getGlobalPosition(physicsObject, position) { + physx.physxWorker.getGlobalPositionPhysics( + this.scene, + physicsObject.physicsId, + position + ) + } + addForceAtPos(physicsObject, velocity, position, autoWake) { + physx.physxWorker.addForceAtPosPhysics(this.scene, physicsObject.physicsId, velocity, position, autoWake); + } + addLocalForceAtPos(physicsObject, velocity, position, autoWake) { + physx.physxWorker.addLocalForceAtPosPhysics(this.scene, physicsObject.physicsId, velocity, position, autoWake); + } + addForceAtLocalPos(physicsObject, velocity, position, autoWake) { + physx.physxWorker.addForceAtLocalPosPhysics(this.scene, physicsObject.physicsId, velocity, position, autoWake); + } + addLocalForceAtLocalPos(physicsObject, velocity, position, autoWake) { + physx.physxWorker.addLocalForceAtLocalPosPhysics(this.scene, physicsObject.physicsId, velocity, position, autoWake); + } + addForce(physicsObject, velocity, autoWake) { + physx.physxWorker.addForcePhysics(this.scene, physicsObject.physicsId, velocity, autoWake); + } + addTorque(physicsObject, velocity, autoWake) { + physx.physxWorker.addTorquePhysics(this.scene, physicsObject.physicsId, velocity, autoWake); + } + setVelocity(physicsObject, velocity, autoWake) { + physx.physxWorker.setVelocityPhysics( + this.scene, + physicsObject.physicsId, + velocity, + autoWake + ) + } + setAngularVelocity(physicsObject, velocity, autoWake) { + physx.physxWorker.setAngularVelocityPhysics( + this.scene, + physicsObject.physicsId, + velocity, + autoWake + ) + } + setTransform(physicsObject, autoWake) { + physx.physxWorker.setTransformPhysics( + this.scene, + physicsObject.physicsId, + physicsObject.position, + physicsObject.quaternion, + physicsObject.scale, + autoWake + ) + } + setGeometryScale(physicsId, newScale) { + physx.physxWorker.setGeometryScale(this.scene, physicsId, newScale) + } + getPath( start, dest, isWalk, @@ -399,248 +508,263 @@ physicsManager.getPath = ( maxIterDetect, maxIterStep, ignorePhysicsIds - ) -} -physicsManager.overlapBox = (hx, hy, hz, p, q) => { - return physx.physxWorker.overlapBoxPhysics(physx.physics, hx, hy, hz, p, q) -} -physicsManager.overlapCapsule = (radius, halfHeight, p, q) => { - return physx.physxWorker.overlapCapsulePhysics( - physx.physics, - radius, - halfHeight, - p, - q - ) -} -physicsManager.collideBox = (hx, hy, hz, p, q, maxIter) => { - return physx.physxWorker.collideBoxPhysics( - physx.physics, - hx, - hy, - hz, - p, - q, - maxIter - ) -} -physicsManager.collideCapsule = (radius, halfHeight, p, q, maxIter) => { - return physx.physxWorker.collideCapsulePhysics( - physx.physics, - radius, - halfHeight, - p, - q, - maxIter - ) -} -physicsManager.createCharacterController = ( - radius, - height, - contactOffset, - stepOffset, - position -) => { - const physicsId = getNextPhysicsId() - const characterControllerId = - physx.physxWorker.createCharacterControllerPhysics( - physx.physics, + ) { + return physx.physxWorker.getPathPhysics( + this.scene, + start, + dest, + isWalk, + hy, + heightTolerance, + maxIterDetect, + maxIterStep, + ignorePhysicsIds + ) + } + overlapBox(hx, hy, hz, p, q) { + return physx.physxWorker.overlapBoxPhysics(this.scene, hx, hy, hz, p, q) + } + overlapCapsule(radius, halfHeight, p, q) { + return physx.physxWorker.overlapCapsulePhysics( + this.scene, radius, - height, - contactOffset, - stepOffset, - position, - physicsId + halfHeight, + p, + q ) - - const halfHeight = height / 2 - const physicsObject = new THREE.Object3D() - const physicsMesh = new THREE.Mesh( - new CapsuleGeometry(radius, radius, halfHeight * 2) - ) - physicsMesh.visible = false - physicsObject.add(physicsMesh) - physicsMesh.updateMatrixWorld() - const { bounds } = physicsManager.getGeometryForPhysicsId(physicsId) - physicsMesh.geometry.boundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(bounds, 0), - new THREE.Vector3().fromArray(bounds, 3) - ) - // console.log('character controller bounds', physicsId, physicsMesh.geometry.boundingBox); - physicsObject.physicsMesh = physicsMesh - physicsObject.characterControllerId = characterControllerId - physicsObject.physicsId = physicsId - - /* const physicsObject = _makePhysicsObject(physicsId, mesh.position, mesh.quaternion, mesh.scale); - physicsObject.add(physicsMesh); - physicsMesh.position.set(0, 0, 0); - physicsMesh.quaternion.set(0, 0, 0, 1); - physicsMesh.scale.set(1, 1, 1); - physicsMesh.updateMatrixWorld(); - physicsObject.physicsMesh = physicsMesh; - characterController.physicsObject = physicsObject; - console.log('character controller id', physicsObject); */ - - return physicsObject -} -physicsManager.destroyCharacterController = (characterController) => { - physx.physxWorker.destroyCharacterControllerPhysics( - physx.physics, - characterController.characterControllerId - ) -} -physicsManager.moveCharacterController = ( - characterController, - displacement, - minDist, - elapsedTime, - position -) => { - const result = physx.physxWorker.moveCharacterControllerPhysics( - physx.physics, - characterController.characterControllerId, + } + collideBox(hx, hy, hz, p, q, maxIter) { + return physx.physxWorker.collideBoxPhysics( + this.scene, + hx, + hy, + hz, + p, + q, + maxIter + ) + } + collideCapsule(radius, halfHeight, p, q, maxIter) { + return physx.physxWorker.collideCapsulePhysics( + this.scene, + radius, + halfHeight, + p, + q, + maxIter + ) + } + getCollisionObject(radius, halfHeight, p, q) { + return physx.physxWorker.getCollisionObjectPhysics( + this.scene, + radius, + halfHeight, + p, + q + ) + } + createCharacterController( + radius, + height, + contactOffset, + stepOffset, + position + ) { + const physicsId = getNextPhysicsId() + const characterControllerId = + physx.physxWorker.createCharacterControllerPhysics( + this.scene, + radius, + height, + contactOffset, + stepOffset, + position, + physicsId + ) + + const halfHeight = height / 2 + const physicsObject = new THREE.Object3D() + const physicsMesh = new THREE.Mesh( + new CapsuleGeometry(radius, radius, halfHeight * 2), + redMaterial + ) + physicsMesh.visible = false + physicsObject.add(physicsMesh) + physicsMesh.updateMatrixWorld() + const { bounds } = this.getGeometryForPhysicsId(physicsId) + physicsMesh.geometry.boundingBox = new THREE.Box3( + new THREE.Vector3().fromArray(bounds, 0), + new THREE.Vector3().fromArray(bounds, 3) + ) + // console.log('character controller bounds', physicsId, physicsMesh.geometry.boundingBox); + physicsObject.physicsMesh = physicsMesh + physicsObject.characterControllerId = characterControllerId + physicsObject.physicsId = physicsId + + /* const physicsObject = _makePhysicsObject(physicsId, mesh.position, mesh.quaternion, mesh.scale); + physicsObject.add(physicsMesh); + physicsMesh.position.set(0, 0, 0); + physicsMesh.quaternion.set(0, 0, 0, 1); + physicsMesh.scale.set(1, 1, 1); + physicsMesh.updateMatrixWorld(); + physicsObject.physicsMesh = physicsMesh; + characterController.physicsObject = physicsObject; + console.log('character controller id', physicsObject); */ + + return physicsObject + } + destroyCharacterController(characterController) { + physx.physxWorker.destroyCharacterControllerPhysics( + this.scene, + characterController.characterControllerId + ) + } + moveCharacterController( + characterController, displacement, minDist, elapsedTime, position - ) - return result -} -physicsManager.setCharacterControllerPosition = ( - characterController, - position -) => { - const result = physx.physxWorker.setCharacterControllerPositionPhysics( - physx.physics, - characterController.characterControllerId, + ) { + const result = physx.physxWorker.moveCharacterControllerPhysics( + this.scene, + characterController.characterControllerId, + displacement, + minDist, + elapsedTime, + position + ) + return result + } + setCharacterControllerPosition( + characterController, position - ) - return result -} -/* physicsManager.getTransforms = physicsObjects => { - //console.log(physicsObjects, "phyobjssss"); - const objs = physx.physxWorker.getTransformPhysics(physx.physics, physicsObjects); - return objs; -}; */ -physicsManager.raycast = (position, quaternion) => - physx.physxWorker.raycastPhysics(physx.physics, position, quaternion) -physicsManager.raycastArray = (position, quaternion, n) => - physx.physxWorker.raycastPhysicsArray(physx.physics, position, quaternion, n) -physicsManager.cutMesh = ( - positions, - numPositions, - normals, - numNormals, - uvs, - numUvs, - faces, // Set to falsy to indicate that this is an non-indexed geometry - numFaces, - - planeNormal, // normalized vector3 array - planeDistance // number -) => - physx.physxWorker.doCut( + ) { + const result = physx.physxWorker.setCharacterControllerPositionPhysics( + this.scene, + characterController.characterControllerId, + position + ) + return result + } + raycast(position, quaternion) { + return physx.physxWorker.raycastPhysics(this.scene, position, quaternion) + } + raycastArray(position, quaternion, n) { + return physx.physxWorker.raycastPhysicsArray(this.scene, position, quaternion, n) + } + cutMesh( positions, numPositions, normals, numNormals, uvs, numUvs, - faces, + faces, // Set to falsy to indicate that this is an non-indexed geometry numFaces, - - planeNormal, - planeDistance - ) -physicsManager.setLinearLockFlags = (physicsId, x, y, z) => { - physx.physxWorker.setLinearLockFlags(physx.physics, physicsId, x, y, z) -} -physicsManager.setAngularLockFlags = (physicsId, x, y, z) => { - physx.physxWorker.setAngularLockFlags(physx.physics, physicsId, x, y, z) -} - -physicsManager.sweepBox = ( - origin, - quaternion, - halfExtents, - direction, - sweepDistance, - maxHits -) => { - return physx.physxWorker.sweepBox( - physx.physics, + + planeNormal, // normalized vector3 array + planeDistance // number + ) { + return physx.physxWorker.doCut( + positions, + numPositions, + normals, + numNormals, + uvs, + numUvs, + faces, + numFaces, + + planeNormal, + planeDistance + ); + } + setLinearLockFlags(physicsId, x, y, z) { + physx.physxWorker.setLinearLockFlags(this.scene, physicsId, x, y, z) + } + setAngularLockFlags(physicsId, x, y, z) { + physx.physxWorker.setAngularLockFlags(this.scene, physicsId, x, y, z) + } + sweepBox( origin, quaternion, halfExtents, direction, sweepDistance, maxHits - ) -} - -physicsManager.simulatePhysics = (timeDiff) => { - if (physicsEnabled) { - const t = timeDiff / 1000 - const updatesOut = physx.physxWorker.simulatePhysics( - physx.physics, - physicsUpdates, - t - ) - physicsUpdates.length = 0 - for (const updateOut of updatesOut) { - const { id, position, quaternion, collided, grounded } = updateOut - const physicsObject = metaversefileApi.getPhysicsObjectByPhysicsId(id) - if (physicsObject) { - physicsObject.position.copy(position) - physicsObject.quaternion.copy(quaternion) - physicsObject.updateMatrixWorld() - - physicsObject.collided = collided - physicsObject.grounded = grounded - } /* else { - console.warn('failed to get physics object', id); - } */ + ) { + return physx.physxWorker.sweepBox( + this.scene, + origin, + quaternion, + halfExtents, + direction, + sweepDistance, + maxHits + ) + } + sweepConvexShape( + shapeAddress, + origin, + quaternion, + direction, + sweepDistance, + maxHits, + ) { + return physx.physxWorker.sweepConvexShape( + this.scene, + shapeAddress, + origin, + quaternion, + direction, + sweepDistance, + maxHits, + ) + } + simulatePhysics(timeDiff) { + if (this.physicsEnabled) { + const t = timeDiff / 1000 + const updatesOut = physx.physxWorker.simulatePhysics( + this.scene, + physicsUpdates, + t + ) + // physicsUpdates.length = 0 + _updatePhysicsObjects(updatesOut); } } + // + marchingCubes(dims, potential, shift, scale) { + return physx.physxWorker.marchingCubes(dims, potential, shift, scale); + } + // + createShape(buffer) { + return physx.physxWorker.createShapePhysics(this.scene, buffer); + } + createConvexShape(buffer) { + return physx.physxWorker.createConvexShapePhysics(this.scene, buffer); + } + getPhysicsEnabled() { + return this.physicsEnabled; + } + setPhysicsEnabled(newPhysicsEnabled) { + this.physicsEnabled = newPhysicsEnabled; + } + getGravity() { + return gravity; + } } -physicsManager.marchingCubes = (dims, potential, shift, scale) => - physx.physxWorker.marchingCubes(dims, potential, shift, scale) - -physicsManager.generateChunkDataDualContouring = (x, y, z) => - physx.physxWorker.generateChunkDataDualContouring(x, y, z) - -physicsManager.setChunkLodDualContouring = (x, y, z, lod) => - physx.physxWorker.setChunkLodDualContouring(x, y, z, lod) - -physicsManager.clearTemporaryChunkDataDualContouring = () => - physx.physxWorker.clearTemporaryChunkDataDualContouring() - -physicsManager.clearChunkRootDualContouring = (x, y, z) => - physx.physxWorker.clearChunkRootDualContouring(x, y, z) - -physicsManager.createChunkMeshDualContouring = (x, y, z) => - physx.physxWorker.createChunkMeshDualContouring(x, y, z) - -physicsManager.pushUpdate = (physicsObject) => { - const { physicsId, physicsMesh } = physicsObject - physicsMesh.matrixWorld.decompose(localVector, localQuaternion, localVector2) - - physicsUpdates.push({ - id: physicsId, - position: localVector.clone(), - quaternion: localQuaternion.clone(), - scale: localVector2.clone(), - }) -} - -let physicsEnabled = false -physicsManager.getPhysicsEnabled = () => physicsEnabled -physicsManager.setPhysicsEnabled = (newPhysicsEnabled) => { - physicsEnabled = newPhysicsEnabled -} - -const gravity = new THREE.Vector3(0, -9.8, 0) -physicsManager.getGravity = () => gravity - -export default physicsManager +const physicsManager = { + scenes: new Map(), + getScene(instance = null) { + let scene = this.scenes.get(instance); + if (!scene) { + scene = new PhysicsScene(); + this.scenes.set(instance, scene); + } + return scene; + }, +}; +export default physicsManager; \ No newline at end of file diff --git a/physx-lite.js b/physx-lite.js new file mode 100644 index 0000000000..9001dcd791 --- /dev/null +++ b/physx-lite.js @@ -0,0 +1,118 @@ +/* +physx lite worker wasm integration. +*/ + +// import * as THREE from 'three'; +import Module from './public/bin/app-wasm-worker.js'; +import {Allocator, ScratchStack} from './geometry-util.js'; + +const physxLite = {}; + +let loadPromise = null; +let scratchStack = null; +physxLite.waitForLoad = () => { + if (!loadPromise) { + loadPromise = (async () => { + await Module.waitForLoad(); + + Module._initialize(); + + const scratchStackSize = 1024 * 1024; + scratchStack = new ScratchStack(Module, scratchStackSize); + // physxLite.base = physxLite.makePhysicsBase(); + + // console.log('module called run', Module.calledRun); + /* if (Module.calledRun) { + // Module.onRuntimeInitialized() + Module.postRun() + } */ + })(); + } + return loadPromise; +}; + +/* physxLite.alloc = (constructor, count) => { + if (count > 0) { + const size = constructor.BYTES_PER_ELEMENT * count; + const ptr = Module._doMalloc(size); + return new constructor(Module.HEAP8.buffer, ptr, count); + } else { + return new constructor(Module.HEAP8.buffer, 0, 0); + } +}; */ +physxLite.free = (ptr) => { + Module._doFree(ptr) +}; +// physxLite.makePhysicsBase = () => Module._makePhysicsBase(); +physxLite.cookGeometryPhysics = (mesh) => { + mesh.updateMatrixWorld() + const { geometry } = mesh + + const allocator = new Allocator(Module) + const positions = allocator.alloc( + Float32Array, + geometry.attributes.position.count * 3 + ) + positions.set(geometry.attributes.position.array) + const indices = geometry.index + ? allocator.alloc(Uint32Array, geometry.index.count) + : null + indices && indices.set(geometry.index.array) + Module._cookGeometryPhysics( + positions.byteOffset, + indices ? indices.byteOffset : 0, + positions.length, + indices ? indices.length : 0, + scratchStack.u32.byteOffset, + scratchStack.u32.byteOffset + Uint32Array.BYTES_PER_ELEMENT, + scratchStack.u32.byteOffset + Uint32Array.BYTES_PER_ELEMENT * 2 + ) + + const dataPtr = scratchStack.u32[0]; + const dataLength = scratchStack.u32[1]; + const streamPtr = scratchStack.u32[2]; + + const result = Module.HEAPU8.slice(dataPtr, dataPtr + dataLength); + + allocator.freeAll(); + Module._deleteMemoryOutputStream(streamPtr); + + return result; +}; +physxLite.cookConvexGeometryPhysics = (mesh) => { + mesh.updateMatrixWorld() + const { geometry } = mesh + + const allocator = new Allocator(Module) + const positions = allocator.alloc( + Float32Array, + geometry.attributes.position.count * 3 + ) + positions.set(geometry.attributes.position.array) + const indices = geometry.index + ? allocator.alloc(Uint32Array, geometry.index.count) + : null + indices && indices.set(geometry.index.array) + Module._cookConvexGeometryPhysics( + positions.byteOffset, + indices ? indices.byteOffset : 0, + positions.length, + indices ? indices.length : 0, + scratchStack.u32.byteOffset, + scratchStack.u32.byteOffset + Uint32Array.BYTES_PER_ELEMENT, + scratchStack.u32.byteOffset + Uint32Array.BYTES_PER_ELEMENT * 2 + ) + + const dataPtr = scratchStack.u32[0]; + const dataLength = scratchStack.u32[1]; + const streamPtr = scratchStack.u32[2]; + + const result = Module.HEAPU8.slice(dataPtr, dataPtr + dataLength); + + allocator.freeAll(); + Module._deleteMemoryOutputStream(streamPtr); + + return result; +}; + +export default physxLite; \ No newline at end of file diff --git a/physx-worker-manager.js b/physx-worker-manager.js new file mode 100644 index 0000000000..6171f1413c --- /dev/null +++ b/physx-worker-manager.js @@ -0,0 +1,98 @@ +// import * as THREE from 'three'; +import {makeId} from './util.js'; +// import {defaultChunkSize} from './constants.js'; +// import metaversefile from 'metaversefile'; +// import { terrainVertex, terrainFragment } from './shaders/terrainShader.js'; +// import physics from './physics-manager.js'; + +// const localVector = new THREE.Vector3(); + +const defaultNumPhysicsWorkers = 2; + +class PhysicsWorkerManager { + constructor({ + numWorkers = defaultNumPhysicsWorkers, + } = {}) { + this.numWorkers = numWorkers; + + this.workers = []; + this.nextWorker = 0; + this.loadPromise = null; + } + waitForLoad() { + if (!this.loadPromise) { + this.loadPromise = (async () => { + // create workers + const workers = Array(this.numWorkers); + for (let i = 0; i < this.numWorkers; i++) { + const worker = new Worker('./physx-worker.js?import', { + type: 'module', + }); + const cbs = new Map(); + worker.onmessage = e => { + const {requestId} = e.data; + const cb = cbs.get(requestId); + if (cb) { + cbs.delete(requestId); + cb(e.data); + } else { + console.warn('worker message without callback', e.data); + } + }; + worker.onerror = err => { + console.log('physx worker load error', err); + }; + worker.request = (method, args) => { + return new Promise((resolve, reject) => { + const requestId = makeId(5); + cbs.set(requestId, data => { + const {error, result} = data; + if (error) { + reject(error); + } else { + resolve(result); + } + }); + worker.postMessage({ + method, + args, + requestId, + }); + }); + }; + workers[i] = worker; + } + this.workers = workers; + })(); + } + return this.loadPromise; + } + async cookGeometry(mesh) { + await this.waitForLoad(); + + const {workers} = this; + const worker = workers[this.nextWorker]; + this.nextWorker = (this.nextWorker + 1) % workers.length; + + const result = await worker.request('cookGeometry', { + positions: mesh.geometry.attributes.position.array, + indices: mesh.geometry.index.array, + }); + return result; + } + async cookConvexGeometry(mesh) { + await this.waitForLoad(); + + const {workers} = this; + const worker = workers[this.nextWorker]; + this.nextWorker = (this.nextWorker + 1) % workers.length; + + const result = await worker.request('cookConvexGeometry', { + positions: mesh.geometry.attributes.position.array, + indices: mesh.geometry.index.array, + }); + return result; + } +} +const physicsWorkerManager = new PhysicsWorkerManager(); +export default physicsWorkerManager; \ No newline at end of file diff --git a/physx-worker.js b/physx-worker.js new file mode 100644 index 0000000000..76f2d3bda9 --- /dev/null +++ b/physx-worker.js @@ -0,0 +1,110 @@ +import * as THREE from 'three'; +import physxLite from './physx-lite.js'; +import {makePromise} from './util.js' +import {defaultChunkSize} from './constants.js'; + +const chunkWorldSize = defaultChunkSize; + +const localVector = new THREE.Vector3(); + +const fakeMaterial = new THREE.MeshBasicMaterial({ + color: 0xffffff, +}); + +let loaded = false; +let running = false; +let queue = []; +const _handleMethod = ({ + method, + args, +}) => { + switch (method) { + case 'cookGeometry': { + const {positions, indices} = args; + const geometry = new THREE.BufferGeometry(); + geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); + geometry.setIndex(new THREE.BufferAttribute(indices, 1)); + const mesh = new THREE.Mesh(geometry, fakeMaterial); + const result = physxLite.cookGeometryPhysics(mesh); + return { + result, + transfers: [result.buffer], + }; + } + case 'cookConvexGeometry': { + const {positions, indices} = args; + const geometry = new THREE.BufferGeometry(); + geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); + geometry.setIndex(new THREE.BufferAttribute(indices, 1)); + const mesh = new THREE.Mesh(geometry, fakeMaterial); + const result = physxLite.cookConvexGeometryPhysics(mesh); + return { + result, + transfers: [result.buffer], + }; + } + default: { + throw new Error(`unknown method: ${method}`); + } + } +}; +const _handleMessage = async e => { + if (loaded && !running) { + const { + data, + port, + } = e; + + { + running = true; + + const {requestId} = data; + const p = makePromise(); + try { + const spec = await _handleMethod(data); + p.accept(spec); + } catch (err) { + p.reject(err); + } + + if (requestId) { + p.then(spec => { + const {result = null, transfers = []} = spec ?? {}; + port.postMessage({ + method: 'response', + requestId, + result, + }, transfers); + }, err => { + port.postMessage({ + requestId, + error: err.message, + }); + }); + } + + running = false; + } + // next + if (queue.length > 0) { + _handleMessage(queue.shift()); + } + } else { + queue.push(e); + } +}; +self.onmessage = e => { + _handleMessage({ + data: e.data, + port: self, + }); +}; + +(async () => { + await physxLite.waitForLoad(); + + loaded = true; + if (queue.length > 0) { + _handleMessage(queue.shift()); + } +})(); \ No newline at end of file diff --git a/physx.js b/physx.js index 8dea73fc9e..ef48423f5c 100644 --- a/physx.js +++ b/physx.js @@ -2,10 +2,11 @@ physx wasm integration. */ -import * as THREE from 'three' +import * as THREE from 'three'; // import {makePromise} from './util.js'; // import { getRenderer } from './renderer.js' -import Module from './public/bin/geometry.js' +import Module from './public/bin/geometry.js'; +import {Allocator, ScratchStack} from './geometry-util.js'; const localVector = new THREE.Vector3() const localVector2 = new THREE.Vector3() @@ -18,57 +19,46 @@ const capsuleUpQuaternion = new THREE.Quaternion().setFromAxisAngle( // const textEncoder = new TextEncoder(); // const textDecoder = new TextDecoder(); -const scratchStackSize = 1024 * 1024 -const maxNumUpdates = 256 +const physx = {}; -const physx = {} +let loadPromise = null; +let scratchStack = null; +physx.loaded = false; +physx.waitForLoad = () => { + if (!loadPromise) { + loadPromise = (async () => { + await Module.waitForLoad(); -physx.waitForLoad = Module.waitForLoad + Module._initialize(); -const physxWorker = (() => { - class Allocator { - constructor() { - this.offsets = [] - } + const scratchStackSize = 1024 * 1024; + scratchStack = new ScratchStack(Module, scratchStackSize); - alloc(constructor, size) { - if (size > 0) { - const offset = moduleInstance._malloc( - size * constructor.BYTES_PER_ELEMENT - ) - const b = new constructor( - moduleInstance.HEAP8.buffer, - moduleInstance.HEAP8.byteOffset + offset, - size - ) - b.offset = offset - this.offsets.push(offset) - return b - } else { - return new constructor(moduleInstance.HEAP8.buffer, 0, 0) - } - } + physx.loaded = true; - freeAll() { - for (let i = 0; i < this.offsets.length; i++) { - moduleInstance._doFree(this.offsets[i]) - } - this.offsets.length = 0 - } + // console.log('module called run', Module.calledRun); + /* if (Module.calledRun) { + // Module.onRuntimeInitialized() + Module.postRun() + } */ + })(); } + return loadPromise; +}; - const maxNumMessageArgs = 32 +const physxWorker = (() => { + /* const maxNumMessageArgs = 32 const messageSize = Int32Array.BYTES_PER_ELEMENT + // id Int32Array.BYTES_PER_ELEMENT + // method Int32Array.BYTES_PER_ELEMENT + // priority maxNumMessageArgs * Uint32Array.BYTES_PER_ELEMENT // args const maxNumMessages = 1024 - const callStackSize = maxNumMessages * messageSize - class CallStackMessage { + const callStackSize = maxNumMessages * messageSize */ + /* class CallStackMessage { constructor(ptr) { this.dataView = new DataView( - moduleInstance.HEAP8.buffer, + Module.HEAP8.buffer, ptr, messageSize ) @@ -152,7 +142,7 @@ const physxWorker = (() => { pushF32(v) { this.dataView.setFloat32(this.offset, v, true) this.offset += Float32Array.BYTES_PER_ELEMENT - } + } */ /* pullU8Array(length) { if (this.offset + length <= messageSize) { const result = new Uint8Array(this.dataView.buffer, this.dataView.byteOffset + this.offset, length); @@ -238,28 +228,28 @@ const physxWorker = (() => { throw new Error('message overflow'); } } */ - } - class CallStack { + // } + /* class CallStack { constructor() { - this.ptr = moduleInstance._malloc( + this.ptr = Module._malloc( callStackSize * 2 + Uint32Array.BYTES_PER_ELEMENT ) this.dataView = new DataView( - moduleInstance.HEAP8.buffer, + Module.HEAP8.buffer, this.ptr, callStackSize ) this.outPtr = this.ptr + callStackSize this.outDataView = new DataView( - moduleInstance.HEAP8.buffer, + Module.HEAP8.buffer, this.ptr + callStackSize, callStackSize ) this.outNumEntriesPtr = this.ptr + callStackSize * 2 this.outNumEntriesU32 = new Uint32Array( - moduleInstance.HEAP8.buffer, + Module.HEAP8.buffer, this.outNumEntriesPtr, 1 ) @@ -285,33 +275,7 @@ const physxWorker = (() => { reset() { this.numEntries = 0 } - } - class ScratchStack { - constructor() { - this.ptr = moduleInstance._malloc(scratchStackSize) - - this.u8 = new Uint8Array( - moduleInstance.HEAP8.buffer, - this.ptr, - scratchStackSize - ) - this.u32 = new Uint32Array( - moduleInstance.HEAP8.buffer, - this.ptr, - scratchStackSize / 4 - ) - this.i32 = new Int32Array( - moduleInstance.HEAP8.buffer, - this.ptr, - scratchStackSize / 4 - ) - this.f32 = new Float32Array( - moduleInstance.HEAP8.buffer, - this.ptr, - scratchStackSize / 4 - ) - } - } + } */ // const modulePromise = makePromise(); /* const INITIAL_INITIAL_MEMORY = 52428800; @@ -321,52 +285,43 @@ const physxWorker = (() => { "maximum": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE, "shared": true, }); */ - let moduleInstance = null - let scratchStack - ;(async () => { - await Module.waitForLoad() - - moduleInstance = Module - scratchStack = new ScratchStack() - physx.physics = physxWorker.makePhysics() - })() // let methodIndex = 0 - const cbIndex = new Map() + // const cbIndex = new Map() const w = {} w.alloc = (constructor, count) => { if (count > 0) { const size = constructor.BYTES_PER_ELEMENT * count - const ptr = moduleInstance._doMalloc(size) - return new constructor(moduleInstance.HEAP8.buffer, ptr, count) + const ptr = Module._doMalloc(size) + return new constructor(Module.HEAP8.buffer, ptr, count) } else { - return new constructor(moduleInstance.HEAP8.buffer, 0, 0) + return new constructor(Module.HEAP8.buffer, 0, 0) } - } + }; w.free = (ptr) => { - moduleInstance._doFree(ptr) - } + Module._doFree(ptr) + }; /* w.makeArenaAllocator = size => { - const ptr = moduleInstance._makeArenaAllocator(size); - const offset = moduleInstance.HEAP32[ptr / Uint32Array.BYTES_PER_ELEMENT]; + const ptr = Module._makeArenaAllocator(size); + const offset = Module.HEAP32[ptr / Uint32Array.BYTES_PER_ELEMENT]; return { ptr, getAs(constructor) { - return new constructor(moduleInstance.HEAP8.buffer, offset, size / constructor.BYTES_PER_ELEMENT); + return new constructor(Module.HEAP8.buffer, offset, size / constructor.BYTES_PER_ELEMENT); }, }; }; - w.makeGeometrySet = () => moduleInstance._makeGeometrySet(); + w.makeGeometrySet = () => Module._makeGeometrySet(); w.requestLoadBake = async (geometrySet, url) => { const res = await fetch(url); const arrayBuffer = await res.arrayBuffer(); const uint8Array = new Uint8Array(arrayBuffer); - const dataOffset = moduleInstance._malloc(uint8Array.length); - const data = moduleInstance.HEAPU8.subarray(dataOffset, dataOffset + uint8Array.length); + const dataOffset = Module._malloc(uint8Array.length); + const data = Module.HEAPU8.subarray(dataOffset, dataOffset + uint8Array.length); data.set(uint8Array); - moduleInstance._loadBake( + Module._loadBake( geometrySet, data.byteOffset, data.byteLength @@ -381,7 +336,7 @@ const physxWorker = (() => { scratchStack.u32[0] = dstNameUint8Array.byteOffset, - moduleInstance._getGeometry( + Module._getGeometry( geometrySet, dstNameUint8Array.byteOffset, dstNameUint8Array.byteLength, @@ -403,13 +358,13 @@ const physxWorker = (() => { const aabbOffset = scratchStack.u32[6]; const boundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(moduleInstance.HEAPF32.subarray(aabbOffset/Float32Array.BYTES_PER_ELEMENT, aabbOffset/Float32Array.BYTES_PER_ELEMENT + 3)), - new THREE.Vector3().fromArray(moduleInstance.HEAPF32.subarray(aabbOffset/Float32Array.BYTES_PER_ELEMENT + 3, aabbOffset/Float32Array.BYTES_PER_ELEMENT + 6)), + new THREE.Vector3().fromArray(Module.HEAPF32.subarray(aabbOffset/Float32Array.BYTES_PER_ELEMENT, aabbOffset/Float32Array.BYTES_PER_ELEMENT + 3)), + new THREE.Vector3().fromArray(Module.HEAPF32.subarray(aabbOffset/Float32Array.BYTES_PER_ELEMENT + 3, aabbOffset/Float32Array.BYTES_PER_ELEMENT + 6)), ); - const positions = new Float32Array(moduleInstance.HEAP8.buffer, positionsOffset, numPositions); - const uvs = new Float32Array(moduleInstance.HEAP8.buffer, uvsOffset, numUvs); - const indices = new Uint32Array(moduleInstance.HEAP8.buffer, indicesOffset, numIndices); + const positions = new Float32Array(Module.HEAP8.buffer, positionsOffset, numPositions); + const uvs = new Float32Array(Module.HEAP8.buffer, uvsOffset, numUvs); + const indices = new Uint32Array(Module.HEAP8.buffer, indicesOffset, numIndices); const geometry = new THREE.BufferGeometry(); geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); @@ -430,7 +385,7 @@ const physxWorker = (() => { m.pushU32(geometrySet); const geometryRequestSize = MAX_NAME_LENGTH + 10*Float32Array.BYTES_PER_ELEMENT; - geometryRequestsOffset = moduleInstance._malloc(geometryRequestSize * geometryRequests.length); + geometryRequestsOffset = Module._malloc(geometryRequestSize * geometryRequests.length); for (let i = 0; i < geometryRequests.length; i++) { const geometryRequest = geometryRequests[i]; @@ -438,13 +393,13 @@ const physxWorker = (() => { const geometryRequestOffset = geometryRequestsOffset + i*geometryRequestSize; const srcNameUint8Array = textEncoder.encode(name); - const dstNameUint8Array = moduleInstance.HEAPU8.subarray(geometryRequestOffset, geometryRequestOffset + MAX_NAME_LENGTH); + const dstNameUint8Array = Module.HEAPU8.subarray(geometryRequestOffset, geometryRequestOffset + MAX_NAME_LENGTH); dstNameUint8Array.set(srcNameUint8Array); dstNameUint8Array[srcNameUint8Array.length] = 0; - position.toArray(moduleInstance.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT); - quaternion.toArray(moduleInstance.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT + 3); - scale.toArray(moduleInstance.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT + 7); + position.toArray(Module.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT); + quaternion.toArray(Module.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT + 3); + scale.toArray(Module.HEAPF32, geometryRequestOffset/Float32Array.BYTES_PER_ELEMENT + MAX_NAME_LENGTH/Float32Array.BYTES_PER_ELEMENT + 7); } m.pushU32(geometryRequestsOffset); @@ -459,10 +414,10 @@ const physxWorker = (() => { // const numColors = m.pullU32(); const numIndices = m.pullU32(); - const positions = new Float32Array(moduleInstance.HEAP8.buffer, positionsOffset, numPositions); - const uvs = new Float32Array(moduleInstance.HEAP8.buffer, uvsOffset, numUvs); - // const colors = new Float32Array(moduleInstance.HEAP8.buffer, colorsOffset, numColors); - const indices = new Uint32Array(moduleInstance.HEAP8.buffer, indicesOffset, numIndices); + const positions = new Float32Array(Module.HEAP8.buffer, positionsOffset, numPositions); + const uvs = new Float32Array(Module.HEAP8.buffer, uvsOffset, numUvs); + // const colors = new Float32Array(Module.HEAP8.buffer, colorsOffset, numColors); + const indices = new Uint32Array(Module.HEAP8.buffer, indicesOffset, numIndices); const geometry = new THREE.BufferGeometry(); geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); @@ -493,13 +448,13 @@ const physxWorker = (() => { const nameLength = (() => { let j; for (j = 0; j < MAX_NAME_LENGTH; j++) { - if (moduleInstance.HEAPU8[nameOffset+j] === 0) { + if (Module.HEAPU8[nameOffset+j] === 0) { break; } } return j; })(); - const name = textDecoder.decode(moduleInstance.HEAPU8.slice(nameOffset, nameOffset + nameLength)); + const name = textDecoder.decode(Module.HEAPU8.slice(nameOffset, nameOffset + nameLength)); result.push(name); } @@ -526,11 +481,11 @@ const physxWorker = (() => { const headPivot = m.pullF32Array(3); const aabb = m.pullF32Array(6); - const positions = new Float32Array(moduleInstance.HEAP8.buffer, positionsOffset, numPositions); - const colors = new Uint8Array(moduleInstance.HEAP8.buffer, colorsOffset, numColors); - const indices = new Uint32Array(moduleInstance.HEAP8.buffer, indicesOffset, numIndices); - const heads = new Float32Array(moduleInstance.HEAP8.buffer, headsOffset, numHeads); - const legs = new Float32Array(moduleInstance.HEAP8.buffer, legsOffset, numLegs); + const positions = new Float32Array(Module.HEAP8.buffer, positionsOffset, numPositions); + const colors = new Uint8Array(Module.HEAP8.buffer, colorsOffset, numColors); + const indices = new Uint32Array(Module.HEAP8.buffer, indicesOffset, numIndices); + const heads = new Float32Array(Module.HEAP8.buffer, headsOffset, numHeads); + const legs = new Float32Array(Module.HEAP8.buffer, legsOffset, numLegs); accept({ positions, @@ -544,7 +499,7 @@ const physxWorker = (() => { }); }); w.getHeight = (hash, x, y, z, baseHeight) => { - return moduleInstance._doGetHeight( + return Module._doGetHeight( hash, x, y, @@ -553,10 +508,12 @@ const physxWorker = (() => { ); }; w.makeTracker = function() { - return moduleInstance._makeTracker.apply(moduleInstance, arguments); + return Module._makeTracker.apply(Module, arguments); }; */ - w.makePhysics = () => moduleInstance._makePhysics() + w.initialize = () => Module._initialize() + w.makeScene = () => Module._makePhysics() w.simulatePhysics = (physics, updates, elapsedTime) => { + const maxNumUpdates = 256; /* if (updates.length > maxNumUpdates) { throw new Error('too many updates to simulate step: ' + updates.length + ' (max: ' + maxNumUpdates + ')'); } */ @@ -597,7 +554,7 @@ const physxWorker = (() => { updates: updates.length, elapsedTime: elapsedTime, }); */ - const numNewUpdates = moduleInstance._simulatePhysics( + const numNewUpdates = Module._simulatePhysics( physics, ids.byteOffset, positions.byteOffset, @@ -632,14 +589,14 @@ const physxWorker = (() => { const materialByteOffset = scratchStack.f32.byteOffset; - const materialAddress = moduleInstance._createMaterialPhysics( + const materialAddress = Module._createMaterialPhysics( physics, materialByteOffset, ); return materialAddress; }; w.destroyMaterial = (physics, materialAddress) => { - moduleInstance._destroyMaterial(physics, materialAddress); + Module._destroyMaterial(physics, materialAddress); }; w.getDefaultMaterial = (() => { let defaultMaterial = null; @@ -707,7 +664,7 @@ const physxWorker = (() => { }; */ const maxDist = 1000 - moduleInstance._raycastPhysics( + Module._raycastPhysics( physics, originOffset, directionOffset, @@ -798,7 +755,7 @@ const physxWorker = (() => { // const quaternionOffset = scratchStack.u32.byteOffset + (26 * Float32Array.BYTES_PER_ELEMENT) * n; const maxDist = 1000 - moduleInstance._raycastPhysicsArray( + Module._raycastPhysicsArray( n, physics, originOffset, @@ -845,7 +802,7 @@ const physxWorker = (() => { planeNormal, // normalized vector3 array planeDistance, // number ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const positionsTypedArray = allocator.alloc(Float32Array, numPositions) positionsTypedArray.set(positions) @@ -865,7 +822,7 @@ const physxWorker = (() => { const planeNormalTypedArray = allocator.alloc(Float32Array, 3) planeNormalTypedArray.set(planeNormal) - const outputBufferOffset = moduleInstance._doCut( + const outputBufferOffset = Module._doCut( positionsTypedArray.byteOffset, numPositions, normalsTypedArray.byteOffset, @@ -882,24 +839,24 @@ const physxWorker = (() => { let head = outputBufferOffset / 4 let tail = head + 2 - const numOutPositionsTypedArray = moduleInstance.HEAPF32.slice(head, tail) + const numOutPositionsTypedArray = Module.HEAPF32.slice(head, tail) head = tail tail = head + 2 - const numOutNormalsTypedArray = moduleInstance.HEAPF32.slice(head, tail) + const numOutNormalsTypedArray = Module.HEAPF32.slice(head, tail) head = tail tail = head + 2 - const numOutUvsTypedArray = moduleInstance.HEAPF32.slice(head, tail) + const numOutUvsTypedArray = Module.HEAPF32.slice(head, tail) head = tail tail = head + (numOutPositionsTypedArray[0] + numOutPositionsTypedArray[1]) - const outPositions = moduleInstance.HEAPF32.slice(head, tail) + const outPositions = Module.HEAPF32.slice(head, tail) head = tail tail = head + (numOutNormalsTypedArray[0] + numOutNormalsTypedArray[1]) - const outNormals = moduleInstance.HEAPF32.slice(head, tail) + const outNormals = Module.HEAPF32.slice(head, tail) head = tail tail = head + (numOutUvsTypedArray[0] + numOutUvsTypedArray[1]) - const outUvs = moduleInstance.HEAPF32.slice(head, tail) + const outUvs = Module.HEAPF32.slice(head, tail) - moduleInstance._doFree(outputBufferOffset) + Module._doFree(outputBufferOffset) const output = { numOutPositions: numOutPositionsTypedArray, @@ -912,10 +869,10 @@ const physxWorker = (() => { return output } w.setLinearLockFlags = (physics, physicsId, x, y, z) => { - moduleInstance._setLinearLockFlagsPhysics(physics, physicsId, x, y, z) + Module._setLinearLockFlagsPhysics(physics, physicsId, x, y, z) } w.setAngularLockFlags = (physics, physicsId, x, y, z) => { - moduleInstance._setAngularLockFlagsPhysics(physics, physicsId, x, y, z) + Module._setAngularLockFlagsPhysics(physics, physicsId, x, y, z) } w.sweepBox = ( @@ -926,14 +883,8 @@ const physxWorker = (() => { direction, sweepDistance, maxHits, - /* numHitsBuf.byteOffset, - positionBuf.byteOffset, - normalBuf.byteOffset, - distanceBuf.byteOffset, - objectIdBuf.byteOffset, - faceIndexBuf.byteOffset, */ ) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); // inputs const originBuf = allocator.alloc( @@ -983,7 +934,7 @@ const physxWorker = (() => { maxHits * 1 ); - moduleInstance._sweepBox( + Module._sweepBox( physics, originBuf.byteOffset, quaternionBuf.byteOffset, @@ -1016,6 +967,93 @@ const physxWorker = (() => { return result }; + w.sweepConvexShape = ( + physics, + shapeAddress, + origin, + quaternion, + direction, + sweepDistance, + maxHits, + ) => { + const allocator = new Allocator(Module); + + // inputs + const originBuf = allocator.alloc( + Float32Array, + 3 + ); + origin.toArray(originBuf); + const quaternionBuf = allocator.alloc( + Float32Array, + 4 + ); + quaternion.toArray(quaternionBuf); + const directionBuf = allocator.alloc( + Float32Array, + 3 + ); + direction.toArray(directionBuf); + + // outputs + const numHitsBuf = allocator.alloc( + Uint32Array, + 1 + ); + const positionBuf = allocator.alloc( + Float32Array, + maxHits * 3 + ); + const normalBuf = allocator.alloc( + Float32Array, + maxHits * 3 + ); + const distanceBuf = allocator.alloc( + Float32Array, + maxHits * 1 + ); + const objectIdBuf = allocator.alloc( + Uint32Array, + maxHits * 1 + ); + const faceIndexBuf = allocator.alloc( + Uint32Array, + maxHits * 1 + ); + + Module._sweepConvexShape( + physics, + shapeAddress, + originBuf.byteOffset, + quaternionBuf.byteOffset, + directionBuf.byteOffset, + sweepDistance, + maxHits, + numHitsBuf.byteOffset, + positionBuf.byteOffset, + normalBuf.byteOffset, + distanceBuf.byteOffset, + objectIdBuf.byteOffset, + faceIndexBuf.byteOffset, + ); + + const numHits = numHitsBuf[0]; + let result = Array(numHits); + for (let i = 0; i < numHits; i++) { + const object = { + position: new THREE.Vector3().fromArray(positionBuf, i * 3), + normal: new THREE.Vector3().fromArray(normalBuf, i * 3), + distance: distanceBuf[i], + objectId: objectIdBuf[i], + faceIndex: faceIndexBuf[i], + }; + result[i] = object; + } + + allocator.freeAll(); + + return result + }; w.getPathPhysics = ( physics, @@ -1042,7 +1080,7 @@ const physxWorker = (() => { scratchStack.u32[6 + i] = ignorePhysicsIds[i] }) - const outputBufferOffset = moduleInstance._getPathPhysics( + const outputBufferOffset = Module._getPathPhysics( physics, startOffset, destOffset, @@ -1056,13 +1094,13 @@ const physxWorker = (() => { ) const head = outputBufferOffset / Float32Array.BYTES_PER_ELEMENT - const numWaypointResult = moduleInstance.HEAPF32[head + 0] + const numWaypointResult = Module.HEAPF32[head + 0] const waypointResult = [] for (let i = 0; i < numWaypointResult; i++) { const result = new THREE.Object3D() - result.position.x = moduleInstance.HEAPF32[head + i * 3 + 1] - result.position.y = moduleInstance.HEAPF32[head + i * 3 + 2] - result.position.z = moduleInstance.HEAPF32[head + i * 3 + 3] + result.position.x = Module.HEAPF32[head + i * 3 + 1] + result.position.y = Module.HEAPF32[head + i * 3 + 2] + result.position.z = Module.HEAPF32[head + i * 3 + 3] waypointResult.push(result) } waypointResult.forEach((result, i) => { @@ -1072,7 +1110,7 @@ const physxWorker = (() => { } }) - moduleInstance._doFree(outputBufferOffset) + Module._doFree(outputBufferOffset) return waypointResult } @@ -1092,7 +1130,7 @@ const physxWorker = (() => { const meshQuaternionOffset = scratchStack.f32.byteOffset + 10 * Float32Array.BYTES_PER_ELEMENT - const outputBufferOffset = moduleInstance._overlapBoxPhysics( + const outputBufferOffset = Module._overlapBoxPhysics( physics, hx, hy, @@ -1105,12 +1143,12 @@ const physxWorker = (() => { let head = outputBufferOffset / Float32Array.BYTES_PER_ELEMENT let tail = head + 1 - const numOutIds = moduleInstance.HEAPF32[head] + const numOutIds = Module.HEAPF32[head] head = tail tail = head + numOutIds - const outIds = moduleInstance.HEAPF32.slice(head, tail) + const outIds = Module.HEAPF32.slice(head, tail) - moduleInstance._doFree(outputBufferOffset) + Module._doFree(outputBufferOffset) return { objectIds: outIds, @@ -1134,7 +1172,7 @@ const physxWorker = (() => { const meshQuaternionOffset = scratchStack.f32.byteOffset + 10 * Float32Array.BYTES_PER_ELEMENT - const outputBufferOffset = moduleInstance._overlapCapsulePhysics( + const outputBufferOffset = Module._overlapCapsulePhysics( physics, radius, halfHeight, @@ -1146,12 +1184,12 @@ const physxWorker = (() => { let head = outputBufferOffset / Float32Array.BYTES_PER_ELEMENT let tail = head + 1 - const numOutIds = moduleInstance.HEAPF32[head] + const numOutIds = Module.HEAPF32[head] head = tail tail = head + numOutIds - const outIds = moduleInstance.HEAPF32.slice(head, tail) + const outIds = Module.HEAPF32.slice(head, tail) - moduleInstance._doFree(outputBufferOffset) + Module._doFree(outputBufferOffset) return { objectIds: outIds, @@ -1181,7 +1219,7 @@ const physxWorker = (() => { const idOffset = scratchStack.f32.byteOffset + 19 * Float32Array.BYTES_PER_ELEMENT - moduleInstance._collideBoxPhysics( + Module._collideBoxPhysics( physics, hx, hy, @@ -1232,7 +1270,7 @@ const physxWorker = (() => { const idOffset = scratchStack.f32.byteOffset + 19 * Float32Array.BYTES_PER_ELEMENT - moduleInstance._collideCapsulePhysics( + Module._collideCapsulePhysics( physics, radius, halfHeight, @@ -1277,7 +1315,7 @@ const physxWorker = (() => { const idOffset = scratchStack.f32.byteOffset + 15 * Float32Array.BYTES_PER_ELEMENT - moduleInstance._getCollisionObjectPhysics( + Module._getCollisionObjectPhysics( physics, radius, halfHeight, @@ -1299,7 +1337,7 @@ const physxWorker = (() => { w.addGeometryPhysics = (physics, mesh, id) => { const { geometry } = mesh - const allocator = new Allocator() + const allocator = new Allocator(Module) const positions = allocator.alloc( Float32Array, geometry.attributes.position.count * 3 @@ -1309,8 +1347,7 @@ const physxWorker = (() => { ? allocator.alloc(Uint32Array, geometry.index.count) : null indices && indices.set(geometry.index.array) - moduleInstance._cookGeometryPhysics( - physics, + Module._cookGeometryPhysics( positions.byteOffset, indices ? indices.byteOffset : 0, positions.length, @@ -1325,7 +1362,7 @@ const physxWorker = (() => { const dataLength = scratchStack.u32[1] const streamPtr = scratchStack.u32[2] - const shape = moduleInstance._createShapePhysics( + const shape = Module._createShapePhysics( physics, dataPtr, dataLength, @@ -1345,7 +1382,8 @@ const physxWorker = (() => { const materialAddress = w.getDefaultMaterial(physics) - moduleInstance._addGeometryPhysics( + const external = false; + Module._addGeometryPhysics( physics, shape, positionBuffer.byteOffset, @@ -1353,14 +1391,15 @@ const physxWorker = (() => { scaleBuffer.byteOffset, id, materialAddress, + +external, shape ) } - w.cookGeometryPhysics = (physics, mesh) => { + w.cookGeometryPhysics = (mesh) => { mesh.updateMatrixWorld() const { geometry } = mesh - const allocator = new Allocator() + const allocator = new Allocator(Module) const positions = allocator.alloc( Float32Array, geometry.attributes.position.count * 3 @@ -1370,8 +1409,7 @@ const physxWorker = (() => { ? allocator.alloc(Uint32Array, geometry.index.count) : null indices && indices.set(geometry.index.array) - moduleInstance._cookGeometryPhysics( - physics, + Module._cookGeometryPhysics( positions.byteOffset, indices ? indices.byteOffset : 0, positions.length, @@ -1385,8 +1423,7 @@ const physxWorker = (() => { const dataLength = scratchStack.u32[1] const streamPtr = scratchStack.u32[2] // XXX delete if it will not be deleted - const result = new Uint8Array(dataLength) - result.set(new Uint8Array(moduleInstance.HEAP8.buffer, dataPtr, dataLength)) + const result = Module.HEAPU8.slice(dataPtr, dataPtr + dataLength); allocator.freeAll() return result } @@ -1398,7 +1435,7 @@ const physxWorker = (() => { scale, id ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const buffer2 = allocator.alloc(Uint8Array, buffer.length) buffer2.set(buffer) @@ -1409,16 +1446,17 @@ const physxWorker = (() => { const scaleBuffer = scratchStack.f32.subarray(7, 10) scale.toArray(scaleBuffer) - const shape = moduleInstance._createShapePhysics( + const shape = Module._createShapePhysics( physics, buffer2.byteOffset, buffer2.byteLength, 0, - ) + ); const materialAddress = w.getDefaultMaterial(physics) - moduleInstance._addGeometryPhysics( + const external = false; + Module._addGeometryPhysics( physics, shape, positionBuffer.byteOffset, @@ -1426,16 +1464,17 @@ const physxWorker = (() => { scaleBuffer.byteOffset, id, materialAddress, + +external, 0 ) allocator.freeAll() } - w.addConvexGeometryPhysics = (physics, mesh, id) => { + w.addConvexGeometryPhysics = (physics, mesh, dynamic, external, id) => { mesh.updateMatrixWorld() const { geometry } = mesh - const allocator = new Allocator() + const allocator = new Allocator(Module) const positions = allocator.alloc( Float32Array, geometry.attributes.position.count * 3 @@ -1445,8 +1484,7 @@ const physxWorker = (() => { ? allocator.alloc(Uint32Array, geometry.index.count) : null indices && indices.set(geometry.index.array) - moduleInstance._cookConvexGeometryPhysics( - physics, + Module._cookConvexGeometryPhysics( positions.byteOffset, indices ? indices.byteOffset : 0, positions.length, @@ -1461,7 +1499,7 @@ const physxWorker = (() => { const dataLength = scratchStack.u32[1] const streamPtr = scratchStack.u32[2] - const shape = moduleInstance._createShapePhysics( + const shape = Module._createConvexShapePhysics( physics, dataPtr, dataLength, @@ -1481,7 +1519,7 @@ const physxWorker = (() => { const materialAddress = w.getDefaultMaterial(physics); - moduleInstance._addConvexGeometryPhysics( + Module._addConvexGeometryPhysics( physics, shape, positionBuffer.byteOffset, @@ -1489,14 +1527,16 @@ const physxWorker = (() => { scaleBuffer.byteOffset, id, materialAddress, - shape + +dynamic, + +external, + shape, ) } w.cookConvexGeometryPhysics = (physics, mesh) => { mesh.updateMatrixWorld() const { geometry } = mesh - const allocator = new Allocator() + const allocator = new Allocator(Module) const positions = allocator.alloc( Float32Array, geometry.attributes.position.count * 3 @@ -1506,8 +1546,7 @@ const physxWorker = (() => { ? allocator.alloc(Uint32Array, geometry.index.count) : null indices && indices.set(geometry.index.array) - moduleInstance._cookConvexGeometryPhysics( - physics, + Module._cookConvexGeometryPhysics( positions.byteOffset, indices ? indices.byteOffset : 0, positions.length, @@ -1521,8 +1560,7 @@ const physxWorker = (() => { const dataLength = scratchStack.u32[1] const streamPtr = scratchStack.u32[2] // XXX delete if it will not be deleted - const result = new Uint8Array(dataLength) - result.set(new Uint8Array(moduleInstance.HEAP8.buffer, dataPtr, dataLength)) + const result = Module.HEAPU8.slice(dataPtr, dataPtr + dataLength); allocator.freeAll() return result } @@ -1532,9 +1570,11 @@ const physxWorker = (() => { position, quaternion, scale, + dynamic, + external, id ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const buffer2 = allocator.alloc(Uint8Array, buffer.length) buffer2.set(buffer) @@ -1544,12 +1584,8 @@ const physxWorker = (() => { quaternion.toArray(quaternionBuffer) const scaleBuffer = scratchStack.f32.subarray(7, 10) scale.toArray(scaleBuffer) - /* const mat = scratchStack.f32.subarray(10, 13) - mat[0] = physicsMaterial[0] - mat[1] = physicsMaterial[1] - mat[2] = physicsMaterial[2] */ - const shape = moduleInstance._createShapePhysics( + const shape = Module._createShapePhysics( physics, buffer2.byteOffset, buffer2.byteLength, @@ -1558,7 +1594,7 @@ const physxWorker = (() => { const materialAddress = w.getDefaultMaterial(physics) - moduleInstance._addConvexGeometryPhysics( + Module._addConvexGeometryPhysics( physics, shape, positionBuffer.byteOffset, @@ -1566,20 +1602,75 @@ const physxWorker = (() => { scaleBuffer.byteOffset, id, materialAddress, - 0 + +dynamic, + +external, + 0, ) allocator.freeAll() } + w.addConvexShapePhysics = (physics, shape, position, quaternion, scale, dynamic, external, id) => { + const positionBuffer = scratchStack.f32.subarray(3, 6) + position.toArray(positionBuffer) + const quaternionBuffer = scratchStack.f32.subarray(6, 10) + quaternion.toArray(quaternionBuffer) + const scaleBuffer = scratchStack.f32.subarray(10, 13) + scale.toArray(scaleBuffer) + + const materialAddress = w.getDefaultMaterial(physics); + + Module._addConvexGeometryPhysics( + physics, + shape, + positionBuffer.byteOffset, + quaternionBuffer.byteOffset, + scaleBuffer.byteOffset, + id, + materialAddress, + +dynamic, + +external, + shape + ) + } + + w.createShapePhysics = (physics, buffer) => { + const allocator = new Allocator(Module) + const buffer2 = allocator.alloc(Uint8Array, buffer.length) + buffer2.set(buffer) + + const shapeAddress = Module._createShapePhysics( + physics, + buffer2.byteOffset, + buffer2.byteLength, + 0, + ); + allocator.freeAll(); + return shapeAddress; + }; + w.createConvexShapePhysics = (physics, buffer) => { + const allocator = new Allocator(Module) + const buffer2 = allocator.alloc(Uint8Array, buffer.length) + buffer2.set(buffer) + + const shapeAddress = Module._createConvexShapePhysics( + physics, + buffer2.byteOffset, + buffer2.byteLength, + 0, + ); + allocator.freeAll(); + return shapeAddress; + }; + w.getGeometryPhysics = (physics, id) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const positionsBuffer = allocator.alloc(Float32Array, 1024 * 1024 * 2) const numPositions = allocator.alloc(Uint32Array, 1) const indicesBuffer = allocator.alloc(Uint32Array, 1024 * 1024 * 2) const numIndices = allocator.alloc(Uint32Array, 1) const boundsBuffer = allocator.alloc(Float32Array, 6) - const ok = moduleInstance._getGeometryPhysics( + const ok = Module._getGeometryPhysics( physics, id, positionsBuffer.byteOffset, @@ -1607,10 +1698,10 @@ const physxWorker = (() => { } } w.getBoundsPhysics = (physics, id, box) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const boundsBuffer = allocator.alloc(Float32Array, 6) - const ok = moduleInstance._getBoundsPhysics( + const ok = Module._getBoundsPhysics( physics, id, boundsBuffer.byteOffset @@ -1630,69 +1721,69 @@ const physxWorker = (() => { } w.enableActorPhysics = (physics, id) => { - moduleInstance._enableActorPhysics(physics, id) + Module._enableActorPhysics(physics, id) } w.disableActorPhysics = (physics, id) => { - moduleInstance._disableActorPhysics(physics, id) + Module._disableActorPhysics(physics, id) } w.disableGeometryPhysics = (physics, id) => { - moduleInstance._disableGeometryPhysics(physics, id) + Module._disableGeometryPhysics(physics, id) } w.enableGeometryPhysics = (physics, id) => { - moduleInstance._enableGeometryPhysics(physics, id) + Module._enableGeometryPhysics(physics, id) } w.disableGeometryQueriesPhysics = (physics, id) => { - moduleInstance._disableGeometryQueriesPhysics(physics, id) + Module._disableGeometryQueriesPhysics(physics, id) } w.enableGeometryQueriesPhysics = (physics, id) => { - moduleInstance._enableGeometryQueriesPhysics(physics, id) + Module._enableGeometryQueriesPhysics(physics, id) } w.setMassAndInertiaPhysics = (physics, id, mass, inertia) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const inrt = allocator.alloc(Float32Array, 3) inertia.toArray(inrt) - moduleInstance._setMassAndInertiaPhysics(physics, id, mass, inrt) + Module._setMassAndInertiaPhysics(physics, id, mass, inrt) allocator.freeAll() } w.setGravityEnabledPhysics = (physics, id, enabled) => { - moduleInstance._setGravityEnabledPhysics(physics, id, enabled) + Module._setGravityEnabledPhysics(physics, id, enabled) } w.removeGeometryPhysics = (physics, id) => { - moduleInstance._removeGeometryPhysics(physics, id) + Module._removeGeometryPhysics(physics, id) } w.getGlobalPositionPhysics = (physics, id, position) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) - moduleInstance._getGlobalPositionPhysics(physics, id, p.byteOffset) + Module._getGlobalPositionPhysics(physics, id, p.byteOffset) position.fromArray(p) allocator.freeAll() } w.getLinearVelocityPhysics = (physics, id, velocity) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const v = allocator.alloc(Float32Array, 3) - moduleInstance._getLinearVelocityPhysics(physics, id, v.byteOffset) + Module._getLinearVelocityPhysics(physics, id, v.byteOffset) velocity.fromArray(v) allocator.freeAll() } w.getAngularVelocityPhysics = (physics, id, velocity) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const v = allocator.alloc(Float32Array, 3) - moduleInstance._getAngularVelocityPhysics(physics, id, v.byteOffset) + Module._getAngularVelocityPhysics(physics, id, v.byteOffset) velocity.fromArray(v) allocator.freeAll() } w.addForceAtPosPhysics = (physics, id, velocity, position, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); const pos = allocator.alloc(Float32Array, 3); @@ -1700,11 +1791,11 @@ const physxWorker = (() => { autoWake = autoWake ?? false; - moduleInstance._addForceAtPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); + Module._addForceAtPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); allocator.freeAll(); } w.addLocalForceAtPosPhysics = (physics, id, velocity, position, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); const pos = allocator.alloc(Float32Array, 3); @@ -1712,11 +1803,11 @@ const physxWorker = (() => { autoWake = autoWake ?? false; - moduleInstance._addLocalForceAtPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); + Module._addLocalForceAtPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); allocator.freeAll(); } w.addLocalForceAtLocalPosPhysics = (physics, id, velocity, position, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); const pos = allocator.alloc(Float32Array, 3); @@ -1724,11 +1815,11 @@ const physxWorker = (() => { autoWake = autoWake ?? false; - moduleInstance._addLocalForceAtLocalPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); + Module._addLocalForceAtLocalPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); allocator.freeAll(); } w.addForceAtLocalPosPhysics = (physics, id, velocity, position, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); const pos = allocator.alloc(Float32Array, 3); @@ -1736,47 +1827,47 @@ const physxWorker = (() => { autoWake = autoWake ?? false; - moduleInstance._addForceAtLocalPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); + Module._addForceAtLocalPosPhysics(physics, id, vel.byteOffset, pos.byteOffset, autoWake); allocator.freeAll(); } w.addForcePhysics = (physics, id, velocity, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); autoWake = autoWake ?? false; - moduleInstance._addForcePhysics(physics, id, vel.byteOffset, autoWake); + Module._addForcePhysics(physics, id, vel.byteOffset, autoWake); allocator.freeAll(); } w.addTorquePhysics = (physics, id, velocity, autoWake) => { - const allocator = new Allocator(); + const allocator = new Allocator(Module); const vel = allocator.alloc(Float32Array, 3); velocity.toArray(vel); autoWake = autoWake ?? false; - moduleInstance._addTorquePhysics(physics, id, vel.byteOffset, autoWake); + Module._addTorquePhysics(physics, id, vel.byteOffset, autoWake); allocator.freeAll(); } w.setVelocityPhysics = (physics, id, velocity, autoWake) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const vel = allocator.alloc(Float32Array, 3) velocity.toArray(vel) autoWake = autoWake ?? false - moduleInstance._setVelocityPhysics(physics, id, vel.byteOffset, autoWake) + Module._setVelocityPhysics(physics, id, vel.byteOffset, autoWake) allocator.freeAll() } w.setAngularVelocityPhysics = (physics, id, velocity, autoWake) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const vel = allocator.alloc(Float32Array, 3) velocity.toArray(vel) autoWake = autoWake ?? false - moduleInstance._setAngularVelocityPhysics( + Module._setAngularVelocityPhysics( physics, id, vel.byteOffset, @@ -1789,10 +1880,10 @@ const physxWorker = (() => { id, scale, ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const s = allocator.alloc(Float32Array, 3) scale.toArray(s) - moduleInstance._setGeometryScalePhysics( + Module._setGeometryScalePhysics( physics, id, s.byteOffset @@ -1807,7 +1898,7 @@ const physxWorker = (() => { scale, autoWake ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) const q = allocator.alloc(Float32Array, 4) const s = allocator.alloc(Float32Array, 3) @@ -1818,7 +1909,7 @@ const physxWorker = (() => { autoWake = autoWake ?? false - moduleInstance._setTransformPhysics( + Module._setTransformPhysics( physics, id, p.byteOffset, @@ -1865,7 +1956,7 @@ const physxWorker = (() => { update.scale.toArray(scales, i * 3) } - const numNewUpdates = moduleInstance._getTransformPhysics( + const numNewUpdates = Module._getTransformPhysics( physics, ids.byteOffset, positions.byteOffset, @@ -1904,7 +1995,7 @@ const physxWorker = (() => { debugger; } */ - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) const q = allocator.alloc(Float32Array, 4) @@ -1912,7 +2003,7 @@ const physxWorker = (() => { quaternion.toArray(q) const flagsInt = (+flags.physics << 0) | (+flags.ccd << 1) - moduleInstance._addCapsuleGeometryPhysics( + Module._addCapsuleGeometryPhysics( physics, p.byteOffset, q.byteOffset, @@ -1920,7 +2011,7 @@ const physxWorker = (() => { halfHeight, materialAddress, id, - dynamic, + +dynamic, flagsInt ) allocator.freeAll() @@ -1933,7 +2024,7 @@ const physxWorker = (() => { id, dynamic ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) const q = allocator.alloc(Float32Array, 4) const s = allocator.alloc(Float32Array, 3) @@ -1944,7 +2035,7 @@ const physxWorker = (() => { const materialAddress = w.getDefaultMaterial(physics); - moduleInstance._addBoxGeometryPhysics( + Module._addBoxGeometryPhysics( physics, p.byteOffset, q.byteOffset, @@ -1964,7 +2055,7 @@ const physxWorker = (() => { position, id ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) position.toArray(p) @@ -1972,7 +2063,7 @@ const physxWorker = (() => { const zeroMaterial = w.getZeroMaterial(physics); const characterController = - moduleInstance._createCharacterControllerPhysics( + Module._createCharacterControllerPhysics( physics, radius, height, @@ -1987,7 +2078,7 @@ const physxWorker = (() => { return characterController } w.destroyCharacterControllerPhysics = (physics, characterController) => { - moduleInstance._destroyCharacterControllerPhysics( + Module._destroyCharacterControllerPhysics( physics, characterController ) @@ -2000,13 +2091,13 @@ const physxWorker = (() => { elapsedTime, outPosition ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const disp = allocator.alloc(Float32Array, 3) const outPositions = allocator.alloc(Float32Array, 3) displacement.toArray(disp) - const flags = moduleInstance._moveCharacterControllerPhysics( + const flags = Module._moveCharacterControllerPhysics( physics, characterController, disp.byteOffset, @@ -2027,12 +2118,12 @@ const physxWorker = (() => { characterController, position ) => { - const allocator = new Allocator() + const allocator = new Allocator(Module) const p = allocator.alloc(Float32Array, 3) position.toArray(p) - moduleInstance._setCharacterControllerPositionPhysics( + Module._setCharacterControllerPositionPhysics( physics, characterController, p.byteOffset @@ -2040,8 +2131,10 @@ const physxWorker = (() => { allocator.freeAll() } + // + w.marchingCubes = (dims, potential, shift, scale) => { - let allocator = new Allocator() + let allocator = new Allocator(Module) const dimsTypedArray = allocator.alloc(Int32Array, 3) dimsTypedArray.set(dims) @@ -2055,7 +2148,7 @@ const physxWorker = (() => { const scaleTypedArray = allocator.alloc(Float32Array, 3) scaleTypedArray.set(scale) - const outputBufferOffset = moduleInstance._doMarchingCubes( + const outputBufferOffset = Module._doMarchingCubes( dimsTypedArray.byteOffset, potentialTypedArray.byteOffset, shiftTypedArray.byteOffset, @@ -2066,18 +2159,18 @@ const physxWorker = (() => { const head = outputBufferOffset / 4 - const positionCount = moduleInstance.HEAP32[head] - const faceCount = moduleInstance.HEAP32[head + 1] - const positions = moduleInstance.HEAPF32.slice( + const positionCount = Module.HEAP32[head] + const faceCount = Module.HEAP32[head + 1] + const positions = Module.HEAPF32.slice( head + 2, head + 2 + positionCount ) - const faces = moduleInstance.HEAPU32.slice( + const faces = Module.HEAPU32.slice( head + 2 + positionCount, head + 2 + positionCount + faceCount ) - moduleInstance._doFree(outputBufferOffset) + Module._doFree(outputBufferOffset) return { positionCount: positionCount, @@ -2087,81 +2180,6 @@ const physxWorker = (() => { } } - w.generateChunkDataDualContouring = (x, y, z) => { - moduleInstance._generateChunkDataDualContouring(x, y, z) - } - - w.setChunkLodDualContouring = (x, y, z, lod) => { - moduleInstance._setChunkLodDualContouring(x, y, z, lod) - } - - w.clearTemporaryChunkDataDualContouring = () => { - moduleInstance._clearTemporaryChunkDataDualContouring() - } - - w.clearChunkRootDualContouring = (x, y, z) => { - moduleInstance._clearChunkRootDualContouring(x, y, z) - } - - w.createChunkMeshDualContouring = (x, y, z) => { - const outputBufferOffset = moduleInstance._createChunkMeshDualContouring(x, y, z); - // console.log('create xyz', x, y, z, outputBufferOffset); - - if (outputBufferOffset) { - const _parseVertexBuffer = (arrayBuffer, bufferAddress) => { - const dataView = new DataView(arrayBuffer, bufferAddress); - - let index = 0; - - // positions - const numPositions = dataView.getUint32(index, true); - index += Uint32Array.BYTES_PER_ELEMENT; - const positions = new Float32Array(arrayBuffer, bufferAddress + index, numPositions * 3); - index += Float32Array.BYTES_PER_ELEMENT * numPositions * 3; - - // normals - const numNormals = dataView.getUint32(index, true); - index += Uint32Array.BYTES_PER_ELEMENT; - const normals = new Float32Array(arrayBuffer, bufferAddress + index, numNormals * 3); - index += Float32Array.BYTES_PER_ELEMENT * numNormals * 3; - - // biomes - const numBiomes = dataView.getUint32(index, true); - index += Uint32Array.BYTES_PER_ELEMENT; - const biomes = new Int32Array(arrayBuffer, bufferAddress + index, numBiomes * 4); - index += Int32Array.BYTES_PER_ELEMENT * numBiomes * 4; - - // biome weights - const numBiomesWeights = dataView.getUint32(index, true); - index += Uint32Array.BYTES_PER_ELEMENT; - const biomesWeights = new Float32Array(arrayBuffer, bufferAddress +index, numBiomesWeights * 4); - index += Float32Array.BYTES_PER_ELEMENT * numBiomesWeights * 4; - - // indices - const numIndices = dataView.getUint32(index, true); - index += Uint32Array.BYTES_PER_ELEMENT; - const indices = new Uint32Array(arrayBuffer, bufferAddress + index, numIndices); - index += Uint32Array.BYTES_PER_ELEMENT * numIndices; - - return { - bufferAddress, - positions, - normals, - biomes, - biomesWeights, - indices, - }; - }; - const result = _parseVertexBuffer( - moduleInstance.HEAP8.buffer, - moduleInstance.HEAP8.byteOffset + outputBufferOffset - ); - return result; - } else { - return null; - } - }; - return w; })() @@ -2174,12 +2192,4 @@ const _updateGeometry = () => { } physx.update = _updateGeometry -const _initModule = () => { - if (Module.calledRun) { - Module.onRuntimeInitialized() - Module.postRun() - } -} -_initModule() - export default physx diff --git a/player-avatar-binding.js b/player-avatar-binding.js index 46bc4b2aa9..5a8a0a49db 100644 --- a/player-avatar-binding.js +++ b/player-avatar-binding.js @@ -72,6 +72,7 @@ export function applyPlayerActionsToAvatar(player, rig) { const jumpAction = player.getAction('jump'); const flyAction = player.getAction('fly'); const useAction = player.getAction('use'); + const pickUpAction = player.getAction('pickUp'); const narutoRunAction = player.getAction('narutoRun'); const sitAction = player.getAction('sit'); const sitAnimation = sitAction ? sitAction.animation : ''; @@ -82,6 +83,7 @@ export function applyPlayerActionsToAvatar(player, rig) { // const throwAction = player.getAction('throw'); const aimAction = player.getAction('aim'); const crouchAction = player.getAction('crouch'); + const wearAction = player.getAction('wear'); // const chargeJump = player.getAction('chargeJump'); // const chargeJumpAnimation = chargeJump ? chargeJump.animation : ''; // const standCharge = player.getAction('standCharge'); @@ -100,37 +102,46 @@ export function applyPlayerActionsToAvatar(player, rig) { rig.flyTime = flyAction ? player.actionInterpolants.fly.get() : -1; rig.activateTime = player.actionInterpolants.activate.get(); - if (useAction?.animation) { - rig.useAnimation = useAction.animation; - } else { - if (rig.useAnimation) { - rig.useAnimation = ''; - } - } - if (useAction?.animationCombo) { - rig.useAnimationCombo = useAction.animationCombo; - } else { - if (rig.useAnimationCombo.length > 0) { - rig.useAnimationCombo = []; + const _handleUse = () => { + if (useAction?.animation) { + rig.useAnimation = useAction.animation; + } else { + if (rig.useAnimation) { + rig.useAnimation = ''; + } } - } - if (useAction?.animationEnvelope) { - rig.useAnimationEnvelope = useAction.animationEnvelope; - } else { - if (rig.useAnimationEnvelope.length > 0) { - rig.useAnimationEnvelope = []; + if (useAction?.animationCombo) { + rig.useAnimationCombo = useAction.animationCombo; + } else { + if (rig.useAnimationCombo.length > 0) { + rig.useAnimationCombo = []; + } } - } - rig.useAnimationIndex = useAction?.index; - rig.useTime = player.actionInterpolants.use.get(); - rig.unuseTime = player.actionInterpolants.unuse.get(); - if (rig.unuseTime === 0) { // this means use is active if (useAction?.animationEnvelope) { - rig.unuseAnimation = rig.useAnimationEnvelope[2]; // the last animation in the triplet is the unuse animation + rig.useAnimationEnvelope = useAction.animationEnvelope; } else { - rig.unuseAnimation = null; + if (rig.useAnimationEnvelope.length > 0) { + rig.useAnimationEnvelope = []; + } } - } + rig.useAnimationIndex = useAction?.index; + rig.useTime = player.actionInterpolants.use.get(); + rig.unuseTime = player.actionInterpolants.unuse.get(); + if (rig.unuseTime === 0) { // this means use is active + if (useAction?.animationEnvelope) { + rig.unuseAnimation = rig.useAnimationEnvelope[2]; // the last animation in the triplet is the unuse animation + } else { + rig.unuseAnimation = null; + } + } + }; + _handleUse(); + + const _handlePickUp = () => { + rig.pickUpState = !!pickUpAction; + rig.pickUpTime = player.actionInterpolants.pickUp.get(); + }; + _handlePickUp(); rig.manuallySetMouth = player.characterBehavior.manuallySetMouth; rig.vowels[1] = player.characterBehavior.manuallySetMouth ? 0 : rig.vowels[1]; @@ -138,7 +149,6 @@ export function applyPlayerActionsToAvatar(player, rig) { rig.vowels[3] = player.characterBehavior.manuallySetMouth ? 0 : rig.vowels[3]; rig.vowels[4] = player.characterBehavior.manuallySetMouth ? 0 : rig.vowels[4]; - rig.narutoRunState = !!narutoRunAction && !crouchAction; rig.narutoRunTime = player.actionInterpolants.narutoRun.get(); rig.aimState = !!aimAction; @@ -150,6 +160,10 @@ export function applyPlayerActionsToAvatar(player, rig) { // aimAction && rig.aimDirection.applyQuaternion(rig.inputs.hmd.quaternion); rig.sitState = !!sitAction; rig.sitAnimation = sitAnimation; + + // XXX this needs to be based on the current loadout index + rig.holdState = wearAction?.holdAnimation === 'pick_up_idle'; + if (rig.holdState) rig.unuseAnimation = null; // rig.danceState = !!danceAction; rig.danceFactor = player.actionInterpolants.dance.get(); if (danceAction) { diff --git a/players-manager.js b/players-manager.js index 0ebdcbf780..0ad7918235 100644 --- a/players-manager.js +++ b/players-manager.js @@ -4,8 +4,6 @@ player objects load their own avatar and apps using this binding */ // import * as THREE from 'three'; import * as Z from 'zjs'; import {RemotePlayer} from './character-controller.js'; -// import {getPlayerPrefix} from './util.js'; -// import {playersMapName} from './constants.js'; import metaversefileApi from 'metaversefile'; class PlayersManager { @@ -80,11 +78,11 @@ class PlayersManager { this.unbindStateFn = this.playersArray.unobserve.bind(this.playersArray, playersObserveFn); } } - updateRemotePlayers(timestamp, timeDiff) { - for (const remotePlayer of this.remotePlayers.values()) { - remotePlayer.updateAvatar(timestamp, timeDiff); - } - } + // updateRemotePlayers(timestamp, timeDiff) { + // for (const remotePlayer of this.remotePlayers.values()) { + // remotePlayer.updateAvatar(timestamp, timeDiff); + // } + // } } const playersManager = new PlayersManager(); diff --git a/players.js b/players.js index 7a0c018a81..52fe135a4f 100644 --- a/players.js +++ b/players.js @@ -1,13 +1,21 @@ import * as Z from 'zjs'; +// import metaversefile from 'metaversefile'; import {LocalPlayer} from './character-controller.js'; -import {makeId, getRandomString, getPlayerPrefix, memoize} from './util.js'; -import {initialPosY} from './constants.js'; +import {makeId} from './util.js'; +import {initialPosY, playersMapName} from './constants.js'; -export const localPlayer = new LocalPlayer({ - prefix: getPlayerPrefix(makeId(5)), - state: new Z.Doc(), +const localPlayerId = makeId(5); +const localPlayersArray = new Z.Doc().getArray(playersMapName); +let localPlayer = new LocalPlayer({ + playerId: localPlayerId, + playersArray: localPlayersArray, }); localPlayer.position.y = initialPosY; localPlayer.updateMatrixWorld(); +export const getLocalPlayer = () => localPlayer; +export const setLocalPlayer = newLocalPlayer => { + localPlayer = newLocalPlayer; +} + export const remotePlayers = new Map(); \ No newline at end of file diff --git a/post-processing.js b/post-processing.js index 84eccf53a5..3fc3e42ffc 100644 --- a/post-processing.js +++ b/post-processing.js @@ -13,7 +13,7 @@ import {BokehPass} from './BokehPass.js'; import {SSAOPass} from './SSAOPass.js'; // import {RenderPass} from './RenderPass.js'; import {DepthPass} from './DepthPass.js'; -import {SwirlPass} from './SwirlPass.js'; +// import {SwirlPass} from './SwirlPass.js'; import { getRenderer, getComposer, @@ -33,8 +33,8 @@ import {WebaverseRenderPass} from './webaverse-render-pass.js'; import renderSettingsManager from './rendersettings-manager.js'; import metaversefileApi from 'metaversefile'; // import {parseQuery} from './util.js'; -import * as sounds from './sounds.js'; -import musicManager from './music-manager.js'; +// import * as sounds from './sounds.js'; +// import musicManager from './music-manager.js'; // const hqDefault = parseQuery(window.location.search)['hq'] === '1'; @@ -168,7 +168,10 @@ function makeEncodingPass() { } const webaverseRenderPass = new WebaverseRenderPass(); -const _isDecapitated = () => (/^(?:camera|firstperson)$/.test(cameraManager.getMode()) || !!getRenderer().xr.getSession()); +const _isDecapitated = () => ( + (/^(?:camera|firstperson)$/.test(cameraManager.getMode()) && !cameraManager.target) || + !!getRenderer().xr.getSession() +); webaverseRenderPass.onBeforeRender = (a, b, c) => { // ensure lights attached // scene.add(world.lights); diff --git a/procgen-manager.js b/procgen-manager.js new file mode 100644 index 0000000000..9879372646 --- /dev/null +++ b/procgen-manager.js @@ -0,0 +1,91 @@ +/* this file implements the top-level world procedural generation context. +it starts the workers and routes calls for the procgen system. */ + +import {murmurhash3} from './procgen/procgen.js'; +import {DcWorkerManager} from './dc-worker-manager.js'; +import {LodChunkTracker} from './lod.js'; +import {LightMapper} from './light-mapper.js'; +import {HeightfieldMapper} from './heightfield-mapper.js'; +import {defaultChunkSize} from './constants.js'; + +const chunkSize = defaultChunkSize; +const terrainWidthInChunks = 4; +const terrainSize = chunkSize * terrainWidthInChunks; + +class ProcGenInstance { + constructor(instance, { + chunkSize, + range, + }) { + this.chunkSize = chunkSize; + + const seed = typeof instance === 'string' ? murmurhash3(instance) : Math.floor(Math.random() * 0xFFFFFF); + this.dcWorkerManager = new DcWorkerManager({ + chunkSize, + seed, + instance, + }); + this.range = range; + + this.lightmapper = null; + this.heightfieldMapper = null; + + if (range) { + this.dcWorkerManager.setClipRange(range); + } + } + getChunkTracker(opts = {}) { + const opts2 = structuredClone(opts); + const {chunkSize, range} = this; + opts2.chunkSize = chunkSize; + opts2.range = range; + + const tracker = new LodChunkTracker(opts2); + return tracker; + } + getLightMapper() { + if (!this.lightmapper) { + const {chunkSize, range} = this; + this.lightmapper = new LightMapper({ + chunkSize, + terrainSize, + range, + }); + } + return this.lightmapper; + } + getHeightfieldMapper() { + if (!this.heightfieldMapper) { + const {chunkSize, range} = this; + this.heightfieldMapper = new HeightfieldMapper({ + chunkSize, + terrainSize, + range, + }); + } + return this.heightfieldMapper; + } +} + +class ProcGenManager { + constructor({ + chunkSize = defaultChunkSize, + } = {}) { + this.instances = new Map(); + this.chunkSize = chunkSize; + } + getInstance(key, range) { + let instance = this.instances.get(key); + if (!instance) { + const {chunkSize} = this; + instance = new ProcGenInstance(key, { + chunkSize, + range, + }); + this.instances.set(key, instance); + } + return instance; + } +} +const procGenManager = new ProcGenManager(); +export default procGenManager; \ No newline at end of file diff --git a/public/animations/animations.z b/public/animations/animations.z index 407dab0271..de5c68d37f 100644 Binary files a/public/animations/animations.z and b/public/animations/animations.z differ diff --git a/public/animations/lean_arm_wall.fbx b/public/animations/lean_arm_wall.fbx new file mode 100644 index 0000000000..673a026356 Binary files /dev/null and b/public/animations/lean_arm_wall.fbx differ diff --git a/public/animations/lean_arm_wall_return.fbx b/public/animations/lean_arm_wall_return.fbx new file mode 100644 index 0000000000..33717fdc11 Binary files /dev/null and b/public/animations/lean_arm_wall_return.fbx differ diff --git a/public/animations/lean_back_sit.fbx b/public/animations/lean_back_sit.fbx new file mode 100644 index 0000000000..307dbfb32e Binary files /dev/null and b/public/animations/lean_back_sit.fbx differ diff --git a/public/animations/lean_back_sit_return.fbx b/public/animations/lean_back_sit_return.fbx new file mode 100644 index 0000000000..0e2938b1d7 Binary files /dev/null and b/public/animations/lean_back_sit_return.fbx differ diff --git a/public/animations/lean_back_wall.fbx b/public/animations/lean_back_wall.fbx new file mode 100644 index 0000000000..9ba02d970d Binary files /dev/null and b/public/animations/lean_back_wall.fbx differ diff --git a/public/animations/lean_back_wall_return.fbx b/public/animations/lean_back_wall_return.fbx new file mode 100644 index 0000000000..a56ac636f4 Binary files /dev/null and b/public/animations/lean_back_wall_return.fbx differ diff --git a/public/animations/pick_up.fbx b/public/animations/pick_up.fbx new file mode 100644 index 0000000000..a6ac1d3e08 Binary files /dev/null and b/public/animations/pick_up.fbx differ diff --git a/public/animations/pick_up_idle.fbx b/public/animations/pick_up_idle.fbx new file mode 100644 index 0000000000..9deaff3f8d Binary files /dev/null and b/public/animations/pick_up_idle.fbx differ diff --git a/public/animations/pick_up_idle_zelda.fbx b/public/animations/pick_up_idle_zelda.fbx new file mode 100644 index 0000000000..271afe8873 Binary files /dev/null and b/public/animations/pick_up_idle_zelda.fbx differ diff --git a/public/animations/pick_up_throw.fbx b/public/animations/pick_up_throw.fbx new file mode 100644 index 0000000000..c5747c9aac Binary files /dev/null and b/public/animations/pick_up_throw.fbx differ diff --git a/public/animations/pick_up_zelda.fbx b/public/animations/pick_up_zelda.fbx new file mode 100644 index 0000000000..2bef5d6d9f Binary files /dev/null and b/public/animations/pick_up_zelda.fbx differ diff --git a/public/animations/pickaxe_swing.fbx b/public/animations/pickaxe_swing.fbx new file mode 100644 index 0000000000..c9ffaded60 Binary files /dev/null and b/public/animations/pickaxe_swing.fbx differ diff --git a/public/animations/put_down.fbx b/public/animations/put_down.fbx new file mode 100644 index 0000000000..d6b2b6a763 Binary files /dev/null and b/public/animations/put_down.fbx differ diff --git a/public/animations/put_down_zelda.fbx b/public/animations/put_down_zelda.fbx new file mode 100644 index 0000000000..dfed779a9a Binary files /dev/null and b/public/animations/put_down_zelda.fbx differ diff --git a/public/animations/sit_crouched.fbx b/public/animations/sit_crouched.fbx new file mode 100644 index 0000000000..bea0bc6f55 Binary files /dev/null and b/public/animations/sit_crouched.fbx differ diff --git a/public/animations/sit_crouched_return.fbx b/public/animations/sit_crouched_return.fbx new file mode 100644 index 0000000000..d84ab9e632 Binary files /dev/null and b/public/animations/sit_crouched_return.fbx differ diff --git a/public/animations/sit_down_cross_legged.fbx b/public/animations/sit_down_cross_legged.fbx new file mode 100644 index 0000000000..6a88c85c9d Binary files /dev/null and b/public/animations/sit_down_cross_legged.fbx differ diff --git a/public/animations/sit_down_cross_legged_return.fbx b/public/animations/sit_down_cross_legged_return.fbx new file mode 100644 index 0000000000..e7c81efcbf Binary files /dev/null and b/public/animations/sit_down_cross_legged_return.fbx differ diff --git a/public/animations/sit_kneeling.fbx b/public/animations/sit_kneeling.fbx new file mode 100644 index 0000000000..d6abd1e3e9 Binary files /dev/null and b/public/animations/sit_kneeling.fbx differ diff --git a/public/animations/sit_kneeling_return.fbx b/public/animations/sit_kneeling_return.fbx new file mode 100644 index 0000000000..56fd7f4009 Binary files /dev/null and b/public/animations/sit_kneeling_return.fbx differ diff --git a/public/animations/sit_laydown.fbx b/public/animations/sit_laydown.fbx new file mode 100644 index 0000000000..e4def28dd1 Binary files /dev/null and b/public/animations/sit_laydown.fbx differ diff --git a/public/animations/sit_laydown_return.fbx b/public/animations/sit_laydown_return.fbx new file mode 100644 index 0000000000..b920ab7793 Binary files /dev/null and b/public/animations/sit_laydown_return.fbx differ diff --git a/public/avatars/Buster_Rabbit_V1.1_Guilty.vrm b/public/avatars/Buster_Rabbit_V1.1_Guilty.vrm new file mode 100644 index 0000000000..b380ce60c5 Binary files /dev/null and b/public/avatars/Buster_Rabbit_V1.1_Guilty.vrm differ diff --git a/public/avatars/scilly_drophunter_v30.5_Guilty.vrm b/public/avatars/scilly_drophunter_v30.5_Guilty.vrm new file mode 100644 index 0000000000..22f5b90dce Binary files /dev/null and b/public/avatars/scilly_drophunter_v30.5_Guilty.vrm differ diff --git a/public/avatars/scilly_drophunter_v31.6_Guilty.vrm b/public/avatars/scilly_drophunter_v31.6_Guilty.vrm new file mode 100644 index 0000000000..1a9a871c92 Binary files /dev/null and b/public/avatars/scilly_drophunter_v31.6_Guilty.vrm differ diff --git a/public/avatars/scilly_drophunter_v31_Guilty.vrm b/public/avatars/scilly_drophunter_v31_Guilty.vrm new file mode 100644 index 0000000000..2c347f0ed8 Binary files /dev/null and b/public/avatars/scilly_drophunter_v31_Guilty.vrm differ diff --git a/public/bin/app-wasm-worker.js b/public/bin/app-wasm-worker.js new file mode 100644 index 0000000000..2143584f5b --- /dev/null +++ b/public/bin/app-wasm-worker.js @@ -0,0 +1,2 @@ +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||52428800;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="bin/app-wasm-worker.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["n"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["x"];addOnInit(Module["asm"]["o"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"d":___cxa_allocate_exception,"c":___cxa_throw,"e":_abort,"b":_emscripten_get_now,"j":_emscripten_memcpy_big,"g":_emscripten_resize_heap,"m":_environ_get,"f":_environ_sizes_get,"h":_fd_close,"i":_fd_read,"k":_fd_seek,"a":_fd_write,"l":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["o"]).apply(null,arguments)};var _doMalloc=Module["_doMalloc"]=function(){return(_doMalloc=Module["_doMalloc"]=Module["asm"]["p"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["q"]).apply(null,arguments)};var _doFree=Module["_doFree"]=function(){return(_doFree=Module["_doFree"]=Module["asm"]["r"]).apply(null,arguments)};var _initialize=Module["_initialize"]=function(){return(_initialize=Module["_initialize"]=Module["asm"]["s"]).apply(null,arguments)};var _makePhysicsBase=Module["_makePhysicsBase"]=function(){return(_makePhysicsBase=Module["_makePhysicsBase"]=Module["asm"]["t"]).apply(null,arguments)};var _cookGeometryPhysics=Module["_cookGeometryPhysics"]=function(){return(_cookGeometryPhysics=Module["_cookGeometryPhysics"]=Module["asm"]["u"]).apply(null,arguments)};var _cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=function(){return(_cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=Module["asm"]["v"]).apply(null,arguments)};var _deleteMemoryOutputStream=Module["_deleteMemoryOutputStream"]=function(){return(_deleteMemoryOutputStream=Module["_deleteMemoryOutputStream"]=Module["asm"]["w"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["y"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); +let accept, reject;const p = new Promise((a, r) => { accept = a; reject = r;});Module.postRun = () => { accept();};Module.waitForLoad = () => p;run();export default Module; diff --git a/public/bin/app-wasm-worker.wasm b/public/bin/app-wasm-worker.wasm new file mode 100644 index 0000000000..bf2b13f1ab Binary files /dev/null and b/public/bin/app-wasm-worker.wasm differ diff --git a/public/bin/geometry.js b/public/bin/geometry.js index 9047f7d775..0c11e84cfe 100644 --- a/public/bin/geometry.js +++ b/public/bin/geometry.js @@ -1,2 +1,2 @@ -var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var wasmTable;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||209715200;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="bin/geometry.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["w"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}var exceptionLast=0;function __ZSt18uncaught_exceptionv(){return __ZSt18uncaught_exceptionv.uncaught_exceptions>0}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function _usleep(useconds){var start=_emscripten_get_now();while(_emscripten_get_now()-start>2];var nanoseconds=HEAP32[rqtp+4>>2];if(nanoseconds<0||nanoseconds>999999999||seconds<0){setErrNo(28);return-1}if(rmtp!==0){HEAP32[rmtp>>2]=0;HEAP32[rmtp+4>>2]=0}return _usleep(seconds*1e6+nanoseconds/1e3)}function _pthread_cancel(){}function _exit(status){exit(status)}function _pthread_exit(status){_exit(status)}function _pthread_join(){}function _pthread_mutexattr_destroy(){}function _pthread_mutexattr_init(){}function _pthread_mutexattr_setprotocol(){}function _pthread_mutexattr_settype(){}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"c":___cxa_allocate_exception,"b":___cxa_throw,"d":_abort,"n":_emscripten_memcpy_big,"o":_emscripten_resize_heap,"q":_environ_get,"r":_environ_sizes_get,"s":_fd_close,"t":_fd_read,"m":_fd_seek,"i":_fd_write,"l":_gettimeofday,"a":wasmMemory,"u":_nanosleep,"k":_pthread_cancel,"v":_pthread_exit,"j":_pthread_join,"e":_pthread_mutexattr_destroy,"h":_pthread_mutexattr_init,"f":_pthread_mutexattr_setprotocol,"g":_pthread_mutexattr_settype,"p":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["x"]).apply(null,arguments)};var _doMalloc=Module["_doMalloc"]=function(){return(_doMalloc=Module["_doMalloc"]=Module["asm"]["y"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["z"]).apply(null,arguments)};var _doFree=Module["_doFree"]=function(){return(_doFree=Module["_doFree"]=Module["asm"]["A"]).apply(null,arguments)};var _makePhysics=Module["_makePhysics"]=function(){return(_makePhysics=Module["_makePhysics"]=Module["asm"]["B"]).apply(null,arguments)};var _addJointPhysics=Module["_addJointPhysics"]=function(){return(_addJointPhysics=Module["_addJointPhysics"]=Module["asm"]["C"]).apply(null,arguments)};var _setJointMotionPhysics=Module["_setJointMotionPhysics"]=function(){return(_setJointMotionPhysics=Module["_setJointMotionPhysics"]=Module["asm"]["D"]).apply(null,arguments)};var _setJointTwistLimitPhysics=Module["_setJointTwistLimitPhysics"]=function(){return(_setJointTwistLimitPhysics=Module["_setJointTwistLimitPhysics"]=Module["asm"]["E"]).apply(null,arguments)};var _setJointSwingLimitPhysics=Module["_setJointSwingLimitPhysics"]=function(){return(_setJointSwingLimitPhysics=Module["_setJointSwingLimitPhysics"]=Module["asm"]["F"]).apply(null,arguments)};var _updateMassAndInertiaPhysics=Module["_updateMassAndInertiaPhysics"]=function(){return(_updateMassAndInertiaPhysics=Module["_updateMassAndInertiaPhysics"]=Module["asm"]["G"]).apply(null,arguments)};var _getBodyMassPhysics=Module["_getBodyMassPhysics"]=function(){return(_getBodyMassPhysics=Module["_getBodyMassPhysics"]=Module["asm"]["H"]).apply(null,arguments)};var _simulatePhysics=Module["_simulatePhysics"]=function(){return(_simulatePhysics=Module["_simulatePhysics"]=Module["asm"]["I"]).apply(null,arguments)};var _raycastPhysics=Module["_raycastPhysics"]=function(){return(_raycastPhysics=Module["_raycastPhysics"]=Module["asm"]["J"]).apply(null,arguments)};var _raycastPhysicsArray=Module["_raycastPhysicsArray"]=function(){return(_raycastPhysicsArray=Module["_raycastPhysicsArray"]=Module["asm"]["K"]).apply(null,arguments)};var _sweepBox=Module["_sweepBox"]=function(){return(_sweepBox=Module["_sweepBox"]=Module["asm"]["L"]).apply(null,arguments)};var _sweepConvexShape=Module["_sweepConvexShape"]=function(){return(_sweepConvexShape=Module["_sweepConvexShape"]=Module["asm"]["M"]).apply(null,arguments)};var _getPathPhysics=Module["_getPathPhysics"]=function(){return(_getPathPhysics=Module["_getPathPhysics"]=Module["asm"]["N"]).apply(null,arguments)};var _overlapBoxPhysics=Module["_overlapBoxPhysics"]=function(){return(_overlapBoxPhysics=Module["_overlapBoxPhysics"]=Module["asm"]["O"]).apply(null,arguments)};var _overlapCapsulePhysics=Module["_overlapCapsulePhysics"]=function(){return(_overlapCapsulePhysics=Module["_overlapCapsulePhysics"]=Module["asm"]["P"]).apply(null,arguments)};var _collideBoxPhysics=Module["_collideBoxPhysics"]=function(){return(_collideBoxPhysics=Module["_collideBoxPhysics"]=Module["asm"]["Q"]).apply(null,arguments)};var _collideCapsulePhysics=Module["_collideCapsulePhysics"]=function(){return(_collideCapsulePhysics=Module["_collideCapsulePhysics"]=Module["asm"]["R"]).apply(null,arguments)};var _getCollisionObjectPhysics=Module["_getCollisionObjectPhysics"]=function(){return(_getCollisionObjectPhysics=Module["_getCollisionObjectPhysics"]=Module["asm"]["S"]).apply(null,arguments)};var _addCapsuleGeometryPhysics=Module["_addCapsuleGeometryPhysics"]=function(){return(_addCapsuleGeometryPhysics=Module["_addCapsuleGeometryPhysics"]=Module["asm"]["T"]).apply(null,arguments)};var _addBoxGeometryPhysics=Module["_addBoxGeometryPhysics"]=function(){return(_addBoxGeometryPhysics=Module["_addBoxGeometryPhysics"]=Module["asm"]["U"]).apply(null,arguments)};var _cookGeometryPhysics=Module["_cookGeometryPhysics"]=function(){return(_cookGeometryPhysics=Module["_cookGeometryPhysics"]=Module["asm"]["V"]).apply(null,arguments)};var _cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=function(){return(_cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=Module["asm"]["W"]).apply(null,arguments)};var _createShapePhysics=Module["_createShapePhysics"]=function(){return(_createShapePhysics=Module["_createShapePhysics"]=Module["asm"]["X"]).apply(null,arguments)};var _destroyShapePhysics=Module["_destroyShapePhysics"]=function(){return(_destroyShapePhysics=Module["_destroyShapePhysics"]=Module["asm"]["Y"]).apply(null,arguments)};var _createConvexShapePhysics=Module["_createConvexShapePhysics"]=function(){return(_createConvexShapePhysics=Module["_createConvexShapePhysics"]=Module["asm"]["Z"]).apply(null,arguments)};var _destroyConvexShapePhysics=Module["_destroyConvexShapePhysics"]=function(){return(_destroyConvexShapePhysics=Module["_destroyConvexShapePhysics"]=Module["asm"]["_"]).apply(null,arguments)};var _createMaterialPhysics=Module["_createMaterialPhysics"]=function(){return(_createMaterialPhysics=Module["_createMaterialPhysics"]=Module["asm"]["$"]).apply(null,arguments)};var _destroyMaterialPhysics=Module["_destroyMaterialPhysics"]=function(){return(_destroyMaterialPhysics=Module["_destroyMaterialPhysics"]=Module["asm"]["aa"]).apply(null,arguments)};var _addGeometryPhysics=Module["_addGeometryPhysics"]=function(){return(_addGeometryPhysics=Module["_addGeometryPhysics"]=Module["asm"]["ba"]).apply(null,arguments)};var _addConvexGeometryPhysics=Module["_addConvexGeometryPhysics"]=function(){return(_addConvexGeometryPhysics=Module["_addConvexGeometryPhysics"]=Module["asm"]["ca"]).apply(null,arguments)};var _setGeometryScalePhysics=Module["_setGeometryScalePhysics"]=function(){return(_setGeometryScalePhysics=Module["_setGeometryScalePhysics"]=Module["asm"]["da"]).apply(null,arguments)};var _getGeometryPhysics=Module["_getGeometryPhysics"]=function(){return(_getGeometryPhysics=Module["_getGeometryPhysics"]=Module["asm"]["ea"]).apply(null,arguments)};var _getBoundsPhysics=Module["_getBoundsPhysics"]=function(){return(_getBoundsPhysics=Module["_getBoundsPhysics"]=Module["asm"]["fa"]).apply(null,arguments)};var _enableActorPhysics=Module["_enableActorPhysics"]=function(){return(_enableActorPhysics=Module["_enableActorPhysics"]=Module["asm"]["ga"]).apply(null,arguments)};var _disableActorPhysics=Module["_disableActorPhysics"]=function(){return(_disableActorPhysics=Module["_disableActorPhysics"]=Module["asm"]["ha"]).apply(null,arguments)};var _disableGeometryPhysics=Module["_disableGeometryPhysics"]=function(){return(_disableGeometryPhysics=Module["_disableGeometryPhysics"]=Module["asm"]["ia"]).apply(null,arguments)};var _enableGeometryQueriesPhysics=Module["_enableGeometryQueriesPhysics"]=function(){return(_enableGeometryQueriesPhysics=Module["_enableGeometryQueriesPhysics"]=Module["asm"]["ja"]).apply(null,arguments)};var _disableGeometryQueriesPhysics=Module["_disableGeometryQueriesPhysics"]=function(){return(_disableGeometryQueriesPhysics=Module["_disableGeometryQueriesPhysics"]=Module["asm"]["ka"]).apply(null,arguments)};var _enableGeometryPhysics=Module["_enableGeometryPhysics"]=function(){return(_enableGeometryPhysics=Module["_enableGeometryPhysics"]=Module["asm"]["la"]).apply(null,arguments)};var _setMassAndInertiaPhysics=Module["_setMassAndInertiaPhysics"]=function(){return(_setMassAndInertiaPhysics=Module["_setMassAndInertiaPhysics"]=Module["asm"]["ma"]).apply(null,arguments)};var _setGravityEnabledPhysics=Module["_setGravityEnabledPhysics"]=function(){return(_setGravityEnabledPhysics=Module["_setGravityEnabledPhysics"]=Module["asm"]["na"]).apply(null,arguments)};var _removeGeometryPhysics=Module["_removeGeometryPhysics"]=function(){return(_removeGeometryPhysics=Module["_removeGeometryPhysics"]=Module["asm"]["oa"]).apply(null,arguments)};var _setTransformPhysics=Module["_setTransformPhysics"]=function(){return(_setTransformPhysics=Module["_setTransformPhysics"]=Module["asm"]["pa"]).apply(null,arguments)};var _getGlobalPositionPhysics=Module["_getGlobalPositionPhysics"]=function(){return(_getGlobalPositionPhysics=Module["_getGlobalPositionPhysics"]=Module["asm"]["qa"]).apply(null,arguments)};var _getLinearVelocityPhysics=Module["_getLinearVelocityPhysics"]=function(){return(_getLinearVelocityPhysics=Module["_getLinearVelocityPhysics"]=Module["asm"]["ra"]).apply(null,arguments)};var _getAngularVelocityPhysics=Module["_getAngularVelocityPhysics"]=function(){return(_getAngularVelocityPhysics=Module["_getAngularVelocityPhysics"]=Module["asm"]["sa"]).apply(null,arguments)};var _addForceAtPosPhysics=Module["_addForceAtPosPhysics"]=function(){return(_addForceAtPosPhysics=Module["_addForceAtPosPhysics"]=Module["asm"]["ta"]).apply(null,arguments)};var _addForceAtLocalPosPhysics=Module["_addForceAtLocalPosPhysics"]=function(){return(_addForceAtLocalPosPhysics=Module["_addForceAtLocalPosPhysics"]=Module["asm"]["ua"]).apply(null,arguments)};var _addLocalForceAtPosPhysics=Module["_addLocalForceAtPosPhysics"]=function(){return(_addLocalForceAtPosPhysics=Module["_addLocalForceAtPosPhysics"]=Module["asm"]["va"]).apply(null,arguments)};var _addLocalForceAtLocalPosPhysics=Module["_addLocalForceAtLocalPosPhysics"]=function(){return(_addLocalForceAtLocalPosPhysics=Module["_addLocalForceAtLocalPosPhysics"]=Module["asm"]["wa"]).apply(null,arguments)};var _addForcePhysics=Module["_addForcePhysics"]=function(){return(_addForcePhysics=Module["_addForcePhysics"]=Module["asm"]["xa"]).apply(null,arguments)};var _addTorquePhysics=Module["_addTorquePhysics"]=function(){return(_addTorquePhysics=Module["_addTorquePhysics"]=Module["asm"]["ya"]).apply(null,arguments)};var _setVelocityPhysics=Module["_setVelocityPhysics"]=function(){return(_setVelocityPhysics=Module["_setVelocityPhysics"]=Module["asm"]["za"]).apply(null,arguments)};var _setAngularVelocityPhysics=Module["_setAngularVelocityPhysics"]=function(){return(_setAngularVelocityPhysics=Module["_setAngularVelocityPhysics"]=Module["asm"]["Aa"]).apply(null,arguments)};var _setLinearLockFlagsPhysics=Module["_setLinearLockFlagsPhysics"]=function(){return(_setLinearLockFlagsPhysics=Module["_setLinearLockFlagsPhysics"]=Module["asm"]["Ba"]).apply(null,arguments)};var _setAngularLockFlagsPhysics=Module["_setAngularLockFlagsPhysics"]=function(){return(_setAngularLockFlagsPhysics=Module["_setAngularLockFlagsPhysics"]=Module["asm"]["Ca"]).apply(null,arguments)};var _createCharacterControllerPhysics=Module["_createCharacterControllerPhysics"]=function(){return(_createCharacterControllerPhysics=Module["_createCharacterControllerPhysics"]=Module["asm"]["Da"]).apply(null,arguments)};var _destroyCharacterControllerPhysics=Module["_destroyCharacterControllerPhysics"]=function(){return(_destroyCharacterControllerPhysics=Module["_destroyCharacterControllerPhysics"]=Module["asm"]["Ea"]).apply(null,arguments)};var _moveCharacterControllerPhysics=Module["_moveCharacterControllerPhysics"]=function(){return(_moveCharacterControllerPhysics=Module["_moveCharacterControllerPhysics"]=Module["asm"]["Fa"]).apply(null,arguments)};var _setCharacterControllerPositionPhysics=Module["_setCharacterControllerPositionPhysics"]=function(){return(_setCharacterControllerPositionPhysics=Module["_setCharacterControllerPositionPhysics"]=Module["asm"]["Ga"]).apply(null,arguments)};var _doCut=Module["_doCut"]=function(){return(_doCut=Module["_doCut"]=Module["asm"]["Ha"]).apply(null,arguments)};var _doMarchingCubes=Module["_doMarchingCubes"]=function(){return(_doMarchingCubes=Module["_doMarchingCubes"]=Module["asm"]["Ia"]).apply(null,arguments)};var _generateChunkDataDualContouring=Module["_generateChunkDataDualContouring"]=function(){return(_generateChunkDataDualContouring=Module["_generateChunkDataDualContouring"]=Module["asm"]["Ja"]).apply(null,arguments)};var _setChunkLodDualContouring=Module["_setChunkLodDualContouring"]=function(){return(_setChunkLodDualContouring=Module["_setChunkLodDualContouring"]=Module["asm"]["Ka"]).apply(null,arguments)};var _clearTemporaryChunkDataDualContouring=Module["_clearTemporaryChunkDataDualContouring"]=function(){return(_clearTemporaryChunkDataDualContouring=Module["_clearTemporaryChunkDataDualContouring"]=Module["asm"]["La"]).apply(null,arguments)};var _clearChunkRootDualContouring=Module["_clearChunkRootDualContouring"]=function(){return(_clearChunkRootDualContouring=Module["_clearChunkRootDualContouring"]=Module["asm"]["Ma"]).apply(null,arguments)};var _createChunkMeshDualContouring=Module["_createChunkMeshDualContouring"]=function(){return(_createChunkMeshDualContouring=Module["_createChunkMeshDualContouring"]=Module["asm"]["Na"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Oa"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||209715200;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="bin/geometry.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["p"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Da"];addOnInit(Module["asm"]["q"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function __emscripten_date_now(){return Date.now()}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"e":___cxa_allocate_exception,"d":___cxa_throw,"i":__emscripten_date_now,"a":_abort,"c":_emscripten_get_now,"j":_emscripten_memcpy_big,"o":_emscripten_resize_heap,"m":_environ_get,"n":_environ_sizes_get,"f":_exit,"g":_fd_close,"h":_fd_read,"k":_fd_seek,"b":_fd_write,"l":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["q"]).apply(null,arguments)};var _doMalloc=Module["_doMalloc"]=function(){return(_doMalloc=Module["_doMalloc"]=Module["asm"]["r"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["s"]).apply(null,arguments)};var _doFree=Module["_doFree"]=function(){return(_doFree=Module["_doFree"]=Module["asm"]["t"]).apply(null,arguments)};var _initialize=Module["_initialize"]=function(){return(_initialize=Module["_initialize"]=Module["asm"]["u"]).apply(null,arguments)};var _makePhysics=Module["_makePhysics"]=function(){return(_makePhysics=Module["_makePhysics"]=Module["asm"]["v"]).apply(null,arguments)};var _addJointPhysics=Module["_addJointPhysics"]=function(){return(_addJointPhysics=Module["_addJointPhysics"]=Module["asm"]["w"]).apply(null,arguments)};var _setJointMotionPhysics=Module["_setJointMotionPhysics"]=function(){return(_setJointMotionPhysics=Module["_setJointMotionPhysics"]=Module["asm"]["x"]).apply(null,arguments)};var _setJointTwistLimitPhysics=Module["_setJointTwistLimitPhysics"]=function(){return(_setJointTwistLimitPhysics=Module["_setJointTwistLimitPhysics"]=Module["asm"]["y"]).apply(null,arguments)};var _setJointSwingLimitPhysics=Module["_setJointSwingLimitPhysics"]=function(){return(_setJointSwingLimitPhysics=Module["_setJointSwingLimitPhysics"]=Module["asm"]["z"]).apply(null,arguments)};var _updateMassAndInertiaPhysics=Module["_updateMassAndInertiaPhysics"]=function(){return(_updateMassAndInertiaPhysics=Module["_updateMassAndInertiaPhysics"]=Module["asm"]["A"]).apply(null,arguments)};var _getBodyMassPhysics=Module["_getBodyMassPhysics"]=function(){return(_getBodyMassPhysics=Module["_getBodyMassPhysics"]=Module["asm"]["B"]).apply(null,arguments)};var _simulatePhysics=Module["_simulatePhysics"]=function(){return(_simulatePhysics=Module["_simulatePhysics"]=Module["asm"]["C"]).apply(null,arguments)};var _raycastPhysics=Module["_raycastPhysics"]=function(){return(_raycastPhysics=Module["_raycastPhysics"]=Module["asm"]["D"]).apply(null,arguments)};var _raycastPhysicsArray=Module["_raycastPhysicsArray"]=function(){return(_raycastPhysicsArray=Module["_raycastPhysicsArray"]=Module["asm"]["E"]).apply(null,arguments)};var _sweepBox=Module["_sweepBox"]=function(){return(_sweepBox=Module["_sweepBox"]=Module["asm"]["F"]).apply(null,arguments)};var _sweepConvexShape=Module["_sweepConvexShape"]=function(){return(_sweepConvexShape=Module["_sweepConvexShape"]=Module["asm"]["G"]).apply(null,arguments)};var _getPathPhysics=Module["_getPathPhysics"]=function(){return(_getPathPhysics=Module["_getPathPhysics"]=Module["asm"]["H"]).apply(null,arguments)};var _overlapBoxPhysics=Module["_overlapBoxPhysics"]=function(){return(_overlapBoxPhysics=Module["_overlapBoxPhysics"]=Module["asm"]["I"]).apply(null,arguments)};var _overlapCapsulePhysics=Module["_overlapCapsulePhysics"]=function(){return(_overlapCapsulePhysics=Module["_overlapCapsulePhysics"]=Module["asm"]["J"]).apply(null,arguments)};var _collideBoxPhysics=Module["_collideBoxPhysics"]=function(){return(_collideBoxPhysics=Module["_collideBoxPhysics"]=Module["asm"]["K"]).apply(null,arguments)};var _collideCapsulePhysics=Module["_collideCapsulePhysics"]=function(){return(_collideCapsulePhysics=Module["_collideCapsulePhysics"]=Module["asm"]["L"]).apply(null,arguments)};var _getCollisionObjectPhysics=Module["_getCollisionObjectPhysics"]=function(){return(_getCollisionObjectPhysics=Module["_getCollisionObjectPhysics"]=Module["asm"]["M"]).apply(null,arguments)};var _addCapsuleGeometryPhysics=Module["_addCapsuleGeometryPhysics"]=function(){return(_addCapsuleGeometryPhysics=Module["_addCapsuleGeometryPhysics"]=Module["asm"]["N"]).apply(null,arguments)};var _addBoxGeometryPhysics=Module["_addBoxGeometryPhysics"]=function(){return(_addBoxGeometryPhysics=Module["_addBoxGeometryPhysics"]=Module["asm"]["O"]).apply(null,arguments)};var _cookGeometryPhysics=Module["_cookGeometryPhysics"]=function(){return(_cookGeometryPhysics=Module["_cookGeometryPhysics"]=Module["asm"]["P"]).apply(null,arguments)};var _cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=function(){return(_cookConvexGeometryPhysics=Module["_cookConvexGeometryPhysics"]=Module["asm"]["Q"]).apply(null,arguments)};var _createShapePhysics=Module["_createShapePhysics"]=function(){return(_createShapePhysics=Module["_createShapePhysics"]=Module["asm"]["R"]).apply(null,arguments)};var _destroyShapePhysics=Module["_destroyShapePhysics"]=function(){return(_destroyShapePhysics=Module["_destroyShapePhysics"]=Module["asm"]["S"]).apply(null,arguments)};var _createConvexShapePhysics=Module["_createConvexShapePhysics"]=function(){return(_createConvexShapePhysics=Module["_createConvexShapePhysics"]=Module["asm"]["T"]).apply(null,arguments)};var _destroyConvexShapePhysics=Module["_destroyConvexShapePhysics"]=function(){return(_destroyConvexShapePhysics=Module["_destroyConvexShapePhysics"]=Module["asm"]["U"]).apply(null,arguments)};var _createMaterialPhysics=Module["_createMaterialPhysics"]=function(){return(_createMaterialPhysics=Module["_createMaterialPhysics"]=Module["asm"]["V"]).apply(null,arguments)};var _destroyMaterialPhysics=Module["_destroyMaterialPhysics"]=function(){return(_destroyMaterialPhysics=Module["_destroyMaterialPhysics"]=Module["asm"]["W"]).apply(null,arguments)};var _addGeometryPhysics=Module["_addGeometryPhysics"]=function(){return(_addGeometryPhysics=Module["_addGeometryPhysics"]=Module["asm"]["X"]).apply(null,arguments)};var _addConvexGeometryPhysics=Module["_addConvexGeometryPhysics"]=function(){return(_addConvexGeometryPhysics=Module["_addConvexGeometryPhysics"]=Module["asm"]["Y"]).apply(null,arguments)};var _setGeometryScalePhysics=Module["_setGeometryScalePhysics"]=function(){return(_setGeometryScalePhysics=Module["_setGeometryScalePhysics"]=Module["asm"]["Z"]).apply(null,arguments)};var _getGeometryPhysics=Module["_getGeometryPhysics"]=function(){return(_getGeometryPhysics=Module["_getGeometryPhysics"]=Module["asm"]["_"]).apply(null,arguments)};var _getBoundsPhysics=Module["_getBoundsPhysics"]=function(){return(_getBoundsPhysics=Module["_getBoundsPhysics"]=Module["asm"]["$"]).apply(null,arguments)};var _enableActorPhysics=Module["_enableActorPhysics"]=function(){return(_enableActorPhysics=Module["_enableActorPhysics"]=Module["asm"]["aa"]).apply(null,arguments)};var _disableActorPhysics=Module["_disableActorPhysics"]=function(){return(_disableActorPhysics=Module["_disableActorPhysics"]=Module["asm"]["ba"]).apply(null,arguments)};var _disableGeometryPhysics=Module["_disableGeometryPhysics"]=function(){return(_disableGeometryPhysics=Module["_disableGeometryPhysics"]=Module["asm"]["ca"]).apply(null,arguments)};var _enableGeometryQueriesPhysics=Module["_enableGeometryQueriesPhysics"]=function(){return(_enableGeometryQueriesPhysics=Module["_enableGeometryQueriesPhysics"]=Module["asm"]["da"]).apply(null,arguments)};var _disableGeometryQueriesPhysics=Module["_disableGeometryQueriesPhysics"]=function(){return(_disableGeometryQueriesPhysics=Module["_disableGeometryQueriesPhysics"]=Module["asm"]["ea"]).apply(null,arguments)};var _enableGeometryPhysics=Module["_enableGeometryPhysics"]=function(){return(_enableGeometryPhysics=Module["_enableGeometryPhysics"]=Module["asm"]["fa"]).apply(null,arguments)};var _setMassAndInertiaPhysics=Module["_setMassAndInertiaPhysics"]=function(){return(_setMassAndInertiaPhysics=Module["_setMassAndInertiaPhysics"]=Module["asm"]["ga"]).apply(null,arguments)};var _setGravityEnabledPhysics=Module["_setGravityEnabledPhysics"]=function(){return(_setGravityEnabledPhysics=Module["_setGravityEnabledPhysics"]=Module["asm"]["ha"]).apply(null,arguments)};var _removeGeometryPhysics=Module["_removeGeometryPhysics"]=function(){return(_removeGeometryPhysics=Module["_removeGeometryPhysics"]=Module["asm"]["ia"]).apply(null,arguments)};var _setTransformPhysics=Module["_setTransformPhysics"]=function(){return(_setTransformPhysics=Module["_setTransformPhysics"]=Module["asm"]["ja"]).apply(null,arguments)};var _getGlobalPositionPhysics=Module["_getGlobalPositionPhysics"]=function(){return(_getGlobalPositionPhysics=Module["_getGlobalPositionPhysics"]=Module["asm"]["ka"]).apply(null,arguments)};var _getLinearVelocityPhysics=Module["_getLinearVelocityPhysics"]=function(){return(_getLinearVelocityPhysics=Module["_getLinearVelocityPhysics"]=Module["asm"]["la"]).apply(null,arguments)};var _getAngularVelocityPhysics=Module["_getAngularVelocityPhysics"]=function(){return(_getAngularVelocityPhysics=Module["_getAngularVelocityPhysics"]=Module["asm"]["ma"]).apply(null,arguments)};var _addForceAtPosPhysics=Module["_addForceAtPosPhysics"]=function(){return(_addForceAtPosPhysics=Module["_addForceAtPosPhysics"]=Module["asm"]["na"]).apply(null,arguments)};var _addForceAtLocalPosPhysics=Module["_addForceAtLocalPosPhysics"]=function(){return(_addForceAtLocalPosPhysics=Module["_addForceAtLocalPosPhysics"]=Module["asm"]["oa"]).apply(null,arguments)};var _addLocalForceAtPosPhysics=Module["_addLocalForceAtPosPhysics"]=function(){return(_addLocalForceAtPosPhysics=Module["_addLocalForceAtPosPhysics"]=Module["asm"]["pa"]).apply(null,arguments)};var _addLocalForceAtLocalPosPhysics=Module["_addLocalForceAtLocalPosPhysics"]=function(){return(_addLocalForceAtLocalPosPhysics=Module["_addLocalForceAtLocalPosPhysics"]=Module["asm"]["qa"]).apply(null,arguments)};var _addForcePhysics=Module["_addForcePhysics"]=function(){return(_addForcePhysics=Module["_addForcePhysics"]=Module["asm"]["ra"]).apply(null,arguments)};var _addTorquePhysics=Module["_addTorquePhysics"]=function(){return(_addTorquePhysics=Module["_addTorquePhysics"]=Module["asm"]["sa"]).apply(null,arguments)};var _setVelocityPhysics=Module["_setVelocityPhysics"]=function(){return(_setVelocityPhysics=Module["_setVelocityPhysics"]=Module["asm"]["ta"]).apply(null,arguments)};var _setAngularVelocityPhysics=Module["_setAngularVelocityPhysics"]=function(){return(_setAngularVelocityPhysics=Module["_setAngularVelocityPhysics"]=Module["asm"]["ua"]).apply(null,arguments)};var _setLinearLockFlagsPhysics=Module["_setLinearLockFlagsPhysics"]=function(){return(_setLinearLockFlagsPhysics=Module["_setLinearLockFlagsPhysics"]=Module["asm"]["va"]).apply(null,arguments)};var _setAngularLockFlagsPhysics=Module["_setAngularLockFlagsPhysics"]=function(){return(_setAngularLockFlagsPhysics=Module["_setAngularLockFlagsPhysics"]=Module["asm"]["wa"]).apply(null,arguments)};var _createCharacterControllerPhysics=Module["_createCharacterControllerPhysics"]=function(){return(_createCharacterControllerPhysics=Module["_createCharacterControllerPhysics"]=Module["asm"]["xa"]).apply(null,arguments)};var _destroyCharacterControllerPhysics=Module["_destroyCharacterControllerPhysics"]=function(){return(_destroyCharacterControllerPhysics=Module["_destroyCharacterControllerPhysics"]=Module["asm"]["ya"]).apply(null,arguments)};var _moveCharacterControllerPhysics=Module["_moveCharacterControllerPhysics"]=function(){return(_moveCharacterControllerPhysics=Module["_moveCharacterControllerPhysics"]=Module["asm"]["za"]).apply(null,arguments)};var _setCharacterControllerPositionPhysics=Module["_setCharacterControllerPositionPhysics"]=function(){return(_setCharacterControllerPositionPhysics=Module["_setCharacterControllerPositionPhysics"]=Module["asm"]["Aa"]).apply(null,arguments)};var _doCut=Module["_doCut"]=function(){return(_doCut=Module["_doCut"]=Module["asm"]["Ba"]).apply(null,arguments)};var _doMarchingCubes=Module["_doMarchingCubes"]=function(){return(_doMarchingCubes=Module["_doMarchingCubes"]=Module["asm"]["Ca"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Ea"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); let accept, reject;const p = new Promise((a, r) => { accept = a; reject = r;});Module.postRun = () => { accept();};Module.waitForLoad = () => p;run();export default Module; diff --git a/public/bin/geometry.wasm b/public/bin/geometry.wasm index 4798547b71..74a21f0374 100755 Binary files a/public/bin/geometry.wasm and b/public/bin/geometry.wasm differ diff --git a/public/bin/geometry.worker.js b/public/bin/geometry.worker.js index efed638503..f8b3b69ee8 100644 --- a/public/bin/geometry.worker.js +++ b/public/bin/geometry.worker.js @@ -1 +1,129 @@ -var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["registerPthreadPtr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}} +var threadInfoStruct = 0; +var selfThreadId = 0; +var parentThreadId = 0; +var Module = {}; + +function threadPrintErr() { + var text = Array.prototype.slice.call(arguments).join(" "); + console.error(text) +} + +function threadAlert() { + var text = Array.prototype.slice.call(arguments).join(" "); + postMessage({ + cmd: "alert", + text: text, + threadId: selfThreadId + }) +} +var err = threadPrintErr; +this.alert = threadAlert; +Module["instantiateWasm"] = function(info, receiveInstance) { + var instance = new WebAssembly.Instance(Module["wasmModule"], info); + Module["wasmModule"] = null; + receiveInstance(instance); + return instance.exports +}; +this.onmessage = function(e) { + try { + if (e.data.cmd === "load") { + Module["DYNAMIC_BASE"] = e.data.DYNAMIC_BASE; + Module["DYNAMICTOP_PTR"] = e.data.DYNAMICTOP_PTR; + Module["wasmModule"] = e.data.wasmModule; + Module["wasmMemory"] = e.data.wasmMemory; + Module["buffer"] = Module["wasmMemory"].buffer; + Module["ENVIRONMENT_IS_PTHREAD"] = true; + if (typeof e.data.urlOrBlob === "string") { + importScripts(e.data.urlOrBlob) + } else { + var objectUrl = URL.createObjectURL(e.data.urlOrBlob); + importScripts(objectUrl); + URL.revokeObjectURL(objectUrl) + } + postMessage({ + "cmd": "loaded" + }) + } else if (e.data.cmd === "objectTransfer") { + Module["PThread"].receiveObjectTransfer(e.data) + } else if (e.data.cmd === "run") { + Module["__performance_now_clock_drift"] = performance.now() - e.data.time; + threadInfoStruct = e.data.threadInfoStruct; + Module["registerPthreadPtr"](threadInfoStruct, 0, 0); + selfThreadId = e.data.selfThreadId; + parentThreadId = e.data.parentThreadId; + var max = e.data.stackBase; + var top = e.data.stackBase + e.data.stackSize; + Module["establishStackSpace"](top, max); + Module["_emscripten_tls_init"](); + Module["PThread"].receiveObjectTransfer(e.data); + Module["PThread"].setThreadStatus(Module["_pthread_self"](), 1); + try { + var result = Module["dynCall_ii"](e.data.start_routine, e.data.arg); + if (!Module["getNoExitRuntime"]()) Module["PThread"].threadExit(result) + } catch (ex) { + if (ex === "Canceled!") { + Module["PThread"].threadCancel() + } else if (ex != "unwind") { + Atomics.store(Module["HEAPU32"], threadInfoStruct + 4 >> 2, ex instanceof Module["ExitStatus"] ? ex.status : -2); + Atomics.store(Module["HEAPU32"], threadInfoStruct + 0 >> 2, 1); + Module["_emscripten_futex_wake"](threadInfoStruct + 0, 2147483647); + if (!(ex instanceof Module["ExitStatus"])) throw ex + } + } + } else if (e.data.cmd === "cancel") { + if (threadInfoStruct) { + Module["PThread"].threadCancel() + } + } else if (e.data.target === "setimmediate") {} else if (e.data.cmd === "processThreadQueue") { + if (threadInfoStruct) { + Module["_emscripten_current_thread_process_queued_calls"]() + } + } else { + err("worker.js received unknown command " + e.data.cmd); + err(e.data) + } + } catch (ex) { + err("worker.js onmessage() captured an uncaught exception: " + ex); + if (ex.stack) err(ex.stack); + throw ex + } +}; +if (typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string") { + self = { + location: { + href: __filename + } + }; + var onmessage = this.onmessage; + var nodeWorkerThreads = require("worker_threads"); + global.Worker = nodeWorkerThreads.Worker; + var parentPort = nodeWorkerThreads.parentPort; + parentPort.on("message", function(data) { + onmessage({ + data: data + }) + }); + var nodeFS = require("fs"); + var nodeRead = function(filename) { + return nodeFS.readFileSync(filename, "utf8") + }; + + function globalEval(x) { + global.require = require; + global.Module = Module; + eval.call(null, x) + } + importScripts = function(f) { + globalEval(nodeRead(f)) + }; + postMessage = function(msg) { + parentPort.postMessage(msg) + }; + if (typeof performance === "undefined") { + performance = { + now: function() { + return Date.now() + } + } + } +} \ No newline at end of file diff --git a/public/dc.js b/public/dc.js new file mode 100644 index 0000000000..9fae6a7144 --- /dev/null +++ b/public/dc.js @@ -0,0 +1,2 @@ +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:undefined;if(ENVIRONMENT_IS_WORKER){_scriptDir=self.location.href}else if(ENVIRONMENT_IS_NODE){_scriptDir=__filename}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){requireNodeFS();defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"onAbort","arg":what})}else{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="dc.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Z"]);wasmTable=Module["asm"]["X"];addOnInit(Module["asm"]["A"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency("wasm-instantiate")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={33132:()=>{console.log("task queue destructor")},33174:($0,$1)=>{handleResult($0,$1)}};function killThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];pthread.worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];assert(pthread);var worker=pthread.worker;PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,threadInfoStruct:threadParams.pthread_ptr};worker.pthread=pthread;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"threadInfoStruct":threadParams.pthread_ptr};worker.runPthread=()=>{msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}return 0}function _exit(status){exit(status)}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=8;for(var i=0;i{var d=e["data"];var cmd=d["cmd"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="onAbort"){if(Module["onAbort"]){Module["onAbort"](d["arg"])}}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("dc.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=HEAP32[pthread_ptr+44>>2];var stackSize=HEAP32[pthread_ptr+48>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(HEAP32,this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(HEAP32,this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,start_routine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,pthread_ptr,attr,start_routine,arg);return ___pthread_create_js(pthread_ptr,attr,start_routine,arg)}function ___pthread_create_js(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,start_routine,arg)}if(error)return error;var threadParams={startRoutine:start_routine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function __emscripten_default_pthread_stack_size(){return 2097152}function executeNotifiedProxyingQueue(queue){Atomics.store(HEAP32,queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(HEAP32,queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readAsmConstArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readAsmConstArgsArray}function mainThreadEM_ASM(code,sigPtr,argbuf,sync){var args=readAsmConstArgs(sigPtr,argbuf);if(ENVIRONMENT_IS_PTHREAD){return _emscripten_proxy_to_main_thread_js.apply(null,[-1-code,sync].concat(args))}return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_async_on_main_thread(code,sigPtr,argbuf){return mainThreadEM_ASM(code,sigPtr,argbuf,0)}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_NODE)return;if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(function(){var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var proxiedFunctionTable=[null,exitOnMainThread,pthreadCreateProxied,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"e":___cxa_allocate_exception,"d":___cxa_throw,"y":___emscripten_init_main_thread_js,"h":___emscripten_thread_cleanup,"v":___pthread_create_js,"w":__emscripten_default_pthread_stack_size,"k":__emscripten_notify_task_queue,"i":__emscripten_set_offscreencanvas_size,"c":_abort,"l":_emscripten_asm_const_async_on_main_thread,"m":_emscripten_asm_const_int,"f":_emscripten_check_blocking_allowed,"b":_emscripten_get_now,"j":_emscripten_memcpy_big,"z":_emscripten_receive_on_main_thread_js,"t":_emscripten_resize_heap,"x":_emscripten_unwind_to_js_event_loop,"p":_environ_get,"q":_environ_sizes_get,"u":_exit,"r":_fd_close,"s":_fd_read,"n":_fd_seek,"g":_fd_write,"a":wasmMemory,"o":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["A"]).apply(null,arguments)};var _initialize=Module["_initialize"]=function(){return(_initialize=Module["_initialize"]=Module["asm"]["B"]).apply(null,arguments)};var _createInstance=Module["_createInstance"]=function(){return(_createInstance=Module["_createInstance"]=Module["asm"]["C"]).apply(null,arguments)};var _destroyInstance=Module["_destroyInstance"]=function(){return(_destroyInstance=Module["_destroyInstance"]=Module["asm"]["D"]).apply(null,arguments)};var _getChunkHeightfieldAsync=Module["_getChunkHeightfieldAsync"]=function(){return(_getChunkHeightfieldAsync=Module["_getChunkHeightfieldAsync"]=Module["asm"]["E"]).apply(null,arguments)};var _getChunkSkylightAsync=Module["_getChunkSkylightAsync"]=function(){return(_getChunkSkylightAsync=Module["_getChunkSkylightAsync"]=Module["asm"]["F"]).apply(null,arguments)};var _getChunkAoAsync=Module["_getChunkAoAsync"]=function(){return(_getChunkAoAsync=Module["_getChunkAoAsync"]=Module["asm"]["G"]).apply(null,arguments)};var _createGrassSplatAsync=Module["_createGrassSplatAsync"]=function(){return(_createGrassSplatAsync=Module["_createGrassSplatAsync"]=Module["asm"]["H"]).apply(null,arguments)};var _createVegetationSplatAsync=Module["_createVegetationSplatAsync"]=function(){return(_createVegetationSplatAsync=Module["_createVegetationSplatAsync"]=Module["asm"]["I"]).apply(null,arguments)};var _createMobSplatAsync=Module["_createMobSplatAsync"]=function(){return(_createMobSplatAsync=Module["_createMobSplatAsync"]=Module["asm"]["J"]).apply(null,arguments)};var _createTerrainChunkMeshAsync=Module["_createTerrainChunkMeshAsync"]=function(){return(_createTerrainChunkMeshAsync=Module["_createTerrainChunkMeshAsync"]=Module["asm"]["K"]).apply(null,arguments)};var _createLiquidChunkMeshAsync=Module["_createLiquidChunkMeshAsync"]=function(){return(_createLiquidChunkMeshAsync=Module["_createLiquidChunkMeshAsync"]=Module["asm"]["L"]).apply(null,arguments)};var _drawSphereDamage=Module["_drawSphereDamage"]=function(){return(_drawSphereDamage=Module["_drawSphereDamage"]=Module["asm"]["M"]).apply(null,arguments)};var _eraseSphereDamage=Module["_eraseSphereDamage"]=function(){return(_eraseSphereDamage=Module["_eraseSphereDamage"]=Module["asm"]["N"]).apply(null,arguments)};var _drawCubeDamage=Module["_drawCubeDamage"]=function(){return(_drawCubeDamage=Module["_drawCubeDamage"]=Module["asm"]["O"]).apply(null,arguments)};var _eraseCubeDamage=Module["_eraseCubeDamage"]=function(){return(_eraseCubeDamage=Module["_eraseCubeDamage"]=Module["asm"]["P"]).apply(null,arguments)};var _setClipRange=Module["_setClipRange"]=function(){return(_setClipRange=Module["_setClipRange"]=Module["asm"]["Q"]).apply(null,arguments)};var _cancelTask=Module["_cancelTask"]=function(){return(_cancelTask=Module["_cancelTask"]=Module["asm"]["R"]).apply(null,arguments)};var _doMalloc=Module["_doMalloc"]=function(){return(_doMalloc=Module["_doMalloc"]=Module["asm"]["S"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["T"]).apply(null,arguments)};var _doFree=Module["_doFree"]=function(){return(_doFree=Module["_doFree"]=Module["asm"]["U"]).apply(null,arguments)};var _runLoop=Module["_runLoop"]=function(){return(_runLoop=Module["_runLoop"]=Module["asm"]["V"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["W"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Y"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Z"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["_"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["$"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["aa"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["ba"]).apply(null,arguments)};var __emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=function(){return(__emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=Module["asm"]["ca"]).apply(null,arguments)};var __emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=function(){return(__emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=Module["asm"]["da"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ea"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["fa"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ga"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["ha"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ia"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["ja"]).apply(null,arguments)};Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +let accept, reject;const p = new Promise((a, r) => {accept = a; reject = r;});Module.postRun = () => {accept();};Module.waitForLoad = () => p; diff --git a/public/dc.module.js b/public/dc.module.js new file mode 100644 index 0000000000..6b2b74a31c --- /dev/null +++ b/public/dc.module.js @@ -0,0 +1,3 @@ +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:undefined;if(ENVIRONMENT_IS_WORKER){_scriptDir=self.location.href}else if(ENVIRONMENT_IS_NODE){_scriptDir=__filename}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){requireNodeFS();defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"onAbort","arg":what})}else{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="dc.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Z"]);wasmTable=Module["asm"]["X"];addOnInit(Module["asm"]["A"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency("wasm-instantiate")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={33132:()=>{console.log("task queue destructor")},33174:($0,$1)=>{handleResult($0,$1)}};function killThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];pthread.worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];assert(pthread);var worker=pthread.worker;PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,threadInfoStruct:threadParams.pthread_ptr};worker.pthread=pthread;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"threadInfoStruct":threadParams.pthread_ptr};worker.runPthread=()=>{msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}return 0}function _exit(status){exit(status)}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=8;for(var i=0;i{var d=e["data"];var cmd=d["cmd"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="onAbort"){if(Module["onAbort"]){Module["onAbort"](d["arg"])}}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("dc.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=HEAP32[pthread_ptr+44>>2];var stackSize=HEAP32[pthread_ptr+48>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(HEAP32,this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(HEAP32,this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,start_routine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,pthread_ptr,attr,start_routine,arg);return ___pthread_create_js(pthread_ptr,attr,start_routine,arg)}function ___pthread_create_js(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,start_routine,arg)}if(error)return error;var threadParams={startRoutine:start_routine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function __emscripten_default_pthread_stack_size(){return 2097152}function executeNotifiedProxyingQueue(queue){Atomics.store(HEAP32,queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(HEAP32,queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readAsmConstArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readAsmConstArgsArray}function mainThreadEM_ASM(code,sigPtr,argbuf,sync){var args=readAsmConstArgs(sigPtr,argbuf);if(ENVIRONMENT_IS_PTHREAD){return _emscripten_proxy_to_main_thread_js.apply(null,[-1-code,sync].concat(args))}return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_async_on_main_thread(code,sigPtr,argbuf){return mainThreadEM_ASM(code,sigPtr,argbuf,0)}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_NODE)return;if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(function(){var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();var proxiedFunctionTable=[null,exitOnMainThread,pthreadCreateProxied,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"e":___cxa_allocate_exception,"d":___cxa_throw,"y":___emscripten_init_main_thread_js,"h":___emscripten_thread_cleanup,"v":___pthread_create_js,"w":__emscripten_default_pthread_stack_size,"k":__emscripten_notify_task_queue,"i":__emscripten_set_offscreencanvas_size,"c":_abort,"l":_emscripten_asm_const_async_on_main_thread,"m":_emscripten_asm_const_int,"f":_emscripten_check_blocking_allowed,"b":_emscripten_get_now,"j":_emscripten_memcpy_big,"z":_emscripten_receive_on_main_thread_js,"t":_emscripten_resize_heap,"x":_emscripten_unwind_to_js_event_loop,"p":_environ_get,"q":_environ_sizes_get,"u":_exit,"r":_fd_close,"s":_fd_read,"n":_fd_seek,"g":_fd_write,"a":wasmMemory,"o":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["A"]).apply(null,arguments)};var _initialize=Module["_initialize"]=function(){return(_initialize=Module["_initialize"]=Module["asm"]["B"]).apply(null,arguments)};var _createInstance=Module["_createInstance"]=function(){return(_createInstance=Module["_createInstance"]=Module["asm"]["C"]).apply(null,arguments)};var _destroyInstance=Module["_destroyInstance"]=function(){return(_destroyInstance=Module["_destroyInstance"]=Module["asm"]["D"]).apply(null,arguments)};var _getChunkHeightfieldAsync=Module["_getChunkHeightfieldAsync"]=function(){return(_getChunkHeightfieldAsync=Module["_getChunkHeightfieldAsync"]=Module["asm"]["E"]).apply(null,arguments)};var _getChunkSkylightAsync=Module["_getChunkSkylightAsync"]=function(){return(_getChunkSkylightAsync=Module["_getChunkSkylightAsync"]=Module["asm"]["F"]).apply(null,arguments)};var _getChunkAoAsync=Module["_getChunkAoAsync"]=function(){return(_getChunkAoAsync=Module["_getChunkAoAsync"]=Module["asm"]["G"]).apply(null,arguments)};var _createGrassSplatAsync=Module["_createGrassSplatAsync"]=function(){return(_createGrassSplatAsync=Module["_createGrassSplatAsync"]=Module["asm"]["H"]).apply(null,arguments)};var _createVegetationSplatAsync=Module["_createVegetationSplatAsync"]=function(){return(_createVegetationSplatAsync=Module["_createVegetationSplatAsync"]=Module["asm"]["I"]).apply(null,arguments)};var _createMobSplatAsync=Module["_createMobSplatAsync"]=function(){return(_createMobSplatAsync=Module["_createMobSplatAsync"]=Module["asm"]["J"]).apply(null,arguments)};var _createTerrainChunkMeshAsync=Module["_createTerrainChunkMeshAsync"]=function(){return(_createTerrainChunkMeshAsync=Module["_createTerrainChunkMeshAsync"]=Module["asm"]["K"]).apply(null,arguments)};var _createLiquidChunkMeshAsync=Module["_createLiquidChunkMeshAsync"]=function(){return(_createLiquidChunkMeshAsync=Module["_createLiquidChunkMeshAsync"]=Module["asm"]["L"]).apply(null,arguments)};var _drawSphereDamage=Module["_drawSphereDamage"]=function(){return(_drawSphereDamage=Module["_drawSphereDamage"]=Module["asm"]["M"]).apply(null,arguments)};var _eraseSphereDamage=Module["_eraseSphereDamage"]=function(){return(_eraseSphereDamage=Module["_eraseSphereDamage"]=Module["asm"]["N"]).apply(null,arguments)};var _drawCubeDamage=Module["_drawCubeDamage"]=function(){return(_drawCubeDamage=Module["_drawCubeDamage"]=Module["asm"]["O"]).apply(null,arguments)};var _eraseCubeDamage=Module["_eraseCubeDamage"]=function(){return(_eraseCubeDamage=Module["_eraseCubeDamage"]=Module["asm"]["P"]).apply(null,arguments)};var _setClipRange=Module["_setClipRange"]=function(){return(_setClipRange=Module["_setClipRange"]=Module["asm"]["Q"]).apply(null,arguments)};var _cancelTask=Module["_cancelTask"]=function(){return(_cancelTask=Module["_cancelTask"]=Module["asm"]["R"]).apply(null,arguments)};var _doMalloc=Module["_doMalloc"]=function(){return(_doMalloc=Module["_doMalloc"]=Module["asm"]["S"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["T"]).apply(null,arguments)};var _doFree=Module["_doFree"]=function(){return(_doFree=Module["_doFree"]=Module["asm"]["U"]).apply(null,arguments)};var _runLoop=Module["_runLoop"]=function(){return(_runLoop=Module["_runLoop"]=Module["asm"]["V"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["W"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Y"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Z"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["_"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["$"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["aa"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["ba"]).apply(null,arguments)};var __emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=function(){return(__emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=Module["asm"]["ca"]).apply(null,arguments)};var __emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=function(){return(__emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=Module["asm"]["da"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ea"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["fa"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ga"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["ha"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ia"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["ja"]).apply(null,arguments)};Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +let accept, reject;const p = new Promise((a, r) => {accept = a; reject = r;});Module.postRun = () => {accept();};Module.waitForLoad = () => p; +export default Module; diff --git a/public/dc.wasm b/public/dc.wasm new file mode 100644 index 0000000000..14fa38e381 Binary files /dev/null and b/public/dc.wasm differ diff --git a/public/dc.worker.js b/public/dc.worker.js new file mode 100644 index 0000000000..ae8dd85afd --- /dev/null +++ b/public/dc.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8"))},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onmessage=e=>{try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){e.data.urlOrBlob="/dc.js";importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0,1);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){pendingNotifiedProxyingQueues.forEach(queue=>{Module["executeNotifiedProxyingQueue"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processProxyingQueue"){if(initializedJS){Module["executeNotifiedProxyingQueue"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}; diff --git a/public/fonts/SF Movie Poster Bold.ttf b/public/fonts/SF Movie Poster Bold.ttf new file mode 100644 index 0000000000..b2cf25cb45 Binary files /dev/null and b/public/fonts/SF Movie Poster Bold.ttf differ diff --git a/public/fonts/SF Movie Poster.ttf b/public/fonts/SF Movie Poster.ttf new file mode 100644 index 0000000000..2e58e26485 Binary files /dev/null and b/public/fonts/SF Movie Poster.ttf differ diff --git a/public/images/arc-white.svg b/public/images/arc-white.svg new file mode 100644 index 0000000000..db8839d5de --- /dev/null +++ b/public/images/arc-white.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/cardback-01.svg b/public/images/cardback-01.svg new file mode 100644 index 0000000000..a6e20f6495 --- /dev/null +++ b/public/images/cardback-01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/fantasy-arrow.png b/public/images/fantasy-arrow.png new file mode 100644 index 0000000000..16a767d42c Binary files /dev/null and b/public/images/fantasy-arrow.png differ diff --git a/public/images/fantasy-arrow.svg b/public/images/fantasy-arrow.svg new file mode 100644 index 0000000000..75d9b3c060 --- /dev/null +++ b/public/images/fantasy-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/fantasy-arrow2.svg b/public/images/fantasy-arrow2.svg new file mode 100644 index 0000000000..27f0b59060 --- /dev/null +++ b/public/images/fantasy-arrow2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/items/HP-01.svg b/public/images/items/HP-01.svg new file mode 100644 index 0000000000..e02e5b14a0 --- /dev/null +++ b/public/images/items/HP-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/HP_negative-01.svg b/public/images/items/HP_negative-01.svg new file mode 100644 index 0000000000..99c5ec5f91 --- /dev/null +++ b/public/images/items/HP_negative-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/MP_green-01.svg b/public/images/items/MP_green-01.svg new file mode 100644 index 0000000000..683d7658b0 --- /dev/null +++ b/public/images/items/MP_green-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/MP_purple-01.svg b/public/images/items/MP_purple-01.svg new file mode 100644 index 0000000000..83dace65b4 --- /dev/null +++ b/public/images/items/MP_purple-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/XP-01.svg b/public/images/items/XP-01.svg new file mode 100644 index 0000000000..c23c72a506 --- /dev/null +++ b/public/images/items/XP-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/XP_negative-01.svg b/public/images/items/XP_negative-01.svg new file mode 100644 index 0000000000..ceb1d11b21 --- /dev/null +++ b/public/images/items/XP_negative-01.svg @@ -0,0 +1 @@ + diff --git a/public/images/items/noun-fruit-4617781.svg b/public/images/items/noun-fruit-4617781.svg new file mode 100644 index 0000000000..093338e7e3 --- /dev/null +++ b/public/images/items/noun-fruit-4617781.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/items/noun-poison-4837113.svg b/public/images/items/noun-poison-4837113.svg new file mode 100644 index 0000000000..9a86aa640d --- /dev/null +++ b/public/images/items/noun-poison-4837113.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/items/noun-potion-3097512.svg b/public/images/items/noun-potion-3097512.svg new file mode 100644 index 0000000000..8451e4efd9 --- /dev/null +++ b/public/images/items/noun-potion-3097512.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/items/noun-root-4617773.svg b/public/images/items/noun-root-4617773.svg new file mode 100644 index 0000000000..5320c21160 --- /dev/null +++ b/public/images/items/noun-root-4617773.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/ui/down.svg b/public/images/ui/down.svg new file mode 100644 index 0000000000..c9492a783e --- /dev/null +++ b/public/images/ui/down.svg @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/public/images/ui/left-red.svg b/public/images/ui/left-red.svg new file mode 100644 index 0000000000..c028eca841 --- /dev/null +++ b/public/images/ui/left-red.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/public/images/ui/left.svg b/public/images/ui/left.svg new file mode 100644 index 0000000000..84c6b1133a --- /dev/null +++ b/public/images/ui/left.svg @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/public/images/ui/rainbow-line.svg b/public/images/ui/rainbow-line.svg new file mode 100644 index 0000000000..7ea0073703 --- /dev/null +++ b/public/images/ui/rainbow-line.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + diff --git a/public/sounds/combat/OOT_Bomb_Blow.wav b/public/sounds/combat/OOT_Bomb_Blow.wav new file mode 100644 index 0000000000..0d097c3d61 Binary files /dev/null and b/public/sounds/combat/OOT_Bomb_Blow.wav differ diff --git a/public/sounds/combat/OOT_Bush_Cut.wav b/public/sounds/combat/OOT_Bush_Cut.wav new file mode 100644 index 0000000000..267d3bcd14 Binary files /dev/null and b/public/sounds/combat/OOT_Bush_Cut.wav differ diff --git a/public/sounds/combat/OOT_Bush_Pickup.wav b/public/sounds/combat/OOT_Bush_Pickup.wav new file mode 100644 index 0000000000..b1053ab044 Binary files /dev/null and b/public/sounds/combat/OOT_Bush_Pickup.wav differ diff --git a/public/sounds/combat/OOT_Bush_Walk.wav b/public/sounds/combat/OOT_Bush_Walk.wav new file mode 100644 index 0000000000..9d76bf7af6 Binary files /dev/null and b/public/sounds/combat/OOT_Bush_Walk.wav differ diff --git a/public/sounds/combat/OOT_Fanfare_Item.wav b/public/sounds/combat/OOT_Fanfare_Item.wav new file mode 100644 index 0000000000..e4de361562 Binary files /dev/null and b/public/sounds/combat/OOT_Fanfare_Item.wav differ diff --git a/public/sounds/combat/OOT_Fanfare_SmallItem.wav b/public/sounds/combat/OOT_Fanfare_SmallItem.wav new file mode 100644 index 0000000000..63385d3b1f Binary files /dev/null and b/public/sounds/combat/OOT_Fanfare_SmallItem.wav differ diff --git a/public/sounds/combat/OOT_Fire.wav b/public/sounds/combat/OOT_Fire.wav new file mode 100644 index 0000000000..c406b58642 Binary files /dev/null and b/public/sounds/combat/OOT_Fire.wav differ diff --git a/public/sounds/combat/OOT_FireRing_Loop.wav b/public/sounds/combat/OOT_FireRing_Loop.wav new file mode 100644 index 0000000000..0e32d934fd Binary files /dev/null and b/public/sounds/combat/OOT_FireRing_Loop.wav differ diff --git a/public/sounds/combat/OOT_FireRing_Start.wav b/public/sounds/combat/OOT_FireRing_Start.wav new file mode 100644 index 0000000000..6a9d362260 Binary files /dev/null and b/public/sounds/combat/OOT_FireRing_Start.wav differ diff --git a/public/sounds/combat/OOT_FireWall_Loop.wav b/public/sounds/combat/OOT_FireWall_Loop.wav new file mode 100644 index 0000000000..9137644046 Binary files /dev/null and b/public/sounds/combat/OOT_FireWall_Loop.wav differ diff --git a/public/sounds/combat/OOT_FireWall_Start.wav b/public/sounds/combat/OOT_FireWall_Start.wav new file mode 100644 index 0000000000..da9a0cfec9 Binary files /dev/null and b/public/sounds/combat/OOT_FireWall_Start.wav differ diff --git a/public/sounds/combat/OOT_Fire_Flames.wav b/public/sounds/combat/OOT_Fire_Flames.wav new file mode 100644 index 0000000000..4d4a268f3f Binary files /dev/null and b/public/sounds/combat/OOT_Fire_Flames.wav differ diff --git a/public/sounds/combat/OOT_Fire_Ignite.wav b/public/sounds/combat/OOT_Fire_Ignite.wav new file mode 100644 index 0000000000..bd2305d829 Binary files /dev/null and b/public/sounds/combat/OOT_Fire_Ignite.wav differ diff --git a/public/sounds/combat/OOT_Get_Heart.wav b/public/sounds/combat/OOT_Get_Heart.wav new file mode 100644 index 0000000000..64c330dc4a Binary files /dev/null and b/public/sounds/combat/OOT_Get_Heart.wav differ diff --git a/public/sounds/combat/OOT_Get_SmallItem1.wav b/public/sounds/combat/OOT_Get_SmallItem1.wav new file mode 100644 index 0000000000..4f3b4f1178 Binary files /dev/null and b/public/sounds/combat/OOT_Get_SmallItem1.wav differ diff --git a/public/sounds/combat/OOT_Get_SmallItem2.wav b/public/sounds/combat/OOT_Get_SmallItem2.wav new file mode 100644 index 0000000000..ceb46bb4cf Binary files /dev/null and b/public/sounds/combat/OOT_Get_SmallItem2.wav differ diff --git a/public/sounds/combat/OOT_Sword_Away.wav b/public/sounds/combat/OOT_Sword_Away.wav new file mode 100644 index 0000000000..ffab1ccc28 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Away.wav differ diff --git a/public/sounds/combat/OOT_Sword_Charge.wav b/public/sounds/combat/OOT_Sword_Charge.wav new file mode 100644 index 0000000000..cd3c89e8e2 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Charge.wav differ diff --git a/public/sounds/combat/OOT_Sword_Draw.wav b/public/sounds/combat/OOT_Sword_Draw.wav new file mode 100644 index 0000000000..02551b82b0 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Draw.wav differ diff --git a/public/sounds/combat/OOT_Sword_Spin.wav b/public/sounds/combat/OOT_Sword_Spin.wav new file mode 100644 index 0000000000..8e3455b212 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Spin.wav differ diff --git a/public/sounds/combat/OOT_Sword_Spin_Magic1.wav b/public/sounds/combat/OOT_Sword_Spin_Magic1.wav new file mode 100644 index 0000000000..9f330d2c87 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Spin_Magic1.wav differ diff --git a/public/sounds/combat/OOT_Sword_Spin_Magic2.wav b/public/sounds/combat/OOT_Sword_Spin_Magic2.wav new file mode 100644 index 0000000000..5fe9c10275 Binary files /dev/null and b/public/sounds/combat/OOT_Sword_Spin_Magic2.wav differ diff --git a/public/sounds/combat/beep.wav b/public/sounds/combat/beep.wav new file mode 100644 index 0000000000..73e95174d3 Binary files /dev/null and b/public/sounds/combat/beep.wav differ diff --git a/public/sounds/combat/boop.wav b/public/sounds/combat/boop.wav new file mode 100644 index 0000000000..446aa5b643 Binary files /dev/null and b/public/sounds/combat/boop.wav differ diff --git a/public/sounds/combat/sword_slash0-1.wav b/public/sounds/combat/sword_slash0-1.wav index 672aa7cdad..7982bd70c9 100644 Binary files a/public/sounds/combat/sword_slash0-1.wav and b/public/sounds/combat/sword_slash0-1.wav differ diff --git a/public/sounds/combat/sword_slash0-2.wav b/public/sounds/combat/sword_slash0-2.wav index 61a8c17e91..78d5512476 100644 Binary files a/public/sounds/combat/sword_slash0-2.wav and b/public/sounds/combat/sword_slash0-2.wav differ diff --git a/public/sounds/combat/sword_slash0-3.wav b/public/sounds/combat/sword_slash0-3.wav index 33471397d5..d58c53d570 100644 Binary files a/public/sounds/combat/sword_slash0-3.wav and b/public/sounds/combat/sword_slash0-3.wav differ diff --git a/public/sounds/combat/sword_slash0-4.wav b/public/sounds/combat/sword_slash0-4.wav index 82c10c6bf9..fc0eb6c0fa 100644 Binary files a/public/sounds/combat/sword_slash0-4.wav and b/public/sounds/combat/sword_slash0-4.wav differ diff --git a/public/sounds/combat/sword_slash1-1.wav b/public/sounds/combat/sword_slash1-1.wav index b48e2709e8..a378b3eaba 100644 Binary files a/public/sounds/combat/sword_slash1-1.wav and b/public/sounds/combat/sword_slash1-1.wav differ diff --git a/public/sounds/combat/sword_slash1-2.wav b/public/sounds/combat/sword_slash1-2.wav index d68aa212ab..928e797593 100644 Binary files a/public/sounds/combat/sword_slash1-2.wav and b/public/sounds/combat/sword_slash1-2.wav differ diff --git a/public/sounds/combat/sword_slash1-3.wav b/public/sounds/combat/sword_slash1-3.wav index 73070c09f3..b5b404a916 100644 Binary files a/public/sounds/combat/sword_slash1-3.wav and b/public/sounds/combat/sword_slash1-3.wav differ diff --git a/public/sounds/combat/sword_slash1-4.wav b/public/sounds/combat/sword_slash1-4.wav index 899088e671..064c2d3167 100644 Binary files a/public/sounds/combat/sword_slash1-4.wav and b/public/sounds/combat/sword_slash1-4.wav differ diff --git a/public/sounds/combat/sword_slash2-1.wav b/public/sounds/combat/sword_slash2-1.wav index b5da59e095..419cc15138 100644 Binary files a/public/sounds/combat/sword_slash2-1.wav and b/public/sounds/combat/sword_slash2-1.wav differ diff --git a/public/sounds/combat/sword_slash2-2.wav b/public/sounds/combat/sword_slash2-2.wav index 06997099d3..3a33db9138 100644 Binary files a/public/sounds/combat/sword_slash2-2.wav and b/public/sounds/combat/sword_slash2-2.wav differ diff --git a/public/sounds/combat/sword_slash2-3.wav b/public/sounds/combat/sword_slash2-3.wav index 00ad9fa0c8..6ce0c3c9f9 100644 Binary files a/public/sounds/combat/sword_slash2-3.wav and b/public/sounds/combat/sword_slash2-3.wav differ diff --git a/public/sounds/combat/sword_slash2-4.wav b/public/sounds/combat/sword_slash2-4.wav index 134dedd80b..d82b5ffd18 100644 Binary files a/public/sounds/combat/sword_slash2-4.wav and b/public/sounds/combat/sword_slash2-4.wav differ diff --git a/public/sounds/combat/sword_slash3-1.wav b/public/sounds/combat/sword_slash3-1.wav index d98aaa2705..4b375d471c 100644 Binary files a/public/sounds/combat/sword_slash3-1.wav and b/public/sounds/combat/sword_slash3-1.wav differ diff --git a/public/sounds/combat/sword_slash3-2.wav b/public/sounds/combat/sword_slash3-2.wav index c5e0a4b43c..c21fb48005 100644 Binary files a/public/sounds/combat/sword_slash3-2.wav and b/public/sounds/combat/sword_slash3-2.wav differ diff --git a/public/sounds/combat/sword_slash3-3.wav b/public/sounds/combat/sword_slash3-3.wav index 7433a4b43c..336909187a 100644 Binary files a/public/sounds/combat/sword_slash3-3.wav and b/public/sounds/combat/sword_slash3-3.wav differ diff --git a/public/sounds/combat/sword_slash3-4.wav b/public/sounds/combat/sword_slash3-4.wav index fa443dd779..69e77d5fb5 100644 Binary files a/public/sounds/combat/sword_slash3-4.wav and b/public/sounds/combat/sword_slash3-4.wav differ diff --git a/public/sounds/navi/navi_danger3.wav b/public/sounds/navi/navi_danger3.wav new file mode 100644 index 0000000000..c0f93dd918 Binary files /dev/null and b/public/sounds/navi/navi_danger3.wav differ diff --git a/public/sounds/navi/navi_friendly1.wav b/public/sounds/navi/navi_friendly1.wav new file mode 100644 index 0000000000..18e4195af4 Binary files /dev/null and b/public/sounds/navi/navi_friendly1.wav differ diff --git a/public/sounds/navi/navi_hey1.wav b/public/sounds/navi/navi_hey1.wav new file mode 100644 index 0000000000..9b88d17a7a Binary files /dev/null and b/public/sounds/navi/navi_hey1.wav differ diff --git a/public/sounds/navi/navi_item3.wav b/public/sounds/navi/navi_item3.wav new file mode 100644 index 0000000000..b9b953de9f Binary files /dev/null and b/public/sounds/navi/navi_item3.wav differ diff --git a/public/sounds/navi/navi_watchout1.wav b/public/sounds/navi/navi_watchout1.wav new file mode 100644 index 0000000000..c0fc298666 Binary files /dev/null and b/public/sounds/navi/navi_watchout1.wav differ diff --git a/public/sounds/sound-files.json b/public/sounds/sound-files.json index 5a2260b345..fe6fd928d6 100644 --- a/public/sounds/sound-files.json +++ b/public/sounds/sound-files.json @@ -55,1043 +55,1108 @@ "duration": 0.2206875 }, { - "name": "combat/OOT_Carrot.wav", + "name": "combat/OOT_Bomb_Blow.wav", "offset": 4.703625, + "duration": 1.591 + }, + { + "name": "combat/OOT_Bush_Cut.wav", + "offset": 6.294625, + "duration": 0.6845416666666667 + }, + { + "name": "combat/OOT_Bush_Pickup.wav", + "offset": 6.979166666666667, + "duration": 0.4748541666666667 + }, + { + "name": "combat/OOT_Bush_Walk.wav", + "offset": 7.454020833333334, + "duration": 1.521375 + }, + { + "name": "combat/OOT_Carrot.wav", + "offset": 8.975395833333334, "duration": 0.28379166666666666 }, { "name": "combat/OOT_Dialogue_Done.wav", - "offset": 4.987416666666666, + "offset": 9.2591875, "duration": 0.99875 }, { "name": "combat/OOT_Dialogue_Next.wav", - "offset": 5.986166666666667, + "offset": 10.257937499999999, "duration": 0.53 }, { "name": "combat/OOT_Dialogue_No.wav", - "offset": 6.516166666666667, + "offset": 10.787937499999998, "duration": 0.53 }, + { + "name": "combat/OOT_Fanfare_Item.wav", + "offset": 11.317937499999998, + "duration": 2.6973125 + }, + { + "name": "combat/OOT_Fanfare_SmallItem.wav", + "offset": 14.015249999999998, + "duration": 2.762166666666667 + }, + { + "name": "combat/OOT_Fire.wav", + "offset": 16.777416666666664, + "duration": 3.329854166666667 + }, + { + "name": "combat/OOT_FireRing_Loop.wav", + "offset": 20.10727083333333, + "duration": 3.7475 + }, + { + "name": "combat/OOT_FireRing_Start.wav", + "offset": 23.85477083333333, + "duration": 1.323625 + }, + { + "name": "combat/OOT_FireWall_Loop.wav", + "offset": 25.17839583333333, + "duration": 1.20325 + }, + { + "name": "combat/OOT_FireWall_Start.wav", + "offset": 26.38164583333333, + "duration": 1.8316666666666668 + }, + { + "name": "combat/OOT_Fire_Flames.wav", + "offset": 28.213312499999997, + "duration": 4.5940625 + }, + { + "name": "combat/OOT_Fire_Ignite.wav", + "offset": 32.80737499999999, + "duration": 0.7415 + }, + { + "name": "combat/OOT_Get_Heart.wav", + "offset": 33.548874999999995, + "duration": 0.4118541666666667 + }, + { + "name": "combat/OOT_Get_SmallItem1.wav", + "offset": 33.96072916666666, + "duration": 0.9999791666666666 + }, + { + "name": "combat/OOT_Get_SmallItem2.wav", + "offset": 34.96070833333333, + "duration": 1.3153125 + }, { "name": "combat/OOT_Link_Item.wav", - "offset": 7.046166666666667, + "offset": 36.27602083333333, "duration": 0.41870833333333335 }, { "name": "combat/OOT_Link_Item_Away.wav", - "offset": 7.464875, + "offset": 36.69472916666666, "duration": 0.33920833333333333 }, { "name": "combat/OOT_Link_Roll_Wall.wav", - "offset": 7.804083333333334, + "offset": 37.03393749999999, "duration": 0.1666875 }, { "name": "combat/OOT_MagicRefill.wav", - "offset": 7.970770833333334, + "offset": 37.200624999999995, "duration": 3.31125 }, { "name": "combat/OOT_PauseMenu_Close.wav", - "offset": 11.282020833333334, + "offset": 40.511874999999996, "duration": 0.639375 }, { "name": "combat/OOT_PauseMenu_Cursor.wav", - "offset": 11.921395833333333, + "offset": 41.15125, "duration": 0.3034375 }, { "name": "combat/OOT_PauseMenu_Open.wav", - "offset": 12.224833333333333, + "offset": 41.4546875, "duration": 1.0925 }, { "name": "combat/OOT_PauseMenu_Select.wav", - "offset": 13.317333333333332, + "offset": 42.5471875, "duration": 0.7175 }, { "name": "combat/OOT_PauseMenu_Turn_Left.wav", - "offset": 14.034833333333331, + "offset": 43.2646875, "duration": 0.9210625 }, { "name": "combat/OOT_PauseMenu_Turn_Right.wav", - "offset": 14.955895833333331, + "offset": 44.18575, "duration": 0.92025 }, + { + "name": "combat/OOT_Sword_Away.wav", + "offset": 45.106, + "duration": 0.4455 + }, + { + "name": "combat/OOT_Sword_Charge.wav", + "offset": 45.551500000000004, + "duration": 5.5475 + }, + { + "name": "combat/OOT_Sword_Draw.wav", + "offset": 51.099000000000004, + "duration": 0.6045625 + }, + { + "name": "combat/OOT_Sword_Spin.wav", + "offset": 51.703562500000004, + "duration": 1.0582083333333334 + }, + { + "name": "combat/OOT_Sword_Spin_Magic1.wav", + "offset": 52.76177083333334, + "duration": 0.9169791666666667 + }, + { + "name": "combat/OOT_Sword_Spin_Magic2.wav", + "offset": 53.67875, + "duration": 1.4866041666666667 + }, { "name": "combat/OOT_ZTarget_Cancel.wav", - "offset": 15.87614583333333, + "offset": 55.16535416666667, "duration": 0.2573125 }, { "name": "combat/OOT_ZTarget_Center1.wav", - "offset": 16.13345833333333, + "offset": 55.422666666666665, "duration": 0.6442083333333334 }, { "name": "combat/OOT_ZTarget_Center2.wav", - "offset": 16.777666666666665, + "offset": 56.066874999999996, "duration": 0.6090833333333333 }, { "name": "combat/OOT_ZTarget_Enemy.wav", - "offset": 17.38675, + "offset": 56.67595833333333, "duration": 1.03 }, { "name": "combat/OOT_ZTarget_Object.wav", - "offset": 18.41675, + "offset": 57.70595833333333, "duration": 0.6206875 }, { "name": "combat/Plant_Impact_1_v1.wav", - "offset": 19.0374375, + "offset": 58.32664583333333, "duration": 0.7164375 }, { "name": "combat/Plant_Impact_1_v2.wav", - "offset": 19.753875, + "offset": 59.04308333333333, "duration": 0.8949375 }, { "name": "combat/Plant_Impact_1_v3.wav", - "offset": 20.648812500000002, + "offset": 59.938020833333326, "duration": 0.849 }, { "name": "combat/Plant_Impact_1_v4.wav", - "offset": 21.497812500000002, + "offset": 60.78702083333332, "duration": 0.7643333333333333 }, { "name": "combat/Plant_Impact_1_v5.wav", - "offset": 22.262145833333335, + "offset": 61.551354166666655, "duration": 0.8252916666666666 }, { "name": "combat/Plant_Impact_1_v6.wav", - "offset": 23.0874375, + "offset": 62.37664583333332, "duration": 0.908 }, { "name": "combat/Punch_Type_1_Heavier_v1.wav", - "offset": 23.9954375, + "offset": 63.28464583333332, "duration": 0.33666666666666667 }, { "name": "combat/Punch_Type_1_Heavier_v2.wav", - "offset": 24.332104166666667, + "offset": 63.62131249999999, "duration": 0.43866666666666665 }, { "name": "combat/Punch_Type_1_Heavier_v3.wav", - "offset": 24.770770833333334, + "offset": 64.05997916666665, "duration": 0.41870833333333335 }, { "name": "combat/Punch_Type_1_Heavier_v4.wav", - "offset": 25.18947916666667, + "offset": 64.47868749999998, "duration": 0.4801875 }, { "name": "combat/Punch_Type_1_Light_v1.wav", - "offset": 25.669666666666668, + "offset": 64.95887499999998, "duration": 0.29004166666666664 }, { "name": "combat/Punch_Type_1_Light_v2.wav", - "offset": 25.959708333333335, + "offset": 65.24891666666664, "duration": 0.3790208333333333 }, { "name": "combat/Punch_Type_1_Light_v3.wav", - "offset": 26.338729166666667, + "offset": 65.62793749999997, "duration": 0.40547916666666667 }, { "name": "combat/Punch_Type_1_Light_v4.wav", - "offset": 26.744208333333333, + "offset": 66.03341666666664, "duration": 0.46989583333333335 }, { "name": "combat/Punch_Type_2_Heavy_v1.wav", - "offset": 27.214104166666665, + "offset": 66.50331249999998, "duration": 0.40779166666666666 }, { "name": "combat/Punch_Type_2_Heavy_v2.wav", - "offset": 27.621895833333333, + "offset": 66.91110416666665, "duration": 0.44027083333333333 }, { "name": "combat/Punch_Type_2_Heavy_v3.wav", - "offset": 28.062166666666666, + "offset": 67.35137499999998, "duration": 0.4231666666666667 }, { "name": "combat/Punch_Type_2_Heavy_v4.wav", - "offset": 28.485333333333333, + "offset": 67.77454166666664, "duration": 0.4650208333333333 }, { "name": "combat/Punch_Type_2_Light_v1.wav", - "offset": 28.950354166666667, + "offset": 68.23956249999996, "duration": 0.3397291666666667 }, { "name": "combat/Punch_Type_2_Light_v2.wav", - "offset": 29.290083333333335, + "offset": 68.57929166666663, "duration": 0.2826666666666667 }, { "name": "combat/Punch_Type_2_Light_v3.wav", - "offset": 29.572750000000003, + "offset": 68.8619583333333, "duration": 0.3018958333333333 }, { "name": "combat/Punch_Type_2_Light_v4.wav", - "offset": 29.874645833333336, + "offset": 69.16385416666664, "duration": 0.40329166666666666 }, { "name": "combat/Punch_Type_3_Brighter_v2.wav", - "offset": 30.277937500000004, + "offset": 69.5671458333333, "duration": 0.2878541666666667 }, { "name": "combat/Punch_Type_3_Brighter_v3.wav", - "offset": 30.56579166666667, + "offset": 69.85499999999996, "duration": 0.3454375 }, { "name": "combat/Punch_Type_3_Natural_v1.wav", - "offset": 30.91122916666667, + "offset": 70.20043749999996, "duration": 0.37597916666666664 }, { "name": "combat/Punch_Type_3_Natural_v2.wav", - "offset": 31.287208333333336, + "offset": 70.57641666666663, "duration": 0.37597916666666664 }, { "name": "combat/Punch_Type_3_Natural_v3.wav", - "offset": 31.663187500000003, + "offset": 70.9523958333333, "duration": 0.321375 }, { "name": "combat/Ricochet1.wav", - "offset": 31.984562500000003, + "offset": 71.2737708333333, "duration": 1.1521666666666666 }, { "name": "combat/Ricochet2.wav", - "offset": 33.13672916666667, + "offset": 72.42593749999997, "duration": 1.03 }, { "name": "combat/Ricochet3.wav", - "offset": 34.16672916666667, + "offset": 73.45593749999998, "duration": 1.53 }, { "name": "combat/Ricochet4.wav", - "offset": 35.69672916666667, + "offset": 74.98593749999998, "duration": 0.53 }, { "name": "combat/Ricochet5.wav", - "offset": 36.22672916666667, + "offset": 75.51593749999998, "duration": 1.1550208333333334 }, { "name": "combat/Ricochet6.wav", - "offset": 37.381750000000004, + "offset": 76.67095833333332, "duration": 1.0612708333333334 }, { "name": "combat/Ricochet7.wav", - "offset": 38.443020833333335, + "offset": 77.73222916666666, "duration": 0.78 }, { "name": "combat/Ricochet8.wav", - "offset": 39.22302083333334, + "offset": 78.51222916666666, "duration": 1.3425208333333334 }, { "name": "combat/Subtle_Slash_1.wav", - "offset": 40.56554166666667, + "offset": 79.85475, "duration": 0.7135416666666666 }, { "name": "combat/Subtle_Slash_2.wav", - "offset": 41.27908333333333, + "offset": 80.56829166666667, "duration": 0.5727708333333333 }, { "name": "combat/Subtle_Slash_3.wav", - "offset": 41.85185416666667, + "offset": 81.1410625, "duration": 0.6279166666666667 }, { "name": "combat/Subtle_Slash_4.wav", - "offset": 42.47977083333333, + "offset": 81.76897916666667, "duration": 0.47989583333333335 }, { "name": "combat/Weapon_Whoosh_Low_1.wav", - "offset": 42.959666666666664, + "offset": 82.248875, "duration": 0.42472916666666666 }, { "name": "combat/Weapon_Whoosh_Low_2.wav", - "offset": 43.38439583333333, + "offset": 82.67360416666666, "duration": 1.1677708333333334 }, { "name": "combat/arrow-hit1.wav", - "offset": 44.552166666666665, + "offset": 83.841375, "duration": 0.2615 }, { "name": "combat/arrow-hit2.wav", - "offset": 44.81366666666666, + "offset": 84.102875, "duration": 0.14485416666666667 }, + { + "name": "combat/beep.wav", + "offset": 84.24772916666666, + "duration": 0.3600833333333333 + }, + { + "name": "combat/boop.wav", + "offset": 84.6078125, + "duration": 0.3913333333333333 + }, { "name": "combat/bow_draw.wav", - "offset": 44.95852083333333, + "offset": 84.99914583333333, "duration": 0.74875 }, { "name": "combat/bow_release1.wav", - "offset": 45.70727083333333, + "offset": 85.74789583333333, "duration": 0.264375 }, { "name": "combat/bow_release2.wav", - "offset": 45.97164583333333, + "offset": 86.01227083333333, "duration": 0.264375 }, { "name": "combat/bow_release3.wav", - "offset": 46.236020833333335, + "offset": 86.27664583333333, "duration": 0.264375 }, { "name": "combat/bow_release4.wav", - "offset": 46.500395833333336, + "offset": 86.54102083333333, "duration": 0.264375 }, { "name": "combat/bow_release5.wav", - "offset": 46.76477083333334, + "offset": 86.80539583333334, "duration": 0.264375 }, { "name": "combat/bow_release6.wav", - "offset": 47.02914583333334, + "offset": 87.06977083333334, "duration": 0.264375 }, { "name": "combat/bow_release7.wav", - "offset": 47.29352083333334, + "offset": 87.33414583333334, "duration": 0.264375 }, { "name": "combat/bow_release8.wav", - "offset": 47.55789583333334, + "offset": 87.59852083333334, "duration": 0.264375 }, { "name": "combat/bow_release9.wav", - "offset": 47.82227083333334, + "offset": 87.86289583333334, "duration": 0.264375 }, { "name": "combat/ff7_battle_transition.wav", - "offset": 48.08664583333334, + "offset": 88.12727083333334, "duration": 2.2415416666666665 }, { "name": "combat/ff7_cursor_back.wav", - "offset": 50.32818750000001, + "offset": 90.3688125, "duration": 0.10210416666666666 }, { "name": "combat/ff7_cursor_ready.wav", - "offset": 50.430291666666676, + "offset": 90.47091666666667, "duration": 0.42904166666666665 }, { "name": "combat/ff7_cut.wav", - "offset": 50.859333333333346, + "offset": 90.89995833333333, "duration": 0.6117291666666667 }, { "name": "combat/ff7_enemy_death.wav", - "offset": 51.471062500000016, + "offset": 91.5116875, "duration": 1.3713541666666667 }, { "name": "combat/ff7_limit_break.wav", - "offset": 52.842416666666686, + "offset": 92.88304166666666, "duration": 1.7655833333333333 }, { "name": "combat/ff7_magic.wav", - "offset": 54.60800000000002, + "offset": 94.648625, "duration": 2.1117291666666667 }, { "name": "combat/ff7_save.wav", - "offset": 56.71972916666668, + "offset": 96.76035416666666, "duration": 0.6838541666666667 }, { "name": "combat/ff8_click.wav", - "offset": 57.40358333333335, + "offset": 97.44420833333332, "duration": 0.16966666666666666 }, { "name": "combat/ff8_convert.wav", - "offset": 57.573250000000016, + "offset": 97.613875, "duration": 0.5514166666666667 }, { "name": "combat/ff8_item.wav", - "offset": 58.124666666666684, + "offset": 98.16529166666666, "duration": 0.8059166666666666 }, { "name": "combat/ff8_junction.wav", - "offset": 58.93058333333335, + "offset": 98.97120833333332, "duration": 0.4241666666666667 }, { "name": "combat/ff8_key_item.wav", - "offset": 59.35475000000002, + "offset": 99.39537499999999, "duration": 0.9331666666666667 }, { "name": "combat/ff8_limit.wav", - "offset": 60.28791666666668, + "offset": 100.32854166666665, "duration": 1.8663333333333334 }, { "name": "combat/ff8_limit_ready.wav", - "offset": 62.15425000000002, + "offset": 102.19487499999998, "duration": 0.63625 }, { "name": "combat/ff8_menu_back.wav", - "offset": 62.790500000000016, + "offset": 102.83112499999999, "duration": 0.21208333333333335 }, { "name": "combat/ff8_menu_ok.wav", - "offset": 63.00258333333335, + "offset": 103.04320833333333, "duration": 0.2545 }, { "name": "combat/ff8_menu_open.wav", - "offset": 63.25708333333335, + "offset": 103.29770833333332, "duration": 1.3149166666666667 }, { "name": "combat/ff8_menu_open2.wav", - "offset": 64.57200000000002, + "offset": 104.61262499999998, "duration": 1.2300833333333334 }, { "name": "combat/ff8_menu_ready.wav", - "offset": 65.80208333333336, + "offset": 105.84270833333332, "duration": 0.46658333333333335 }, { "name": "combat/ff8_notification.wav", - "offset": 66.26866666666669, + "offset": 106.30929166666665, "duration": 0.7635 }, { "name": "combat/ff8_save.wav", - "offset": 67.03216666666668, + "offset": 107.07279166666665, "duration": 0.46658333333333335 }, { "name": "combat/ff8_sword.wav", - "offset": 67.49875000000002, + "offset": 107.53937499999998, "duration": 0.8483333333333334 }, { "name": "combat/ff8_sword_critical.wav", - "offset": 68.34708333333334, + "offset": 108.38770833333331, "duration": 0.63625 }, { "name": "combat/rifle.wav", - "offset": 68.98333333333335, + "offset": 109.02395833333331, "duration": 0.814125 }, { "name": "combat/sword_slash0-1.wav", - "offset": 69.79745833333335, + "offset": 109.83808333333332, "duration": 0.53 }, { "name": "combat/sword_slash0-2.wav", - "offset": 70.32745833333335, + "offset": 110.36808333333332, "duration": 0.53 }, { "name": "combat/sword_slash0-3.wav", - "offset": 70.85745833333335, + "offset": 110.89808333333332, "duration": 0.53 }, { "name": "combat/sword_slash0-4.wav", - "offset": 71.38745833333336, + "offset": 111.42808333333332, "duration": 0.53 }, { "name": "combat/sword_slash1-1.wav", - "offset": 71.91745833333336, + "offset": 111.95808333333332, "duration": 0.405 }, { "name": "combat/sword_slash1-2.wav", - "offset": 72.32245833333336, + "offset": 112.36308333333332, "duration": 0.405 }, { "name": "combat/sword_slash1-3.wav", - "offset": 72.72745833333336, + "offset": 112.76808333333332, "duration": 0.405 }, { "name": "combat/sword_slash1-4.wav", - "offset": 73.13245833333336, + "offset": 113.17308333333332, "duration": 0.405 }, { "name": "combat/sword_slash2-1.wav", - "offset": 73.53745833333336, + "offset": 113.57808333333332, "duration": 0.37375 }, { "name": "combat/sword_slash2-2.wav", - "offset": 73.91120833333336, + "offset": 113.95183333333333, "duration": 0.37375 }, { "name": "combat/sword_slash2-3.wav", - "offset": 74.28495833333336, + "offset": 114.32558333333333, "duration": 0.37375 }, { "name": "combat/sword_slash2-4.wav", - "offset": 74.65870833333337, + "offset": 114.69933333333333, "duration": 0.37375 }, { "name": "combat/sword_slash3-1.wav", - "offset": 75.03245833333337, + "offset": 115.07308333333333, "duration": 0.3425 }, { "name": "combat/sword_slash3-2.wav", - "offset": 75.37495833333337, + "offset": 115.41558333333333, "duration": 0.3425 }, { "name": "combat/sword_slash3-3.wav", - "offset": 75.71745833333337, + "offset": 115.75808333333333, "duration": 0.3425 }, { "name": "combat/sword_slash3-4.wav", - "offset": 76.05995833333337, + "offset": 116.10058333333333, "duration": 0.3425 }, { "name": "food/HP_potion.wav", - "offset": 76.40245833333337, + "offset": 116.44308333333333, "duration": 1.05675 }, { "name": "food/MP_Potion.wav", - "offset": 77.45920833333336, + "offset": 117.49983333333333, "duration": 1.26075 }, { "name": "food/chomp1.wav", - "offset": 78.71995833333337, + "offset": 118.76058333333333, "duration": 0.18627083333333333 }, { "name": "food/chomp2.wav", - "offset": 78.9062291666667, + "offset": 118.94685416666667, "duration": 0.18627083333333333 }, { "name": "food/chomp3.wav", - "offset": 79.09250000000004, + "offset": 119.133125, "duration": 0.18627083333333333 }, { "name": "food/gulp1.wav", - "offset": 79.27877083333338, + "offset": 119.31939583333335, "duration": 0.43627083333333333 }, { "name": "food/gulp2.wav", - "offset": 79.71504166666672, + "offset": 119.75566666666668, "duration": 0.43627083333333333 }, { "name": "food/gulp3.wav", - "offset": 80.15131250000006, + "offset": 120.19193750000002, "duration": 0.43627083333333333 }, { "name": "jump/jump1.wav", - "offset": 80.5875833333334, + "offset": 120.62820833333336, "duration": 0.7415416666666667 }, { "name": "jump/jump2.wav", - "offset": 81.32912500000006, + "offset": 121.36975000000002, "duration": 0.5444166666666667 }, { "name": "jump/jump3.wav", - "offset": 81.87354166666672, + "offset": 121.91416666666669, "duration": 0.539625 }, { "name": "land/land1.wav", - "offset": 82.41316666666673, + "offset": 122.45379166666669, "duration": 1.4060208333333333 }, { "name": "land/land2.wav", - "offset": 83.81918750000006, + "offset": 123.85981250000002, "duration": 1.2353541666666668 }, { "name": "land/land3.wav", - "offset": 85.05454166666672, + "offset": 125.09516666666669, "duration": 1.664375 }, { "name": "narutoRun/narutoRun1.wav", - "offset": 86.71891666666673, + "offset": 126.75954166666669, "duration": 0.6128958333333333 }, { "name": "narutoRun/narutoRun10.wav", - "offset": 87.33181250000007, + "offset": 127.37243750000003, "duration": 0.5894583333333333 }, { "name": "narutoRun/narutoRun11.wav", - "offset": 87.92127083333341, + "offset": 127.96189583333337, "duration": 0.5600416666666667 }, { "name": "narutoRun/narutoRun12.wav", - "offset": 88.48131250000007, + "offset": 128.52193750000004, "duration": 0.5938958333333333 }, { "name": "narutoRun/narutoRun2.wav", - "offset": 89.0752083333334, + "offset": 129.11583333333337, "duration": 0.5762083333333333 }, { "name": "narutoRun/narutoRun3.wav", - "offset": 89.65141666666673, + "offset": 129.6920416666667, "duration": 0.582625 }, { "name": "narutoRun/narutoRun4.wav", - "offset": 90.23404166666673, + "offset": 130.27466666666672, "duration": 0.5662083333333333 }, { "name": "narutoRun/narutoRun5.wav", - "offset": 90.80025000000006, + "offset": 130.84087500000004, "duration": 0.5749166666666666 }, { "name": "narutoRun/narutoRun6.wav", - "offset": 91.37516666666673, + "offset": 131.4157916666667, "duration": 0.576 }, { "name": "narutoRun/narutoRun7.wav", - "offset": 91.95116666666672, + "offset": 131.9917916666667, "duration": 0.57525 }, { "name": "narutoRun/narutoRun8.wav", - "offset": 92.52641666666672, + "offset": 132.5670416666667, "duration": 0.5814583333333333 }, { "name": "narutoRun/narutoRun9.wav", - "offset": 93.10787500000005, + "offset": 133.14850000000004, "duration": 0.5692291666666667 }, + { + "name": "navi/navi_danger3.wav", + "offset": 133.71772916666671, + "duration": 0.576875 + }, + { + "name": "navi/navi_friendly1.wav", + "offset": 134.29460416666672, + "duration": 0.576875 + }, + { + "name": "navi/navi_hey1.wav", + "offset": 134.87147916666672, + "duration": 0.5549791666666667 + }, + { + "name": "navi/navi_item3.wav", + "offset": 135.4264583333334, + "duration": 0.56125 + }, + { + "name": "navi/navi_watchout1.wav", + "offset": 135.9877083333334, + "duration": 0.71125 + }, { "name": "run/run1.wav", - "offset": 93.67710416666672, + "offset": 136.6989583333334, "duration": 0.3978541666666667 }, { "name": "run/run10.wav", - "offset": 94.07495833333338, + "offset": 137.09681250000006, "duration": 0.3498541666666667 }, { "name": "run/run11.wav", - "offset": 94.42481250000004, + "offset": 137.44666666666672, "duration": 0.3336875 }, { "name": "run/run12.wav", - "offset": 94.75850000000004, + "offset": 137.7803541666667, "duration": 0.34029166666666666 }, { "name": "run/run2.wav", - "offset": 95.09879166666671, + "offset": 138.12064583333338, "duration": 0.3670833333333333 }, { "name": "run/run3.wav", - "offset": 95.46587500000004, + "offset": 138.48772916666672, "duration": 0.3517708333333333 }, { "name": "run/run4.wav", - "offset": 95.81764583333337, + "offset": 138.83950000000007, "duration": 0.354375 }, { "name": "run/run5.wav", - "offset": 96.17202083333338, + "offset": 139.19387500000008, "duration": 0.3444583333333333 }, { "name": "run/run6.wav", - "offset": 96.51647916666671, + "offset": 139.5383333333334, "duration": 0.3345208333333333 }, { "name": "run/run7.wav", - "offset": 96.85100000000004, + "offset": 139.87285416666674, "duration": 0.3349375 }, { "name": "run/run8.wav", - "offset": 97.18593750000004, + "offset": 140.20779166666674, "duration": 0.3460625 }, { "name": "run/run9.wav", - "offset": 97.53200000000004, + "offset": 140.55385416666672, "duration": 0.3280625 }, { "name": "silkWorms/worm_attack.wav", - "offset": 97.86006250000004, + "offset": 140.8819166666667, "duration": 0.5035833333333334 }, { "name": "silkWorms/worm_biterattack.wav", - "offset": 98.36364583333338, + "offset": 141.38550000000004, "duration": 0.8425 }, { "name": "silkWorms/worm_biterdie.wav", - "offset": 99.20614583333338, + "offset": 142.22800000000004, "duration": 0.6926666666666667 }, { "name": "silkWorms/worm_bloaterattack.wav", - "offset": 99.89881250000005, + "offset": 142.9206666666667, "duration": 0.8357083333333334 }, { "name": "silkWorms/worm_bloaterdie.wav", - "offset": 100.73452083333338, + "offset": 143.75637500000005, "duration": 0.7175 }, { "name": "silkWorms/worm_die.wav", - "offset": 101.45202083333338, + "offset": 144.47387500000005, "duration": 0.4675 }, { "name": "silkWorms/worm_queenattack.wav", - "offset": 101.91952083333338, + "offset": 144.94137500000005, "duration": 0.78 }, { "name": "silkWorms/worm_queendie.wav", - "offset": 102.69952083333338, + "offset": 145.72137500000005, "duration": 2.405 }, { "name": "silkWorms/worm_runnerattack.wav", - "offset": 105.10452083333338, + "offset": 148.12637500000005, "duration": 0.905 }, { "name": "silkWorms/worm_runnerdie.wav", - "offset": 106.00952083333338, + "offset": 149.03137500000005, "duration": 0.74875 }, { "name": "silkWorms/worm_slasherattack.wav", - "offset": 106.75827083333338, + "offset": 149.78012500000006, "duration": 0.78 }, { "name": "silkWorms/worm_slasherdie.wav", - "offset": 107.53827083333339, + "offset": 150.56012500000006, "duration": 0.7175 }, { "name": "sonicBoom/SonicBoomBoom.wav", - "offset": 108.25577083333339, + "offset": 151.27762500000006, "duration": 0.94875 }, { "name": "sonicBoom/SonicBoomStop.wav", - "offset": 109.20452083333339, + "offset": 152.22637500000005, "duration": 0.6185833333333334 }, { "name": "sonicBoom/SonicBoomTrail.wav", - "offset": 109.82310416666672, + "offset": 152.84495833333338, "duration": 7.53 }, { "name": "sonicBoom/SonicBoomTurn.wav", - "offset": 117.35310416666672, + "offset": 160.37495833333338, "duration": 1.0533125 }, { "name": "spells/Buff_Shield_02.wav", - "offset": 118.40641666666673, + "offset": 161.42827083333339, "duration": 0.9820208333333333 }, { "name": "spells/Charging_Punch_One_Shot_v1.wav", - "offset": 119.38843750000007, + "offset": 162.41029166666672, "duration": 0.8101875 }, { "name": "spells/Charging_Punch_One_Shot_v2.wav", - "offset": 120.19862500000006, + "offset": 163.22047916666673, "duration": 0.707125 }, { "name": "spells/Charging_Punch_One_Shot_v3.wav", - "offset": 120.90575000000007, + "offset": 163.92760416666673, "duration": 0.7878333333333334 }, { "name": "spells/Heal_Dark_01.wav", - "offset": 121.69358333333341, + "offset": 164.71543750000006, "duration": 2.3403958333333335 }, { "name": "spells/Heal_Dark_02.wav", - "offset": 124.03397916666674, + "offset": 167.0558333333334, "duration": 2.9499166666666667 }, { "name": "spells/Heal_Small_01.wav", - "offset": 126.9838958333334, + "offset": 170.00575000000006, "duration": 1.6553958333333334 }, { "name": "spells/Heal_Small_02.wav", - "offset": 128.63929166666674, + "offset": 171.6611458333334, "duration": 1.7831041666666667 }, { "name": "spells/Heal_Small_03.wav", - "offset": 130.4223958333334, + "offset": 173.44425000000007, "duration": 1.5857291666666666 }, { "name": "spells/Heal_Small_04_1.wav", - "offset": 132.00812500000006, + "offset": 175.02997916666672, "duration": 1.968875 }, { "name": "spells/Heal_Small_04_2.wav", - "offset": 133.97700000000006, + "offset": 176.99885416666672, "duration": 1.7482708333333334 }, { "name": "spells/S2_Big_End_Impact_1.wav", - "offset": 135.72527083333338, + "offset": 178.74712500000004, "duration": 2.5455833333333335 }, { "name": "spells/S2_Big_End_Impact_2.wav", - "offset": 138.2708541666667, + "offset": 181.29270833333337, "duration": 1.5786666666666667 }, - { - "name": "ui/GUI_Notification 07 1.wav", - "offset": 139.84952083333337, - "duration": 0.5198541666666666 - }, - { - "name": "ui/GUI_Notification 09 1.wav", - "offset": 140.36937500000005, - "duration": 0.42375 - }, - { - "name": "ui/GUI_Notification 14 1.wav", - "offset": 140.79312500000006, - "duration": 2.5565625 - }, - { - "name": "ui/GUI_Notification 16 1.wav", - "offset": 143.34968750000007, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Scroll Sound 27 1.wav", - "offset": 143.83906250000007, - "duration": 0.11725 - }, - { - "name": "ui/GUI_Swipe 06 1.wav", - "offset": 143.95631250000008, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Swipe 07 1.wav", - "offset": 144.44568750000008, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Swipe 08 1.wav", - "offset": 144.93506250000007, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Swipe 09 1.wav", - "offset": 145.42443750000007, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Swipe 10 1.wav", - "offset": 145.91381250000006, - "duration": 0.5467916666666667 - }, - { - "name": "ui/GUI_Swipe 11 1.wav", - "offset": 146.46060416666674, - "duration": 0.5467916666666667 - }, - { - "name": "ui/GUI_Transition 03.wav", - "offset": 147.00739583333342, - "duration": 0.489375 - }, - { - "name": "ui/GUI_Transition 11.wav", - "offset": 147.49677083333341, - "duration": 0.6329375 - }, - { - "name": "ui/UI_Button_Select.wav", - "offset": 148.1297083333334, - "duration": 1.0581041666666666 - }, - { - "name": "ui/UI_Error.wav", - "offset": 149.1878125000001, - "duration": 0.34725 - }, - { - "name": "ui/UI_Get_Item.wav", - "offset": 149.5350625000001, - "duration": 0.5 - }, { "name": "walk/walk1.wav", - "offset": 150.0350625000001, + "offset": 182.87137500000003, "duration": 0.6793541666666667 }, { "name": "walk/walk10.wav", - "offset": 150.71441666666675, + "offset": 183.55072916666668, "duration": 0.7184583333333333 }, { "name": "walk/walk11.wav", - "offset": 151.43287500000008, + "offset": 184.26918750000002, "duration": 0.665 }, { "name": "walk/walk12.wav", - "offset": 152.09787500000007, + "offset": 184.9341875, "duration": 0.6535416666666667 }, { "name": "walk/walk2.wav", - "offset": 152.75141666666673, + "offset": 185.58772916666666, "duration": 0.7319166666666667 }, { "name": "walk/walk3.wav", - "offset": 153.4833333333334, + "offset": 186.31964583333334, "duration": 0.6551666666666667 }, { "name": "walk/walk4.wav", - "offset": 154.13850000000008, + "offset": 186.9748125, "duration": 0.6797083333333334 }, { "name": "walk/walk5.wav", - "offset": 154.81820833333342, + "offset": 187.65452083333335, "duration": 0.6698958333333334 }, { "name": "walk/walk6.wav", - "offset": 155.48810416666674, + "offset": 188.32441666666668, "duration": 0.653875 }, { "name": "walk/walk7.wav", - "offset": 156.14197916666674, + "offset": 188.97829166666668, "duration": 0.6346666666666667 }, { "name": "walk/walk8.wav", - "offset": 156.77664583333342, + "offset": 189.61295833333335, "duration": 0.6982291666666667 }, { "name": "walk/walk9.wav", - "offset": 157.47487500000008, + "offset": 190.31118750000002, "duration": 0.6119166666666667 } ] diff --git a/public/sounds/sounds.mp3 b/public/sounds/sounds.mp3 index cc53c9512b..0871c11091 100644 Binary files a/public/sounds/sounds.mp3 and b/public/sounds/sounds.mp3 differ diff --git a/raycast-manager.js b/raycast-manager.js new file mode 100644 index 0000000000..8169950d86 --- /dev/null +++ b/raycast-manager.js @@ -0,0 +1,200 @@ +import * as THREE from 'three'; +import {getRenderer, camera} from './renderer.js'; +import cameraManager from './camera-manager.js'; +import {world} from './world.js'; +// import physx from './physx.js'; +import physicsManager from './physics-manager.js'; +import domRenderer from './dom-renderer.jsx'; +import transformControls from './transform-controls.js'; + +const localVector = new THREE.Vector3(); +const localQuaternion = new THREE.Quaternion(); + +// + +const physicsScene = physicsManager.getScene(); + +// + +class FakeMouseEvent { + constructor(clientX = 0, clientY = 0, deltaX = 0, deltaY = 0, inside = false) { + this.clientX = clientX; + this.clientY = clientY; + this.deltaX = deltaX; + this.deltaY = deltaY; + this.inside = inside; + } +} +class Collision { + constructor() { + this.app = null; + this.physicsObject = null; + this.physicsId = null; + this.point = new THREE.Vector3(); + this.valid = false; + } + set(app, physicsObject, physicsId, point) { + this.app = app; + this.physicsObject = physicsObject; + this.physicsId = physicsId; + point && this.point.copy(point); + this.valid = !!app; + } +} + +class RaycastManager extends EventTarget { + constructor() { + super(); + + this.lastMouseEvent = new FakeMouseEvent(); + this.collision = new Collision(); + this.lastDomHover = false; + } + getLastMouseEvent() { + return this.lastMouseEvent; + } + setLastMouseEvent(e) { + if (e) { + this.lastMouseEvent.clientX = e.clientX; + this.lastMouseEvent.clientY = e.clientY; + this.lastMouseEvent.deltaX = e.deltaX; + this.lastMouseEvent.deltaY = e.deltaY; + this.lastMouseEvent.inside = true; + } else { + this.lastMouseEvent.inside = false; + } + } + getMouseRaycaster = (() => { + const localVector2D = new THREE.Vector2(); + const localVector2D2 = new THREE.Vector2(); + const localRaycaster = new THREE.Raycaster(); + + return function(e = this.lastMouseEvent) { + const {clientX, clientY} = e; + const renderer = getRenderer(); + if (renderer) { + renderer.getSize(localVector2D2); + localVector2D.set( + (clientX / localVector2D2.x) * 2 - 1, + -(clientY / localVector2D2.y) * 2 + 1 + ); + if ( + localVector2D.x >= -1 && localVector2D.x <= 1 && + localVector2D.y >= -1 && localVector2D.y <= 1 + ) { + /*const result = */localRaycaster.setFromCamera(localVector2D, camera); + // console.log('return raycaster', result); + return localRaycaster; + } else { + // console.log('out of range'); + return null; + } + } else { + // console.log('no renderer'); + return null; + } + }; + })(); + getCenterEvent = (() =>{ + const fakeCenterEvent = new FakeMouseEvent(); + const localVector2D2 = new THREE.Vector2(); + + return function() { + const renderer = getRenderer(); + if (renderer) { + const size = renderer.getSize(localVector2D2); + fakeCenterEvent.clientX = size.width / 2; + fakeCenterEvent.clientY = size.height / 2; + return fakeCenterEvent; + } else { + return null; + } + }; + })(); + getCollision() { + return this.collision.valid ? this.collision : null; + } + update() { + // console.log('update'); + + // try { + + const mouseEvent = cameraManager.pointerLockElement ? this.getCenterEvent() : this.lastMouseEvent; + + let mouseHoverApp = null; + let mouseHoverPhysicsObject = null; + // let mouseSelectedObject = null; + let mouseHoverPhysicsId = 0; + // let htmlHover = false; + let domHover = false; + + domRenderer.onBeforeRaycast(); + + const raycaster = this.getMouseRaycaster(mouseEvent); + let point = null; + if (raycaster) { + transformControls.handleMouseMove(raycaster); + + const position = raycaster.ray.origin; + const quaternion = localQuaternion.setFromUnitVectors( + localVector.set(0, 0, -1), + raycaster.ray.direction + ); + + const result = physicsScene.raycast(position, quaternion); + if (result) { + // console.log('raycast', result); + + // check world apps + const pair = world.appManager.getPairByPhysicsId(result.objectId); + if (pair) { + const [app, physicsObject] = pair; + point = localVector.fromArray(result.point); + + /* if (object.isHtml) { + htmlHover = true; + } else { */ + // if (game.hoverEnabled) { + mouseHoverApp = app; + mouseHoverPhysicsObject = physicsObject; + mouseHoverPhysicsId = result.objectId; + // } + // } + } else { + // check dom renderer + const object = domRenderer.getPhysicsObjects().find(o => o.physicsId === result.objectId); + if (object) { + // console.log('got dom renderer object hit', object); + // XXX + domHover = true; + } + } + } + + domRenderer.onAfterRaycast(); + } /* else { + console.log('no result'); + } */ + this.collision.set(mouseHoverApp, mouseHoverPhysicsObject, mouseHoverPhysicsId, point); + /* const renderer = getRenderer(); + if (htmlHover) { + renderer.domElement.classList.add('hover'); + } else { + renderer.domElement.classList.remove('hover'); + } */ + + // } catch (e) { + // debugger; + // } + if (domHover !== this.lastDomHover) { + this.dispatchEvent(new MessageEvent('domhoverchange', { + data: { + domHover, + }, + })); + this.lastDomHover = domHover; + } + } +} +const raycastManager = new RaycastManager(); +export default raycastManager; \ No newline at end of file diff --git a/renderer.js b/renderer.js index 151edd093d..9740eab09b 100644 --- a/renderer.js +++ b/renderer.js @@ -87,6 +87,10 @@ const sceneHighPriority = new THREE.Scene(); sceneHighPriority.name = 'highPriorioty'; const sceneLowPriority = new THREE.Scene(); sceneLowPriority.name = 'lowPriorioty'; +const sceneLowerPriority = new THREE.Scene(); +sceneLowerPriority.name = 'lowerPriorioty'; +const sceneLowestPriority = new THREE.Scene(); +sceneLowestPriority.name = 'lowestPriorioty'; const rootScene = new THREE.Scene(); rootScene.name = 'root'; rootScene.autoUpdate = false; @@ -97,6 +101,8 @@ rootScene.autoUpdate = false; rootScene.add(sceneHighPriority); rootScene.add(scene); rootScene.add(sceneLowPriority); +rootScene.add(sceneLowerPriority); +rootScene.add(sceneLowestPriority); // const orthographicScene = new THREE.Scene(); // const avatarScene = new THREE.Scene(); @@ -223,6 +229,8 @@ export { /*orbitControls, renderer2,*/ sceneHighPriority, sceneLowPriority, + sceneLowerPriority, + sceneLowestPriority, // iframeContainer, // iframeContainer2, // appManager, diff --git a/scene-cruncher.js b/scene-cruncher.js index 1425a964d0..8e44220ebd 100644 --- a/scene-cruncher.js +++ b/scene-cruncher.js @@ -2,7 +2,7 @@ import * as THREE from 'three'; import {getRenderer} from './renderer.js'; import renderSettingsManager from './rendersettings-manager.js'; import {WebaverseShaderMaterial} from './materials.js'; -import {localPlayer} from './players.js'; +import {getLocalPlayer} from './players.js'; import physicsManager from './physics-manager.js'; const localVector = new THREE.Vector3(); @@ -382,6 +382,7 @@ export function snapshotMapChunk( ) { const worldDepthResolutionP3 = worldDepthResolution.clone().add(new THREE.Vector2(3, 3)); const worldDepthVoxelSize = new THREE.Vector2(worldSize.x, worldSize.y).divide(worldDepthResolution); + const localPlayer = getLocalPlayer(); const _makeMesh = (position, quaternion, ethers) => { const colorRenderTarget = new THREE.WebGLRenderTarget( diff --git a/scenes/battalion.scn b/scenes/battalion.scn index 9604d82a05..4072fa8732 100644 --- a/scenes/battalion.scn +++ b/scenes/battalion.scn @@ -74,17 +74,13 @@ 0, 0 ], - "start_url": "/avatars/drake_hacker_v3_vian.vrm", - "components": [ - { - "key": "npc", - "value": { - "name": "Drake", - "voice": "Shining Armor", - "bio": "His nickname is DRK. 15/M hacker. Loves guns. Likes plotting new hacks. He has the best equipment and is always ready for a fight." - } - } - ] + "type": "application/npc", + "content": { + "name": "Drake", + "avatarUrl": "/avatars/drake_hacker_v3_vian.vrm", + "voice": "Shining Armor", + "bio": "His nickname is DRK. 15/M hacker. Loves guns. Likes plotting new hacks. He has the best equipment and is always ready for a fight." + } }, { "position": [ diff --git a/scenes/hangout.scn b/scenes/hangout.scn index aabb20be81..8658531cfe 100644 --- a/scenes/hangout.scn +++ b/scenes/hangout.scn @@ -134,17 +134,13 @@ 0, 1 ], - "start_url": "/avatars/scillia_drophunter_v15_vian.vrm", - "components": [ - { - "key": "npc", - "value": { - "name": "Scillia", - "voice": "Sweetie Belle", - "bio": "Her nickname is Scilly or SLY. 13/F drop hunter. She is an adventurer, swordfighter and fan of potions. She is exceptionally skilled and can go Super Saiyan." - } - } - ] + "type": "application/npc", + "content": { + "name": "Scillia", + "avatarUrl": "/avatars/scillia_drophunter_v15_vian.vrm", + "voice": "Sweetie Belle", + "bio": "Her nickname is Scilly or SLY. 13/F drop hunter. She is an adventurer, swordfighter and fan of potions. She is exceptionally skilled and can go Super Saiyan." + } }, { "position": [ @@ -158,17 +154,13 @@ 0, 1 ], - "start_url": "/avatars/drake_hacker_v3_vian.vrm", - "components": [ - { - "key": "npc", - "value": { - "name": "Drake", - "voice": "Shining Armor", - "bio": "His nickname is DRK. 15/M hacker. Loves guns. Likes plotting new hacks. He has the best equipment and is always ready for a fight." - } - } - ] + "type": "application/npc", + "content": { + "name": "Drake", + "avatarUrl": "/avatars/drake_hacker_v3_vian.vrm", + "voice": "Shining Armor", + "bio": "His nickname is DRK. 15/M hacker. Loves guns. Likes plotting new hacks. He has the best equipment and is always ready for a fight." + } }, { "position": [ @@ -182,17 +174,13 @@ 0, 1 ], - "start_url": "/avatars/hya_influencer_v2_vian.vrm", - "components": [ - { - "key": "npc", - "value": { - "name": "Hyacinth", - "voice": "Maud Pie", - "bio": "Scillia's mentor. 15/F beast tamer. She is quite famous." - } - } - ] + "type": "application/npc", + "content": { + "name": "Hyacinth", + "avatarUrl": "/avatars/hya_influencer_v2_vian.vrm", + "voice": "Maud Pie", + "bio": "Scillia's mentor. 15/F beast tamer. She is quite famous." + } }, { "position": [ @@ -206,17 +194,13 @@ 0, 1 ], - "start_url": "/avatars/jun_engineer_v1_vian.vrm", - "components": [ - { - "key": "npc", - "value": { - "name": "Juniper", - "voice": "Cadance", - "bio": "She is an engineer. 17/F engineer. She is new on the street." - } - } - ] + "type": "application/npc", + "content": { + "name": "Juniper", + "avatarUrl": "/avatars/jun_engineer_v1_vian.vrm", + "voice": "Cadance", + "bio": "She is an engineer. 17/F engineer. She is new on the street." + } }, { "position": [ diff --git a/scenes/street.scn b/scenes/street.scn index f9181b1156..effba55c9c 100644 --- a/scenes/street.scn +++ b/scenes/street.scn @@ -15,6 +15,16 @@ "position": [1, 2, 3] } }, + { + "type": "application/wind", + "content": { + "windType": "directional", + "direction": [-1, 0, 0], + "windForce": 0.5, + "noiseScale": 1, + "windFrequency": 1 + } + }, { "position": [ 0, @@ -75,8 +85,18 @@ 0, 0.7071067811865475 ], - "start_url": "https://avatar-models.exokit.org/model49.vrm", - "dynamic": true + "type": "application/npc", + "content": { + "name": "Ann", + "avatarUrl": "/avatars/ann.vrm", + "voice": "Maud Pie", + "bio": "13/F Lisk Witch (black mage). She is 100% quirky and is always creating crazy new potions. She has a dark streak and is known to torment her teachers when they give her bad grades.", + "wear": [ + { + "start_url": "https://webaverse.github.io/character-stats-banner/" + } + ] + } }, { "position": [ diff --git a/scripts/build-megatexture-atlas.sh b/scripts/build-megatexture-atlas.sh new file mode 100644 index 0000000000..b23a8c7810 --- /dev/null +++ b/scripts/build-megatexture-atlas.sh @@ -0,0 +1,13 @@ +# run processes and store pids in array +for f in "Base_Color.png" "Emissive.png"; do + ~/app/bin/basisu "$f" -ktx2 -mipmap -q 255 -comp_level 3 & +done +for f in "Normal.png"; do + ~/app/bin/basisu "$f" -ktx2 -mipmap -normal_map -q 255 -comp_level 3 & +done +for f in "Height.png" "Roughness.png" "Ambient_Occlusion.png"; do + ~/app/bin/basisu "$f" -ktx2 -mipmap -linear -q 255 -comp_level 3 & +done + +# wait for all pids +wait diff --git a/sounds.js b/sounds.js index 322214799e..ce5c3d65b2 100644 --- a/sounds.js +++ b/sounds.js @@ -26,10 +26,13 @@ const soundFiles = { menuDone: _getSoundFiles(/OOT_Dialogue_Done/), menuClick: _getSoundFiles(/ff8_click/), menuOk: _getSoundFiles(/ff8_menu_ok/), + menuSelect: _getSoundFiles(/PauseMenu_Select/), menuBack: _getSoundFiles(/ff8_menu_back/), menuLeft: _getSoundFiles(/PauseMenu_Turn_Left/), menuRight: _getSoundFiles(/PauseMenu_Turn_Right/), menuReady: _getSoundFiles(/ff7_cursor_ready/), + menuBeep: _getSoundFiles(/beep/), + menuBoop: _getSoundFiles(/boop/), itemEquip: _getSoundFiles(/Link_Item\.wav/), itemUnequip: _getSoundFiles(/Link_Item_Away/), zTargetCenter: _getSoundFiles(/ZTarget_Center/), @@ -39,6 +42,18 @@ const soundFiles = { battleTransition: _getSoundFiles(/ff7_battle_transition/), limitBreak: _getSoundFiles(/ff7_limit_break/), limitBreakReady: _getSoundFiles(/ff8_limit_ready/), + naviHey: _getSoundFiles(/navi_hey/), + naviWatchout: _getSoundFiles(/navi_watchout/), + naviFriendly: _getSoundFiles(/navi_friendly/), + naviItem: _getSoundFiles(/navi_item/), + naviDanger: _getSoundFiles(/navi_danger/), + bushCut: _getSoundFiles(/OOT_Bush_Cut/), + // bushPickup: _getSoundFiles(/OOT_Bush_Pickup/), + // bushWalk: _getSoundFiles(/OOT_Bush_Walk/), + hpPickup: _getSoundFiles(/OOT_Get_Heart/), + mpPickup: _getSoundFiles(/OOT_Get_SmallItem1/), + refill: _getSoundFiles(/OOT_MagicRefill/), + explosion: _getSoundFiles(/OOT_Bomb_Blow/), }; let soundFileAudioBuffer; @@ -66,9 +81,13 @@ const playSoundName = name => { const snds = soundFiles[name]; if (snds) { const sound = snds[Math.floor(Math.random() * snds.length)]; + if (!sound) { + debugger; + } playSound(sound); return true; } else { + debugger; return false; } }; diff --git a/spritesheet-manager.js b/spritesheet-manager.js index 6b1ec735cd..5a0ccb8525 100644 --- a/spritesheet-manager.js +++ b/spritesheet-manager.js @@ -8,8 +8,11 @@ class SpritesheetManager { `\ import {createObjectSpriteAsync} from './object-spriter.js'; import metaversefile from './metaversefile-api.js'; + import physx from './physx.js'; `, async function(appUrl, opts) { + await physx.waitForLoad(); + const app = await metaversefile.createAppAsync({ start_url: appUrl, }); @@ -29,7 +32,7 @@ class SpritesheetManager { async getSpriteSheetForAppUrlAsync(appUrl, opts) { let spritesheet = this.spritesheetCache.get(appUrl); if (!spritesheet) { - spritesheet = await this.getSpriteSheetForAppUrlInternal(appUrl, opts); + spritesheet = await this.getSpriteSheetForAppUrlInternal([appUrl, opts]); this.spritesheetCache.set(appUrl, spritesheet); } return spritesheet; diff --git a/src/AvatarIcon.jsx b/src/AvatarIcon.jsx index c927554113..f8d924bc30 100644 --- a/src/AvatarIcon.jsx +++ b/src/AvatarIcon.jsx @@ -11,7 +11,8 @@ import { } from '../player-stats.js'; import styles from './AvatarIcon.module.css'; -import { localPlayer } from '../players.js'; +import {PlaceholderImg} from './PlaceholderImg.jsx'; +import { getLocalPlayer } from '../players.js'; import { AvatarIconer } from '../avatar-iconer.js'; import cameraManager from '../camera-manager.js' import * as sounds from '../sounds.js' @@ -26,6 +27,7 @@ const CharacterIcon = () => { useEffect(() => { const canvas = canvasRef.current; if (canvas) { + const localPlayer = getLocalPlayer(); const avatarIconer = new AvatarIconer(localPlayer, { width: characterIconSize * pixelRatio, height: characterIconSize * pixelRatio, @@ -50,7 +52,7 @@ const CharacterIcon = () => { avatarIconer.removeEventListener('enabledchange', enabledchange); }; } - }, [canvasRef.current]); + }, [canvasRef]); return (
{ height={characterIconSize * pixelRatio} ref={canvasRef} /> - +
@@ -107,7 +109,7 @@ const CharacterIcon = () => { ); }; -export const AvatarIcon = ({ className }) => { +export const AvatarIcon = () => { const { state, setState } = useContext( AppContext ); const handleCharacterBtnClick = () => { @@ -124,7 +126,7 @@ export const AvatarIcon = ({ className }) => { return ( ); -}; +}; \ No newline at end of file diff --git a/src/AvatarIcon.module.css b/src/AvatarIcon.module.css index 158c34501c..89cf02e8ad 100644 --- a/src/AvatarIcon.module.css +++ b/src/AvatarIcon.module.css @@ -1,14 +1,3 @@ -@keyframes rotate { - 0% { - transform: rotate(0deg); - } - 50% { - transform: rotate(180deg); - } - 100% { - transform: rotate(360deg); - } -} @keyframes hueRotate { 0% { filter: hue-rotate(0deg); @@ -53,23 +42,17 @@ transform: scale(1.4); } */ -.characterIcon.loaded .placeholderImg { - display: none; -} .characterIcon .placeholderImg { position: absolute; top: 10px; left: 10px; width: calc( var(--canvas-size) - 10px * 2); height: calc( var(--canvas-size) - 10px * 2); - - animation-name: rotate; - animation-duration: 1s; - animation-iteration-count: infinite; - animation-timing-function: linear; - z-index: 1; } +.characterIcon.loaded .placeholderImg { + display: none; +} .avatarIcon .characterIcon { display: flex; diff --git a/src/BigButton.jsx b/src/BigButton.jsx new file mode 100644 index 0000000000..c5c4627539 --- /dev/null +++ b/src/BigButton.jsx @@ -0,0 +1,18 @@ +import React, { useEffect, useState, useRef, useContext } from 'react'; +import classnames from 'classnames'; +import styles from './BigButton.module.css'; + +export const BigButton = ({ + highlight = false, + onClick, + children, +}) => { + return ( +
+ {children} +
+ ); +}; \ No newline at end of file diff --git a/src/BigButton.module.css b/src/BigButton.module.css new file mode 100644 index 0000000000..2dcb70eda7 --- /dev/null +++ b/src/BigButton.module.css @@ -0,0 +1,49 @@ +@keyframes highlight { + 0% { + border-color: #FFF; + } + 50% { + border-color: #808080; + } + 100% { + border-color: #808080; + } +} +@keyframes highlight2 { + 0% { + background-color: #FFF; + color: #000; + } + 50% { + background-color: #000; + color: #FFF; + } + 100% { + background-color: #000; + color: #FFF; + } +} +.bigButton { + display: flex; + margin: 15px 30px; + margin-top: auto; + padding: 10px; + border: 2px solid #FFF; + font-family: 'GeoSans'; + font-size: 20px; + justify-content: center; + color: #FFF; + cursor: pointer; + opacity: 0.3; + animation: highlight 1s step-end infinite; + transition: opacity 0.3s ease-out; +} +.bigButton:hover { + animation: none; + opacity: 1; + transition: opacity 1s cubic-bezier(0, 1, 0, 1); +} +.bigButton.highlight { + animation: highlight2 0.15s step-end infinite; + opacity: 1; +} \ No newline at end of file diff --git a/src/CachedLoader.jsx b/src/CachedLoader.jsx new file mode 100644 index 0000000000..bad9cfc06b --- /dev/null +++ b/src/CachedLoader.jsx @@ -0,0 +1,53 @@ +export class CachedLoader extends EventTarget { + constructor({ + loadFn, + }) { + super(); + + this.loadFn = loadFn; + this.loading = false; + this.cache = new Map(); + this.promiseCache = new Map(); + } + #setLoading(loading) { + this.loading = loading; + this.dispatchEvent(new MessageEvent('loadingchange', { + data: { + loading, + }, + })); + } + async loadItem(url, value, {signal = null} = {}) { + this.#setLoading(true); + + try { + let promise = this.promiseCache.get(url); + if (!promise) { + promise = this.loadFn(url, value, {signal}) + .catch(err => { + // console.warn(err); + return null; + }) + .then(result => { + signal.removeEventListener('abort', abort); + return result; + }); + this.promiseCache.set(url, promise); + const abort = () => { + this.promiseCache.delete(url); + }; + signal.addEventListener('abort', abort); + } + + const result = await promise; + return result; + } finally { + this.#setLoading(false); + } + } + destroy() { + for (const url of this.promiseCache.keys()) { + URL.revokeObjectURL(url); + } + } +} \ No newline at end of file diff --git a/src/CharacterBanner.jsx b/src/CharacterBanner.jsx new file mode 100644 index 0000000000..4536a7af7d --- /dev/null +++ b/src/CharacterBanner.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import styles from './CharacterBanner.module.css'; + +export const CharacterBanner = () => { + return ( +
+

Ann's shop

+

You break it you buy it!

+
+ ); +}; \ No newline at end of file diff --git a/src/CharacterBanner.module.css b/src/CharacterBanner.module.css new file mode 100644 index 0000000000..f0ca45be68 --- /dev/null +++ b/src/CharacterBanner.module.css @@ -0,0 +1,20 @@ +.menu { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-image: linear-gradient(to bottom, #333, #000); + font-family: 'PlazaRegular'; + color: #FFF; + font-size: 36px; +} +.menu h1, +.menu p +{ + margin: 30px; +} +.menu h1 { + font-size: 50px; + font-family: 'WinchesterCaps'; +} \ No newline at end of file diff --git a/src/ClaimsNotification.jsx b/src/ClaimsNotification.jsx new file mode 100644 index 0000000000..b2e3d99e17 --- /dev/null +++ b/src/ClaimsNotification.jsx @@ -0,0 +1,60 @@ +// import * as THREE from 'three'; +import React, {useState, useEffect, useContext} from 'react'; +import classnames from 'classnames'; +// import style from './DragAndDrop.module.css'; +// import {world} from '../world.js'; +// import {getRandomString, handleUpload} from '../util.js'; +// import {registerIoEventHandler, unregisterIoEventHandler} from './components/general/io-handler/IoHandler.jsx'; +// import {registerLoad} from './LoadingBox.jsx'; +// import {ObjectPreview} from './ObjectPreview.jsx'; +// import game from '../game.js'; +// import {getRenderer} from '../renderer.js'; +// import metaversefile from 'metaversefile'; +import { AppContext } from './components/app'; + +import styles from './ClaimsNotification.module.css'; + +import dropManager from '../drop-manager.js'; + +const ClaimsNotification = () => { + const {state, setState} = useContext(AppContext); + const [numClaims, setNumClaims] = useState(0); + + useEffect(() => { + const claimschange = e => { + console.log('set num claims', e.data.claims.length); + setNumClaims(e.data.claims.length); + }; + dropManager.addEventListener('claimschange', claimschange); + return () => { + dropManager.removeEventListener('claimschange', claimschange); + }; + }, []); + + const open = numClaims > 0 && state.openedPanel === null; + + const onClick = e => { + e.preventDefault(); + e.stopPropagation(); + + setState({ + openedPanel: 'CharacterPanel', + }); + }; + + return ( +
+
{numClaims}
+
Claims
+
+ ); +}; +export { + ClaimsNotification, +}; \ No newline at end of file diff --git a/src/ClaimsNotification.module.css b/src/ClaimsNotification.module.css new file mode 100644 index 0000000000..3de9e880b2 --- /dev/null +++ b/src/ClaimsNotification.module.css @@ -0,0 +1,78 @@ +@keyframes flash { + 0% { + transform: translate3d(0, 0, 0); + opacity: 1; + } + 50% { + transform: translate3d(-77px, 30px, 300px) rotateZ(45deg); + opacity: 1; + } + 75% { + opacity: 1; + } + 100% { + transform: translate3d(-60px, -50px, -500px) rotateX(90deg) rotateZ(45deg); + opacity: 0; + } +} + +.claimsNotification { + --height: 70px; + --margin: 10px; + + position: fixed; + display: flex; + left: 350px; + bottom: -120px; + height: var(--height); + margin-bottom: 45px; + padding-right: 500px; + background-image: linear-gradient(to bottom, #333, #111); + border-radius: 10px; + color: #FFF; + font-size: 22px; + font-family: 'WinchesterCaps'; + letter-spacing: 1px; + align-items: center; + cursor: pointer; + transition: transform 0.5s cubic-bezier(0, 1, 0, 1); +} +.claimsNotification.open { + transform: translateY(-110px); +} +.claimsNotification:hover { + background-image: linear-gradient(to bottom, #444, #222); +} +.claimsNotification .icon { + --size: 28px; + + height: var(--size); + width: var(--size); + margin: 0 10px; +} +/* .claimsNotification .icon, +.claimsNotification .label +{ + padding-right: 10px; +} */ +.claimsNotification .value { + --size: 28px; + + display: flex; + width: var(--size); + height: var(--size); + padding: 0 10px; + margin-left: 10px; + align-items: center; + /* background: #FFF; */ + background-image: radial-gradient(#3a3a3a, transparent); + border-radius: 1000px; + box-shadow: inset 0 0 8px #000000a0; + /* color: #000; */ + font-family: 'PlazaRegular'; + font-size: 22px; + justify-content: center; +} +.claimsNotification .label { + margin: 0 10px; +} \ No newline at end of file diff --git a/src/DomRenderer.jsx b/src/DomRenderer.jsx new file mode 100644 index 0000000000..0570b47e42 --- /dev/null +++ b/src/DomRenderer.jsx @@ -0,0 +1,306 @@ +import * as THREE from 'three'; +import React, {useState, useEffect, useRef} from 'react'; +import gameManager from '../game.js'; +import {camera} from '../renderer.js'; +import cameraManager from '../camera-manager.js'; +import {getLocalPlayer} from '../players.js'; + +// import {CharacterBanner} from './CharacterBanner.jsx'; +import domRenderEngine, {DomRenderEngine} from '../dom-renderer.jsx'; + +const floatFactor = 0.05; +const floatTime = 3000; +const transtionTime = 1000; +const scaleEpsilon = 0.01; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); +const localQuaternion = new THREE.Quaternion(); +const localMatrix = new THREE.Matrix4(); +const localMatrix2 = new THREE.Matrix4(); +const localMatrix3 = new THREE.Matrix4(); + +const scaleMatrix = new THREE.Matrix4().makeScale(1 + scaleEpsilon, 1 + scaleEpsilon, 1 + scaleEpsilon); + +const _getFov = () => camera.projectionMatrix.elements[ 5 ] * (window.innerHeight / 2); + +function epsilon(value) { + return value; + // return Math.abs(value) < 1e-10 ? 0 : value; +} +function getObjectCSSMatrix( matrix, cameraCSSMatrix ) { + var elements = matrix.elements; + var matrix3d = 'matrix3d(' + + epsilon( elements[ 0 ] ) + ',' + + epsilon( elements[ 1 ] ) + ',' + + epsilon( elements[ 2 ] ) + ',' + + epsilon( elements[ 3 ] ) + ',' + + epsilon( - elements[ 4 ] ) + ',' + + epsilon( - elements[ 5 ] ) + ',' + + epsilon( - elements[ 6 ] ) + ',' + + epsilon( - elements[ 7 ] ) + ',' + + epsilon( elements[ 8 ] ) + ',' + + epsilon( elements[ 9 ] ) + ',' + + epsilon( elements[ 10 ] ) + ',' + + epsilon( elements[ 11 ] ) + ',' + + epsilon( elements[ 12 ] ) + ',' + + epsilon( elements[ 13 ] ) + ',' + + epsilon( elements[ 14 ] ) + ',' + + epsilon( elements[ 15 ] ) + + ')'; + + /* if ( isIE ) { + + return 'translate(-50%,-50%)' + + 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)' + + cameraCSSMatrix + + matrix3d; + + } */ + + return matrix3d; +} +function getCameraCSSMatrix( matrix ) { + const {elements} = matrix; + return 'matrix3d(' + + epsilon( elements[ 0 ] ) + ',' + + epsilon( - elements[ 1 ] ) + ',' + + epsilon( elements[ 2 ] ) + ',' + + epsilon( elements[ 3 ] ) + ',' + + epsilon( elements[ 4 ] ) + ',' + + epsilon( - elements[ 5 ] ) + ',' + + epsilon( elements[ 6 ] ) + ',' + + epsilon( elements[ 7 ] ) + ',' + + epsilon( elements[ 8 ] ) + ',' + + epsilon( - elements[ 9 ] ) + ',' + + epsilon( elements[ 10 ] ) + ',' + + epsilon( elements[ 11 ] ) + ',' + + epsilon( elements[ 12 ] ) + ',' + + epsilon( - elements[ 13 ] ) + ',' + + epsilon( elements[ 14 ] ) + ',' + + epsilon( elements[ 15 ] ) + + ')'; +} + +const DomRendererChild = ({ + dom, + innerWidth, + innerHeight, + range = 5, +}) => { + const {width, height} = dom; + const scaleFactor = DomRenderEngine.getScaleFactor(width, height); + const [visible, setVisible] = useState(false); + const iframeContainer2Ref = useRef(); + + // tracking + useEffect(() => { + const iframeContainer2 = iframeContainer2Ref.current; + + if (iframeContainer2) { + const frame = e => { + const {timestamp} = e.data; + + const _animateMenuFloat = () => { + const now = timestamp; + + dom.floatNode.position.set(0, 0, 0); + dom.floatNode.position.y += Math.sin((now % floatTime)/floatTime * 2 * Math.PI) * floatFactor; + dom.floatNode.position.y += Math.cos(((now / 2) % floatTime)/floatTime * 2 * Math.PI) * floatFactor/2; + dom.floatNode.position.y += Math.sin(((now / 4) % floatTime)/floatTime * 2 * Math.PI) * floatFactor/4; + dom.floatNode.updateMatrixWorld(); + }; + _animateMenuFloat(); + + const floatNodeMatrixWorld = localMatrix3 + .multiplyMatrices(dom.floatNode.matrixWorld, scaleMatrix); + + const _updateCameraContainerMatrix = () => { + const fov = _getFov(); + const cameraCSSMatrix = getCameraCSSMatrix( + localMatrix.copy(camera.matrixWorldInverse) + .premultiply( + localMatrix2.makeTranslation(0, 0, fov) + ) + .multiply( + floatNodeMatrixWorld + ) + ); + iframeContainer2.style.transform = cameraCSSMatrix; + }; + _updateCameraContainerMatrix(); + }; + gameManager.addEventListener('frame', frame); + + return () => { + gameManager.removeEventListener('frame', frame); + }; + } + }, [iframeContainer2Ref]); + + // visibility + useEffect(() => { + const frame = e => { + const {timestamp} = e.data; + const startTime = timestamp; + const endTime = startTime + transtionTime; + + const _updateVisibility = () => { + const localPlayer = getLocalPlayer(); + const distance = localPlayer.position.distanceTo(dom.position); + const isInRange = distance < range; + if (isInRange && !visible) { + setVisible(true); + dom.startAnimation(true, startTime, endTime); + } else if (visible && !isInRange) { + setVisible(false); + dom.startAnimation(false, startTime, endTime); + } + }; + _updateVisibility(); + + const _updateAnimation = () => { + dom.update(timestamp) + }; + _updateAnimation(); + }; + gameManager.addEventListener('frame', frame); + + return () => { + gameManager.removeEventListener('frame', frame); + }; + }, [visible]); + + const preventDefault = e => { + // e.preventDefault(); + e.stopPropagation(); + }; + + return ( +
+
+ {dom.render()} +
+
+ ); +} + +const DomRendererChildren = ({ + domRenderEngine, + innerWidth, + innerHeight, + fov, +}) => { + const [epoch, setEpoch] = useState(0); + + useEffect(() => { + const update = () => { + setEpoch(epoch + 1); + }; + domRenderEngine.addEventListener('update', update); + return () => { + domRenderEngine.removeEventListener('update', update); + }; + }, [epoch]); + + return <> + {domRenderEngine.doms.map((dom, i) => { + return ( + + ); + })} + +}; + +const DomRenderer = props => { + const [innerWidth, setInnerWidth] = useState(window.innerWidth); + const [innerHeight, setInnerHeight] = useState(window.innerHeight); + const [fov, setFov] = useState(_getFov); + const iframeContainerRef = useRef(); + + useEffect(() => { + const resize = e => { + setInnerWidth(window.innerWidth); + setInnerHeight(window.innerHeight); + setFov(_getFov()); + }; + window.addEventListener('resize', resize); + const fovchange = (/*e*/) => { + // const {fov} = e.data; + setFov(_getFov()); + }; + cameraManager.addEventListener('fovchange', fovchange); + return () => { + window.removeEventListener('resize', resize); + cameraManager.removeEventListener('fovchange', fovchange); + }; + }, []); + + return ( +
+ +
+ ); +}; +export { + DomRenderer, +}; \ No newline at end of file diff --git a/src/DomRenderer.module.css b/src/DomRenderer.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Header.jsx b/src/Header.jsx index 55fb96e22b..84f488d5de 100644 --- a/src/Header.jsx +++ b/src/Header.jsx @@ -14,10 +14,10 @@ import { Tokens } from './tabs/tokens'; import { registerIoEventHandler, unregisterIoEventHandler } from './components/general/io-handler'; import { AppContext } from './components/app'; import { AvatarIcon } from './AvatarIcon'; +import { StoryTime } from './StoryTime'; import { User } from './User'; import styles from './Header.module.css'; -import { UIMode } from './components/general/ui-mode/index.jsx'; // @@ -262,17 +262,14 @@ export default function Header() { localPlayer={localPlayer} npcs={npcs} /> + {/*
*/} - - - - - - + +
{ + const frontCanvasRef = useRef(); + const backCanvasRef = useRef(); + + useEffect(() => { + const canvas = frontCanvasRef.current; + if (canvas) { + const ctx = canvas.getContext('2d'); + if (imageBitmap) { + ctx.drawImage(imageBitmap, 0, 0); + } else { + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + } + }, [frontCanvasRef, imageBitmap]); + + useEffect(() => { + const canvas = backCanvasRef.current; + if (canvas) { + const ctx = canvas.getContext('2d'); + if (backImageBitmap) { + ctx.drawImage(backImageBitmap, 0, 0); + } else { + ctx.clearRect(0, 0, canvas.width, canvas.height); + } + } + }, [backCanvasRef, backImageBitmap]); + + const _getStyle = front => { + return { + transform: `rotateY(${(rotateY + ((+flip ^ +front) ? 0 : Math.PI)).toFixed(8)}rad) rotateX(${rotateX.toFixed(8)}rad)`, + }; + }; + + return ( +
+ {backImageBitmap ? ( + + ) : null} + {imageBitmap ? ( + + ) : null} +
+ ); +}; \ No newline at end of file diff --git a/src/ImageBitmapCanvas.module.css b/src/ImageBitmapCanvas.module.css new file mode 100644 index 0000000000..b6bca039a2 --- /dev/null +++ b/src/ImageBitmapCanvas.module.css @@ -0,0 +1,15 @@ +.imageBitmapCanvas { + position: relative; + display: flex; +} +.imageBitmapCanvas .canvas { + position: absolute; + top: 0; + left: 0; + width: inherit; + height: inherit; + backface-visibility: hidden; +} +.imageBitmapCanvas .backCanvas { + transform: rotateY(180deg); +} \ No newline at end of file diff --git a/src/LightArrow.jsx b/src/LightArrow.jsx index cf42be3f97..9944d20615 100644 --- a/src/LightArrow.jsx +++ b/src/LightArrow.jsx @@ -191,13 +191,16 @@ const _downloadArrowImage = async () => { }; export const LightArrow = function({ + className, enabled = true, + up = false, down = false, animate = false, x, y, ax, ay, + onClick, }) { const canvasRef = useRef(); @@ -244,13 +247,16 @@ export const LightArrow = function({ className={classnames( styles.lightArrowContainer, enabled ? styles.enabled : null, + up ? styles.up : null, down ? styles.down : null, + className, )} style={{ transform: `translate(${x}px, ${y}px)`, left: ax, top: ay, }} + onClick={onClick} >
{ + return ( + + ); +}; \ No newline at end of file diff --git a/src/PlaceholderImg.module.css b/src/PlaceholderImg.module.css new file mode 100644 index 0000000000..c23fe4bcd8 --- /dev/null +++ b/src/PlaceholderImg.module.css @@ -0,0 +1,18 @@ +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + 50% { + transform: rotate(180deg); + } + 100% { + transform: rotate(360deg); + } +} + +.placeholderImg { + animation-name: rotate; + animation-duration: 1s; + animation-iteration-count: infinite; + animation-timing-function: linear; +} \ No newline at end of file diff --git a/src/QuickMenu.jsx b/src/QuickMenu.jsx index 8698853d34..3a1b909012 100644 --- a/src/QuickMenu.jsx +++ b/src/QuickMenu.jsx @@ -51,13 +51,21 @@ const chevronSize = 50; export default function QuickMenu() { const [open, setOpen] = useState(false); const [down, setDown] = useState(false); - const [selectedSlice, setSelectedSlice] = useState(-1); + const [selectedSlice, _setSelectedSlice] = useState(-1); const [selectedDepth, setSelectedDepth] = useState(-1); const [coords, setCoords] = useState([0, 0]); const [emoteIconImages, setEmoteIconImages] = useState(null); const [chevronImage, setChevronImage] = useState(null); const canvasRef = useRef(); + const setSelectedSlice = v => { + if (v !== selectedSlice) { + _setSelectedSlice(v); + // XXX this needs to be quieter (configurable per-sound volume) + // sounds.playSoundName('menuClick'); + } + }; + const _getSelectedEmote = () => { if (selectedSlice !== -1 && selectedDepth !== -1) { return emotes[selectedSlice].name + (selectedDepth === 0 ? 'Soft' : ''); @@ -86,7 +94,7 @@ export default function QuickMenu() { if (game.inputFocused()) return true; if (!e.repeat) { - if (e.keyCode === 81) { // Q + if (e.keyCode === 81 && !e.ctrlKey) { // Q cameraManager.requestPointerLock(); setOpen(true); diff --git a/src/RpgText.jsx b/src/RpgText.jsx index 6b869f884a..0cc3c94d0e 100644 --- a/src/RpgText.jsx +++ b/src/RpgText.jsx @@ -8,10 +8,11 @@ export const RpgText = ({ text, textSpeed = chatTextSpeed, }) => { + const [lastText, setLastText] = useState(text); const [progressText, setProgressText] = useState(''); useEffect(() => { - if (text.length === 0) { + if (!text.startsWith(lastText)) { setProgressText(''); } else if (progressText.length < text.length) { const timeout = setTimeout(() => { @@ -23,7 +24,10 @@ export const RpgText = ({ clearTimeout(timeout); }; } - }, [text, progressText]); + if (text !== lastText) { + setLastText(text); + } + }, [text, progressText, lastText]); return
0 ? styles.open : null)}>{progressText}
; }; \ No newline at end of file diff --git a/src/StoryTime.jsx b/src/StoryTime.jsx new file mode 100644 index 0000000000..e8c9c89f15 --- /dev/null +++ b/src/StoryTime.jsx @@ -0,0 +1,141 @@ +// import * as THREE from 'three'; +import React, {useState, useEffect} from 'react'; +import * as sounds from '../sounds.js'; +import storyManager from '../story.js'; +import {registerIoEventHandler, unregisterIoEventHandler} from './components/general/io-handler'; +import {MegaChatBox} from './components/play-mode/mega-chat-box'; + +import styles from './StoryTime.module.css'; + +const _progressConversation = () => { + const conversation = storyManager.getConversation(); + conversation.progress(); + + sounds.playSoundName('menuNext'); +}; + +export const StoryTime = () => { + const [message, setMessage] = useState(null); + const [options, setOptions] = useState(null); + const [option, setOption] = useState(null); + const [hoverIndex, setHoverIndex] = useState(null); + const [progressing, setProgressing] = useState(false); + const [finished, setFinished] = useState(false); + + const _continue = () => { + if (!progressing) { + _progressConversation(); + } + }; + + useEffect(() => { + function conversationstart(e) { + const {conversation} = e.data; + conversation.addEventListener('message', e => { + const {message} = e.data; + setFinished(false); + setMessage(message); + }); + conversation.addEventListener('options', e => { + const {options} = e.data; + if (options) { + setOptions(options); + setOption(null); + } + }); + conversation.addEventListener('hoverindex', e => { + const {hoverIndex} = e.data; + setHoverIndex(hoverIndex); + + sounds.playSoundName('menuMove'); + }); + conversation.addEventListener('option', e => { + const {option} = e.data; + setOption(option); + }); + + conversation.addEventListener('progressstart', e => { + setProgressing(true); + }); + conversation.addEventListener('progressend', e => { + setProgressing(false); + }); + + conversation.addEventListener('finish', e => { + setFinished(true); + + sounds.playSoundName('menuDone'); + }); + + conversation.addEventListener('close', e => { + setMessage(null); + }); + } + storyManager.addEventListener('conversationstart', conversationstart); + + return () => { + storyManager.removeEventListener('conversationstart', conversationstart); + }; + }, []); + + useEffect(() => { + if (message) { + const handleKeyDown = event => { + + if (event.which === 13) { // enter + _continue(); + + return false; + } + }; + + registerIoEventHandler('keydown', handleKeyDown); + + return () => { + unregisterIoEventHandler('keydown', handleKeyDown); + }; + } + }, [message, progressing]); + + useEffect(() => { + // console.log('check options', options, option); + if (options && option) { + // console.log('set timeout', options, option); + const timeout = setTimeout(() => { + // console.log('clear options'); + setOptions(null); + setOption(null); + setHoverIndex(null); + }, 1000); + + return () => { + // console.log('clear options timeout'); + clearTimeout(timeout); + }; + } + }, [options, option]); + + return ( +
+ { + const conversation = storyManager.getConversation(); + conversation.progressOptionSelect(option); + + sounds.playSoundName('menuSelect'); + }} + onClick={e => { + if (!progressing) { + _progressConversation(); + } + }} + /> +
+ ); +}; \ No newline at end of file diff --git a/src/StoryTime.module.css b/src/StoryTime.module.css new file mode 100644 index 0000000000..ea1ea3cee0 --- /dev/null +++ b/src/StoryTime.module.css @@ -0,0 +1,11 @@ +.storyTime { + display: flex; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + pointer-events: none; + + --width: 350px; +} \ No newline at end of file diff --git a/src/User.jsx b/src/User.jsx index a846d37335..84a50369b9 100644 --- a/src/User.jsx +++ b/src/User.jsx @@ -16,7 +16,7 @@ import * as sounds from '../sounds.js'; // -export const User = ({ className, address, setAddress, setLoginFrom }) => { +export const User = ({ address, setAddress, setLoginFrom }) => { const { state, setState } = useContext( AppContext ); const [ensName, setEnsName] = useState(''); @@ -224,10 +224,9 @@ export const User = ({ className, address, setAddress, setLoginFrom }) => { open ? styles.open : null, loggedIn ? styles.loggedIn : null, loggingIn ? styles.loggingIn : null, - className ) } > -
{ +
{ e.preventDefault(); e.stopPropagation(); diff --git a/src/User.module.css b/src/User.module.css index d79ce5096d..5c558ff690 100644 --- a/src/User.module.css +++ b/src/User.module.css @@ -46,19 +46,14 @@ /* */ .user .keyWrap { + position: absolute; top: 0; right: 0; width: 180px; perspective: 400px; perspective-origin: -100px 100px; pointer-events: all; - transition: transform 200ms cubic-bezier( 0, 1, 0, 1 ); -} - -.user .keyWrap.hiddenUI { - transform: translateX( 100% ); } - .user:not(.loggedIn) .keyWrap { cursor: pointer; } diff --git a/src/components/app/App.jsx b/src/components/app/App.jsx index 92f4ef1cee..506caf16bb 100644 --- a/src/components/app/App.jsx +++ b/src/components/app/App.jsx @@ -1,7 +1,8 @@ import React, { useState, useEffect, useRef, createContext } from 'react'; +import classnames from 'classnames'; -import { defaultAvatarUrl } from '../../../constants'; +import { defaultPlayerSpec } from '../../../constants'; import game from '../../../game'; import sceneNames from '../../../scenes/scenes.json'; @@ -11,7 +12,6 @@ import universe from '../../../universe.js'; import metaversefileApi from '../../../metaversefile-api'; import cameraManager from '../../../camera-manager'; import { world } from '../../../world'; -import { handleStoryKeyControls } from '../../../story'; import { ActionMenu } from '../general/action-menu'; import { Crosshair } from '../general/crosshair'; @@ -29,10 +29,14 @@ import { PlayMode } from '../play-mode'; import { EditorMode } from '../editor-mode'; import Header from '../../Header.jsx'; import QuickMenu from '../../QuickMenu.jsx'; -import { UIMode } from '../general/ui-mode'; +import {ClaimsNotification} from '../../ClaimsNotification.jsx'; +import {DomRenderer} from '../../DomRenderer.jsx'; +// import * as voices from '../../../voices'; +import {handleStoryKeyControls} from '../../../story'; import styles from './App.module.css'; import '../../fonts.css'; +import raycastManager from '../../../raycast-manager'; // @@ -49,7 +53,8 @@ const _startApp = async ( weba, canvas ) => { await weba.startLoop(); const localPlayer = metaversefileApi.useLocalPlayer(); - await localPlayer.setAvatarUrl( defaultAvatarUrl ); + // console.log('set player spec', defaultPlayerSpec); + await localPlayer.setPlayerSpec(defaultPlayerSpec); }; @@ -79,29 +84,53 @@ const _getCurrentRoom = () => { export const AppContext = createContext(); const useWebaverseApp = (() => { + let webaverse = null; + return () => { + if ( webaverse === null ) { + webaverse = new Webaverse(); + } + return webaverse; + }; +})(); - let webaverse = null; +const Canvas = ({ + app, +}) => { + const canvasRef = useRef( null ); + const [domHover, setDomHover] = useState( null ); - return () => { + useEffect( () => { - if ( webaverse === null ) { + if ( canvasRef.current ) { - webaverse = new Webaverse(); + _startApp( app, canvasRef.current ); } - return webaverse; + }, [ app, canvasRef ] ); - }; + useEffect( () => { + const domhoverchange = e => { + const {domHover} = e.data; + // console.log('dom hover change', domHover); + setDomHover( domHover ); + }; + raycastManager.addEventListener('domhoverchange', domhoverchange); -})(); + return () => { + raycastManager.removeEventListener('domhoverchange', domhoverchange); + }; + }, []); + + return ( + + ); +}; export const App = () => { const [ state, setState ] = useState({ openedPanel: null }); - const [ uiMode, setUIMode ] = useState( 'normal' ); - const canvasRef = useRef( null ); const app = useWebaverseApp(); const [ selectedApp, setSelectedApp ] = useState( null ); const [ selectedScene, setSelectedScene ] = useState( _getCurrentSceneSrc() ); @@ -134,24 +163,13 @@ export const App = () => { } - if ( state.openedPanel ) { - - setUIMode( 'normal' ); - - } - }, [ state.openedPanel ] ); useEffect( () => { const handleStoryKeyUp = ( event ) => { - if ( game.inputFocused() ) { - - return; - - } - + if ( game.inputFocused() ) return; handleStoryKeyControls( event ); }; @@ -166,37 +184,6 @@ export const App = () => { }, [] ); - useEffect( () => { - - if ( uiMode === 'none' ) { - - setState({ openedPanel: null }); - - } - - const handleKeyDown = ( event ) => { - - if ( event.ctrlKey && event.code === 'KeyH' ) { - - setUIMode( uiMode === 'normal' ? 'none' : 'normal' ); - return false; - - } - - return true; - - }; - - registerIoEventHandler( 'keydown', handleKeyDown ); - - return () => { - - unregisterIoEventHandler( 'keydown', handleKeyDown ); - - }; - - }, [ uiMode ] ); - useEffect( () => { const handleClick = () => { @@ -268,16 +255,6 @@ export const App = () => { useEffect( _loadUrlState, [] ); - useEffect( () => { - - if ( canvasRef.current ) { - - _startApp( app, canvasRef.current ); - - } - - }, [ canvasRef ] ); - // const onDragOver = e => { @@ -299,15 +276,20 @@ export const App = () => { onDragEnd={onDragEnd} onDragOver={onDragOver} > - +
- + + + - - - + + - + + { -
); diff --git a/src/components/app/App.module.css b/src/components/app/App.module.css index 098c8f9747..1887250a5b 100644 --- a/src/components/app/App.module.css +++ b/src/components/app/App.module.css @@ -1,56 +1,60 @@ * { - box-sizing: border-box; + box-sizing: border-box; } @keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } } html, body { - position: fixed; - width: 100%; - height: 100%; - overflow: hidden; + position: fixed; + width: 100%; + height: 100%; + overflow: hidden; - margin: 0; - font-family: 'Muli'; - font-size: 12px; + margin: 0; + font-family: 'Muli'; + font-size: 12px; - --color: #ec407a; - --color2: #ffa726; - --color3: #42a5f5; + --color: #ec407a; + --color2: #ffa726; + --color3: #42a5f5; } -body { - background-color: #000; -} +/* body { + background-color: #000; +} */ .App { - height: 100%; - width: 100%; - /* text-align: center; */ + height: 100%; + width: 100%; + /* text-align: center; */ } .canvas { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100vw; - height: 100vh; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100vw; + height: 100vh; +} + +.canvas.domHover { + pointer-events: none; } /* */ ::-webkit-scrollbar { - width: 1em; + width: 1em; } ::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); } ::-webkit-scrollbar-thumb { - background-color: darkgrey; - outline: 1px solid slategrey; + background-color: darkgrey; + outline: 1px solid slategrey; } \ No newline at end of file diff --git a/src/components/editor-mode/index.jsx b/src/components/editor-mode/index.jsx index 92009ca2ac..7e12065352 100644 --- a/src/components/editor-mode/index.jsx +++ b/src/components/editor-mode/index.jsx @@ -4,7 +4,6 @@ import React from 'react'; import { MagicMenu } from './magic-menu'; import { SceneMenu } from './scene-menu'; import { Inspector } from './inspector'; -import { UIMode } from '../general/ui-mode'; // @@ -16,15 +15,13 @@ export const EditorMode = ({ selectedScene, setSelectedScene, selectedRoom, setS return (
- - - +
diff --git a/src/components/editor-mode/scene-menu/SceneMenu.jsx b/src/components/editor-mode/scene-menu/SceneMenu.jsx index 2548d8a6e6..d9edd99dd3 100644 --- a/src/components/editor-mode/scene-menu/SceneMenu.jsx +++ b/src/components/editor-mode/scene-menu/SceneMenu.jsx @@ -2,7 +2,6 @@ import React, { useState, useEffect, useContext, useRef } from 'react'; import classnames from 'classnames'; -import { world } from '../../../../world' import universe from '../../../../universe' import voiceInput from '../../../../voice-input/voice-input'; import sceneNames from '../../../../scenes/scenes.json'; @@ -23,7 +22,7 @@ sceneNames.forEach( ( name ) => { // -export const SceneMenu = ({ className, multiplayerConnected, selectedScene, setSelectedScene, selectedRoom, setSelectedRoom }) => { +export const SceneMenu = ({ multiplayerConnected, selectedScene, setSelectedScene, selectedRoom, setSelectedRoom }) => { const { state, setState } = useContext( AppContext ); const sceneNameInputRef = useRef( null ); @@ -127,7 +126,7 @@ export const SceneMenu = ({ className, multiplayerConnected, selectedScene, setS setState({ openedPanel: null }); - if ( ! world.isConnected() ) { + if ( ! universe.isConnected() ) { universe.pushUrl( `/?src=${ encodeURIComponent( selectedScene ) }&room=${ room.name }` ); @@ -261,7 +260,7 @@ export const SceneMenu = ({ className, multiplayerConnected, selectedScene, setS // return ( -
+
{ case 'AI21': return `https://ai.webaverse.com/ai21/v1/engines/j1-large/completions`; case 'GOOSEAI': return `https://ai.webaverse.com/gooseai/v1/engines/gpt-neo-20b/completions`; case 'OPENAI': return `https://api.openai.com/v1/engines/text-davinci-002/completions`; + case 'CONVAI': return `https://api.convai.com/webaverse` default: return null; } }; - const _apiTypeNeedsApiKey = apiType => apiType === 'OPENAI'; + const _apiTypeNeedsApiKey = apiType => apiType === 'OPENAI' || apiType === 'CONVAI'; function updateLoreEndpoint(apiType) { const url = _getApiUrl(apiType); diff --git a/src/components/general/settings/TabAudio.jsx b/src/components/general/settings/TabAudio.jsx index 7922827400..189c212964 100644 --- a/src/components/general/settings/TabAudio.jsx +++ b/src/components/general/settings/TabAudio.jsx @@ -1,10 +1,12 @@ import React, { useEffect, useState } from 'react'; import classNames from 'classnames'; -import { voicePacksUrl, voiceEndpointsUrl } from '../../../../constants'; -import game from '../../../../game'; +// import { voicePacksUrl, voiceEndpointsUrl, defaultVoicePackName } from '../../../../constants'; +// import game from '../../../../game'; import { Slider } from './slider'; import * as voices from '../../../../voices'; +// import {localPlayer} from '../../../../players'; +import overrides from '../../../../overrides'; import styles from './settings.module.css'; @@ -12,8 +14,10 @@ import * as audioManager from '../../../../audio-manager.js'; // -export const defaultVoicePack = { - name: `ShiShi voice pack`, +export const noneVoicePack = { + name: 'None', + indexPath: null, + audioPath: null, }; const noneVoiceEndpoint = { name: 'None', @@ -24,7 +28,7 @@ const DefaultSettings = { music: 100, voice: 100, effects: 100, - voicePack: defaultVoicePack.name, + voicePack: noneVoicePack.name, voiceEndpoint: noneVoiceEndpoint.name, }; @@ -97,43 +101,21 @@ export const TabAudio = ({ active }) => { // set voice pack - const vp = voicePacks[ voicePacks.map( ( vp ) => { return vp.name; } ).indexOf( voicePack ) ]; - if ( vp ) { - - const { audioPath, indexPath } = vp; - const voicePacksUrlBase = voicePacksUrl.replace( /\/+[^\/]+$/, '' ); - const audioUrl = voicePacksUrlBase + audioPath; - const indexUrl = voicePacksUrlBase + indexPath; - - (async () => { - - await game.loadVoicePack({ - audioUrl, - indexUrl - }); - - })().catch( ( err ) => { - - console.warn( err ); - - }); - - } + overrides.overrideVoicePack.set(voicePack !== 'None' ? voicePack : null); // set voice endpoint - const ve = voiceEndpoints[ voiceEndpoints.map( ( vp ) => { return vp.name; } ).indexOf( voiceEndpoint ) ]; - if ( ve ) { - - game.setVoiceEndpoint( ve.drive_id ); - - } + overrides.overrideVoiceEndpoint.set(voiceEndpoint !== 'None' ? voiceEndpoint : null); // saveSettings(); setChangesNotSaved( false ); - setTimeout( () => { setAppyingChanges( false ) }, 1000 ); + setTimeout( () => { + + setAppyingChanges( false ); + + }, 1000 ); }; @@ -141,7 +123,7 @@ export const TabAudio = ({ active }) => { await voices.waitForLoad(); - setVoicePacks( voices.voicePacks ); + setVoicePacks( [ noneVoicePack ].concat( voices.voicePacks ) ); }; @@ -149,7 +131,7 @@ export const TabAudio = ({ active }) => { await voices.waitForLoad(); - setVoiceEndpoints( [ noneVoiceEndpoint ].concat(voices.voiceEndpoints) ); + setVoiceEndpoints( [ noneVoiceEndpoint ].concat( voices.voiceEndpoints ) ); }; diff --git a/src/components/general/spritesheet/Spritesheet.jsx b/src/components/general/spritesheet/Spritesheet.jsx index 7509263d05..409264bfba 100644 --- a/src/components/general/spritesheet/Spritesheet.jsx +++ b/src/components/general/spritesheet/Spritesheet.jsx @@ -1,5 +1,4 @@ - -import React, { useEffect, useState, useRef } from 'react'; +import React, { forwardRef, useEffect, useState, useRef, useContext } from 'react'; import classnames from 'classnames'; import styles from './spritesheet.module.css'; import spritesheetManager from '../../../../spritesheet-manager.js'; @@ -11,94 +10,87 @@ export const Spritesheet = ({ startUrl, enabled, size, - numFrames + numFrames, }) => { - - const [ spritesheet, setSpritesheet ] = useState (null ); + // console.log('spritesheet url', startUrl); + const [ spritesheet, setSpritesheet ] = useState(null); const canvasRef = useRef(); - const numFramesPow2 = Math.pow( 2, Math.ceil( Math.log2( numFrames ) ) ); - const numFramesPerRow = Math.ceil( Math.sqrt( numFramesPow2 ) ); + const numFramesPow2 = Math.pow(2, Math.ceil(Math.log2(numFrames))); + const numFramesPerRow = Math.ceil(Math.sqrt(numFramesPow2)); const frameSize = size / numFramesPerRow; const frameLoopTime = 2000; const frameTime = frameLoopTime / numFrames; - // - - useEffect( () => { - - if ( ! startUrl ) return; - - let live = true; - - ( async () => { - - const spritesheet = await spritesheetManager.getSpriteSheetForAppUrlAsync(startUrl, { - size, - numFrames, - }); - - if ( ! live ) { - - return; - - } - - setSpritesheet( spritesheet ); - - })(); - - return () => { - - live = false; - - }; - - }, [ startUrl ] ); - - useEffect( () => { + useEffect(() => { + if (startUrl) { + let live = true; + (async () => { + // console.log('got spritesheet 1', {startUrl, frameSize, numFramesPerRow, size, numFrames}); + const spritesheet = await spritesheetManager.getSpriteSheetForAppUrlAsync(startUrl, { + size, + numFrames, + }); + + /* { + const imageBitmap = spritesheet.result; + const canvas = document.createElement('canvas'); + canvas.width = imageBitmap.width; + canvas.height = imageBitmap.height; + canvas.style.cssText = `\ + position: fixed; + top: 100px; + left: 100px; + width: ${600}px; + height: ${600}px; + background-color: #F00; + `; + const ctx = canvas.getContext('2d'); + ctx.drawImage(imageBitmap, 0, 0); + document.body.appendChild(canvas); + } */ + + if (!live) { + return; + } + setSpritesheet(spritesheet); + })(); + return () => { + live = false; + }; + } + }, [startUrl]); + useEffect(() => { const canvas = canvasRef.current; - - if ( canvas && spritesheet && enabled ) { - + if (canvas && spritesheet && enabled) { const ctx = canvas.getContext('2d'); const imageBitmap = spritesheet.result; - let frameIndex = 0; + // console.log('render image bitmap', imageBitmap, size, canvas.width, canvas.height); + // ctx.drawImage(imageBitmap, 0, 0, size, size, 0, 0, canvas.width, canvas.height); + let frameIndex = 0; const _recurse = () => { + const x = (frameIndex % numFramesPerRow) * frameSize; + const y = size - frameSize - Math.floor(frameIndex / numFramesPerRow) * frameSize; + frameIndex = (frameIndex + 1) % numFrames; - const x = ( frameIndex % numFramesPerRow ) * frameSize; - const y = size - frameSize - Math.floor( frameIndex / numFramesPerRow ) * frameSize; - frameIndex = ( frameIndex + 1 ) % numFrames; - ctx.clearRect( 0, 0, canvas.width, canvas.height ); - ctx.drawImage( imageBitmap, x, y, frameSize, frameSize, 0, 0, canvas.width, canvas.height ); - + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.drawImage(imageBitmap, x, y, frameSize, frameSize, 0, 0, canvas.width, canvas.height); }; - - const interval = setInterval( _recurse, frameTime ); - - // - + const interval = setInterval(_recurse, frameTime); return () => { - - clearInterval( interval ); - + clearInterval(interval); }; - } - - }, [ canvasRef, spritesheet, enabled ] ); - - // + }, [canvasRef, spritesheet, enabled]); return ( ); - -}; +}; \ No newline at end of file diff --git a/src/components/general/ui-mode/UIMode.jsx b/src/components/general/ui-mode/UIMode.jsx deleted file mode 100644 index 38276a3a54..0000000000 --- a/src/components/general/ui-mode/UIMode.jsx +++ /dev/null @@ -1,28 +0,0 @@ - -import React, { useContext, cloneElement, Children } from 'react'; -import classNames from 'classnames'; - -import { AppContext } from '../../app'; - -import styles from './ui-mode.module.css'; - -// - -export const UIMode = ({ hideDirection = 'left', children }) => { - - const { uiMode } = useContext( AppContext ); - let modeClassName = styles.normal; - - if ( uiMode === 'none' ) modeClassName = styles.hide; - - // - - return ( - Children.map( children, child => - cloneElement( child, { - className: classNames( child.props.className, styles.uiBlock, modeClassName, styles[ hideDirection + 'HideDirection' ] ) - }) - ) - ); - -}; diff --git a/src/components/general/ui-mode/index.jsx b/src/components/general/ui-mode/index.jsx deleted file mode 100644 index bfe3cd67e5..0000000000 --- a/src/components/general/ui-mode/index.jsx +++ /dev/null @@ -1,3 +0,0 @@ - -import { UIMode } from './UIMode'; -export { UIMode }; diff --git a/src/components/general/ui-mode/ui-mode.module.css b/src/components/general/ui-mode/ui-mode.module.css deleted file mode 100644 index a06edf3db6..0000000000 --- a/src/components/general/ui-mode/ui-mode.module.css +++ /dev/null @@ -1,20 +0,0 @@ - -.uiBlock { - transition: transform 300ms cubic-bezier( 0, 1, 0, 1 ); -} - -.uiBlock.hide.leftHideDirection { - transform: translateX( -150% ); -} - -.uiBlock.hide.rightHideDirection { - transform: translateX( 150% ); -} - -.uiBlock.hide.topHideDirection { - transform: translateY( -150% ); -} - -.uiBlock.hide.bottomHideDirection { - transform: translateY( 150% ); -} diff --git a/src/components/general/world-objects-list/WorldObjectsList.jsx b/src/components/general/world-objects-list/WorldObjectsList.jsx index ddd123cbe7..c83d9e0db3 100644 --- a/src/components/general/world-objects-list/WorldObjectsList.jsx +++ b/src/components/general/world-objects-list/WorldObjectsList.jsx @@ -106,8 +106,9 @@ export const WorldObjectsList = () => { const updatePhysics = () => { const physicsObjects = selectedApp.getPhysicsObjects(); - physicsManager.setGeometryScale( physicsObjects[0].physicsId, selectedApp.scale ); - + physicsObjects.forEach( ( physicsObject ) => { + physicsManager.setGeometryScale( physicsObject.physicsId, selectedApp.scale ); + }); }; const stopPropagation = ( event ) => { diff --git a/src/components/general/world-objects-list/component-editor.module.css b/src/components/general/world-objects-list/component-editor.module.css index bccf09fee4..494c61911d 100644 --- a/src/components/general/world-objects-list/component-editor.module.css +++ b/src/components/general/world-objects-list/component-editor.module.css @@ -163,4 +163,4 @@ input[type=checkbox].itemValue { .addNewItem:hover { opacity: 1; -} +} \ No newline at end of file diff --git a/src/components/general/world-objects-list/world-objects-list.module.css b/src/components/general/world-objects-list/world-objects-list.module.css index c9627bbe03..1fd60eae7f 100644 --- a/src/components/general/world-objects-list/world-objects-list.module.css +++ b/src/components/general/world-objects-list/world-objects-list.module.css @@ -212,4 +212,4 @@ bottom: 0px; width: 350px; height: 350px; -} +} \ No newline at end of file diff --git a/src/components/play-mode/chat/Chat.jsx b/src/components/play-mode/chat/Chat.jsx index e27c20d7c9..7e7feb853b 100644 --- a/src/components/play-mode/chat/Chat.jsx +++ b/src/components/play-mode/chat/Chat.jsx @@ -8,6 +8,8 @@ import { chatManager } from '../../../../chat-manager.js'; import { registerIoEventHandler, unregisterIoEventHandler } from '../../general/io-handler'; import { AppContext } from '../../app'; +import storyManager from '../../../../story.js'; + import styles from './chat.module.css'; // @@ -38,40 +40,51 @@ function ChatInput () { const handleActiveKey = ( event ) => { - if ( game.inputFocused() && document.activeElement !== inputRef.current ) return true; + if ( game.inputFocused() && document.activeElement !== inputRef.current ) { + + return true; - switch ( event.which ) { + + } else { - case 13: { // enter + switch ( event.which ) { - if ( state.openedPanel !== 'ChatPanel' ) { + case 13: { // enter - setState({ openedPanel: 'ChatPanel' }); + if (storyManager.getConversation()) { - } else { + // nothing; handled in StoryTime - if ( document.activeElement !== inputRef.current ) return true; + } else if ( state.openedPanel !== 'ChatPanel' ) { - if ( value ) { + setState({ openedPanel: 'ChatPanel' }); - const text = checkText( value ); - chatManager.addMessage( text, { timeout: 3000 }); + } else { + + if ( document.activeElement !== inputRef.current ) return true; + + if ( value ) { + + const text = checkText( value ); + chatManager.addMessage( text, { timeout: 3000 }); + + } + + setValue(''); + setState({ openedPanel: null }); } - setValue(''); - setState({ openedPanel: null }); + return true; } - return true; - } + return false; + } - return false; - }; const handleAnytimeKey = ( event ) => { @@ -89,9 +102,9 @@ function ChatInput () { } - } + return true; - return true; + } } diff --git a/src/components/play-mode/equipment-popover/EquipmentPopover.jsx b/src/components/play-mode/equipment-popover/EquipmentPopover.jsx new file mode 100644 index 0000000000..a63c72afcb --- /dev/null +++ b/src/components/play-mode/equipment-popover/EquipmentPopover.jsx @@ -0,0 +1,16 @@ +import React, {useState, useRef, useEffect} from 'react'; +import classnames from 'classnames'; +import styles from './EquipmentPopover.module.css'; +import {PlaceholderImg} from '../../../PlaceholderImg.jsx'; + +const width = 400; + +export const EquipmentPopover = ({ + open = true, +}) => { + return ( +
+ +
+ ); +}; \ No newline at end of file diff --git a/src/components/play-mode/equipment-popover/EquipmentPopover.module.css b/src/components/play-mode/equipment-popover/EquipmentPopover.module.css new file mode 100644 index 0000000000..23b8bb8d9a --- /dev/null +++ b/src/components/play-mode/equipment-popover/EquipmentPopover.module.css @@ -0,0 +1,26 @@ + +.equipmentPopover { + /* position: fixed; + top: 0; + right: 0; */ + position: absolute; + left: 70px; + top: 70px; + display: flex; + padding: 5px; + flex-direction: column; + /* background-image: radial-gradient(circle, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.5) 100%); */ + background-color: #222; + border-radius: 5px; + box-shadow: inset 0 0 10px #000; + transform: none; + transition: 1s transform cubic-bezier(0, 1, 0, 1); + pointer-events: none; +} + +.equipmentPopover .placeholderImg { + width: 20px; + height: 20px; + /* object-fit: cover; + pointer-events: none; */ +} \ No newline at end of file diff --git a/src/components/play-mode/equipment-popover/index.jsx b/src/components/play-mode/equipment-popover/index.jsx new file mode 100644 index 0000000000..691c59b4e2 --- /dev/null +++ b/src/components/play-mode/equipment-popover/index.jsx @@ -0,0 +1,3 @@ + +import { EquipmentPopover } from './EquipmentPopover'; +export { EquipmentPopover }; \ No newline at end of file diff --git a/src/components/play-mode/hotbar/Hotbar.jsx b/src/components/play-mode/hotbar/Hotbar.jsx index d8833d807b..48281e35d9 100644 --- a/src/components/play-mode/hotbar/Hotbar.jsx +++ b/src/components/play-mode/hotbar/Hotbar.jsx @@ -9,7 +9,7 @@ import loadoutManager from '../../../../loadout-manager.js'; import {registerIoEventHandler, unregisterIoEventHandler} from '../../general/io-handler/IoHandler.jsx'; import {hotbarSize, numLoadoutSlots} from '../../../../constants.js'; -export const Hotbar = ({ className }) => { +export const Hotbar = () => { const { state, setState } = useContext( AppContext ); const open = state.openedPanel === 'CharacterPanel'; @@ -60,7 +60,7 @@ export const Hotbar = ({ className }) => { return (
diff --git a/src/components/play-mode/index.jsx b/src/components/play-mode/index.jsx index 2587bb3778..cb19a5bf6c 100644 --- a/src/components/play-mode/index.jsx +++ b/src/components/play-mode/index.jsx @@ -5,7 +5,6 @@ import { Minimap } from './minimap'; import { Hotbar } from './hotbar'; import { Infobox } from './infobox'; import { Chat } from './chat'; -import { UIMode } from '../general/ui-mode'; import styles from './play-mode.module.css'; @@ -17,15 +16,9 @@ export const PlayMode = () => { return (
- - - - - - - - - + + +
); diff --git a/src/components/play-mode/infobox/Infobox.jsx b/src/components/play-mode/infobox/Infobox.jsx index 448f8c151a..8f6c443e7a 100644 --- a/src/components/play-mode/infobox/Infobox.jsx +++ b/src/components/play-mode/infobox/Infobox.jsx @@ -7,7 +7,7 @@ import alea from '../../../../procgen/alea.js'; const screenshotSize = 100; -export const Infobox = ({ className }) => { +export const Infobox = () => { const canvasRef = useRef(); const [selectedApp, setSelectedApp] = useState(null); @@ -48,7 +48,7 @@ export const Infobox = ({ className }) => { }, []); return ( -
+
diff --git a/src/components/play-mode/mega-chat-box/MegaChatBox.jsx b/src/components/play-mode/mega-chat-box/MegaChatBox.jsx new file mode 100644 index 0000000000..16eb9b2a1d --- /dev/null +++ b/src/components/play-mode/mega-chat-box/MegaChatBox.jsx @@ -0,0 +1,102 @@ +// import * as THREE from 'three'; +import React, {useState, useEffect} from 'react'; +import classnames from 'classnames'; +import {RpgText} from '../../../RpgText.jsx'; +import {LightArrow} from '../../../LightArrow.jsx'; +import {chatTextSpeed} from '../../../../constants.js'; +import {level} from '../../../../player-stats.js'; +import * as sounds from '../../../../sounds.js'; + +import styles from './MegaChatBox.module.css'; + +export const MegaChatBox = ({ + message, + options, + option, + hoverIndex, + progressing, + finished, + onOptionSelect, + onClick, +}) => { + const [currentMessage, setCurrentMessage] = useState(message); + const selectedOptionIndex = options ? options.indexOf(option) : -1; + + useEffect(() => { + if (message && currentMessage !== message) { + setCurrentMessage(message); + } + }, [message, currentMessage]); + + return ( +
+
+
+
{currentMessage ? currentMessage.name : ''}
+
Lv. {level}
+
+ + {finished ? ( + + ) : ( +
{ + sounds.playSoundName('menuClick'); + }} + onClick={onClick} + > + +
+ )} +
+
+
+ {options ? options.map((option, i) => { + const hovered = i === hoverIndex; + const selected = i === selectedOptionIndex; + return ( +
{ + onOptionSelect(option, i); + }} + onMouseEnter={e => { + sounds.playSoundName('menuMove'); + }} + key={i} + > +
+
{option}
+ +
+ ); + }) : null} +
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/play-mode/mega-chat-box/MegaChatBox.module.css b/src/components/play-mode/mega-chat-box/MegaChatBox.module.css new file mode 100644 index 0000000000..8d862d96da --- /dev/null +++ b/src/components/play-mode/mega-chat-box/MegaChatBox.module.css @@ -0,0 +1,208 @@ +.megaChatBox { + position: absolute; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + height: 30vh; + color: #FFF; + transform: scale(0.8); + opacity: 0; + z-index: 1; + transition: transform 2s cubic-bezier(0, 1, 0, 1), opacity 2s cubic-bezier(0, 1, 0, 1); +} +.megaChatBox.open { + transform: none; + opacity: 1; + pointer-events: all; +} +.megaChatBox .inner { + position: relative; + margin: 15px; + padding: 15px; + border: 3px solid #FFF3; + flex: 1; +} +.megaChatBox .row { + display: flex; + margin: 10px 0; + align-items: baseline; +} +.megaChatBox .name { + margin-right: 20px; + font-family: 'WinchesterCaps'; + font-size: 30px; +} +.megaChatBox .level { + font-family: 'WinchesterCaps'; + font-size: 22px; +} +.megaChatBox .text { + font-family: 'PlazaRegular'; + font-size: 32px; + letter-spacing: 2px; +} + +/* */ + +.outer { + background-image: linear-gradient(to bottom, #222, #000); +} + +/* */ + +.megaChatBox .options { + position: absolute; + top: 0; + bottom: 0; + right: 0; + display: flex; + flex-direction: column; + width: var(--width); + font-family: 'PlazaRegular'; + font-size: 22px; + z-index: 1; + transform: none; + opacity: 1; + transition: transform 2s cubic-bezier(0, 1, 0, 1), opacity 2s cubic-bezier(0, 1, 0, 1); +} +.megaChatBox .options:not(.open) { + transform: scale(0.8); + opacity: 0; +} +.megaChatBox .options:not(.open), +.megaChatBox .options.selected +{ + pointer-events: none; +} + +/* */ + +.megaChatBox .options .option { + position: relative; + display: flex; + align-items: center; + cursor: pointer; + user-select: none; +} +.megaChatBox .options .option.hovered { + background-image: url('/images/ui/rainbow-line.svg'); + object-fit: fill; + background-clip: text; + -webkit-background-clip: text; + color: transparent; + /* filter: brightness(1.5); */ + + animation-duration: 0.5s; +} +.megaChatBox .options .option .border { + pointer-events: none; + visibility: hidden; +} +.megaChatBox .options:not(.selected) .option:hover .border, +.megaChatBox .options.selected .option.selected .border +{ + visibility: visible; +} +.megaChatBox .options .option .border { + position: absolute; + top: 5px; + bottom: 5px; + left: 5px; + right: 5px; + border: 2px solid #FFF; +} +.megaChatBox .options .option .value { + padding: 10px; + font-size: 22px; + flex: 1; +} +.megaChatBox .options .option .arrow { + display: flex; + width: 18px; + height: 18px; + margin-right: 30px; + object-fit: contain; + + animation-duration: 2s; +} +.megaChatBox .options .option:not(.hovered) .arrow, +.megaChatBox .options.selected .option .arrow +{ + visibility: hidden; +} + +/* */ + +.megaChatBox .lightArrow { + bottom: 10px; + right: 40px; + top: auto; + left: auto; + z-index: 1; + cursor: pointer; + pointer-events: all; +} + +/* */ + +@keyframes blink_effect { + 0% { + visibility: visible; + } + 49% { + visibility: visible; + } + 51% { + visibility: hidden; + } + 100% { + visibility: hidden; + } +} +.megaChatBox .nextBlink { + position: absolute; + bottom: 0; + right: 20px; + padding: 30px; + z-index: 1; + cursor: pointer; +} +.megaChatBox .nextBlink:not(.visible) { + display: none; +} +.megaChatBox .nextBlink .arrow { + width: 25px; + height: 25px; + object-fit: contain; + animation: 1.5s linear infinite blink_effect; +} + +/* */ + +@keyframes hueRotate { + 0% { + filter: brightness(1.7) hue-rotate(0deg); + } + 25% { + filter: brightness(1.7) hue-rotate(90deg); + } + 50% { + filter: brightness(1.7) hue-rotate(180deg); + } + 75% { + filter: brightness(1.7) hue-rotate(270deg); + } + 100% { + filter: brightness(1.7) hue-rotate(360deg); + } +} + +.megaChatBox .options .option.hovered, +.megaChatBox .options .option .arrow +{ + animation-name: hueRotate; + animation-iteration-count: infinite; + animation-timing-function: linear; +} \ No newline at end of file diff --git a/src/components/play-mode/mega-chat-box/index.jsx b/src/components/play-mode/mega-chat-box/index.jsx new file mode 100644 index 0000000000..68c45e3b75 --- /dev/null +++ b/src/components/play-mode/mega-chat-box/index.jsx @@ -0,0 +1,3 @@ + +import { MegaChatBox } from './MegaChatBox'; +export { MegaChatBox }; \ No newline at end of file diff --git a/src/components/play-mode/mega-hotbox/MegaHotBox.jsx b/src/components/play-mode/mega-hotbox/MegaHotBox.jsx index bb03737df9..67bd0fca8c 100644 --- a/src/components/play-mode/mega-hotbox/MegaHotBox.jsx +++ b/src/components/play-mode/mega-hotbox/MegaHotBox.jsx @@ -1,78 +1,171 @@ import React, {useState, useRef, useEffect} from 'react'; import classnames from 'classnames'; import styles from './MegaHotBox.module.css'; +import { BigButton } from '../../../BigButton'; +import { PlaceholderImg } from '../../../PlaceholderImg'; +import { ImageBitmapCanvas } from '../../../ImageBitmapCanvas'; +import { loadImage } from '../../../../util.js'; -const width = 400; +const cardFlipAnimationTime = 200; + +const Card = ({ + imageBitmap = null, + backImageBitmap = null, + // open = false, +}) => { + const [rotateX, setRotateX] = useState(0); + const [rotateY, setRotateY] = useState(0); + const [flip, setFlip] = useState(false); + const [hovered, setHovered] = useState(false); + const [animate, setAnimate] = useState(false); + + /* const revokeObjectUrl = () => { + URL.revokeObjectURL(imgUrl); + }; */ + const _setFromEvent = e => { + if (!animate) { + // get the offest from the top left corner of this element + const rect = e.currentTarget.getBoundingClientRect(); + const x = e.clientX - rect.left - rect.width / 2; + const y = e.clientY - rect.top - rect.height / 2; + + // get the uv of the mouse hit, bnased on the dimensions of the element + const u = x / rect.width; + const v = y / rect.height; + + setRotateX(v * 0.2 * Math.PI); + setRotateY(-u * 0.2 * Math.PI); + } + }; + + useEffect(() => { + if (animate) { + const timeout = setTimeout(() => { + setAnimate(false); + }, cardFlipAnimationTime); + return () => { + clearTimeout(timeout); + }; + } + }, [animate]); + + useEffect(() => { + if (!imageBitmap && flip) { + setFlip(false); + } + }, [imageBitmap, flip]); + + return ( +
{ + setFlip(!flip); + setAnimate(true); + }} + onMouseMove={e => { + _setFromEvent(e); + // setAnimate(false); + }} + onMouseEnter={e => { + setHovered(true); + _setFromEvent(e); + setAnimate(false); + }} + onMouseLeave={e => { + setHovered(false); + setRotateX(0); + setRotateY(0); + // setAnimate(true); + }} + > +
+ +
+ +
+ ); +}; export const MegaHotBox = ({ open = true, - spritesheet = null, + name = '', + description = '', + imageBitmap = null, + onActivate = null, + onClose = null, }) => { - const canvasRef = useRef(); - const [height, setHeight] = useState(window.innerHeight); - // const [selected, setSelected] = useState(false); + const [ backImageBitmap, setBackImageBitmap ] = useState(null); + + useEffect(() => { + let live = true; + (async () => { + const img = await loadImage('./images/cardback-01.svg'); + if (!live) return; + + const canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + const ctx = canvas.getContext('2d'); + // console.log('got canvas size', canvas.width, canvas.height); + ctx.drawImage(img, 0, 0); - /* useEffect(() => { - const canvas = canvasRef.current; - if (canvas && npcPlayer) { - let live = true; - let diorama = null; - { - diorama = dioramaManager.createPlayerDiorama({ - target: npcPlayer, - objects: [ - npcPlayer.avatar.model, - ], - cameraOffset: new THREE.Vector3(-0.8, 0, -0.4), - // label: true, - // outline: true, - // grassBackground: true, - // glyphBackground: true, - dotsBackground: true, - }); - diorama.addCanvas(canvas); - diorama.enabled = true; - } - - const frame = e => { - const {timestamp, timeDiff} = e.data; - if (diorama) { - diorama.update(timestamp, timeDiff); - } - }; - world.appManager.addEventListener('frame', frame); - const resize = e => { - diorama.setSize(width, window.innerHeight); - }; - window.addEventListener('resize', resize); - - return () => { - if (diorama) { - diorama.removeCanvas(canvas); - diorama.destroy(); - } - world.appManager.removeEventListener('frame', frame); - window.removeEventListener('resize', resize); - live = false; - }; - } - }, []); */ - - const pixelRatio = window.devicePixelRatio; + setBackImageBitmap(canvas); + + /* const imageBitmap = await createImageBitmap(canvas); + if (!live) return; + setBackImageBitmap(imageBitmap); */ + })(); + return () => { + live = false; + }; + }, []); return (
+ + +
-
{''}
+
{name}
+
{description}
+
+
+ { + onActivate && onActivate(e); + onClose && onClose(e); + }} + >Equip + { + onClose && onClose(e); + }} + >Close
-
); }; \ No newline at end of file diff --git a/src/components/play-mode/mega-hotbox/MegaHotBox.module.css b/src/components/play-mode/mega-hotbox/MegaHotBox.module.css index ba0770db21..a56a924687 100644 --- a/src/components/play-mode/mega-hotbox/MegaHotBox.module.css +++ b/src/components/play-mode/mega-hotbox/MegaHotBox.module.css @@ -1,18 +1,87 @@ - .megaHotBox { position: fixed; top: 0; right: 0; + width: 350px; + height: 100%; + display: flex; + flex-direction: column; + background-image: linear-gradient(to right, transparent, #000 50%); transform: none; - transition: 1s transform cubic-bezier(0, 1, 0, 1); - pointer-events: none; + transition: 2s transform cubic-bezier(0, 1, 0, 1); + /* pointer-events: none; */ + color: #FFF; } .megaHotBox:not(.open) { transform: translateX(100%); } -.megaHotBox .canvas { - width: 400px; - height: 100vh; +/* */ + +.megaHotBox .card { + width: 300px; + height: 420px; + margin: 20px; + user-select: none; +} +.megaHotBox .card .imageBitmapCanvas { + width: inherit; + height: inherit; + perspective: 1200px; + perspective-origin: 50% 50%; +} +.megaHotBox .card .imageBitmapCanvas .canvas { + width: inherit; + height: inherit; + padding: 20px; + transform-origin: 50% 50%; + transform: translateX(0); + transition: transform 200ms cubic-bezier(0, 1, 0, 1); +} +.megaHotBox .card .imageBitmapCanvas .canvas.hovered:not(.animate) +{ + transition: none; +} + +/* */ + +.megaHotBox .card .placeholderImgWrap { + position: absolute; + width: 300px; + height: 420px; + display: flex; + justify-content: center; + align-items: center; +} +.megaHotBox .card .placeholderImgWrap:not(.loading) { + visibility: hidden; +} +.megaHotBox .card .placeholderImgWrap .placeholderImg { + width: 100px; + height: 100px; + opacity: 0.2; +} + +/* */ + +.megaHotBox .name, +.megaHotBox .description { + padding: 5px 20px; +} +.megaHotBox .name { + font-family: 'WinchesterCaps'; + font-size: 32px; +} +.megaHotBox .description { + font-family: 'PlazaRegular'; + font-size: 20px; +} + +/* */ + +.megaHotBox .buttons { + display: flex; + flex-direction: column; + margin-top: auto; } \ No newline at end of file diff --git a/src/components/play-mode/minimap/Minimap.jsx b/src/components/play-mode/minimap/Minimap.jsx index 451510e673..bed36cd63e 100644 --- a/src/components/play-mode/minimap/Minimap.jsx +++ b/src/components/play-mode/minimap/Minimap.jsx @@ -1,7 +1,5 @@ -import React, { useRef, useEffect } from 'react'; -import classNames from 'classnames'; - +import React, {useState, useRef, useEffect} from 'react'; import minimapManager from '../../../../minimap.js'; import styles from './minimap.module.css'; @@ -15,8 +13,7 @@ const minimapWorldSize = 400; const minimapMinZoom = 0.1; const minimapBaseSpeed = 30; -export const Minimap = ({ className }) => { - +export const Minimap = () => { const canvasRef = useRef(); useEffect(() => { @@ -37,7 +34,7 @@ export const Minimap = ({ className }) => { }, [canvasRef.current]); return ( -
+
diff --git a/src/fonts.css b/src/fonts.css index 279bb1410a..ccbb5c7b15 100644 --- a/src/fonts.css +++ b/src/fonts.css @@ -15,6 +15,10 @@ font-family: 'WinchesterCaps'; src: url('../public/fonts/WinchesterCaps.ttf'); } +@font-face { + font-family: 'SF Movie Poster'; + src: url('../public/fonts/SF Movie Poster.ttf'); +} /* cards */ @font-face { diff --git a/story.js b/story.js index 29b7dc876e..375a5122e6 100644 --- a/story.js +++ b/story.js @@ -3,6 +3,7 @@ this file contains the story beat triggers (battles, victory, game over, etc.) */ import * as THREE from 'three'; +import metaversefile from 'metaversefile'; import {SwirlPass} from './SwirlPass.js'; import { getRenderer, @@ -15,9 +16,18 @@ import { } from './renderer.js'; import * as sounds from './sounds.js'; import musicManager from './music-manager.js'; +import zTargeting from './z-targeting.js'; +import cameraManager from './camera-manager.js'; +import npcManager from './npc-manager.js'; +import {chatManager} from './chat-manager.js'; +import {mod} from './util.js'; +import {getLocalPlayer} from './players.js'; +import {alea} from './procgen/procgen.js'; const localVector2D = new THREE.Vector2(); +const upVector = new THREE.Vector3(0, 1, 0); + function makeSwirlPass() { const renderer = getRenderer(); const size = renderer.getSize(localVector2D) @@ -35,7 +45,7 @@ const _startSwirl = () => { composer.passes.push(composer.swirlPass); sounds.playSoundName('battleTransition'); - musicManager.playCurrentMusic('battle'); + musicManager.playCurrentMusicName('battle'); } }; const _stopSwirl = () => { @@ -51,14 +61,299 @@ const _stopSwirl = () => { return false; } }; + +// + +const _playerSay = async (player, message) => { + const preloadedMessage = player.voicer.preloadMessage(message); + await chatManager.waitForVoiceTurn(() => { + // setText(message); + return player.voicer.start(preloadedMessage); + }); + // setText(''); +}; +class Conversation extends EventTarget { + constructor(localPlayer, remotePlayer) { + super(); + + this.localPlayer = localPlayer; + this.remotePlayer = remotePlayer; + + this.messages = []; + this.finished = false; + this.progressing = false; + this.deltaY = 0; + + this.options = null; + this.option = null; + this.hoverIndex = null; + + /* this.addEventListener('message', e => { + if (this.options) { + const {message} = e.data; + this.#setOption(message.text); + } + }); */ + } + addLocalPlayerMessage(text, type = 'chat') { + const message = { + type, + player: this.localPlayer, + name: this.localPlayer.name, + text, + }; + this.messages.push(message); + + this.dispatchEvent(new MessageEvent('message', { + data: { + message, + }, + })); + + (async () => { + await _playerSay(this.localPlayer, text); + })(); + + cameraManager.setDynamicTarget(this.localPlayer.avatar.modelBones.Head, this.remotePlayer?.avatar.modelBones.Head); + } + addRemotePlayerMessage(text, type = 'chat') { + const message = { + type, + player: this.remotePlayer, + name: this.remotePlayer.name, + text, + }; + this.messages.push(message); + + this.dispatchEvent(new MessageEvent('message', { + data: { + message, + }, + })); + + (async () => { + await _playerSay(this.remotePlayer, text); + })(); + + cameraManager.setDynamicTarget(this.remotePlayer.avatar.modelBones.Head, this.localPlayer.avatar.modelBones.Head); + } + async wrapProgress(fn) { + if (!this.progressing) { + this.progressing = true; + this.dispatchEvent(new MessageEvent('progressstart')); + + try { + await fn(); + } finally { + this.progressing = false; + this.dispatchEvent(new MessageEvent('progressend')); + } + } else { + console.warn('ignoring conversation progress() because it was already in progress'); + } + } + progressChat() { + console.log('progress chat'); + + this.wrapProgress(async () => { + const aiScene = metaversefile.useLoreAIScene(); + const { + value: comment, + done, + } = await aiScene.generateChatMessage(this.messages, this.remotePlayer.name); + + if (!this.messages.some(m => m.text === comment && m.player === this.remotePlayer)) { + this.addRemotePlayerMessage(comment); + done && this.finish(); + } else { + this.finish(); + } + }); + } + progressSelf() { + console.log('progress self'); + + this.wrapProgress(async () => { + const aiScene = metaversefile.useLoreAIScene(); + const { + value: comment, + done, + } = await aiScene.generateChatMessage(this.messages, this.localPlayer.name); + + if (!this.messages.some(m => m.text === comment && m.player === this.localPlayer)) { + this.addLocalPlayerMessage(comment); + done && this.finish(); + } else { + this.finish(); + } + }); + } + progressSelfOptions() { + console.log('progress self options'); + + this.wrapProgress(async () => { + const aiScene = metaversefile.useLoreAIScene(); + const { + value: options, + done, + } = await aiScene.generateDialogueOptions(this.messages, this.localPlayer.name); + + if (!done) { + this.#setOptions(options); + this.#setHoverIndex(0); + } else { + this.finish(); + } + }); + } + progressOptionSelect(option) { + if (!option) { + option = this.options[this.hoverIndex]; + if (!option) { + throw new Error('failed to select option (not in options state?)'); + } + } + + // say the option + this.addLocalPlayerMessage(option, 'option'); + + // clear options + this.#setOptions(null); + this.#setOption(option); + + // 25% chance of self elaboration, 75% chance of other character reply + this.localTurn = Math.random() < 0.25; + } + #getMessageAgo(n) { + return this.messages[this.messages.length - n] ?? null; + } + progress() { + if (!this.finished) { + const lastMessage = this.#getMessageAgo(1); + + const _handleLocalTurn = () => { + // console.log('check last message 1', lastMessage, lastMessage?.type === 'chat', lastMessage?.player === this.localPlayer); + + if (lastMessage?.type === 'chat' && lastMessage?.player === this.localPlayer) { + // 50% chance of showing options + if (Math.random() < 0.5) { + this.progressSelfOptions(); + this.localTurn = true; + } else { + this.progressSelf(); + + // 50% chance of moving to the other character + this.localTurn = Math.random() < 0.5; + } + } else { + this.progressSelf(); + + // 50% chance of moving to the other character + this.localTurn = Math.random() < 0.5; + } + }; + const _handleOtherTurn = () => { + // console.log('check last message 2', lastMessage, lastMessage?.type === 'chat', lastMessage?.player === this.remotePlayer); + + if (lastMessage?.type === 'chat' && lastMessage?.player === this.remotePlayer) { + // 70% chance of showing options + if (Math.random() < 0.7) { + this.progressSelfOptions(); + this.localTurn = true; + } else { + // otherwise 50% chance of each character taking a turn + if (Math.random() < 0.5) { + this.progressChat(); + } else { + this.localTurn = true; + this.progress(); + } + } + } else { // it is the remote character's turn + this.progressChat(); + } + }; + + if (this.options) { + this.progressOptionSelect(); + } else { + if (this.localTurn) { + _handleLocalTurn(); + } else { + _handleOtherTurn(); + } + } + } else { + this.close(); + } + } + finish() { + this.finished = true; + this.dispatchEvent(new MessageEvent('finish')); + } + close() { + this.dispatchEvent(new MessageEvent('close')); + } + #setOptions(options) { + this.options = options; + + this.dispatchEvent(new MessageEvent('options', { + data: { + options, + }, + })); + } + #setOption(option) { + this.option = option; + + this.dispatchEvent(new MessageEvent('option', { + data: { + option: this.option, + }, + })); + } + #getHoverIndexAbsolute() { + const selectScrollIncrement = 150; + return Math.floor(this.deltaY / selectScrollIncrement); + } + #setHoverIndex(hoverIndex) { + this.hoverIndex = hoverIndex; + + this.dispatchEvent(new MessageEvent('hoverindex', { + data: { + hoverIndex: this.hoverIndex, + }, + })); + } + handleWheel(e) { + if (this.options) { + const oldHoverIndexAbsolute = this.#getHoverIndexAbsolute(); + this.deltaY += e.deltaY; + const newHoverIndexAbsolute = this.#getHoverIndexAbsolute(); + + if (newHoverIndexAbsolute !== oldHoverIndexAbsolute) { + const newHoverIndex = mod(newHoverIndexAbsolute, this.options.length); + this.#setHoverIndex(newHoverIndex); + } + + return true; + } else { + return false; + } + } +} + +// + const fieldMusicNames = [ 'dungeon', 'homespace', ]; +// + let currentFieldMusic = null; let currentFieldMusicIndex = 0; - export const handleStoryKeyControls = async (e) => { switch (e.which) { @@ -92,6 +387,7 @@ export const handleStoryKeyControls = async (e) => { } case 187: { // = await musicManager.waitForLoad(); + _stopSwirl(); musicManager.playCurrentMusic('gameOver', { repeat: true, @@ -101,4 +397,201 @@ export const handleStoryKeyControls = async (e) => { } return true; -}; \ No newline at end of file + +}; + +const story = new EventTarget(); + +let currentConversation = null; +story.getConversation = () => currentConversation; + +// returns whether the event was handled (used for options scrolling) +story.handleWheel = e => { + if (currentConversation) { + return currentConversation.handleWheel(e); + } else { + return false; + } +}; + +const _startConversation = (comment, remotePlayer, done) => { + const localPlayer = getLocalPlayer(); + currentConversation = new Conversation(localPlayer, remotePlayer); + currentConversation.addEventListener('close', () => { + currentConversation = null; + + cameraManager.setDynamicTarget(null); + }, {once: true}); + story.dispatchEvent(new MessageEvent('conversationstart', { + data: { + conversation: currentConversation, + }, + })); + currentConversation.addLocalPlayerMessage(comment); + done && currentConversation.finish(); + return currentConversation; +}; +story.startLocalPlayerComment = comment => { + return _startConversation(comment, null, true); +}; + +story.listenHack = () => { + window.document.addEventListener('click', async e => { + if (cameraManager.pointerLockElement) { + if (e.button === 0 && (cameraManager.focus && zTargeting.focusTargetReticle)) { + const app = metaversefile.getAppByPhysicsId(zTargeting.focusTargetReticle.physicsId); + + if (app) { + const {appType} = app; + + // cameraManager.setFocus(false); + // zTargeting.focusTargetReticle = null; + sounds.playSoundName('menuSelect'); + + cameraManager.setFocus(false); + cameraManager.setDynamicTarget(); + + (async () => { + const aiScene = metaversefile.useLoreAIScene(); + if (appType === 'npc') { + const {name, description} = app.getLoreSpec(); + const remotePlayer = npcManager.npcs.find(npc => npc.npcApp === app); + + if (remotePlayer) { + const { + value: comment, + done, + } = await aiScene.generateSelectCharacterComment(name, description); + + _startConversation(comment, remotePlayer, done); + } else { + console.warn('no player associated with app', app); + } + } else { + const {name, description} = app; + const comment = await aiScene.generateSelectTargetComment(name, description); + const fakePlayer = { + avatar: { + modelBones: { + Head: app, + }, + }, + }; + _startConversation(comment, fakePlayer, true); + } + })(); + } else { + console.warn('could not find app for physics id', zTargeting.focusTargetReticle.physicsId); + } + } else if (e.button === 0 && currentConversation) { + if (!currentConversation.progressing) { + currentConversation.progress(); + + sounds.playSoundName('menuNext'); + } + } + } + }); +}; +story.startCinematicIntro = () => { + const rng = alea('lol' + Math.random()); + const r = n => { + return -n + rng() * n * 2; + } + const rp = n => { + return rng() * n; + } + const r3 = (n, target) => { + return target.set(r(n), r(n), r(n)); + }; + + const range = 30; + const localPlayer = getLocalPlayer(); + const center = localPlayer.position.clone() + .add( + new THREE.Vector3(0, range/4, 0) + .applyQuaternion(localPlayer.quaternion) + ); + const centerToPlayerDirection = localPlayer.position.clone() + .sub(center) + .normalize(); + + const startPosition = new THREE.Vector3((rng() < 0.5 ? 1 : -1) * range, range/2, -range) + .applyQuaternion(localPlayer.quaternion) + .add(r3(5, new THREE.Vector3())); + const baseQuaternion = new THREE.Quaternion().setFromRotationMatrix( + new THREE.Matrix4().lookAt( + startPosition, + center, + upVector + ) + ); + const startQuaternion = baseQuaternion.clone().multiply( + new THREE.Quaternion().setFromEuler( + new THREE.Euler(-rp(Math.PI * 0.2), r(Math.PI * 0.2), r(Math.PI * 0.01), 'YXZ') + ) + ); + const endPosition = center.clone() + .add( + centerToPlayerDirection.clone() + .multiply(new THREE.Vector3(r(3), r(3), rp(3))) + ); + const endEuler = new THREE.Euler().setFromQuaternion(baseQuaternion, 'YXZ'); + endEuler.x = 0; + endEuler.z = 0; + const endQuaternion = new THREE.Quaternion().setFromEuler(endEuler) + .multiply( + new THREE.Quaternion().setFromEuler( + new THREE.Euler(-rp(Math.PI * 0.2), r(Math.PI * 0.2), 0, 'YXZ') + ) + ); + + const sp2x = r(1); + const startPosition2 = localPlayer.position.clone() + .add(new THREE.Vector3(sp2x, r(1) - 0.5, 1).applyQuaternion(localPlayer.quaternion)); + const startQuaternion2 = localPlayer.quaternion.clone(); + const endPosition2 = startPosition2.clone() + .add( + new THREE.Vector3((sp2x < 0 ? 1 : -1) * (1 + rp(2)), 0, 0) + .applyQuaternion(localPlayer.quaternion) + ); + const endQuaternion2 = startQuaternion2.clone(); + + const cinematicScript = [ + { + type: 'set', + position: startPosition, + quaternion: startQuaternion, + duration: 1000, + }, + { + type: 'move', + position: endPosition, + quaternion: endQuaternion, + duration: 5000, + }, + { + type: 'set', + position: endPosition, + quaternion: endQuaternion, + duration: 500, + }, + { + type: 'set', + position: startPosition2, + quaternion: startQuaternion2, + duration: 1000, + }, + { + type: 'move', + position: endPosition2, + quaternion: endQuaternion2, + duration: 3000, + }, + ]; + cameraManager.startCinematicScript(cinematicScript); + + // console.log('start cinematic intro'); +}; + +export default story; \ No newline at end of file diff --git a/transform-controls.js b/transform-controls.js index 2773131218..3f608a610a 100644 --- a/transform-controls.js +++ b/transform-controls.js @@ -63,7 +63,7 @@ const transformControls = { binding = o; }, */ handleMouseDown(raycaster) { - this.transformAxis = this.transformGizmo.selectAxisWithRaycaster(raycaster); + this.transformAxis = this.transformGizmo?.selectAxisWithRaycaster(raycaster); if (this.transformAxis) { console.log('yes transform axis'); diff --git a/universe.js b/universe.js index 5059108976..7db4b4c024 100644 --- a/universe.js +++ b/universe.js @@ -4,18 +4,27 @@ responsibilities include loading the world on url change. */ // import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +import WSRTC from 'wsrtc/wsrtc.js'; import * as Z from 'zjs'; -import {world} from './world.js'; -import physicsManager from './physics-manager.js'; + +import {appsMapName, initialPosY, playersMapName} from './constants.js'; import {loadOverworld} from './overworld.js'; -import {initialPosY} from './constants.js'; -import {parseQuery} from './util.js'; -import metaversefile from 'metaversefile'; +import physicsManager from './physics-manager.js'; +import physxWorkerManager from './physx-worker-manager.js'; +import physx from './physx.js'; +import {playersManager} from './players-manager.js'; +import {getLocalPlayer} from './players.js'; import sceneNames from './scenes/scenes.json'; +import {parseQuery} from './util.js'; +import {world} from './world.js'; + +const physicsScene = physicsManager.getScene(); class Universe extends EventTarget { constructor() { super(); + this.wsrtc = null; this.currentWorld = null; this.sceneLoadedPromise = null; @@ -25,18 +34,18 @@ class Universe extends EventTarget { ((window.location.port ? parseInt(window.location.port, 10) : (window.location.protocol === 'https:' ? 443 : 80)) + 1) + '/worlds/'; } async enterWorld(worldSpec) { - world.disconnectRoom(); + this.disconnectRoom(); const localPlayer = metaversefile.useLocalPlayer(); /* localPlayer.teleportTo(new THREE.Vector3(0, 1.5, 0), camera.quaternion, { relation: 'float', }); */ localPlayer.position.set(0, initialPosY, 0); - localPlayer.resetPhysics(); + localPlayer.characterPhysics.reset(); localPlayer.updateMatrixWorld(); // physicsManager.setPhysicsEnabled(true); // localPlayer.updatePhysics(0, 0); - physicsManager.setPhysicsEnabled(false); + physicsScene.setPhysicsEnabled(false); const _doLoad = async () => { // world.clear(); @@ -45,7 +54,7 @@ class Universe extends EventTarget { const {src, room} = worldSpec; if (!room) { const state = new Z.Doc(); - world.connectState(state); + this.connectState(state); let match; if (src === undefined) { @@ -68,7 +77,7 @@ class Universe extends EventTarget { } else { const p = (async () => { const roomUrl = this.getWorldsHost() + room; - await world.connectRoom(roomUrl); + await this.connectRoom(roomUrl); })(); promises.push(p); } @@ -78,12 +87,10 @@ class Universe extends EventTarget { await this.sceneLoadedPromise; this.sceneLoadedPromise = null; }; - await _doLoad().catch(err => { - console.warn(err); - }); + await _doLoad(); - localPlayer.resetPhysics(); - physicsManager.setPhysicsEnabled(true); + localPlayer.characterPhysics.reset(); + physicsScene.setPhysicsEnabled(true); localPlayer.updatePhysics(0, 0); this.currentWorld = worldSpec; @@ -120,7 +127,84 @@ class Universe extends EventTarget { } } } + + isConnected() { return !!this.wsrtc; } + + getConnection() { return this.wsrtc; } + + // called by enterWorld() in universe.js + // This is called in single player mode instead of connectRoom + connectState(state) { + state.setResolvePriority(1); + playersManager.bindState(state.getArray(playersMapName)); + + world.appManager.unbindState(); + world.appManager.clear(); + const appsArray = state.get(appsMapName, Z.Array); + + world.appManager.bindState(appsArray); + + const localPlayer = getLocalPlayer(); + localPlayer.bindState(state.getArray(playersMapName)); + } + + // called by enterWorld() in universe.js + // This is called when a user joins a multiplayer room + // either from single player or directly from a link + async connectRoom(u, state = new Z.Doc()) { + // Players cannot be initialized until the physx worker is loaded + // Otherwise you will receive allocation errors because the module instance is undefined + await physx.waitForLoad(); + await physxWorkerManager.waitForLoad(); + const localPlayer = getLocalPlayer(); + + state.setResolvePriority(1); + + // Create a new instance of the websocket rtc client + // This comes from webaverse/wsrtc/wsrtc.js + this.wsrtc = new WSRTC(u, { + localPlayer, + crdtState: state, + }); + + // This is called when the websocket connection opens, i.e. server is connectedw + const open = e => { + this.wsrtc.removeEventListener('open', open); + // Clear the last world state + const appsArray = state.get(appsMapName, Z.Array); + playersManager.bindState(state.getArray(playersMapName)); + + // Unbind the world state to clear existing apps + world.appManager.unbindState(); + world.appManager.clear(); + // Bind the new state + world.appManager.bindState(appsArray); + + // Called by WSRTC when the connection is initialized + const init = e => { + this.wsrtc.removeEventListener('init', init); + localPlayer.bindState(state.getArray(playersMapName)); + + this.wsrtc.addEventListener('audio', e => { + const player = playersManager.remotePlayersByInteger.get(e.data.playerId); + player.processAudioData(e.data); + }); + }; + + this.wsrtc.addEventListener('init', init); + }; + + this.wsrtc.addEventListener('open', open); + + return this.wsrtc; + } + + // called by enterWorld() in universe.js, to make sure we aren't already connected + disconnectRoom() { + if (this.wsrtc && this.wsrtc.state === 'open') this.wsrtc.close(); + this.wsrtc = null; + } } const universe = new Universe(); -export default universe; +export default universe; \ No newline at end of file diff --git a/unlock.js b/unlock.js index 818f22a867..b102a6e121 100644 --- a/unlock.js +++ b/unlock.js @@ -1,8 +1,4 @@ import * as THREE from './three.module.js'; -// import {GLTFLoader} from './GLTFLoader.js'; -// import {GLTFExporter} from './GLTFExporter.js'; -// import {makePromise, downloadFile, convertMeshToPhysicsMesh} from './util.js'; -// import {loginManager} from './login.js'; import Web3 from './web3.min.js'; import bip39 from './bip39.js'; import hdkeySpec from './hdkey.js'; diff --git a/util.js b/util.js index e0b70a5d29..75eed293ad 100644 --- a/util.js +++ b/util.js @@ -1,15 +1,21 @@ import * as THREE from 'three'; import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js'; // import atlaspack from './atlaspack.js'; -import { getAddressFromMnemonic } from './blockchain.js'; -import {playersMapName, tokensHost, storageHost, accountsHost, loginEndpoint, audioTimeoutTime} from './constants.js'; +import { + playersMapName, + tokensHost, + storageHost, + /*accountsHost, loginEndpoint,*/ audioTimeoutTime, +} from './constants.js'; +// import { getRenderer } from './renderer.js'; +import { IdAllocator } from './id-allocator'; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); const localVector3 = new THREE.Vector3(); const localVector4 = new THREE.Vector3(); const localVector5 = new THREE.Vector3(); -// const localVector6 = new THREE.Vector3(); +const localVector6 = new THREE.Vector3(); // const localQuaternion = new THREE.Quaternion(); // const localQuaternion2 = new THREE.Quaternion(); // const localQuaternion3 = new THREE.Quaternion(); @@ -25,7 +31,9 @@ export function jsonParse(s, d = null) { } export function parseQuery(queryString) { const query = {}; - const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&'); + const pairs = ( + queryString[0] === '?' ? queryString.substr(1) : queryString + ).split('&'); for (let i = 0; i < pairs.length; i++) { const pair = pairs[i].split('='); const k = decodeURIComponent(pair[0]); @@ -40,10 +48,12 @@ export function getRandomString() { return Math.random().toString(36).substring(7); } export function hex2Uint8Array(hex) { - return new Uint8Array(hex.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16))) + return new Uint8Array(hex.match(/[\da-f]{2}/gi).map((h) => parseInt(h, 16))); } export function uint8Array2hex(uint8Array) { - return Array.prototype.map.call(uint8Array, x => ('00' + x.toString(16)).slice(-2)).join(''); + return Array.prototype.map + .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) + .join(''); } export function getExt(fileName) { const match = fileName @@ -75,9 +85,18 @@ export function readFile(file) { export function snapPosition(o, positionSnap) { if (positionSnap > 0) { - o.position.x = Math.round((o.position.x + positionSnap/2) / positionSnap) * positionSnap - positionSnap/2; - o.position.y = Math.round((o.position.y + positionSnap/2) / positionSnap) * positionSnap - positionSnap/2; - o.position.z = Math.round((o.position.z + positionSnap/2) / positionSnap) * positionSnap - positionSnap/2; + o.position.x = + Math.round((o.position.x + positionSnap / 2) / positionSnap) * + positionSnap - + positionSnap / 2; + o.position.y = + Math.round((o.position.y + positionSnap / 2) / positionSnap) * + positionSnap - + positionSnap / 2; + o.position.z = + Math.round((o.position.z + positionSnap / 2) / positionSnap) * + positionSnap - + positionSnap / 2; } } export function snapRotation(o, rotationSnap) { @@ -97,8 +116,8 @@ export function makePromise() { return p; } -let nextMeshId = 0; -export const getNextMeshId = () => ++nextMeshId; +// const meshIdAllcator = new IdAllocator(); +// export const getNextMeshId = meshIdAllcator.alloc.bind(meshIdAllcator); export function clone(o) { return JSON.parse(JSON.stringify(o)); @@ -188,15 +207,15 @@ export class WaitQueue { }; */ export function mergeMeshes(meshes, geometries, textures) { const size = 512; - const images = textures.map(texture => texture && texture.image); + const images = textures.map((texture) => texture && texture.image); const colorsImage = document.createElement('canvas'); - colorsImage.width = size/2; + colorsImage.width = size / 2; colorsImage.height = 1; colorsImage.rigid = true; const colorsImageCtx = colorsImage.getContext('2d'); colorsImageCtx.fillStyle = '#FFF'; - colorsImageCtx.fillRect(0, 0, colorsImage.width, colorsImage.height); - const {atlasCanvas, rects} = _makeAtlas(size, images.concat(colorsImage)); + colorsImageCtx.fillRect(0, 0, colorsImage.width, colorsImage.height); + const { atlasCanvas, rects } = _makeAtlas(size, images.concat(colorsImage)); const colorsImageRect = rects[rects.length - 1]; let colorsImageColorIndex = 0; const atlasCanvasCtx = atlasCanvas.getContext('2d'); @@ -211,7 +230,7 @@ export function mergeMeshes(meshes, geometries, textures) { } const positions = new Float32Array(numPositions); - const uvs = new Float32Array(numPositions / 3 * 2); + const uvs = new Float32Array((numPositions / 3) * 2); const colors = new Float32Array(numPositions); const indices = new Uint32Array(numIndices); let positionIndex = 0; @@ -221,7 +240,7 @@ export function mergeMeshes(meshes, geometries, textures) { for (let i = 0; i < meshes.length; i++) { const mesh = meshes[i]; const geometry = geometries[i]; - const {material} = mesh; + const { material } = mesh; const rect = rects[i]; geometry.applyMatrix4(mesh.matrixWorld); @@ -232,7 +251,11 @@ export function mergeMeshes(meshes, geometries, textures) { indices[indicesIndex++] = geometry.index.array[i] + indexOffset; } } else { - for (let i = 0; i < geometry.attributes.position.array.length / 3; i++) { + for ( + let i = 0; + i < geometry.attributes.position.array.length / 3; + i++ + ) { indices[indicesIndex++] = i + indexOffset; } } @@ -241,8 +264,11 @@ export function mergeMeshes(meshes, geometries, textures) { positionIndex += geometry.attributes.position.array.length; if (geometry.attributes.uv && rect) { for (let i = 0; i < geometry.attributes.uv.array.length; i += 2) { - uvs[uvIndex + i] = rect.x / size + geometry.attributes.uv.array[i] * rect.w / size; - uvs[uvIndex + i + 1] = rect.y / size + geometry.attributes.uv.array[i + 1] * rect.h / size; + uvs[uvIndex + i] = + rect.x / size + (geometry.attributes.uv.array[i] * rect.w) / size; + uvs[uvIndex + i + 1] = + rect.y / size + + (geometry.attributes.uv.array[i + 1] * rect.h) / size; } } else { if (material.color) { @@ -251,42 +277,40 @@ export function mergeMeshes(meshes, geometries, textures) { color.lerp(material.emissive, material.emissiveIntensity); } atlasCanvasCtx.fillStyle = color.getStyle(); - const uv = new THREE.Vector2(colorsImageRect.x + colorsImageColorIndex, colorsImageRect.y); - atlasCanvasCtx.fillRect( - uv.x, - uv.y, - uv.x + 1, - uv.y + 1 + const uv = new THREE.Vector2( + colorsImageRect.x + colorsImageColorIndex, + colorsImageRect.y ); + atlasCanvasCtx.fillRect(uv.x, uv.y, uv.x + 1, uv.y + 1); colorsImageColorIndex++; uv.x += 0.5; uv.y += 0.5; for (let i = 0; i < geometry.attributes.uv.array.length; i += 2) { - uvs[uvIndex + i] = uv.x/size; - uvs[uvIndex + i + 1] = uv.y/size; + uvs[uvIndex + i] = uv.x / size; + uvs[uvIndex + i + 1] = uv.y / size; } - } else if (material.uniforms && material.uniforms.color1 && material.uniforms.color2) { + } else if ( + material.uniforms && + material.uniforms.color1 && + material.uniforms.color2 + ) { atlasCanvasCtx.fillStyle = material.uniforms.color1.value.getStyle(); - const uv1 = new THREE.Vector2(colorsImageRect.x + colorsImageColorIndex, colorsImageRect.y); - atlasCanvasCtx.fillRect( - uv1.x, - uv1.y, - uv1.x + 1, - uv1.y + 1 + const uv1 = new THREE.Vector2( + colorsImageRect.x + colorsImageColorIndex, + colorsImageRect.y ); + atlasCanvasCtx.fillRect(uv1.x, uv1.y, uv1.x + 1, uv1.y + 1); colorsImageColorIndex++; uv1.x += 0.5; uv1.y += 0.5; atlasCanvasCtx.fillStyle = material.uniforms.color2.value.getStyle(); - const uv2 = new THREE.Vector2(colorsImageRect.x + colorsImageColorIndex, colorsImageRect.y); - atlasCanvasCtx.fillRect( - uv2.x, - uv2.y, - uv2.x + 1, - uv2.y + 1 + const uv2 = new THREE.Vector2( + colorsImageRect.x + colorsImageColorIndex, + colorsImageRect.y ); + atlasCanvasCtx.fillRect(uv2.x, uv2.y, uv2.x + 1, uv2.y + 1); colorsImageColorIndex++; uv2.x += 0.5; uv2.y += 0.5; @@ -295,14 +319,14 @@ export function mergeMeshes(meshes, geometries, textures) { const y = geometry.attributes.uv.array[i]; const uv = uv1.clone().lerp(uv2, y); - uvs[uvIndex + i] = uv.x/size; - uvs[uvIndex + i + 1] = uv.y/size; + uvs[uvIndex + i] = uv.x / size; + uvs[uvIndex + i + 1] = uv.y / size; } } else { throw new Error('failed to uv mesh colors'); } } - uvIndex += geometry.attributes.position.array.length / 3 * 2; + uvIndex += (geometry.attributes.position.array.length / 3) * 2; if (geometry.attributes.color) { colors.set(geometry.attributes.color.array, colorIndex); } else { @@ -310,7 +334,7 @@ export function mergeMeshes(meshes, geometries, textures) { } colorIndex += geometry.attributes.position.array.length; } - if (textures.some(texture => !!texture)) { + if (textures.some((texture) => !!texture)) { colors.fill(1); } geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); @@ -318,7 +342,9 @@ export function mergeMeshes(meshes, geometries, textures) { geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3)); geometry.setIndex(new THREE.BufferAttribute(indices, 1)); } - geometry.boundingBox = new THREE.Box3().setFromBufferAttribute(geometry.attributes.position); + geometry.boundingBox = new THREE.Box3().setFromBufferAttribute( + geometry.attributes.position + ); const texture = new THREE.Texture(atlasCanvas); texture.flipY = false; @@ -334,31 +360,29 @@ export function mergeMeshes(meshes, geometries, textures) { return mesh; } -let nextPhysicsId = 0; +/* let nextPhysicsId = 0; export function getNextPhysicsId() { return ++nextPhysicsId; -} +} */ +const physicsIdAllcator = new IdAllocator(); +export const getNextPhysicsId = physicsIdAllcator.alloc.bind(physicsIdAllcator); +export const freePhysicsId = physicsIdAllcator.free.bind(physicsIdAllcator); export function convertMeshToPhysicsMesh(topMesh) { const oldParent = topMesh.parent; oldParent && oldParent.remove(topMesh); topMesh.updateMatrixWorld(); - // localMatrix.copy(topMesh.matrix).invert(); const meshes = []; - topMesh.traverse(o => { + topMesh.traverse((o) => { if (o.isMesh) { meshes.push(o); } }); - const newGeometries = meshes.map(mesh => { - const {geometry} = mesh; + const newGeometries = meshes.map((mesh) => { + const { geometry } = mesh; const newGeometry = new THREE.BufferGeometry(); - /* if (mesh.isSkinnedMesh) { - console.log('compile skinned mesh', mesh); - } */ - // localMatrix2.multiplyMatrices(localMatrix, mesh.isSkinnedMesh ? topMesh.matrixWorld : mesh.matrixWorld); if (mesh.isSkinnedMesh) { localMatrix2.identity(); } else { @@ -366,58 +390,81 @@ export function convertMeshToPhysicsMesh(topMesh) { } if (geometry.attributes.position.isInterleavedBufferAttribute) { - const positions = new Float32Array(geometry.attributes.position.count * 3); - for (let i = 0, j = 0; i < positions.length; i += 3, j += geometry.attributes.position.data.stride) { + const positions = new Float32Array( + geometry.attributes.position.count * 3 + ); + for ( + let i = 0, j = 0; + i < positions.length; + i += 3, j += geometry.attributes.position.data.stride + ) { localVector .fromArray(geometry.attributes.position.data.array, j) .applyMatrix4(localMatrix2) .toArray(positions, i); } - newGeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); + newGeometry.setAttribute( + 'position', + new THREE.BufferAttribute(positions, 3) + ); } else { - const positions = new Float32Array(geometry.attributes.position.array.length); + const positions = new Float32Array( + geometry.attributes.position.array.length + ); for (let i = 0; i < positions.length; i += 3) { localVector .fromArray(geometry.attributes.position.array, i) .applyMatrix4(localMatrix2) .toArray(positions, i); } - newGeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); + newGeometry.setAttribute( + 'position', + new THREE.BufferAttribute(positions, 3) + ); } - + if (geometry.index) { newGeometry.setIndex(geometry.index); } - + return newGeometry; }); if (oldParent) { oldParent.add(topMesh); topMesh.updateMatrixWorld(); } + let physicsMesh; if (newGeometries.length > 0) { - const newGeometry = BufferGeometryUtils.mergeBufferGeometries(newGeometries); - const physicsMesh = new THREE.Mesh(newGeometry); - /* physicsMesh.position.copy(topMesh.position); - physicsMesh.quaternion.copy(topMesh.quaternion); - physicsMesh.scale.copy(topMesh.scale); - physicsMesh.matrix.copy(topMesh.matrix); - physicsMesh.matrixWorld.copy(topMesh.matrixWorld); */ - physicsMesh.visible = false; - return physicsMesh; + const newGeometry = + BufferGeometryUtils.mergeBufferGeometries(newGeometries); + physicsMesh = new THREE.Mesh(newGeometry); } else { - const physicsMesh = new THREE.Mesh(); - physicsMesh.visible = false; - return physicsMesh; + physicsMesh = new THREE.Mesh(); } - + physicsMesh.visible = false; + + if (topMesh.parent) { + topMesh.parent.matrixWorld.decompose( + physicsMesh.position, + physicsMesh.quaternion, + physicsMesh.scale + ); + physicsMesh.updateMatrixWorld(); + } + + return physicsMesh; } export function parseCoord(s) { if (s) { const split = s.match(/^\[(-?[0-9\.]+),(-?[0-9\.]+),(-?[0-9\.]+)\]$/); let x, y, z; - if (split && !isNaN(x = parseFloat(split[1])) && !isNaN(y = parseFloat(split[2])) && !isNaN(z = parseFloat(split[3]))) { + if ( + split && + !isNaN((x = parseFloat(split[1]))) && + !isNaN((y = parseFloat(split[2]))) && + !isNaN((z = parseFloat(split[3]))) + ) { return new THREE.Vector3(x, y, z); } else { return null; @@ -429,9 +476,19 @@ export function parseCoord(s) { export function parseExtents(s) { if (s) { - const split = s.match(/^\[\[(-?[0-9\.]+),(-?[0-9\.]+),(-?[0-9\.]+)\],\[(-?[0-9\.]+),(-?[0-9\.]+),(-?[0-9\.]+)\]\]$/); + const split = s.match( + /^\[\[(-?[0-9\.]+),(-?[0-9\.]+),(-?[0-9\.]+)\],\[(-?[0-9\.]+),(-?[0-9\.]+),(-?[0-9\.]+)\]\]$/ + ); let x1, y1, z1, x2, y2, z2; - if (split && !isNaN(x1 = parseFloat(split[1])) && !isNaN(y1 = parseFloat(split[2])) && !isNaN(z1 = parseFloat(split[3])) && !isNaN(x2 = parseFloat(split[4])) && !isNaN(y2 = parseFloat(split[5])) && !isNaN(z2 = parseFloat(split[6]))) { + if ( + split && + !isNaN((x1 = parseFloat(split[1]))) && + !isNaN((y1 = parseFloat(split[2]))) && + !isNaN((z1 = parseFloat(split[3]))) && + !isNaN((x2 = parseFloat(split[4]))) && + !isNaN((y2 = parseFloat(split[5]))) && + !isNaN((z2 = parseFloat(split[6]))) + ) { return new THREE.Box3( new THREE.Vector3(x1, y1, z1), new THREE.Vector3(x2, y2, z2) @@ -457,7 +514,7 @@ export async function contentIdToFile(contentId) { if (typeof contentId === 'number') { const res = await fetch(`${tokensHost}/${contentId}`); token = await res.json(); - const {hash, name, ext} = token.properties; + const { hash, name, ext } = token.properties; const res2 = await fetch(`${storageHost}/${hash}`); const file = await res2.blob(); @@ -472,7 +529,10 @@ export async function contentIdToFile(contentId) { url = match[1]; name = match[2]; } else { - console.warn('blob url not appended with /filename.ext and cannot be interpreted', contentId); + console.warn( + 'blob url not appended with /filename.ext and cannot be interpreted', + contentId + ); return null; } } else { @@ -490,13 +550,11 @@ export async function contentIdToFile(contentId) { } } -export const addDefaultLights = (scene, { - shadowMap = false, -} = {}) => { - const ambientLight = new THREE.AmbientLight(0xFFFFFF, 2); +export const addDefaultLights = (scene, { shadowMap = false } = {}) => { + const ambientLight = new THREE.AmbientLight(0xffffff, 2); scene.add(ambientLight); scene.ambientLight = ambientLight; - const directionalLight = new THREE.DirectionalLight(0xFFFFFF, 2); + const directionalLight = new THREE.DirectionalLight(0xffffff, 2); directionalLight.position.set(1, 2, 3); scene.add(directionalLight); scene.directionalLight = directionalLight; @@ -514,16 +572,16 @@ export const addDefaultLights = (scene, { } */ }; -export const unFrustumCull = o => { - o.traverse(o => { +export const unFrustumCull = (o) => { + o.traverse((o) => { if (o.isMesh) { o.frustumCulled = false; } }); }; -export const enableShadows = o => { - o.traverse(o => { +export const enableShadows = (o) => { + o.traverse((o) => { if (o.isMesh) { o.castShadow = true; o.receiveShadow = true; @@ -531,11 +589,11 @@ export const enableShadows = o => { }); }; -export const capitalize = s => s[0].toUpperCase() + s.slice(1); +export const capitalize = (s) => s[0].toUpperCase() + s.slice(1); export const epochStartTime = Date.now(); -export const flipGeomeryUvs = geometry => { +export const flipGeomeryUvs = (geometry) => { for (let i = 0; i < geometry.attributes.uv.array.length; i += 2) { const j = i + 1; geometry.attributes.uv.array[j] = 1 - geometry.attributes.uv.array[j]; @@ -546,26 +604,22 @@ export const updateRaycasterFromMouseEvent = (() => { const localVector2D = new THREE.Vector2(); return (renderer, camera, e, raycaster) => { const mouse = localVector2D; - mouse.x = (e.clientX / renderer.domElement.width * renderer.getPixelRatio()) * 2 - 1; - mouse.y = -(e.clientY / renderer.domElement.height * renderer.getPixelRatio()) * 2 + 1; - raycaster.setFromCamera( - mouse, - camera - ); + mouse.x = + (e.clientX / renderer.domElement.width) * renderer.getPixelRatio() * 2 - + 1; + mouse.y = + -((e.clientY / renderer.domElement.height) * renderer.getPixelRatio()) * + 2 + + 1; + raycaster.setFromCamera(mouse, camera); }; })(); export const getCameraUiPlane = (camera, distance, plane) => { plane.setFromNormalAndCoplanarPoint( - localVector3 - .set(0, 0, 1) - .applyQuaternion(camera.quaternion), + localVector3.set(0, 0, 1).applyQuaternion(camera.quaternion), localVector4 .copy(camera.position) - .add( - localVector5 - .set(0, 0, -distance) - .applyQuaternion(camera.quaternion) - ) + .add(localVector5.set(0, 0, -distance).applyQuaternion(camera.quaternion)) ); return plane; }; @@ -583,13 +637,27 @@ export const getUiForwardIntersection = (() => { export function makeId(length) { let result = ''; - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const characters = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * characters.length)); } return result; } +export function chunkMinForPosition(x, y, z, chunkSize) { + localVector6.set( + Math.floor(x / chunkSize), + Math.floor(y / chunkSize), + Math.floor(z / chunkSize) + ); + return localVector6; +} + +export function getLockChunkId(chunkPosition) { + return `chunk:${chunkPosition.x}, ${chunkPosition.y}, ${chunkPosition.z}}`; +} + /* async function contentIdToStorageUrl(id) { if (typeof id === 'number') { const hash = await contracts.mainnetsidechain.NFT.methods.getHash(id + '').call(); @@ -601,47 +669,19 @@ export function makeId(length) { } } */ -async function pullUserObject(loginToken) { - const address = getAddressFromMnemonic(loginToken.mnemonic); - const res = await fetch(`${accountsHost}/${address}`); - var result = await res.json(); - result.mnemonic = loginToken.mnemonic; - return result; -} - -export const handleDiscordLogin = async (code, id) => { - if (!code) { - return; - } - try{ - let res = await fetch(loginEndpoint + `?discordid=${encodeURIComponent(id)}&discordcode=${encodeURIComponent(code)}&redirect_uri=${window.location.origin}/login`, { - method: 'POST', - }); - res = await res.json(); - if (!res.error) { - return await pullUserObject(res); - } else { - //console.warn('Unable to login ', res.error); - return res; - } - }catch(e){ - - } -}; - export function mod(a, n) { - return (a % n + n) % n; + return ((a % n) + n) % n; } -export const modUv = uv => { +export const modUv = (uv) => { uv.x = mod(uv.x, 1); uv.y = mod(uv.y, 1); return uv; -} +}; export function angleDifference(angle1, angle2) { let a = angle2 - angle1; - a = mod(a + Math.PI, Math.PI*2) - Math.PI; + a = mod(a + Math.PI, Math.PI * 2) - Math.PI; return a; } @@ -670,24 +710,22 @@ export function getPlayerPrefix(playerId) { export function fitCameraToBoundingBox(camera, box, fitOffset = 1) { const size = box.getSize(localVector); const center = box.getCenter(localVector2); - - const maxSize = Math.max( size.x, size.y, size.z ); - const fitHeightDistance = maxSize / ( 2 * Math.atan( Math.PI * camera.fov / 360 ) ); + + const maxSize = Math.max(size.x, size.y, size.z); + const fitHeightDistance = + maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360)); const fitWidthDistance = fitHeightDistance / camera.aspect; const distance = fitOffset * Math.max(fitHeightDistance, fitWidthDistance); - - const direction = center.clone() + + const direction = center + .clone() .sub(camera.position) .normalize() .multiplyScalar(distance); camera.position.copy(center).add(direction); camera.quaternion.setFromRotationMatrix( - localMatrix.lookAt( - camera.position, - center, - camera.up, - ) + localMatrix.lookAt(camera.position, center, camera.up) ); } @@ -718,7 +756,7 @@ export async function loadAudio(u) { _cleanup(); accept(); }; - audio.onerror = err => { + audio.onerror = (err) => { _cleanup(); reject(err); }; @@ -737,7 +775,7 @@ export async function loadAudioBuffer(audioContext, url) { const audioBuffer = await audioContext.decodeAudioData(arrayBuffer); return audioBuffer; } -export const memoize = fn => { +export const memoize = (fn) => { let loaded = false; let cache = null; return () => { @@ -749,40 +787,37 @@ export const memoize = fn => { }; }; export function shuffle(array, rng = Math.random) { - let currentIndex = array.length, randomIndex; + let currentIndex = array.length, + randomIndex; // While there remain elements to shuffle... while (currentIndex != 0) { - // Pick a remaining element... randomIndex = Math.floor(rng() * currentIndex); currentIndex--; // And swap it with the current element. [array[currentIndex], array[randomIndex]] = [ - array[randomIndex], array[currentIndex]]; + array[randomIndex], + array[currentIndex], + ]; } return array; } -export const waitForFrame = () => new Promise(accept => { - requestAnimationFrame(() => { - accept(); +export const waitForFrame = () => + new Promise((accept) => { + requestAnimationFrame(() => { + accept(); + }); }); -}); -const doUpload = async ( - u, - f, - { - onProgress = null, - } = {} -) => { +const doUpload = async (u, f, { onProgress = null } = {}) => { var xhr = new XMLHttpRequest(); xhr.open('POST', u, true); // xhr.setRequestHeader('Content-Type', 'application/json'); xhr.responseType = 'json'; - xhr.upload.onprogress = e => { + xhr.upload.onprogress = (e) => { // const {lengthComputable, loaded, total} = e; // console.log(); onProgress && onProgress(e); @@ -806,20 +841,37 @@ const doUpload = async ( }); const hashes = await res.json(); return hashes; */ -} -export const proxifyUrl = u => { +}; +export const proxifyUrl = (u) => { const match = u.match(/^([a-z0-9]+):\/\/([a-z0-9\-\.]+)(.+)$/i); if (match) { - return 'https://' + match[1] + '-' + match[2].replace(/\-/g, '--').replace(/\./g, '-') + '.proxy.webaverse.com' + match[3]; + return ( + 'https://' + + match[1] + + '-' + + match[2].replace(/\-/g, '--').replace(/\./g, '-') + + '.proxy.webaverse.com' + + match[3] + ); } else { return u; } }; -export const getDropUrl = o => { +export const createRelativeUrl = (u, baseUrl) => { + if (/^(?:[\.\/]|([a-z0-9]+):\/\/)/i.test(u)) { + return u; + } else { + if (!/([a-z0-9]+):\/\//i.test(baseUrl)) { + baseUrl = new URL(baseUrl, window.location.href).href; + } + return new URL(u, baseUrl).href; + } +}; +export const getDropUrl = (o) => { let u = null; if (typeof o?.start_url === 'string') { u = o.start_url; - /* } else if (typeof j?.asset_contract?.address === 'string') { + /* } else if (typeof j?.asset_contract?.address === 'string') { const {token_id, asset_contract} = j; const {address} = asset_contract; @@ -875,7 +927,7 @@ export const getDropUrl = o => { } return u; }; -export const handleDropJsonItem = async item => { +export const handleDropJsonItem = async (item) => { if (item?.kind === 'string') { const s = await new Promise((accept, reject) => { item.getAsString(accept); @@ -891,15 +943,10 @@ export const handleDropJsonItem = async item => { } return null; }; -export const handleUpload = async ( - item, - { - onProgress = null, - } = {} -) => { +export const handleUpload = async (item, { onProgress = null } = {}) => { console.log('uploading...', item); - - const _handleFileList = async item => { + + const _handleFileList = async (item) => { const formData = new FormData(); formData.append( @@ -920,16 +967,16 @@ export const handleUpload = async ( onProgress, }); - const rootDirectory = hashes.find(h => h.name === ''); + const rootDirectory = hashes.find((h) => h.name === ''); const rootDirectoryHash = rootDirectory.hash; return `https://ipfs.webaverse.com/ipfs/${rootDirectoryHash}/`; }; - const _handleString = item => handleDropJsonItem(item); - const _handleDirectory = async entry => { + const _handleString = (item) => handleDropJsonItem(item); + const _handleDirectory = async (entry) => { const formData = new FormData(); - + const rootEntry = entry; - const _recurse = async entry => { + const _recurse = async (entry) => { function getFullPath(entry) { return entry.fullPath.slice(rootEntry.fullPath.length); } @@ -942,11 +989,11 @@ export const handleUpload = async ( }), fullPath ); - + const reader = entry.createReader(); async function readEntries() { const entries = await new Promise((accept, reject) => { - reader.readEntries(entries => { + reader.readEntries((entries) => { if (entries.length > 0) { accept(entries); } else { @@ -957,7 +1004,7 @@ export const handleUpload = async ( return entries; } let entriesArray; - while (entriesArray = await readEntries()) { + while ((entriesArray = await readEntries())) { for (const entry of entriesArray) { if (entry.isFile) { const file = await new Promise((accept, reject) => { @@ -970,7 +1017,7 @@ export const handleUpload = async ( await _recurse(entry); } } - } + } }; await _recurse(rootEntry); @@ -978,22 +1025,22 @@ export const handleUpload = async ( onProgress, }); - const rootDirectory = hashes.find(h => h.name === ''); + const rootDirectory = hashes.find((h) => h.name === ''); const rootDirectoryHash = rootDirectory.hash; return `https://ipfs.webaverse.com/ipfs/${rootDirectoryHash}/`; }; - const _handleFile = async file => { + const _handleFile = async (file) => { const j = await doUpload(`https://ipfs.webaverse.com/`, file, { onProgress, }); - const {hash} = j; - const {name} = file; + const { hash } = j; + const { name } = file; return `${storageHost}/${hash}/${name}`; }; - const _uploadObject = async item => { + const _uploadObject = async (item) => { let u = null; - + if (item instanceof FileList) { u = _handleFileList(item); } else { @@ -1016,15 +1063,16 @@ export const handleUpload = async ( return u; }; -export const loadImage = u => new Promise((resolve, reject) => { - const img = new Image(); - img.onload = () => { - resolve(img); - }; - img.onerror = reject; - img.crossOrigin = 'Anonymous'; - img.src = u; -}); +export const loadImage = (u) => + new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => { + resolve(img); + }; + img.onerror = reject; + img.crossOrigin = 'Anonymous'; + img.src = u; + }); export const drawImageContain = (ctx, img) => { const imgWidth = img.width; const imgHeight = img.height; @@ -1057,9 +1105,10 @@ export const imageToCanvas = (img, w, h) => { return canvas; }; -export const isTransferable = o => { +export const isTransferable = (o) => { const ctor = o?.constructor; - return ctor === MessagePort || + return ( + ctor === MessagePort || ctor === ImageBitmap || ctor === ImageData || // ctor === AudioData || @@ -1072,11 +1121,12 @@ export const isTransferable = o => { ctor === Uint32Array || ctor === Int32Array || ctor === Float32Array || - ctor === Float64Array; + ctor === Float64Array + ); }; -export const getTransferables = o => { +export const getTransferables = (o) => { const result = []; - const _recurse = o => { + const _recurse = (o) => { if (Array.isArray(o)) { for (const e of o) { _recurse(e); @@ -1100,7 +1150,7 @@ export const selectVoice = (voicer) => { for (let i = 0; i < weights.length; i++) { totalWeight += weights[i]; } - + let random = Math.random() * totalWeight; for (let i = 0; i < weights.length; i++) { if (random < weights[i]) { @@ -1108,18 +1158,18 @@ export const selectVoice = (voicer) => { } random -= weights[i]; } - + return -1; - } + }; // the weight of each voice is proportional to the inverse of the number of times it has been used const maxNonce = voicer.reduce((max, voice) => Math.max(max, voice.nonce), 0); - const weights = voicer.map(({nonce}) => { - return 1 - (nonce / (maxNonce + 1)); + const weights = voicer.map(({ nonce }) => { + return 1 - nonce / (maxNonce + 1); }); const selectionIndex = weightedRandom(weights); const voiceSpec = voicer[selectionIndex]; voiceSpec.nonce++; - while (voicer.every(voice => voice.nonce > 0)) { + while (voicer.every((voice) => voice.nonce > 0)) { for (const voiceSpec of voicer) { voiceSpec.nonce--; } @@ -1136,7 +1186,7 @@ export const splitLinesToWidth = (() => { } return tempCanvas; }; - + return (text, font, maxWidth) => { const canvas = _getTempCanvas(); const ctx = canvas.getContext('2d'); diff --git a/voice-input/voice-input.js b/voice-input/voice-input.js index 9554f57c31..a573f703e4 100644 --- a/voice-input/voice-input.js +++ b/voice-input/voice-input.js @@ -21,7 +21,7 @@ class VoiceInput extends EventTarget { const localPlayer = metaversefile.useLocalPlayer(); localPlayer.setMicMediaStream(this.mediaStream); - const wsrtc = world.getConnection(); + const wsrtc = universe.getConnection(); if (wsrtc) { wsrtc.enableMic(this.mediaStream); } @@ -34,7 +34,7 @@ class VoiceInput extends EventTarget { } disableMic() { /* if (this.micEnabled()) */ { - const wsrtc = world.getConnection(); + const wsrtc = universe.getConnection(); if (wsrtc) { wsrtc.disableMic(); } else { diff --git a/voice-output/voice-endpoint-voicer.js b/voice-output/voice-endpoint-voicer.js index c061872d71..6bad652148 100644 --- a/voice-output/voice-endpoint-voicer.js +++ b/voice-output/voice-endpoint-voicer.js @@ -2,6 +2,7 @@ import Avatar from '../avatars/avatars.js'; import {makePromise} from '../util.js'; +import {voiceEndpointBaseUrl} from '../constants.js'; class VoiceEndpoint { constructor(url) { @@ -9,12 +10,12 @@ class VoiceEndpoint { } } class PreloadMessage { - constructor(text, parent) { + constructor(voiceEndpointUrl, text) { + this.voiceEndpointUrl = voiceEndpointUrl; this.text = text; - this.parent = parent; this.isPreloadMessage = true; - this.loadPromise = this.parent.loadAudioBuffer(this.text); + this.loadPromise = VoiceEndpointVoicer.loadAudioBuffer(this.voiceEndpointUrl, this.text); } waitForLoad() { return this.loadPromise; @@ -25,27 +26,39 @@ class VoiceEndpointVoicer { this.voiceEndpoint = voiceEndpoint; this.player = player; - this.live = true; + // this.live = true; this.running = false; this.queue = []; this.cancel = null; this.endPromise = null; } + static preloadMessage(voiceEndpointUrl, text) { + return new PreloadMessage(voiceEndpointUrl, text); + } preloadMessage(text) { - return new PreloadMessage(text, this); + return VoiceEndpointVoicer.preloadMessage(this.voiceEndpoint.url.toString(), text); } - async loadAudioBuffer(text) { - const u = new URL(this.voiceEndpoint.url.toString()); - u.searchParams.set('s', text); - const res = await fetch(u/*, { - mode: 'cors', - } */); - const arrayBuffer = await res.arrayBuffer(); + static async loadAudioBuffer(voiceEndpointUrl, text) { + // console.log('load audio buffer', voiceEndpointUrl, text); + try { + const u = new URL(voiceEndpointUrl); + u.searchParams.set('s', text); + const res = await fetch(u/*, { + mode: 'cors', + } */); + const arrayBuffer = await res.arrayBuffer(); - const audioContext = Avatar.getAudioContext(); - const audioBuffer = await audioContext.decodeAudioData(arrayBuffer); - return audioBuffer; + const audioContext = Avatar.getAudioContext(); + const audioBuffer = await audioContext.decodeAudioData(arrayBuffer); + return audioBuffer; + } catch(err) { + console.warn('epic fail', err); + debugger; + } } + /* async loadAudioBuffer(text) { + return VoiceEndpointVoicer.loadAudioBuffer(this.voiceEndpoint.url, text); + } */ start(text) { if (!this.endPromise) { this.endPromise = makePromise(); @@ -58,36 +71,61 @@ class VoiceEndpointVoicer { this.player.avatar.setAudioEnabled(true); } + const _next = () => { + const {endPromise} = this; + if (endPromise) { + this.endPromise = null; + endPromise.accept(); + } + }; + + let live = true; + const cancelFns = [ + () => { + live = false; + _next(); + }, + ]; + this.cancel = () => { + for (const cancelFn of cancelFns) { + cancelFn(); + } + }; + (async () => { const audioBuffer = await (text.isPreloadMessage ? text.waitForLoad() : this.loadAudioBuffer(text)); + if (!live) { + console.log('bail on audio buffer'); + return; + } const audioContext = Avatar.getAudioContext(); const audioBufferSourceNode = audioContext.createBufferSource(); audioBufferSourceNode.buffer = audioBuffer; - audioBufferSourceNode.addEventListener('ended', () => { + const ended = () => { this.cancel = null; this.running = false; - if (this.live) { - if (this.queue.length > 0) { - const text = this.queue.shift(); - this.start(text); - } else { - const {endPromise} = this; - this.endPromise = null; - endPromise.accept(); - } + if (this.queue.length > 0) { + const text = this.queue.shift(); + this.start(text); + } else { + _next(); } - }, {once: true}); + }; + audioBufferSourceNode.addEventListener('ended', ended, {once: true}); + if (!this.player.avatar.microphoneWorker) { + this.player.avatar.setAudioEnabled(true); + } audioBufferSourceNode.connect(this.player.avatar.getAudioInput()); audioBufferSourceNode.start(); - this.cancel = () => { + cancelFns.push(() => { + audioBufferSourceNode.removeEventListener('ended', ended); + audioBufferSourceNode.stop(); audioBufferSourceNode.disconnect(); - - this.cancel = null; - }; + }); })(); } else { this.queue.push(text); @@ -95,16 +133,20 @@ class VoiceEndpointVoicer { return this.endPromise; } stop() { - this.live = false; + // this.live = false; + this.queue.length = 0; if (this.cancel) { this.cancel(); this.cancel = null; } + this.running = false; } } +const getVoiceEndpointUrl = (voiceId) => `${voiceEndpointBaseUrl}?voice=${encodeURIComponent(voiceId)}`; export { VoiceEndpoint, PreloadMessage, VoiceEndpointVoicer, + getVoiceEndpointUrl, }; \ No newline at end of file diff --git a/voices.js b/voices.js index 50329d7385..90dfe27b3a 100644 --- a/voices.js +++ b/voices.js @@ -1,4 +1,7 @@ -import { voicePacksUrl, voiceEndpointsUrl } from './constants.js'; +import { voicePacksUrl, voiceEndpointsUrl, defaultVoiceEndpoint, defaultVoicePackName } from './constants.js'; +import overrides from './overrides.js'; +import {getLocalPlayer} from './players.js'; +import * as voices from './voices.js'; const voicePacks = []; const voiceEndpoints = []; @@ -18,6 +21,42 @@ const loadPromise = (async () => { ]); })(); +[ + 'overrideVoicePack', + 'userVoicePack', +].forEach(key => { + overrides[key].addEventListener('change', async e => { + const voicePackName = overrides.overrideVoicePack.get() ?? overrides.userVoicePack.get() ?? defaultVoicePackName; + const voicePack = voices.voicePacks.find(vp => vp.name === voicePackName); + + const { + audioPath, + indexPath, + } = voicePack; + const voicePacksUrlBase = voicePacksUrl.replace(/\/+[^\/]+$/, ''); + const audioUrl = voicePacksUrlBase + audioPath; + const indexUrl = voicePacksUrlBase + indexPath; + + const localPlayer = getLocalPlayer(); + await localPlayer.loadVoicePack({ + audioUrl, + indexUrl, + }); + }); +}); +[ + 'overrideVoiceEndpoint', + 'userVoiceEndpoint', +].forEach(key => { + overrides[key].addEventListener('change', async e => { + const voiceEndpointName = overrides.overrideVoiceEndpoint.get() ?? overrides.userVoiceEndpoint.get() ?? defaultVoiceEndpoint; + const voiceEndpoint = voices.voiceEndpoints.find(ve => ve.name === voiceEndpointName); + + const localPlayer = getLocalPlayer(); + localPlayer.setVoiceEndpoint(voiceEndpoint.drive_id); + }); +}); + const waitForLoad = () => { return loadPromise; }; diff --git a/webaverse.js b/webaverse.js index 77510f020e..c3fa3d1def 100644 --- a/webaverse.js +++ b/webaverse.js @@ -41,7 +41,12 @@ import performanceTracker from './performance-tracker.js'; import renderSettingsManager from './rendersettings-manager.js'; import metaversefileApi from 'metaversefile'; import WebaWallet from './src/components/wallet.js'; +// import domRenderEngine from './dom-renderer.jsx'; import musicManager from './music-manager.js'; +import physxWorkerManager from './physx-worker-manager.js'; +import story from './story.js'; +import zTargeting from './z-targeting.js'; +import raycastManager from './raycast-manager.js'; const localVector = new THREE.Vector3(); const localVector2 = new THREE.Vector3(); @@ -62,9 +67,8 @@ const sessionOpts = { const frameEvent = new MessageEvent('frame', { data: { - now: 0, + timestamp: 0, timeDiff: 0, - // lastTimestamp: 0, }, }); @@ -72,12 +76,16 @@ export default class Webaverse extends EventTarget { constructor() { super(); + story.listenHack(); + this.loadPromise = (async () => { await Promise.all([ physx.waitForLoad(), Avatar.waitForLoad(), + physxWorkerManager.waitForLoad(), audioManager.waitForLoad(), sounds.waitForLoad(), + zTargeting.waitForLoad(), particleSystemManager.waitForLoad(), transformControls.waitForLoad(), metaverseModules.waitForLoad(), @@ -264,9 +272,9 @@ export default class Webaverse extends EventTarget { // console.log('frame 1'); const renderer = getRenderer(); - frameEvent.data.now = timestamp; + frameEvent.data.timestamp = timestamp; frameEvent.data.timeDiff = timeDiff; - this.dispatchEvent(frameEvent); + game.dispatchEvent(frameEvent); getComposer().render(); @@ -301,16 +309,18 @@ export default class Webaverse extends EventTarget { // this.injectRigInput(); const localPlayer = metaversefileApi.useLocalPlayer(); - if (this.contentLoaded && physicsManager.getPhysicsEnabled()) { - physicsManager.simulatePhysics(timeDiffCapped); + const physicsScene = physicsManager.getScene(); + if (this.contentLoaded && physicsScene.getPhysicsEnabled()) { + physicsScene.simulatePhysics(timeDiffCapped); localPlayer.updatePhysics(timestamp, timeDiffCapped); } transformControls.update(); + raycastManager.update(timestamp, timeDiffCapped); game.update(timestamp, timeDiffCapped); localPlayer.updateAvatar(timestamp, timeDiffCapped); - playersManager.updateRemotePlayers(timestamp, timeDiffCapped); + // playersManager.updateRemotePlayers(timestamp, timeDiffCapped); world.appManager.tick(timestamp, timeDiffCapped, frame); @@ -532,7 +542,7 @@ const _startHacks = webaverse => { } }; */ webaverse.titleCardHack = false; - let haloMeshApp = null; + // let haloMeshApp = null; window.addEventListener('keydown', e => { if (e.which === 46) { // . emotionIndex = -1; diff --git a/world.js b/world.js index 50d68dd13b..a122c204b0 100644 --- a/world.js +++ b/world.js @@ -1,275 +1,6 @@ -/* -this file contains the singleplayer code. -*/ - -import * as THREE from 'three'; -// import * as Y from 'yjs'; -import * as Z from 'zjs/z.mjs'; -import WSRTC from 'wsrtc/wsrtc.js'; - import hpManager from './hp-manager.js'; -// import {rigManager} from './rig.js'; import {AppManager} from './app-manager.js'; -// import {chatManager} from './chat-manager.js'; -// import {getState, setState} from './state.js'; -// import {makeId} from './util.js'; -import {scene, sceneHighPriority, sceneLowPriority} from './renderer.js'; -import metaversefileApi from 'metaversefile'; -import {appsMapName, playersMapName} from './constants.js'; -import {playersManager} from './players-manager.js'; -// import * as metaverseModules from './metaverse-modules.js'; -// import {createParticleSystem} from './particle-system.js'; -// import * as sounds from './sounds.js'; - -const localEuler = new THREE.Euler(); - -// world -export const world = {}; -world.winds = []; - -const appManager = new AppManager({ - appsMap: null, -}); -world.appManager = appManager; - -// world.particleSystem = createParticleSystem(); -// scene.add(world.particleSystem); - -// multiplayer -let wsrtc = null; - -/* // The extra Pose buffers we send along -const extra = { - leftGamepadPosition: new Float32Array(3), - leftGamepadQuaternion: new Float32Array(4), - leftGamepad: new Float32Array(3), - rightGamepadPosition: new Float32Array(3), - rightGamepadQuaternion: new Float32Array(4), - rightGamepad: new Float32Array(3), - attr: new Float32Array(3), - direction: new Float32Array(3), - velocity: new Float32Array(3), - states: new Float32Array(15), -}; */ - -world.getConnection = () => wsrtc; - -world.connectState = state => { - state.setResolvePriority(1); - - world.appManager.unbindState(); - world.appManager.clear(); - world.appManager.bindState(state.getArray(appsMapName)); - - playersManager.bindState(state.getArray(playersMapName)); - - const localPlayer = metaversefileApi.useLocalPlayer(); - localPlayer.bindState(state.getArray(playersMapName)); - - // note: here we should load up the apps in the state since it won't happen automatically. - // until we implement that, only fresh state is supported... -}; -world.isConnected = () => !!wsrtc; -world.connectRoom = async u => { - // await WSRTC.waitForReady(); - - world.appManager.unbindState(); - world.appManager.clear(); - - const localPlayer = metaversefileApi.useLocalPlayer(); - const state = new Z.Doc(); - state.setResolvePriority(1); - wsrtc = new WSRTC(u, { - localPlayer, - crdtState: state, - }); - const open = e => { - wsrtc.removeEventListener('open', open); - - world.appManager.bindState(state.getArray(appsMapName)); - playersManager.bindState(state.getArray(playersMapName)); - - const init = e => { - wsrtc.removeEventListener('init', init); - - localPlayer.bindState(state.getArray(playersMapName)); - if (mediaStream) { - wsrtc.enableMic(mediaStream); - } - }; - wsrtc.addEventListener('init', init); - }; - wsrtc.addEventListener('open', open); - - /* const sendUpdate = () => { - const rig = localPlayer.avatar; - if (rig) { - const {hmd, leftGamepad, rightGamepad} = rig.inputs; - const user = wsrtc.localUser; - - hmd.position.toArray(user.pose.position); - hmd.quaternion.toArray(user.pose.quaternion); - leftGamepad.position.toArray(extra.leftGamepadPosition); - leftGamepad.quaternion.toArray(extra.leftGamepadQuaternion); - extra.leftGamepad[0] = leftGamepad.pointer ? 1 : 0; - extra.leftGamepad[1] = leftGamepad.grip ? 1 : 0; - extra.leftGamepad[2] = leftGamepad.enabled ? 1 : 0; - rightGamepad.position.toArray(extra.rightGamepadPosition); - rightGamepad.quaternion.toArray(extra.rightGamepadPosition); - extra.rightGamepad[0] = rightGamepad.pointer ? 1 : 0; - extra.rightGamepad[1] = rightGamepad.grip ? 1 : 0; - extra.rightGamepad[2] = rightGamepad.enabled ? 1 : 0; - extra.attr[0] = rig.getFloorHeight() ? 1 : 0; - extra.attr[1] = rig.getTopEnabled() ? 1 : 0; - extra.attr[2] = rig.getBottomEnabled() ? 1 : 0; - rig.direction.toArray(extra.direction); - rig.velocity.toArray(extra.velocity); - extra.states[0] = rig.jumpState, - extra.states[1] = rig.jumpTime; - extra.states[2] = rig.flyState; - extra.states[3] = rig.flyTime; - extra.states[4] = rig.useTime; - extra.states[5] = rig.useAnimation; - extra.states[6] = rig.sitState; - extra.states[7] = rig.sitAnimation; - // extra.states[8] = rig.danceState; - extra.states[9] = rig.danceFactor; - extra.states[10] = rig.danceAnimation; - extra.states[11] = rig.throwState; - extra.states[12] = rig.throwTime; - extra.states[13] = rig.crouchState; - extra.states[14] = rig.crouchTime; - - user.setPose( - user.pose.position, - user.pose.quaternion, - user.pose.scale, - [ - extra.leftGamepadPosition, - extra.leftGamepadQuaternion, - extra.leftGamepad, - extra.rightGamepadPosition, - extra.rightGamepadQuaternion, - extra.rightGamepad, - extra.attr, - extra.direction, - extra.velocity, - extra.states, - ], - ); - } - }; - const sendMetadataUpdate = () => { - const localPlayer = metaversefileApi.useLocalPlayer(); - const rig = localPlayer.avatar; - if (rig) { - wsrtc.localUser.setMetadata({ - name, - avatarUrl: rig.app.contentId, - }); - } - }; */ - - // const name = makeId(5); - // let interval, intervalMetadata; - wsrtc.addEventListener('open', async e => { - console.log('Channel Open!'); - - // interval = setInterval(sendUpdate, 10); - // intervalMetadata = setInterval(sendMetadataUpdate, 1000); - // wsrtc.enableMic(); - }, {once: true}); - - wsrtc.addEventListener('close', e => { - console.log('Channel Close!'); - - /* const peerRigIds = rigManager.peerRigs.keys(); - for (const peerRigId of peerRigIds) { - rigManager.removePeerRig(peerRigId); - } - if (interval) { - clearInterval(interval); - } - if (intervalMetadata) { - clearInterval(intervalMetadata); - } */ - }, {once: true}); - - /* wsrtc.addEventListener('join', async e => { - const player = e.data; - - player.audioNode.connect(WSRTC.getAudioContext().destination); - - let joined = true; - player.addEventListener('leave', async () => { - rigManager.removePeerRig(player.id); - joined = false; - }); - let running = false; - const queue = []; - const _handleUpdate = async meta => { - if (!running) { - running = true; - if (joined) { - const peerRig = rigManager.peerRigs.get(player.id); - if (!peerRig) { - await rigManager.addPeerRig(player.id, meta); - const peerRig = rigManager.peerRigs.get(player.id); - if (joined) { - peerRig.peerConnection = player; - } else { - rigManager.removePeerRig(player.id); - } - } else { - if (typeof meta.name === 'string') { - // XXX set the name - } - if (typeof meta.avatarUrl === 'string') { - await rigManager.setPeerAvatarUrl(player.id, meta.avatarUrl); - } - } - } - running = false; - if (queue.length > 0) { - _handleUpdate(queue.pop()); - } - } else { - queue.push(meta); - } - }; - player.metadata.addEventListener('update', e => { - const meta = player.metadata.toJSON(); - // console.log('meta', meta); - _handleUpdate(meta); - }); - player.pose.addEventListener('update', e => { - rigManager.setPeerAvatarPose(player); - }); - }); */ - - wsrtc.close = (close => function() { - close.apply(this, arguments); - - wsrtc.dispatchEvent(new MessageEvent('close')); - })(wsrtc.close); - - return wsrtc; -}; -world.disconnectRoom = () => { - if (wsrtc) { - wsrtc.close(); - wsrtc = null; - - // world.clear(); - // world.newState(); - } -}; -/* world.clear = () => { - appManager.clear(); -}; */ -/* world.save = () => { - return world.appManager.state.toJSON(); -}; */ +import {scene, sceneHighPriority, sceneLowPriority, sceneLowerPriority, sceneLowestPriority} from './renderer.js'; const _getBindSceneForRenderPriority = renderPriority => { switch (renderPriority) { @@ -279,44 +10,46 @@ const _getBindSceneForRenderPriority = renderPriority => { case 'low': { return sceneLowPriority; } - /* case 'postPerspectiveScene': { - return postScenePerspective; + case 'lower': { + return sceneLowerPriority; + } + case 'lowest': { + return sceneLowestPriority; } - case 'postOrthographicScene': { - return postSceneOrthographic; - } */ default: { return scene; } } }; -const _bindHitTracker = app => { - const hitTracker = hpManager.makeHitTracker(); - hitTracker.bind(app); - app.dispatchEvent({type: 'hittrackeradded'}); - const die = () => { - world.appManager.removeTrackedApp(app.instanceId); - }; - hitTracker.addEventListener('die', die); -}; -appManager.addEventListener('appadd', e => { - const app = e.data; - const bindScene = _getBindSceneForRenderPriority(app.getComponent('renderPriority')); - bindScene.add(app); +// Handles the world and objects in it, has an app manager just like a player +export class World { + constructor() { + this.appManager = new AppManager(); + this.winds = []; + // This handles adding apps to the world scene + this.appManager.addEventListener('appadd', e => { + const app = e.data; + const bindScene = _getBindSceneForRenderPriority(app.getComponent('renderPriority')); + bindScene.add(app); + + const hitTracker = hpManager.makeHitTracker(); + hitTracker.bind(app); + app.dispatchEvent({type: 'hittrackeradded'}); + + const die = () => { + this.appManager.removeTrackedApp(app.instanceId); + }; + app.addEventListener('die', die); + }); - _bindHitTracker(app); -}); -appManager.addEventListener('trackedappmigrate', async e => { - const {app, sourceAppManager, destinationAppManager} = e.data; - if (this === sourceAppManager) { - app.hitTracker.unbind(); - } else if (this === destinationAppManager) { - _bindHitTracker(app); + // This handles removal of apps from the scene when we leave the world + this.appManager.addEventListener('appremove', async e => { + const app = e.data; + app.hitTracker.unbind(); + app.parent.remove(app); + }); } -}); -appManager.addEventListener('appremove', async e => { - const app = e.data; - app.hitTracker.unbind(); - app.parent.remove(app); -}); +} + +export const world = new World(); \ No newline at end of file diff --git a/z-targeting.js b/z-targeting.js new file mode 100644 index 0000000000..3943706b0c --- /dev/null +++ b/z-targeting.js @@ -0,0 +1,233 @@ +import * as THREE from 'three'; +import metaversefile from './metaversefile-api.js'; +import * as metaverseModules from './metaverse-modules.js'; +import {scene, camera} from './renderer.js'; +import * as sounds from './sounds.js'; +import cameraManager from './camera-manager.js'; +import physicsManager from './physics-manager.js'; +import {getLocalPlayer} from './players.js'; + +// + +const localVector = new THREE.Vector3(); + +const physicsScene = physicsManager.getScene(); +// const maxResults = 16; + +// + +const getPyramidConvexGeometry = (() => { + const radius = 0.5; + const height = 0.2; + const radialSegments = 4; + const heightSegments = 1; + + let shapeAddress = null; + + return () => { + if (shapeAddress === null) { + const geometry = new THREE.ConeGeometry( + radius, + height, + radialSegments, + heightSegments, + /* openEnded, + thetaStart, + thetaLength, */ + ); + geometry.rotateX(-Math.PI/2); + geometry.rotateZ(Math.PI/4); + geometry.scale(2, 2.75, 1); + + /* redMesh = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({color: 0xff0000})); + redMesh.frustumCulled = false; + scene.add(redMesh); */ + + const fakeMesh = new THREE.Mesh(geometry); + const buffer = physicsScene.cookConvexGeometry(fakeMesh); + shapeAddress = physicsScene.createConvexShape(buffer); + } + return shapeAddress; + }; +})(); +class QueryResults { + constructor() { + this.results = []; + } + snapshot(object) { + const {position, quaternion} = object; + const direction = new THREE.Vector3(0, 0, -1) + .applyQuaternion(quaternion); + const sweepDistance = 100; + const maxHits = 64; + + const pyramidConvexGeometryAddress = getPyramidConvexGeometry(); + + const result = physicsScene.sweepConvexShape( + pyramidConvexGeometryAddress, + position, + quaternion, + direction, + sweepDistance, + maxHits, + ); + let reticles = result.map(reticle => { + const distance = reticle.position.distanceTo(position); + const type = (() => { + if (distance < 5) { + return 'friend'; + } else if (distance < 10) { + return 'enemy'; + } else { + return 'object'; + } + })(); + const zoom = 0; + return { + position: reticle.position, + physicsId: reticle.objectId, + type, + zoom, + } + }); + if (object === camera) { + reticles = reticles.filter(reticle => { + localVector.copy(reticle.position) + .project(camera); + return ( // check inside camera frustum + localVector.x >= -1 && localVector.x <= 1 && + localVector.y >= -1 && localVector.y <= 1 && + localVector.z > 0 + ); + }); + } + const reticleSpecs = reticles.map(reticle => { + localVector.copy(reticle.position) + .project(camera); + return { + reticle, + lengthSq: localVector.lengthSq(), + }; + }); + reticleSpecs.sort((a, b) => a.lengthSq - b.lengthSq); + reticles = reticleSpecs.map(reticleSpec => reticleSpec.reticle); + this.results = reticles; + } +} + +class ZTargeting extends THREE.Object3D { + constructor() { + super(); + + this.targetReticleApp = null; + this.reticles = []; + this.focusTargetReticle = null; + this.queryResults = new QueryResults(); + + this.loadPromise = null; + } + waitForLoad() { + if (!this.loadPromise) { + this.loadPromise = (async () => { + const targetReticleApp = metaversefile.createApp(); + await metaverseModules.waitForLoad(); + + const {modules} = metaverseModules; + const m = modules['targetReticle']; + await targetReticleApp.addModule(m); + scene.add(targetReticleApp); + this.targetReticleApp = targetReticleApp; + })(); + } + return this.loadPromise; + } + setQueryResult(timestamp) { + let reticles; + const localPlayer = getLocalPlayer(); + if (localPlayer.hasAction('aim')) { + this.queryResults.snapshot(camera); + reticles = this.queryResults.results; + } else { + reticles = []; + } + if (this.focusTargetReticle) { + const timeDiff = timestamp - cameraManager.lerpStartTime; + const focusTime = 250; + + const f = timeDiff / focusTime; + if (cameraManager.focus || f < 3) { + reticles = [ + this.focusTargetReticle, + ]; + + let f2 = Math.min(Math.max(f, 0), 1); + if (cameraManager.focus) { + f2 = 1 - f2; + } + this.focusTargetReticle.zoom = f2; + } else { + this.focusTargetReticle = null; + } + } + + const targetReticleMesh = this.targetReticleApp.children[0]; + targetReticleMesh.setReticles(reticles); + } + update(timestamp) { + this.setQueryResult(timestamp); + } + handleDown(object = camera) { + if (!cameraManager.focus) { + this.queryResults.snapshot(object); + + if (this.queryResults.results.length > 0) { + this.focusTargetReticle = this.queryResults.results[0]; + sounds.playSoundName(this.focusTargetReticle.type == 'enemy' ? 'zTargetEnemy' : 'zTargetObject'); + + const naviSoundNames = [ + 'naviHey', + 'naviWatchout', + 'naviFriendly', + 'naviItem', + 'naviDanger', + ]; + const naviSoundName = naviSoundNames[Math.floor(Math.random() * naviSoundNames.length)]; + sounds.playSoundName(naviSoundName); + } else { + sounds.playSoundName('zTargetCenter'); + } + + cameraManager.setFocus(true); + const remoteApp = this.focusTargetReticle ? metaversefile.getAppByPhysicsId(this.focusTargetReticle.physicsId) : null; + const localPlayer = getLocalPlayer(); + cameraManager.setStaticTarget(localPlayer.avatar.modelBones.Head, remoteApp); + } + } + handleUp() { + if (cameraManager.focus) { + cameraManager.setFocus(false); + cameraManager.setStaticTarget(); + + if (this.focusTargetReticle) { + sounds.playSoundName('zTargetCancel'); + } + } + } + toggle() { + if (cameraManager.focus) { + this.handleUp(); + } else { + const localPlayer = getLocalPlayer(); + this.handleDown(localPlayer); + + if (this.queryResults.results.length === 0) { + setTimeout(() => { + this.handleUp(); + }, 300); + } + } + } +} +const zTargeting = new ZTargeting(); +scene.add(zTargeting); +export default zTargeting; \ No newline at end of file