From f91029c107a1203d208ecca94020f40a042434ff Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Thu, 2 Nov 2023 03:13:47 -0500 Subject: [PATCH] ok implemented most of the typing rules --- Cargo.lock | 47 + __tests__/terms_test.res | 17 - babel.config.js | 9 - bidir-writeup.typ | 29 +- bidir/Cargo.toml | 1 + bidir/src/bidir.rs | 140 +- bidir/src/data.rs | 112 +- bidir/src/lib.rs | 5 + bidir/src/tests.rs | 28 +- bsconfig.json | 17 - bun.lockb | Bin 277242 -> 0 bytes jest.config.json | 10 - package.json | 14 - pmltt-lang/.gitignore | 30 - pmltt-lang/README.md | 38 - pmltt-lang/bsconfig.json | 27 - pmltt-lang/index.html | 16 - pmltt-lang/package-lock.json | 2226 ------------------------------ pmltt-lang/package.json | 28 - pmltt-lang/postcss.config.cjs | 6 - pmltt-lang/public/vite.svg | 1 - pmltt-lang/src/App.css | 0 pmltt-lang/src/App.res | 22 - pmltt-lang/src/App.resi | 2 - pmltt-lang/src/Button.res | 7 - pmltt-lang/src/Button.resi | 1 - pmltt-lang/src/Main.res | 11 - pmltt-lang/src/assets/react.svg | 1 - pmltt-lang/src/index.css | 3 - pmltt-lang/src/lang/Core.res | 20 - pmltt-lang/src/lang/Interp.res | 50 - pmltt-lang/src/lang/OneTruth.res | 22 - pmltt-lang/tailwind.config.cjs | 8 - pmltt-lang/vite.config.js | 11 - 34 files changed, 314 insertions(+), 2645 deletions(-) delete mode 100644 __tests__/terms_test.res delete mode 100644 babel.config.js delete mode 100644 bsconfig.json delete mode 100755 bun.lockb delete mode 100644 jest.config.json delete mode 100644 package.json delete mode 100644 pmltt-lang/.gitignore delete mode 100644 pmltt-lang/README.md delete mode 100644 pmltt-lang/bsconfig.json delete mode 100644 pmltt-lang/index.html delete mode 100644 pmltt-lang/package-lock.json delete mode 100644 pmltt-lang/package.json delete mode 100644 pmltt-lang/postcss.config.cjs delete mode 100644 pmltt-lang/public/vite.svg delete mode 100644 pmltt-lang/src/App.css delete mode 100644 pmltt-lang/src/App.res delete mode 100644 pmltt-lang/src/App.resi delete mode 100644 pmltt-lang/src/Button.res delete mode 100644 pmltt-lang/src/Button.resi delete mode 100644 pmltt-lang/src/Main.res delete mode 100644 pmltt-lang/src/assets/react.svg delete mode 100644 pmltt-lang/src/index.css delete mode 100644 pmltt-lang/src/lang/Core.res delete mode 100644 pmltt-lang/src/lang/Interp.res delete mode 100644 pmltt-lang/src/lang/OneTruth.res delete mode 100644 pmltt-lang/tailwind.config.cjs delete mode 100644 pmltt-lang/vite.config.js diff --git a/Cargo.lock b/Cargo.lock index b099ccc..a76f56d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,6 +22,7 @@ dependencies = [ "im", "lazy_static", "parking_lot", + "trace", ] [[package]] @@ -104,6 +105,24 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + [[package]] name = "rand_core" version = "0.6.4" @@ -150,12 +169,40 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "trace" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ad0c048e114d19d1140662762bfdb10682f3bc806d8be18af846600214dd9af" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + [[package]] name = "version_check" version = "0.9.4" diff --git a/__tests__/terms_test.res b/__tests__/terms_test.res deleted file mode 100644 index 099b1fc..0000000 --- a/__tests__/terms_test.res +++ /dev/null @@ -1,17 +0,0 @@ -open Jest -open Belt -open Data -open Bidir - -open Expect -open! Expect.Operators - -let mapFirst = a => a->Result.map(((x, _)) => x) - -test("id", () => { - let id: term = Lam("x", Var("x")) - let ctx = list{} - let typ = synthesize(ctx, id)->mapFirst - Js.Console.error2("output: ", typ) - expect(typ) === Ok(TPolytype("ex0", TArrow(TVar("ex0"), TVar("ex0")))) -}) diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 805b799..0000000 --- a/babel.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - presets: [ - [ - "@babel/preset-env", - { targets: { node: "current", esmodules: false }, modules: "cjs" }, - ], - ], - plugins: [], -}; diff --git a/bidir-writeup.typ b/bidir-writeup.typ index dfb1923..a666db0 100644 --- a/bidir-writeup.typ +++ b/bidir-writeup.typ @@ -1,3 +1,30 @@ +#import "@preview/prooftrees:0.1.0": * +#let synth = text(red, sym.arrow.double.r) +#let tyck = text(blue, sym.arrow.double.l) + += Ideas + +- Compared to Hindley-Milner type systems, this bidirectional system still serves a lot of similar purposes: + - Rather than collecting and unifying variables, we have input and output contexts + - Rather than having special unification rules for polymorphic variables, we use existential variables in the context and solve them using subtyping + = Expressions -- $ id : forall a. a arrow.r a $ +- $ id &: forall a. a arrow.r a \ + id &= lambda x . x $ + + The typing rules should be: + + - Apply $arrow.r"I"synth$ + + #tree( + axi[$Gamma, hat(alpha), hat(beta), x : hat(alpha) tack.r e tyck hat(beta) tack.l Delta, x : hat(alpha), Theta $], + uni[$Gamma tack.r lambda x.e synth hat(alpha) arrow.r hat(beta) tack.l Delta$] + ) + + Get $Gamma, hat(alpha), hat(beta), x : hat(alpha) tack.r x tyck hat(beta) tack.l Delta , x : hat(alpha), Theta$ + += Open Questions + +- Why is subtyping critical to this type system? What would happen without it? +- $Gamma_0 [hat(beta) = hat(alpha)]$ is listed as a type of instantiation but isn't one of the types of contexts defined. How are they allowed to do this? \ No newline at end of file diff --git a/bidir/Cargo.toml b/bidir/Cargo.toml index 44c1c6e..0b501d2 100644 --- a/bidir/Cargo.toml +++ b/bidir/Cargo.toml @@ -10,3 +10,4 @@ anyhow = "1.0.75" im = "15.1.0" lazy_static = "1.4.0" parking_lot = "0.12.1" +trace = "0.1.7" diff --git a/bidir/src/bidir.rs b/bidir/src/bidir.rs index 5d6fe9e..3d9bd82 100644 --- a/bidir/src/bidir.rs +++ b/bidir/src/bidir.rs @@ -1,26 +1,38 @@ use anyhow::{bail, Result}; +use crate::DEPTH; + +use crate::data::FreeVar; use crate::{ - data::{ctx_lookup_type, Context, ContextEntry, Term, Type}, + data::{Context, ContextEntry, Term, Type}, gensym::gensym_prefix, }; // Figure 8. Applying a context, as a substitution, to a type -pub fn app_ctx(ctx: &Context, ty: &Type) -> Type { +#[trace] +pub fn app_ctx(ctx: &Context, ty: &Type) -> Result { match ty { - Type::Existential(_) => todo!(), + Type::Existential(a) => match ctx.lookup_existential(a) { + Some(Some(m)) => Ok(m.into_poly()), + Some(None) => Ok(Type::Existential(a.clone())), + None => bail!("existential variable {a} doesn't exist in context"), + }, + Type::Polytype(_, _) => todo!(), - Type::Arrow(a, b) => Type::Arrow(Box::new(app_ctx(ctx, a)), Box::new(app_ctx(ctx, b))), - _ => ty.clone(), + Type::Arrow(a, b) => Ok(Type::Arrow( + Box::new(app_ctx(ctx, a)?), + Box::new(app_ctx(ctx, b)?), + )), + _ => todo!("shiiet"), } } // Figure 9. Algorithmic subtyping /// Under input context Γ , type A is a subtype of B, with output context ∆ +#[trace] pub fn subtype(ctx: &Context, a: &Type, b: &Type) -> Result { - println!("subtype(ctx = {ctx:?}, a = {a:?}, b = {b:?})"); match (a, b) { // <:Unit rule (Type::Unit, Type::Unit) => Ok(ctx.clone()), @@ -28,19 +40,32 @@ pub fn subtype(ctx: &Context, a: &Type, b: &Type) -> Result { // <:Var rule (Type::Var(x), Type::Var(y)) if x == y => { // Ensure that the name exists in the context - if !ctx.iter().any(|entry| match entry { - ContextEntry::ExistentialVar(z) if x == z => true, - _ => false, - }) { + if ctx.lookup_type(x).is_none() { bail!("name {x} not in context"); } Ok(ctx.clone()) } + // <:Exvar rule + (Type::Existential(x), Type::Existential(y)) if x == y => { + // Ensure that the name exists in the context + if ctx.lookup_existential(x).is_none() { + bail!("name {x} not in context"); + } + + Ok(ctx.clone()) + } + + (Type::Existential(a), ty_a) + if !b.free_vars().contains(&FreeVar::Existential(a.to_string())) + && ctx.lookup_existential(a).is_some() => + { + let ctx_delta = instantiate_left(ctx, a, ty_a)?; + Ok(ctx_delta) + } (Type::Existential(_), Type::Unit) => todo!(), (Type::Existential(_), Type::Var(_)) => todo!(), - (Type::Existential(_), Type::Existential(_)) => todo!(), (Type::Existential(_), Type::Polytype(_, _)) => todo!(), (Type::Existential(_), Type::Arrow(_, _)) => todo!(), (Type::Polytype(_, _), Type::Unit) => todo!(), @@ -54,16 +79,33 @@ pub fn subtype(ctx: &Context, a: &Type, b: &Type) -> Result { (Type::Arrow(_, _), Type::Polytype(_, _)) => todo!(), (Type::Arrow(_, _), Type::Arrow(_, _)) => todo!(), - _ => bail!("subtyping relation failed"), + _ => bail!("subtyping relation failed between {a:?} and {b:?} (ctx = {ctx:?})"), } } // Figure 10. Instantiation +#[trace] +pub fn instantiate_left(ctx: &Context, a: &str, ty_a: &Type) -> Result { + match ty_a { + // InstLReach rule + Type::Existential(b) if ctx.has_existential(a) && ctx.has_existential(b) => { + // TODO: WTF? + todo!() + } + Type::Existential(b) => todo!(), + + Type::Unit => todo!(), + Type::Var(_) => todo!(), + Type::Polytype(_, _) => todo!(), + Type::Arrow(_, _) => todo!(), + } +} + // Figure 11. Algorithmic typing +#[trace] pub fn typecheck(ctx: &Context, term: &Term, ty: &Type) -> Result { - println!("typecheck(ctx = {ctx:?}, term = {term:?}, ty = {ty:?})"); match (term, ty) { // 1I rule (Term::Unit, Type::Unit) => Ok(ctx.clone()), @@ -80,20 +122,20 @@ pub fn typecheck(ctx: &Context, term: &Term, ty: &Type) -> Result { // Sub rule (term, ty) => { let (ty_a, ctx_theta) = synthesize(ctx, term)?; - let a = app_ctx(&ctx_theta, &ty_a); - let b = app_ctx(&ctx_theta, ty); + let a = app_ctx(&ctx_theta, &ty_a)?; + let b = app_ctx(&ctx_theta, ty)?; let ctx_delta = subtype(&ctx_theta, &a, &b)?; Ok(ctx_delta) } } } +#[trace] pub fn synthesize(ctx: &Context, term: &Term) -> Result<(Type, Context)> { - println!("synthesize(ctx = {ctx:?}, term = {term:?}"); match term { // Var rule Term::Var(name) => { - let ty = match ctx_lookup_type(ctx, name) { + let ty = match ctx.lookup_type(name) { Some(v) => v, None => bail!("could not find name {name}"), }; @@ -104,31 +146,61 @@ pub fn synthesize(ctx: &Context, term: &Term) -> Result<(Type, Context)> { Term::Unit => Ok((Type::Unit, ctx.clone())), // Anno rule - Term::Annot(_, _) => todo!(), + Term::Annot(e, ty_a) => { + // Make sure the type is well formed + // TODO: Have an actual "well-formed" check + + let ctx_delta = typecheck(ctx, &e, ty_a)?; + Ok((ty_a.clone(), ctx_delta)) + } // →I⇒ rule + // > Rule →I⇒ corresponds to Decl→I⇒, one of the guessing rules, so we + // > create new existential variables ^α (for the function domain) and ^β (for + // > the codomain) and check the function body against ^β. As in ∀App, we do + // > not place a marker before ^α, because ^α and ^β appear in the output type + // > (λx. e ⇒ ^α → ^β). Term::Lam(x, e) => { - let mut aug_ctx = ctx.clone(); - let ex_a = gensym_prefix("ex"); - let ex_b = gensym_prefix("ex"); - aug_ctx.push_back(ContextEntry::TypeVar(ex_a.clone())); - aug_ctx.push_back(ContextEntry::TypeVar(ex_b.clone())); - aug_ctx.push_back(ContextEntry::TermAnnot(x.clone(), Type::Var(ex_a.clone()))); + let ex_a_s = gensym_prefix("ex"); + let ex_b_s = gensym_prefix("ex"); + let ex_a = Type::Existential(ex_a_s.clone()); + let ex_b = Type::Existential(ex_b_s.clone()); + let aug_ctx = ctx.add(vec![ + ContextEntry::ExistentialVar(ex_a_s.clone()), + ContextEntry::ExistentialVar(ex_b_s.clone()), + ContextEntry::TermAnnot(x.clone(), ex_a.clone()), + ]); - let res = typecheck(&aug_ctx, &e, &Type::Var(ex_b.clone())); - Ok(( - Type::Arrow( - Box::new(Type::Existential(ex_a)), - Box::new(Type::Existential(ex_b)), - ), - ctx.clone(), - )) + let wtf_ctx = typecheck(&aug_ctx, &e, &ex_b)?; + println!("the wtf ctx is {wtf_ctx:?}"); + Ok((Type::Arrow(Box::new(ex_a), Box::new(ex_b)), ctx.clone())) } // →E rule Term::App(e1, e2) => { - let (tyA, out_ctx) = synthesize(ctx, e1)?; - todo!() + let (ty_a, ctx_theta) = synthesize(ctx, e1)?; + let app_a = app_ctx(&ctx_theta, &ty_a)?; + let (ty_c, ctx_delta) = app_synthesize(&ctx_theta, &app_a, &e2)?; + Ok((ty_c, ctx_delta)) } } } + +#[trace] +pub fn app_synthesize(ctx: &Context, fun_ty: &Type, term: &Term) -> Result<(Type, Context)> { + match (fun_ty, term) { + // →App rule + (Type::Arrow(ty_a, ty_c), e) => { + typecheck(ctx, e, ty_a)?; + Ok((*ty_c.clone(), ctx.clone())) + } + + // ∀App rule + (Type::Polytype(_, _), _) => todo!(), + + // âApp rule + (Type::Existential(_), _) => todo!(), + + _ => bail!("trying to appSynthesize with a non-function type"), + } +} diff --git a/bidir/src/data.rs b/bidir/src/data.rs index 1dfb5b0..bcf2df1 100644 --- a/bidir/src/data.rs +++ b/bidir/src/data.rs @@ -1,4 +1,6 @@ -use im::Vector; +use std::hash::Hash; + +use im::{HashSet, Vector}; #[derive(Debug, Clone)] pub enum Term { @@ -18,6 +20,57 @@ pub enum Type { Arrow(Box, Box), } +impl Type { + pub fn into_mono(&self) -> Option { + match self { + Type::Unit => Some(Monotype::Unit), + Type::Var(x) => Some(Monotype::Var(x.clone())), + Type::Existential(x) => Some(Monotype::Existential(x.clone())), + Type::Polytype(_, _) => None, + Type::Arrow(a, b) => Some(Monotype::Arrow( + Box::new(a.into_mono()?), + Box::new(b.into_mono()?), + )), + } + } + + #[inline] + pub fn is_mono(&self) -> bool { + self.into_mono().is_some() + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub enum FreeVar { + Var(String), + Existential(String), +} + +impl Type { + pub fn free_vars(&self) -> HashSet { + fn free_vars_with_context(ctx: &Context, ty: &Type) -> HashSet { + match ty { + Type::Unit => HashSet::default(), + Type::Var(x) if ctx.lookup_type(x).is_some() => HashSet::default(), + Type::Var(x) => [FreeVar::Var(x.to_owned())].into_iter().collect(), + Type::Existential(x) if ctx.lookup_existential(x).is_some() => HashSet::default(), + Type::Existential(x) => [FreeVar::Existential(x.to_owned())].into_iter().collect(), + Type::Polytype(x, ty_a) => { + let new_ctx = ctx.add(vec![ContextEntry::ExistentialVar(x.to_owned())]); + free_vars_with_context(&new_ctx, &ty_a) + } + Type::Arrow(ty_a, ty_b) => { + let a_vars = free_vars_with_context(&ctx, &ty_a); + let b_vars = free_vars_with_context(&ctx, &ty_b); + a_vars.union(b_vars) + } + } + } + + free_vars_with_context(&Context::default(), self) + } +} + #[derive(Debug, Clone)] pub enum Monotype { Unit, @@ -26,7 +79,16 @@ pub enum Monotype { Arrow(Box, Box), } -pub type Context = Vector; +impl Monotype { + pub fn into_poly(&self) -> Type { + match self { + Monotype::Unit => Type::Unit, + Monotype::Var(x) => Type::Var(x.clone()), + Monotype::Existential(x) => Type::Existential(x.clone()), + Monotype::Arrow(a, b) => Type::Arrow(Box::new(a.into_poly()), Box::new(b.into_poly())), + } + } +} #[derive(Debug, Clone)] pub enum ContextEntry { @@ -45,9 +107,45 @@ pub enum CompleteContextEntry { Marker(String), } -pub fn ctx_lookup_type(ctx: &Context, name: impl AsRef) -> Option { - ctx.iter().find_map(|entry| match entry { - ContextEntry::TermAnnot(n, t) if n == name.as_ref() => Some(t.clone()), - _ => None, - }) +#[derive(Debug, Clone, Default)] +pub struct Context(Vector); + +impl Context { + pub fn add(&self, entries: Vec) -> Context { + let mut new_ctx = self.clone(); + for entry in entries { + new_ctx.0.push_back(entry); + } + new_ctx + } + + /// Looks up a polytype by name + pub fn lookup_type(&self, name: impl AsRef) -> Option { + self.0.iter().find_map(|entry| match entry { + ContextEntry::TermAnnot(n, t) if n == name.as_ref() => Some(t.clone()), + _ => None, + }) + } + + #[inline] + pub fn has_type(&self, name: impl AsRef) -> bool { + self.lookup_type(name).is_some() + } + + /// Looks up an existential variable by name + /// - Returns Some(Some(t)) if solved + /// - Returns Some(None) if exists but unsolved + /// - Returns None if not found + pub fn lookup_existential(&self, name: impl AsRef) -> Option> { + self.0.iter().find_map(|entry| match entry { + ContextEntry::ExistentialVar(n) if n == name.as_ref() => Some(None), + ContextEntry::ExistentialSolved(n, t) if n == name.as_ref() => Some(Some(t.clone())), + _ => None, + }) + } + + #[inline] + pub fn has_existential(&self, name: impl AsRef) -> bool { + self.lookup_existential(name).is_some() + } } diff --git a/bidir/src/lib.rs b/bidir/src/lib.rs index 9802e1a..f566bfb 100644 --- a/bidir/src/lib.rs +++ b/bidir/src/lib.rs @@ -1,3 +1,8 @@ +#[macro_use] +extern crate trace; + +trace::init_depth_var!(); + mod bidir; mod data; diff --git a/bidir/src/tests.rs b/bidir/src/tests.rs index f176c3e..1efff03 100644 --- a/bidir/src/tests.rs +++ b/bidir/src/tests.rs @@ -1,13 +1,29 @@ use anyhow::{bail, Result}; -use im::Vector; -use crate::{bidir::synthesize, data::Term}; +use crate::{ + bidir::synthesize, + data::{Context, Term}, +}; + +macro_rules! id_term { + () => { + Term::Lam("x".to_owned(), Box::new(Term::Var("x".to_owned()))) + }; +} #[test] fn test_id() -> Result<()> { - let id = Term::Lam("x".to_owned(), Box::new(Term::Var("x".to_owned()))); - let ctx = Vector::new(); - let (ty, out_ctx) = synthesize(&ctx, &id)?; - // bail!("Output: {ty:?} in context {out_ctx:?}"); + let id = id_term!(); + let ctx = Context::default(); + bail!("Result: {:?}", synthesize(&ctx, &id)); + Ok(()) +} + +#[test] +fn test_id_of_unit() -> Result<()> { + let id = id_term!(); + let id_of_unit = Term::App(Box::new(id), Box::new(Term::Unit)); + let ctx = Context::default(); + bail!("Result: {:?}", synthesize(&ctx, &id_of_unit)); Ok(()) } diff --git a/bsconfig.json b/bsconfig.json deleted file mode 100644 index 2bac544..0000000 --- a/bsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "your-project-name", - "bsc-flags": [], - "sources": [ - { "dir": "src", "subdirs": true }, - { "dir": "__tests__", "subdirs": true, "type": "dev" } - ], - "package-specs": [ - { - "module": "commonjs", - "in-source": true - } - ], - "suffix": ".bs.js", - "bs-dependencies": [], - "bs-dev-dependencies": ["@glennsl/bs-jest"] -} diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 3f57b2a34690ec71cdfa51e6e4f508c2fafce943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277242 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
    }p5 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�L(flXZ5F#IP&m6{^cm7 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 diff --git a/jest.config.json b/jest.config.json deleted file mode 100644 index 2428146..0000000 --- a/jest.config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "verbose": true, - "moduleFileExtensions": ["js", "mjs"], - "extensionsToTreatAsEsm": [".bs.mjs"], - "testMatch": ["**/__tests__/**/*_test.mjs", "**/__tests__/**/*_test.bs.js"], - "transform": { - "^.+.m?js$": "babel-jest" - }, - "transformIgnorePatterns": ["node_modules/(?!(rescript)/)"] -} diff --git a/package.json b/package.json deleted file mode 100644 index ee023c3..0000000 --- a/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "scripts": { - "res:build": "rescript", - "res:dev": "rescript build -w", - "test": "retest lib/**/*.mjs" - }, - "devDependencies": { - "@glennsl/bs-jest": "^0.7.0", - "jest": "^29.7.0", - "rescript": "^10.1.4", - "rescript-js": "^1.0.0-beta.2", - "rescript-test": "^5.0.0" - } -} diff --git a/pmltt-lang/.gitignore b/pmltt-lang/.gitignore deleted file mode 100644 index acb56b7..0000000 --- a/pmltt-lang/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# ReScript -/lib/ -.bsb.lock -.merlin -*.bs.mjs \ No newline at end of file diff --git a/pmltt-lang/README.md b/pmltt-lang/README.md deleted file mode 100644 index dcbef2d..0000000 --- a/pmltt-lang/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# ReScript / Vite Starter Template - -This is a Vite-based template with following setup: - -- [ReScript](https://rescript-lang.org) 10.1 with @rescript/react and JSX 4 automatic mode -- ES6 modules (ReScript code compiled to `.bs.mjs` files) -- Vite 4 with React Plugin (Fast Refresh) -- Tailwind 3 - -## Development - -Run ReScript in dev mode: - -```sh -npm run res:dev -``` - -In another tab, run the Vite dev server: - -```sh -npm run dev -``` - -## Tips - -### Fast Refresh & ReScript - -Make sure to create interface files (`.resi`) for each `*.res` file. - -Fast Refresh requires you to **only export React components**, and it's easy to unintenionally export other values that will disable Fast Refresh (you will see a message in the browser console whenever this happens). - -### Why are the generated `.bs.mjs` files tracked in git? - -In ReScript, it's a good habit to keep track of the actual JS output the compiler emits. It allows quick sanity checking if we made any changes that actually have an impact on the resulting JS code (especially when doing major compiler upgrades, it's a good way to verify if production code will behave the same way as before the upgrade). - -This will also make it easier for your Non-ReScript coworkers to read and understand the changes in Github PRs, and call you out when you are writing inefficient code. - -If you want to opt-out, feel free to remove all compiled `.mjs` files within the `src` directory and add `src/**/*.mjs` in your `.gitignore`. diff --git a/pmltt-lang/bsconfig.json b/pmltt-lang/bsconfig.json deleted file mode 100644 index 4ac56db..0000000 --- a/pmltt-lang/bsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "pmltt-lang", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": [ - { - "module": "es6", - "in-source": true - } - ], - "suffix": ".bs.mjs", - "bs-dependencies": [ - "@rescript/react", - "@rescript/core" - ], - "jsx": { - "version": 4, - "mode": "automatic" - }, - "bsc-flags": [ - "-open RescriptCore" - ] -} \ No newline at end of file diff --git a/pmltt-lang/index.html b/pmltt-lang/index.html deleted file mode 100644 index 19c0193..0000000 --- a/pmltt-lang/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - ReScript + Vite + React - - - -
    - - - - \ No newline at end of file diff --git a/pmltt-lang/package-lock.json b/pmltt-lang/package-lock.json deleted file mode 100644 index f927e2d..0000000 --- a/pmltt-lang/package-lock.json +++ /dev/null @@ -1,2226 +0,0 @@ -{ - "name": "pmltt-lang", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pmltt-lang", - "version": "0.0.0", - "dependencies": { - "@rescript/core": "^0.5.0", - "@rescript/react": "^0.11.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "rescript": "10.1" - }, - "devDependencies": { - "@vitejs/plugin-react": "4.0.0", - "autoprefixer": "^10.4.15", - "postcss": "^8.4.28", - "tailwindcss": "^3.3.3", - "vite": "^4.4.9" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rescript/core": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@rescript/core/-/core-0.5.0.tgz", - "integrity": "sha512-Keqnpi+8VqyhCk/3aMwar8hJbNy2IsINAAfIFeQC65IIegCR0QXFDBpQxfVcmbbtoHq6HnW4B3RLm/9GCUJQhQ==", - "peerDependencies": { - "rescript": "^10.1.0 || ^11.0.0-alpha.0 || next" - } - }, - "node_modules/@rescript/react": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.11.0.tgz", - "integrity": "sha512-RzoAO+3cJwXE2D7yodMo4tBO2EkeDYCN/I/Sj/yRweI3S1CY1ZBOF/GMcVtjeIurJJt7KMveqQXTaRrqoGZBBg==", - "peerDependencies": { - "react": ">=18.0.0", - "react-dom": ">=18.0.0" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", - "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.21.4", - "@babel/plugin-transform-react-jsx-self": "^7.21.0", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001547", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", - "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.554", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", - "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "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/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jiti": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/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 - }, - "node_modules/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==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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 - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "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/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rescript": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.4.tgz", - "integrity": "sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg==", - "hasInstallScript": true, - "bin": { - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing", - "rescript": "rescript" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/source-map-js": { - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "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/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vite": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", - "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "dev": true, - "engines": { - "node": ">= 14" - } - } - } -} diff --git a/pmltt-lang/package.json b/pmltt-lang/package.json deleted file mode 100644 index d5180c8..0000000 --- a/pmltt-lang/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "pmltt-lang", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "res:build": "rescript", - "res:clean": "rescript clean", - "res:dev": "rescript build -w", - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@rescript/core": "^0.5.0", - "@rescript/react": "^0.11.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "rescript": "10.1" - }, - "devDependencies": { - "@vitejs/plugin-react": "4.0.0", - "autoprefixer": "^10.4.15", - "postcss": "^8.4.28", - "tailwindcss": "^3.3.3", - "vite": "^4.4.9" - } -} diff --git a/pmltt-lang/postcss.config.cjs b/pmltt-lang/postcss.config.cjs deleted file mode 100644 index 12a703d..0000000 --- a/pmltt-lang/postcss.config.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/pmltt-lang/public/vite.svg b/pmltt-lang/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/pmltt-lang/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pmltt-lang/src/App.css b/pmltt-lang/src/App.css deleted file mode 100644 index e69de29..0000000 diff --git a/pmltt-lang/src/App.res b/pmltt-lang/src/App.res deleted file mode 100644 index 3425cad..0000000 --- a/pmltt-lang/src/App.res +++ /dev/null @@ -1,22 +0,0 @@ -open React -open ReactEvent.Form - -@react.component -let make = () => { - let (inputExpr, setInputExpr) = useState(() => "") - - let (interp, setInterp) = useState(() => OneTruth.make()) - -
    -

    {"What is this about?"->React.string}

    -
    - setInputExpr(currentTarget(event)["value"])} - /> -
     {interp->JSON.stringifyAnyWithIndent(2)->Option.getWithDefault("")->string} 
    -
    -
    -} diff --git a/pmltt-lang/src/App.resi b/pmltt-lang/src/App.resi deleted file mode 100644 index 3d9d508..0000000 --- a/pmltt-lang/src/App.resi +++ /dev/null @@ -1,2 +0,0 @@ -@react.component -let make: unit => Jsx.element diff --git a/pmltt-lang/src/Button.res b/pmltt-lang/src/Button.res deleted file mode 100644 index fd695f8..0000000 --- a/pmltt-lang/src/Button.res +++ /dev/null @@ -1,7 +0,0 @@ -// Styling from https://tailwind-elements.com/docs/standard/components/buttons/ -let make = props => -