diff --git a/packages/learning/package.json b/packages/learning/package.json index 10ced363..c746d9c6 100644 --- a/packages/learning/package.json +++ b/packages/learning/package.json @@ -2,10 +2,11 @@ "name": "learning", "private": true, "version": "1.0.0", + "type": "commonjs", "moduleResolution": "node", "scripts": { "rl-dev": "vite", - "rl-local": "npx ts-node ./src/main.ts", + "rl-local": "npx tsx ./src/main.ts", "rl-build": "tsc && vite build", "rl-preview": "vite preview" }, @@ -18,17 +19,21 @@ "runtime-framework": "*", "shared": "*", "tailwindcss": "^3.4.3", - "ts-node": "^10.9.2", "tslib": "^2.6.2", + "tsx": "^4.7.3", "typescript": "^5.4.2", "vite": "^5.1.6" }, "dependencies": { - "@tensorflow/tfjs": "^4.18.0", + "@tensorflow/tfjs-node": "^4.18.0", + "@tensorflow/tfjs-node-gpu": "^4.18.0", + "@types/prompts": "^2.4.9", "@types/sat": "^0.0.35", "eslint-config-custom": "*", "lil-gui": "^0.19.2", "poly-decomp-es": "^0.4.2", + "ppo-tfjs": "^0.0.2", + "prompts": "^2.4.2", "sat": "^0.9.0", "three": "^0.162.0", "tsconfig": "*", diff --git a/packages/learning/src/main.ts b/packages/learning/src/main.ts index 6e7f448d..a16732a8 100644 --- a/packages/learning/src/main.ts +++ b/packages/learning/src/main.ts @@ -1,25 +1,23 @@ -// 1 -> 0 -// 0 -> -1 -// -1 -> 1 - -import { SoftActorCritic } from "./soft-actor-critic/soft-actor-critic" - function getReward(got: number, expected: number) { - const gotRounded = Math.round(got) + function f() { + const gotRounded = Math.round(got) - if (gotRounded === expected) { - return 0 - } + if (gotRounded === expected) { + return 0 + } - if (gotRounded === 0) { - return expected === -1 ? 1 : -1 - } + if (gotRounded === 0) { + return expected === -1 ? 1 : -1 + } + + if (gotRounded === 1) { + return expected === 0 ? 1 : -1 + } - if (gotRounded === 1) { - return expected === 0 ? 1 : -1 + return expected === 1 ? 1 : -1 } - return expected === 1 ? 1 : -1 + return (f() + 1) / 2 } const observationSize = 8 @@ -36,26 +34,168 @@ const observations = [ [[1, -1, 1, -1, 1, -1, 1, -1], [1]], ] -const sac = new SoftActorCritic({ - mlpSpec: { - sizes: [64, 64], - activation: "relu", - outputActivation: "relu", - }, - actionSize, - observationSize, - maxEpisodeLength: 1000, - bufferSize: 10000, - batchSize: 64, - updateAfter: 1000, - updateEvery: 50, - learningRate: 0.001, - alpha: 0.2, - gamma: 0.99, +const PPO = require("ppo-tfjs") + +export class CartPole { + actionSpace = { + class: "Box", + shape: [1], + low: -1, + high: 1, + } + + observationSpace = { + class: "Box", + shape: [4], + low: [-4.8, -Infinity, -0.418, -Infinity], + high: [4.8, Infinity, 0.418, Infinity], + } + + private gravity: number + private massCart: number + private massPole: number + private totalMass: number + private cartWidth: number + private cartHeight: number + private length: number + private poleMoment: number + private forceMag: number + private tau: number + + private xThreshold: number + private thetaThreshold: number + + private x: number = 0 + private xDot: number = 0 + private theta: number = 0 + private thetaDot: number = 0 + + /** + * Constructor of CartPole. + */ + constructor() { + // Constants that characterize the system. + this.gravity = 9.8 + this.massCart = 1.0 + this.massPole = 0.1 + this.totalMass = this.massCart + this.massPole + this.cartWidth = 0.2 + this.cartHeight = 0.1 + this.length = 0.5 + this.poleMoment = this.massPole * this.length + this.forceMag = 10.0 + this.tau = 0.02 // Seconds between state updates. + + // Threshold values, beyond which a simulation will be marked as failed. + this.xThreshold = 2.4 + this.thetaThreshold = (12 / 360) * 2 * Math.PI + + this.reset() + } + + /** + * Get current state as a tf.Tensor of shape [1, 4]. + */ + getStateTensor() { + return [this.x, this.xDot, this.theta, this.thetaDot] + } + + /** + * Update the cart-pole system using an action. + * @param {number} action Only the sign of `action` matters. + * A value > 0 leads to a rightward force of a fixed magnitude. + * A value <= 0 leads to a leftward force of the same fixed magnitude. + */ + step(action: number) { + const force = action > 0 ? this.forceMag : -this.forceMag + + const cosTheta = Math.cos(this.theta) + const sinTheta = Math.sin(this.theta) + + const temp = + (force + this.poleMoment * this.thetaDot * this.thetaDot * sinTheta) / this.totalMass + const thetaAcc = + (this.gravity * sinTheta - cosTheta * temp) / + (this.length * (4 / 3 - (this.massPole * cosTheta * cosTheta) / this.totalMass)) + const xAcc = temp - (this.poleMoment * thetaAcc * cosTheta) / this.totalMass + + // Update the four state variables, using Euler's method. + this.x += this.tau * this.xDot + this.xDot += this.tau * xAcc + this.theta += this.tau * this.thetaDot + this.thetaDot += this.tau * thetaAcc + + const reward = this.isDone() ? -100 : 1 + return [this.getStateTensor(), reward, this.isDone()] + } + + /** + * Set the state of the cart-pole system randomly. + */ + reset() { + // The control-theory state variables of the cart-pole system. + // Cart position, meters. + this.x = Math.random() - 0.5 + // Cart velocity. + this.xDot = (Math.random() - 0.5) * 1 + // Pole angle, radians. + this.theta = (Math.random() - 0.5) * 2 * ((6 / 360) * 2 * Math.PI) + // Pole angle velocity. + this.thetaDot = (Math.random() - 0.5) * 0.5 + + return this.getStateTensor() + } + + /** + * Determine whether this simulation is done. + * + * A simulation is done when `x` (position of the cart) goes out of bound + * or when `theta` (angle of the pole) goes out of bound. + * + * @returns {bool} Whether the simulation is done. + */ + isDone() { + return ( + this.x < -this.xThreshold || + this.x > this.xThreshold || + this.theta < -this.thetaThreshold || + this.theta > this.thetaThreshold + ) + } +} + +const tf = require("@tensorflow/tfjs-node") +const env = new CartPole() + +const ppo = new PPO(env, { + nSteps: 1024, + nEpochs: 50, + verbose: 1, + netArch: [32], }) -const x = sac.act([0, 0, 0, 0, 0, 0, 0, 0]) -x.print() +function possibleLifetime() { + env.reset() + + let t = 0 + + while (!env.isDone() && t < 1000) { + const action = ppo.predict(tf.tensor([env.getStateTensor()]), true).arraySync()[0][0] + env.step(action) + t++ + } + + return t +} + +console.log("Lifetime before training:", possibleLifetime()) +;(async () => { + await ppo.learn({ + totalTimesteps: 20000, + }) +})().then(() => { + console.log("Lifetime after training:", possibleLifetime()) +}) /* import { WorldModel } from "runtime/proto/world" diff --git a/packages/learning/src/soft-actor-critic/actor.ts b/packages/learning/src/soft-actor-critic/actor.ts index 406ea07e..044939d1 100644 --- a/packages/learning/src/soft-actor-critic/actor.ts +++ b/packages/learning/src/soft-actor-critic/actor.ts @@ -1,4 +1,4 @@ -import * as tf from "@tensorflow/tfjs" +import * as tf from "@tensorflow/tfjs-node-gpu" import { GaussianLikelihood } from "./gaussian-likelihood" import { MlpSpecification, mlp } from "./mlp" @@ -20,6 +20,8 @@ export class Actor extends tf.layers.Layer { sizes: [observationSize, ...mlpSpec.sizes], }) + this.net.predict + this.meanLayer = tf.layers.dense({ units: actionSize, }) diff --git a/packages/learning/src/soft-actor-critic/critic.ts b/packages/learning/src/soft-actor-critic/critic.ts index 562f2627..3ec9f83a 100644 --- a/packages/learning/src/soft-actor-critic/critic.ts +++ b/packages/learning/src/soft-actor-critic/critic.ts @@ -1,4 +1,4 @@ -import * as tf from "@tensorflow/tfjs" +import * as tf from "@tensorflow/tfjs-node-gpu" import { MlpSpecification, mlp } from "./mlp" export class Critic extends tf.layers.Layer { @@ -9,7 +9,7 @@ export class Critic extends tf.layers.Layer { this.q = mlp({ ...mlpSpec, - sizes: [observationSize + actionSize, ...mlpSpec.sizes], + sizes: [observationSize + actionSize, ...mlpSpec.sizes, 1], outputActivation: undefined, }) } diff --git a/packages/learning/src/soft-actor-critic/gaussian-likelihood.ts b/packages/learning/src/soft-actor-critic/gaussian-likelihood.ts index b827d2ad..1074b28c 100644 --- a/packages/learning/src/soft-actor-critic/gaussian-likelihood.ts +++ b/packages/learning/src/soft-actor-critic/gaussian-likelihood.ts @@ -1,4 +1,4 @@ -import * as tf from "@tensorflow/tfjs" +import * as tf from "@tensorflow/tfjs-node-gpu" export class GaussianLikelihood extends tf.layers.Layer { computeOutputShape(inputShape: tf.Shape[]): tf.Shape | tf.Shape[] { diff --git a/packages/learning/src/soft-actor-critic/mlp.ts b/packages/learning/src/soft-actor-critic/mlp.ts index 4224b561..20680742 100644 --- a/packages/learning/src/soft-actor-critic/mlp.ts +++ b/packages/learning/src/soft-actor-critic/mlp.ts @@ -1,5 +1,5 @@ -import * as tf from "@tensorflow/tfjs" import { ActivationIdentifier } from "@tensorflow/tfjs-layers/dist/keras_format/activation_config" +import * as tf from "@tensorflow/tfjs-node-gpu" export interface MlpSpecification { sizes: number[] diff --git a/packages/learning/src/soft-actor-critic/replay-buffer.ts b/packages/learning/src/soft-actor-critic/replay-buffer.ts index b153ca8c..3550e338 100644 --- a/packages/learning/src/soft-actor-critic/replay-buffer.ts +++ b/packages/learning/src/soft-actor-critic/replay-buffer.ts @@ -1,4 +1,4 @@ -import * as tf from "@tensorflow/tfjs" +import * as tf from "@tensorflow/tfjs-node-gpu" export interface Experience { observation: number[] @@ -32,6 +32,10 @@ export class ReplayBuffer { private observationSize: number, private actionSize: number, ) { + if (batchSize > capacity) { + throw new Error("Batch size must be less than or equal to capacity") + } + this.tensorObservation = tf.buffer([batchSize, observationSize], "float32") this.tensorAction = tf.buffer([batchSize, actionSize], "float32") this.tensorReward = tf.buffer([batchSize], "float32") @@ -49,6 +53,10 @@ export class ReplayBuffer { } sample(): ExperienceTensor { + if (this.buffer.length < this.batchSize) { + throw new Error("Buffer does not have enough experiences") + } + const indices = tf.util.createShuffledIndices(this.buffer.length) for (let i = 0; i < this.batchSize; i++) { diff --git a/packages/learning/src/soft-actor-critic/soft-actor-critic.ts b/packages/learning/src/soft-actor-critic/soft-actor-critic.ts index ecf1e646..17fa010d 100644 --- a/packages/learning/src/soft-actor-critic/soft-actor-critic.ts +++ b/packages/learning/src/soft-actor-critic/soft-actor-critic.ts @@ -1,8 +1,8 @@ -import * as tf from "@tensorflow/tfjs" +import * as tf from "@tensorflow/tfjs-node-gpu" import { Actor } from "./actor" import { Critic } from "./critic" import { MlpSpecification } from "./mlp" -import { Experience, ReplayBuffer } from "./replay-buffer" +import { Experience, ExperienceTensor, ReplayBuffer } from "./replay-buffer" export interface Config { mlpSpec: MlpSpecification @@ -19,6 +19,7 @@ export interface Config { learningRate: number alpha: number gamma: number + polyak: number } export class SoftActorCritic { @@ -29,6 +30,8 @@ export class SoftActorCritic { private q1: Critic private q2: Critic + private targetQ1: Critic + private targetQ2: Critic private qOptimizer: tf.Optimizer private episodeReturn: number @@ -49,6 +52,8 @@ export class SoftActorCritic { this.policy = new Actor(config.observationSize, config.actionSize, config.mlpSpec) this.q1 = new Critic(config.observationSize, config.actionSize, config.mlpSpec) this.q2 = new Critic(config.observationSize, config.actionSize, config.mlpSpec) + this.targetQ1 = new Critic(config.observationSize, config.actionSize, config.mlpSpec) + this.targetQ2 = new Critic(config.observationSize, config.actionSize, config.mlpSpec) this.episodeReturn = 0 this.episodeLength = 0 @@ -96,13 +101,101 @@ export class SoftActorCritic { this.update() } } + + console.log(this.t) } private update() { - const batch = this.replayBuffer.sample() + tf.tidy(() => { + const batch = this.replayBuffer.sample() + const backup = this.computeBackup(batch) + + const lossQ = () => { + const errorQ1 = tf.losses.meanSquaredError( + backup, + this.q1.apply([batch.observation, batch.action], { + training: true, + }) as tf.Tensor, + ) + + const errorQ2 = tf.losses.meanSquaredError( + backup, + this.q2.apply([batch.observation, batch.action], { + training: true, + }) as tf.Tensor, + ) + + return tf.add(errorQ1, errorQ2) as tf.Scalar + } + + const gradsQ = tf.variableGrads(lossQ) + this.qOptimizer.applyGradients(gradsQ.grads) + + const lossPolicy = () => { + const [pi, logpPi] = this.policy.apply(batch.observation, { + training: true, + }) as tf.Tensor[] + + const piQ1 = this.q1.apply([batch.observation, pi], { + training: false, + }) as tf.Tensor + const piQ2 = this.q2.apply([batch.observation, pi], { + training: false, + }) as tf.Tensor + + const minPiQ = tf.minimum(piQ1, piQ2) + + return tf.mean(tf.sub(tf.mul(this.config.alpha, logpPi), minPiQ)) as tf.Scalar + } + + const gradsPolicy = tf.variableGrads(lossPolicy) + this.policyOptimizer.applyGradients(gradsPolicy.grads) + + for (let i = 0; i < this.q1.trainableWeights.length; ++i) { + const targetQ1 = this.targetQ1.trainableWeights[i] + const q1 = this.q1.trainableWeights[i] + + targetQ1.write( + tf.add( + tf.mul(this.config.polyak, targetQ1.read()), + tf.mul(1 - this.config.polyak, q1.read()), + ), + ) + + const targetQ2 = this.targetQ2.trainableWeights[i] + const q2 = this.q2.trainableWeights[i] + + targetQ2.write( + tf.add( + tf.mul(this.config.polyak, targetQ2.read()), + tf.mul(1 - this.config.polyak, q2.read()), + ), + ) + } + }) + } + + private computeBackup(batch: ExperienceTensor) { + const [action, logpPi] = this.policy.apply(batch.nextObservation) as tf.Tensor[] + + const targetQ1 = this.targetQ1.apply([ + batch.nextObservation, + action, + ]) as tf.Tensor + + const targetQ2 = this.targetQ2.apply([ + batch.nextObservation, + action, + ]) as tf.Tensor + + const minTargetQ = tf.minimum(targetQ1, targetQ2) + const softQTarget = tf.sub(minTargetQ, tf.mul(this.config.alpha, logpPi)) - const loss = () => {} + const backup = tf.add( + batch.reward, + tf.mul(this.config.gamma, tf.mul(tf.scalar(1).sub(batch.done), softQTarget)), + ) as tf.Tensor - tf.variableGrads(loss) + return backup } } diff --git a/packages/learning/tsconfig.json b/packages/learning/tsconfig.json index 41c9dbdd..8e91f168 100644 --- a/packages/learning/tsconfig.json +++ b/packages/learning/tsconfig.json @@ -2,14 +2,9 @@ "extends": "tsconfig/vite.json", "compilerOptions": { "noEmit": true, - "module": "esnext" + "module": "esnext", }, - "include": ["src"], - "ts-node": { - // these options are overrides used only by ts-node - // same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable - "compilerOptions": { - "module": "commonjs" - } - } -} + "include": [ + "src" + ], +} \ No newline at end of file diff --git a/packages/server/package.json b/packages/server/package.json index d443ed7b..59cda5e8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "postinstall": "wrangler d1 migrations apply polyburn --local && node ./tools/postprocess-rapier2d.mjs", + "_postinstall": "wrangler d1 migrations apply polyburn --local && node ./tools/postprocess-rapier2d.mjs", "generate": "drizzle-kit generate:sqlite", "dev": "wrangler dev src/index.ts --live-reload", "lint": "eslint \"src/**/*.{tsx,ts}\"" diff --git a/yarn.lock b/yarn.lock index f4396208..e0d5a3ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1477,7 +1477,7 @@ resolved "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20240402.0.tgz" integrity sha512-GEtg71Gs5iBIQBQB0sBkEOJrmJGpenT2XAODwbvfWADwQpDxgEQfGrcOhaJfLPCfvNpKaMxcBlH9cekWwQEsLQ== -"@cspotcode/source-map-support@0.8.1", "@cspotcode/source-map-support@^0.8.0": +"@cspotcode/source-map-support@0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== @@ -2143,6 +2143,21 @@ resolved "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz" integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== +"@mapbox/node-pre-gyp@1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc" + integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": version "0.1.0" resolved "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz" @@ -3635,7 +3650,35 @@ resolved "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.18.0.tgz" integrity sha512-9AyxUdvjMDbDOkNzdkMRToJZF/le5ia8X3lVfGRGxzsuyoWDBGlV9V1ICufD+Z8sODXVyu+cgE8kAMtVK4aHFA== -"@tensorflow/tfjs@^4.18.0": +"@tensorflow/tfjs-node-gpu@^4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-node-gpu/-/tfjs-node-gpu-4.18.0.tgz#d52f7f3f088437c89f923fbc3e278938b3fd4c1d" + integrity sha512-KR9V9oHhiquBafjAN12SJjfD+53pwoeuP7lGjzn5zFNstU50w8chrtBzFx0rqqsWS3mSxmDojf3qyv6KCxo3tA== + dependencies: + "@mapbox/node-pre-gyp" "1.0.9" + "@tensorflow/tfjs" "4.18.0" + adm-zip "^0.5.2" + google-protobuf "^3.9.2" + https-proxy-agent "^2.2.1" + progress "^2.0.0" + rimraf "^2.6.2" + tar "^4.4.6" + +"@tensorflow/tfjs-node@^4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-node/-/tfjs-node-4.18.0.tgz#e2c44a46369ce7ae4e466cdd283383a329fb336c" + integrity sha512-jat7J/K8OEKyO/w20PXN8OBQMwdUMQxfPpNGsyS21lq93dr6g+z4vVH0RT+soPsVX2NvdIrAxHT3RWkinSCikw== + dependencies: + "@mapbox/node-pre-gyp" "1.0.9" + "@tensorflow/tfjs" "4.18.0" + adm-zip "^0.5.2" + google-protobuf "^3.9.2" + https-proxy-agent "^2.2.1" + progress "^2.0.0" + rimraf "^2.6.2" + tar "^4.4.6" + +"@tensorflow/tfjs@4.18.0": version "4.18.0" resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-4.18.0.tgz#e9efea13b8ac944629226594e530051eb2e57bc9" integrity sha512-MjA2M91wSkTkpFSuyQAuZm+DT9Y7DFu3rsTaO1BjCbf1S7o8DgJPKMmh6hk6uEn6/SBBbZVXPu+ZTQ/SyrP2Pw== @@ -3667,26 +3710,6 @@ resolved "https://registry.npmjs.org/@trpc/server/-/server-10.45.2.tgz" integrity sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg== -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - "@tsndr/cloudflare-worker-jwt@^2.0.1", "@tsndr/cloudflare-worker-jwt@^2.5.3": version "2.5.3" resolved "https://registry.npmjs.org/@tsndr/cloudflare-worker-jwt/-/cloudflare-worker-jwt-2.5.3.tgz" @@ -3844,7 +3867,7 @@ "@types/node@^20.12.7": version "20.12.7" - resolved "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== dependencies: undici-types "~5.26.4" @@ -3859,6 +3882,14 @@ resolved "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz" integrity sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q== +"@types/prompts@^2.4.9": + version "2.4.9" + resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.4.9.tgz#8775a31e40ad227af511aa0d7f19a044ccbd371e" + integrity sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA== + dependencies: + "@types/node" "*" + kleur "^3.0.3" + "@types/prop-types@*": version "15.7.12" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" @@ -4175,6 +4206,11 @@ resolved "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + abs-svg-path@^0.1.1, abs-svg-path@~0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz" @@ -4185,7 +4221,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1, acorn-walk@^8.2.0: +acorn-walk@^8.2.0: version "8.3.2" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== @@ -4195,11 +4231,30 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.10.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.11.3, acorn@^8.8.0, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +adm-zip@^0.5.2: + version "0.5.12" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.12.tgz#87786328e91d54b37358d8a50f954c4cd73ba60b" + integrity sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -4272,10 +4327,18 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" arg@^5.0.2: version "5.0.2" @@ -4701,6 +4764,16 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + clamp@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz" @@ -4847,6 +4920,11 @@ color-space@^2.0.0: resolved "https://registry.npmjs.org/color-space/-/color-space-2.0.1.tgz" integrity sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" @@ -4903,6 +4981,11 @@ concordance@^5.0.4: semver "^7.3.2" well-known-symbols "^2.0.0" +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" @@ -4949,11 +5032,6 @@ country-regex@^1.1.0: resolved "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz" integrity sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA== -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" @@ -5230,20 +5308,20 @@ debug@2, debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: 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" +debug@^3.1.0, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" @@ -5294,6 +5372,11 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" @@ -5316,6 +5399,11 @@ detect-libc@^1.0.3: resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + dexie-react-hooks@^1.1.6: version "1.1.7" resolved "https://registry.npmjs.org/dexie-react-hooks/-/dexie-react-hooks-1.1.7.tgz" @@ -5336,11 +5424,6 @@ diff-sequences@^29.4.3: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - difflib@~0.2.1: version "0.2.4" resolved "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz" @@ -5674,6 +5757,18 @@ es6-iterator@^2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.4" resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" @@ -5755,7 +5850,7 @@ esbuild@^0.18.10, esbuild@~0.18.20: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" -esbuild@^0.19.7: +esbuild@^0.19.7, esbuild@~0.19.10: version "0.19.12" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz" integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== @@ -6253,6 +6348,20 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-monkey@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" @@ -6288,6 +6397,21 @@ functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" @@ -6351,7 +6475,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -get-tsconfig@^4.7.0: +get-tsconfig@^4.7.0, get-tsconfig@^4.7.2: version "4.7.3" resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz" integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== @@ -6620,6 +6744,11 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" +google-protobuf@^3.9.2: + version "3.21.2" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4" + integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA== + gopd@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" @@ -6703,6 +6832,11 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" @@ -6725,6 +6859,22 @@ hsluv@^0.0.3: resolved "https://registry.npmjs.org/hsluv/-/hsluv-0.0.3.tgz" integrity sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ== +https-proxy-agent@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + hyphenate-style-name@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" @@ -7255,6 +7405,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + leven@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" @@ -7404,10 +7559,12 @@ magic-string@^0.30.0, magic-string@^0.30.1: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" map-limit@0.0.1: version "0.0.1" @@ -7564,11 +7721,58 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: version "7.0.4" resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mlly@^1.2.0, mlly@^1.4.0: version "1.6.1" resolved "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz" @@ -7707,6 +7911,13 @@ next-tick@1, next-tick@^1.1.0: resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-fetch@~2.6.1: version "2.6.13" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz" @@ -7724,6 +7935,13 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -7746,6 +7964,16 @@ normalize-svg-path@~0.1.0: resolved "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz" integrity sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA== +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + number-is-integer@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz" @@ -8154,6 +8382,11 @@ potpack@^1.0.1: resolved "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz" integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== +ppo-tfjs@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ppo-tfjs/-/ppo-tfjs-0.0.2.tgz#7b4ddd11bc5109e44c74fad789fb308bb7861c26" + integrity sha512-fDku3yhnIbJK90HUA2+x7Pj2CNWBr25cDJSt2wLV6+F1pmzNmF6jCtKurdvMVeywDbaF9QELHDjt7HH0r2ZEhA== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -8228,6 +8461,19 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.6.0, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" @@ -8455,6 +8701,15 @@ readable-stream@^2.0.0, readable-stream@^2.1.4, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -8678,6 +8933,13 @@ right-now@^1.0.0: resolved "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz" integrity sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg== +rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -8795,7 +9057,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8856,12 +9118,12 @@ selfsigned@^2.0.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.5.4: +semver@^7.3.2, semver@^7.3.5, semver@^7.5.4: version "7.6.0" resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -8875,6 +9137,11 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -8934,6 +9201,11 @@ siginfo@^2.0.0: resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" @@ -9108,7 +9380,7 @@ string-split-by@^1.0.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9172,7 +9444,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.3.0: +string_decoder@^1.1.1, string_decoder@^1.3.0: 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== @@ -9376,6 +9648,31 @@ tailwindcss@^3.3.3, tailwindcss@^3.4.3: resolve "^1.22.2" sucrase "^3.32.0" +tar@^4.4.6: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +tar@^6.1.11: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" @@ -9601,25 +9898,6 @@ ts-interface-checker@^0.1.9: resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - ts-poet@^6.7.0: version "6.7.0" resolved "https://registry.npmjs.org/ts-poet/-/ts-poet-6.7.0.tgz" @@ -9655,6 +9933,16 @@ tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.6.2: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tsx@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.3.tgz#c32f3f5cb928708a5c6becf617e432b395999242" + integrity sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ== + dependencies: + esbuild "~0.19.10" + get-tsconfig "^4.7.2" + optionalDependencies: + fsevents "~2.3.3" + tunnel-rat@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz" @@ -9895,7 +10183,7 @@ use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== -util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -9910,11 +10198,6 @@ uuid@^9.0.1: resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - vite-node@0.31.4: version "0.31.4" resolved "https://registry.npmjs.org/vite-node/-/vite-node-0.31.4.tgz" @@ -10175,6 +10458,13 @@ why-is-node-running@^2.2.2: siginfo "^2.0.0" stackback "0.0.2" +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + wordwrap@>=0.0.2: version "1.0.0" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" @@ -10436,7 +10726,7 @@ y18n@^5.0.5: resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -10469,11 +10759,6 @@ yargs@^16.0.3: y18n "^5.0.5" yargs-parser "^20.2.2" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"