diff --git a/md-docs.config.yaml b/md-docs.config.yaml
index 1b93fe1..917ac1e 100644
--- a/md-docs.config.yaml
+++ b/md-docs.config.yaml
@@ -3,7 +3,8 @@ output: static
template: static/template.html
headings:
- h1: text-4xl mb-4 font-black
- h2: text-3xl mt-8 mb-4 font-bold
- h3: text-2xl mt-8 mb-4 font-medium
+ h1: text-3xl mb-4 font-display opacity-90
+ h2: text-2xl mt-10 mb-4 font-display opacity-90
+ h3: text-xl mt-10 mb-4 font-display opacity-90
+file_tree_title_classes: "uppercase text-sm font-display"
diff --git a/md/learn/basics/comments.md b/md/learn/basics/comments.md
new file mode 100644
index 0000000..04bdbf7
--- /dev/null
+++ b/md/learn/basics/comments.md
@@ -0,0 +1,80 @@
+# Comments
+
+You may have noticed that in some code examples there are some
+lines of text explaining the code:
+
+```thp
+// This is the variable
+val person = "John"
+```
+
+Comments are used to explain what the code does. Anything written
+in a comment is ignored by THP.
+
+## Single line comments
+
+As the name says, these comments span only 1 line. To create one write
+two slashes together `//`. Everything after the slashes and before
+the newline will be ignored.
+
+```thp
+// This is a single line comment
+// You can write anything you want here, although it's usually
+// used to describe the code
+
+// The commend ends where the line ends,
+so this line will not be ignored by THP, and will throw an error
+```
+
+
+
+## Multi line comments
+
+As the name says, these comments can span multiple lines.
+
+They have 2 components: a start and a end. To start a multiline comment
+write a slash and asterisk `/*`, and to end the comment, the inverse `*/`
+
+```thp
+/*
+ This is a multiline comment.
+ I can write whatever I want here, and across multiple
+ lines, as long as I'm before the closing characters (* /)
+*/
+```
+
+
+## Using comments to prevent code execution
+
+Since comments are ignored by THP, we can use them to prevent certain
+parts of the code from running.
+
+Let's say we have this script:
+
+```thp
+print("Hello John")
+print("How's your day going?")
+```
+
+If I wanted the 2nd line not to execute, I can use a comment:
+
+```thp
+print("Hello John")
+// print("How's your day going?")
+```
+
+Now the second line is ignored, and the message is not printed.
+
+The same can be done with multiline comments.
+
+
+```thp
+print("Hello John")
+/*
+print("How's your day going?")
+*/
+```
+
+
+
+
diff --git a/md/learn/basics/datatypes.md b/md/learn/basics/datatypes.md
new file mode 100644
index 0000000..119cdd6
--- /dev/null
+++ b/md/learn/basics/datatypes.md
@@ -0,0 +1,127 @@
+# Datatypes
+
+Programming is comprised of 2 basic things: instructions and data.
+
+If we compare a program to a cake recipe, the instructions are the steps
+(**pour** flour, **add** water, **add** egg, **mix**) and the data are the ingredients
+themselves (flour, water, egg).
+
+![Image](Image)
+
+Then, we can describe the recipe in terms of instructions and data. For example,
+"mix flour and egg to produce dough".
+
+![Image](Image)
+
+All code is like a recipe: A list of instructions and data that, when combined
+correctly, are able to transform a input to an output. Many advanced concepts
+are just ways to organize and abstract those instructions and data.
+
+
+## Classifying datatypes
+
+As with food, datatypes can be classified. Just like there are fruits, vegetables,
+oils, there are `numbers`, `text`, `"booleans"`.
+
+
+
+### Int
+
+Int is an abbreviation for "integer numbers", which are numbers without a fractional component.
+They can be positive or negative.
+
+In code, they are written just like numbers:
+
+```thp
+val age = 33
+val children = 0
+val money = -15000
+```
+
+You can use underscores to help you differentiate thousands, millions, etc.
+However, there cannot be spaces in between
+
+```thp
+val studentDebt = 3_500_000_000_000 // Valid
+val invalid = 3 500 000 000 000 // Invalid, will throw an error
+```
+
+The common operations can be done as in math:
+
+```thp
+val result1 = 10 + 20
+val result2 = 1779 * 2 - (55 / 5)
+```
+
+
+### Float
+
+Float is an abbreviation for "floating point numbers". In simplified terms, these are numbers
+**with** a fractional component.
+
+They are written with a dot `.` to separate the whole part and the fraction.
+
+```thp
+val pi = 3.141592
+val epsilon = 2.775557
+```
+
+Underscore can also be used:
+
+```thp
+val reallyLongNumber = 23_870_000.443_879
+```
+
+Common operations can be performed the same way:
+
+```thp
+val value1 = 552.23 - 32
+val value2 = 3.2 * (-0.22 + 23.334) / 0.5
+// etc.
+```
+
+### String
+
+A string of letters (technically, characters). Strings are used to represent text,
+and are wrapped in quotation marks.
+
+```thp
+val name = "John"
+val lastName = "Doe"
+
+val greeting = "Hello"
+```
+
+#### Concatenation
+
+Strings cannot be added, substracted, multiplied, divided.
+They have another operation, called "concatenation".
+
+Concatenation "joins" two strings, for example, the concatenation of
+`"human"` and `"kind"` is `"humankind"`.
+
+As it is a common operation, string concatenation reuses the operation
+for addition `+`.
+
+```thp
+val string = "human" + "kind"
+```
+
+
+### Boolean
+
+A boolean represents something that can only be in one of two states.
+
+Booleans are useful in conditionals, which will be explained later.
+
+
+```thp
+val condition = true
+val isSunny = false
+
+if isSunny {
+ doSomething()
+}
+```
+
+
diff --git a/md/learn/basics/hello-world.md b/md/learn/basics/hello-world.md
new file mode 100644
index 0000000..692f34a
--- /dev/null
+++ b/md/learn/basics/hello-world.md
@@ -0,0 +1,60 @@
+# Hello, world!
+
+This pages shows you how to write and run your first THP script.
+
+## Prerequisites
+
+You will need to have PHP and THP installed. If you haven't already, see the
+install page.
+
+## Writing the program
+
+Create a new file called `hello.thp`, and inside write the following (you can
+copy and paste):
+
+```thp
+print("Hello, world!")
+```
+
+Then, save the code.
+
+## Running the program
+
+Open a terminal in the folder where you created the file `hello.thp`.
+Then write the following command and press enter:
+
+```sh
+thp hello.thp
+```
+
+This will run the program, and produce the following result:
+
+```sh
+Hello, world!
+```
+
+Congratulations! You just wrote your first THP program!
+
+## Explaining the program
+
+Now let's understand the code.
+
+```thp
+print("Hello, world!")
+```
+
+There are 2 essential components:
+
+- `print` - print is a "function", it takes some value and performs some action with it.
+ In this case, it takes a text and displays it in the terminal.
+- `"Hello, world!"` - Is the text that the function `print` takes, and displays in
+ the terminal. Note that it is enclosed in quotation marks.
+
+## What to do next
+
+You can now experiment with the program you wrote. What happens if you change the text?
+What if you don't put quotation marks? And what are the parenthesis for?
+
+To continue learning about THP, continue to the next page, where you'll learn
+about "datatypes".
+
diff --git a/md/learn/basics/io.md b/md/learn/basics/io.md
new file mode 100644
index 0000000..3c7e574
--- /dev/null
+++ b/md/learn/basics/io.md
@@ -0,0 +1,64 @@
+# Input & Output
+
+At the end of the day, a program takes some input,
+and transform it to some output. We will explore how to
+receive data, and also present it.
+
+## Output
+
+There are many ways to show the result of our programs.
+One of them is called `standard output`, which in simplified
+terms, is the terminal from where we run our program.
+
+### `print`
+
+Create an empty file, and name it `hello.php`. We will create
+a program that shows a result to our screen.
+
+Inside `hello.php` write the following code:
+
+```thp
+print("Hello")
+```
+
+Then, open a terminal and run the program with the `thp` command.
+After you press ENTER, you will see in the terminal the text "Hello".
+
+
+```sh
+$ thp hello.thp # Copy this command and run it
+Hello # This is the output of our program
+```
+
+The thp function `print` allows us to display something in the terminal.
+
+If you change the `hello.php` file, and run it, you'll see how it changes.
+
+```thp
+print(322)
+```
+```sh
+$ thp hello.php
+322
+```
+
+Or, if you copy `print` multiple times, each will show something in the screen.
+
+```thp
+print("Hello")
+print("This is an example")
+print("of having many prints")
+```
+```sh
+$ thp hello.php
+Hello
+This is an example
+of having many prints
+```
+
+### Using `print` in a larger program
+
+
+
+
+
diff --git a/md/learn/basics/operators.md b/md/learn/basics/operators.md
new file mode 100644
index 0000000..949fc93
--- /dev/null
+++ b/md/learn/basics/operators.md
@@ -0,0 +1,5 @@
+# Operators
+
+Some common operators
+
+
diff --git a/md/learn/basics/the-compiler.md b/md/learn/basics/the-compiler.md
new file mode 100644
index 0000000..7b25a20
--- /dev/null
+++ b/md/learn/basics/the-compiler.md
@@ -0,0 +1,72 @@
+# The compiler
+
+The compiler is the program that takes your THP code and converts it
+into something that the computer can run (in this case, PHP code).
+
+
+
+The compiler reads your code and tries to understand it.
+When it can't understand some part, it will ask you to clarify what
+you meant, with an error.
+
+
+
+
+
+
+## Compile time vs runtime
+
+Compile time is when you build your program.
+
+Runtime is when you run your program.
+
+To make an analogy with cars, compile time would be the factory,
+while runtime would be using the finished car.
+
+
+
+The compiler is very strict. If it finds any errors during compile time
+it will refuse to build the program.
+
+
+### Compile time errors
+
+Compile time errors are errors that happen while the compiler is
+building your program. In the car analogy, a compile error would happen
+if there's an error in the "blueprint"
+
+
+### Runtime errors
+
+These are errors that happen to the built program, or in this case,
+the finished car. It would be like the car blowing up while on the highway.
+
+To minimize the amount of runtime errors the compiler tries to catch them all
+during compile time. It's better if it fails in the factory than in the
+real world.
+
+
+## The compiler and datatypes
+
+The first measure the compiler takes is to check that all the datatypes
+match. If an operation requires a number, you can't just give it a string.
+
+
+
+For example, if we wanted to add a number to a string, we would get an
+error:
+
+```thp
+50 + "hello" // Error: The `+` operator expects two Numbers,
+ // but an String was found.
+```
+
+This way, we can assure that many errors are avoided (since it doesn't
+really make sense to add a number to a text).
+
+
+
+
+
+
+
diff --git a/md/learn/basics/variables.md b/md/learn/basics/variables.md
new file mode 100644
index 0000000..8b8e213
--- /dev/null
+++ b/md/learn/basics/variables.md
@@ -0,0 +1,139 @@
+# Variables
+
+Variables allows us to store values under a name, so that we can use them
+later.
+
+For example, in a program we could have the name of our user, and use it
+multiple times:
+
+```thp
+print("Hello, where's Joe?")
+print("How old is Joe?")
+print("Do you know if Joe has kids?")
+```
+
+We are using the same value `Joe` many times. Each time we use it we have
+to type `Joe`. But what happens if we needed to use a different name?
+We'd have to change the name everywhere in our code!
+
+```thp
+print("Hello, where's Jane?")
+print("How old is Jane?")
+print("Do you know if Jane has kids?")
+```
+
+## Variables to the rescue
+
+With a variable we can store values so we can use them later, or use them
+in multiple times.
+
+In the previous code, we can use a variable to store the person's name,
+and then use it everywhere.
+
+```thp
+// This is the variable
+val person = "John"
+
+print("Hello, where's {person}?")
+print("How old is {person}?")
+print("Do you know if Joe has {person}?")
+```
+
+Now, instead of writing `"John"` every time, we write the name of the
+variable instead.
+
+If we wanted to change the person's name to "Jane", we just need to change
+it in one place: the variable
+
+```thp
+// We change this
+val person = "Jane"
+
+// And all these lines will use the new value
+print("Hello, where's {person}?")
+print("How old is {person}?")
+print("Do you know if Joe has {person}?")
+```
+
+## Variable rules
+
+To use a variable we do the following:
+
+- Write the special word `val`
+- Write the name of our variable
+- Write the equal sign `=`
+- Write the value of our variable
+
+```thp
+ val person = "Jane"
+/* --- ------ - ------
+ | | | +- The value of our variable
+ | | +----- The equal sign
+ | +---------- The name of our variable
+ +--------------- The special word (keyword) val
+*/
+```
+
+The value can be anything: ints, floats, string, bools, even other variables and operations!
+
+```thp
+val variable_1 = 322
+val variable_2 = 123.456
+val variable_3 = "a text"
+val variable_4 = false
+val variable_5 = variable_1 + variable 2
+```
+
+## Variable name rules
+
+- Starts with a lowercase letter (a-z) or underscore (`_`)
+- Then can have any letter (a-zA-Z), underscore (`_`) or number (0-9)
+- Cannot have spaces
+- Cannot have the same name as a keyword (for example, the `val` keyword)
+
+
+Some examples of valid variable names:
+
+```thp
+val name = ...
+val age = ...
+val my_name = ...
+val many_words_joined_by_underscores = ...
+val person_2 = ...
+val person_3 = ...
+```
+
+Some invalid variables and why they are invalid:
+
+```thp
+val 1name = ... // Invalid: starts with a number
+val 123_person = ... // Invalid: starts with a number
+val val = ... // Invalid: same name as a keyword (val)
+val Person = ... // Invalid: starts with an uppercase letter
+val person name = ... // Invalid: contains whitespace
+val +@name = ... // Invalid: contains non-letters (+@)
+val name🫠 = ... // Invalid: contains emoji (🫠)
+```
+
+
+## Variable reassignment
+
+When you create a new variable with the same name of an old variable,
+the old is "replaced" with the new one.
+
+```thp
+val person_name = "John"
+print(person_name) // Will print "John"
+
+val person_name = "Jane"
+print(person_name) // Will print "Jane"
+```
+
+This will have some implications on the future, but for now you should
+now that you will always use the value of the last variable you define.
+
+
+
+
+
+
diff --git a/md/learn/flow-control/break-continue.md b/md/learn/flow-control/break-continue.md
new file mode 100644
index 0000000..e69de29
diff --git a/md/learn/flow-control/conditionals.md b/md/learn/flow-control/conditionals.md
new file mode 100644
index 0000000..d7e57db
--- /dev/null
+++ b/md/learn/flow-control/conditionals.md
@@ -0,0 +1,3 @@
+# Conditionals
+
+
diff --git a/md/learn/flow-control/foreach.md b/md/learn/flow-control/foreach.md
new file mode 100644
index 0000000..e69de29
diff --git a/md/learn/flow-control/if-expresions.md b/md/learn/flow-control/if-expresions.md
new file mode 100644
index 0000000..e69de29
diff --git a/md/learn/flow-control/match.md b/md/learn/flow-control/match.md
new file mode 100644
index 0000000..e69de29
diff --git a/md/learn/flow-control/while.md b/md/learn/flow-control/while.md
new file mode 100644
index 0000000..e69de29
diff --git a/md/learn/functions/parameters.md b/md/learn/functions/parameters.md
new file mode 100644
index 0000000..5b2e2fc
--- /dev/null
+++ b/md/learn/functions/parameters.md
@@ -0,0 +1,71 @@
+# Function parameters
+
+
+## Immutable reference
+
+```thp
+fun add_25(Array[Int] numbers) {
+ numbers.push(25) // Error: `numbers` is immutable
+}
+```
+
+When using a regular type as a parameter, only it's immutable
+properties can be used inside the function
+
+```thp
+fun count(Array[Int] numbers) -> Int {
+ val items_count = numbers.size() // Ok, `size` is pure
+
+ items_count
+}
+```
+
+
+## Mutable reference
+
+```thp
+fun add_25(&Array[Int] numbers) {
+ numbers.push(25) // Ok, will also mutate the original array
+}
+```
+
+Placing a `&` before the type makes the parameter a mutable
+reference. Mutable methods can be used, and the original
+data **will** be mutated.
+
+The callee *must* also use `&`.
+
+```thp
+val numbers = Array(1, 2, 3, 4)
+
+add_25(&numbers) // Pass `numbers` as reference.
+
+print(numbers(4)) // `Some(25)`
+```
+
+
+
+## Clone
+
+```thp
+fun add_25(clone Array[Int] numbers) {
+ numbers.push(25) // Ok, the original array is unaffected
+}
+```
+
+Using the `clone` keyword before the type creates a mutable copy
+of the parameter. The original data will **not** be mutated.
+
+
+```thp
+val numbers = Array(1, 2, 3, 4)
+
+add_25(&numbers) // Pass `numbers` as reference.
+
+print(numbers(4)) // None
+```
+
+
+
+
+
diff --git a/md/learn/ideas/idea_1.md b/md/learn/ideas/idea_1.md
new file mode 100644
index 0000000..7d8d54d
--- /dev/null
+++ b/md/learn/ideas/idea_1.md
@@ -0,0 +1,201 @@
+# Idea 1
+
+
+var x = 20
+val y = 30
+
+type Something = ...
+
+Something s1 = ...
+Something s2 = s1
+
+
+// Passes `some` by reference, but it's immutable. Cannot call mutable methods
+// or use it in mutable operations
+fun do_something(Something some) -> Bool {}
+do_something(s1)
+
+// Passes `some` by reference, and it's mutable. Can call mutable methods
+// or use it in mutable operations
+fun do_something(&Something some) -> Bool {}
+do_something(&s1)
+
+
+var arr1 = Array(10, 20, 30)
+var arr2 = &arr1
+
+
+ Owned/Reference Mutable
+Type Owned n
+&Type Reference n
+mut Type Owned y
+&mut Type Reference y
+
+
+ Copy/Reference Mutable Equivalent
+Some Copy n 1 (technically) references the other data
+&Some Reference n 1 References the other data
+mut Some Copy y 2 Creates a __mutable__ copy
+&mut Some Reference y 3 References the other data, __mutable__
+
+
+## `Array[A]::map`
+
+```thp
+fun map[B](this, (A) -> B callback) -> Array[B]
+```
+
+Applies `callback` to all the elements of this array, and
+returns those new values in a new array.
+
+### Example
+
+```thp
+val numbers = Array(1, 2, 3, 4, 5)
+
+val numbers_squared = numbers.map {it ** 2}
+
+print(numbers_squared) // Array(1, 4, 9, 16, 25)
+
+numbers.map(fun(v) {
+ v - 2
+})
+```
+
+
+
+## `Array[A]::reduce`
+
+```thp
+fun reduce[B](
+ this,
+ B initial,
+ (A previous, B current) -> B callback,
+) -> B
+```
+
+Iteratively reduce the array to a single value using `callback`.
+
+
+### Example
+
+```thp
+val numbers = Array(1, 2, 3, 4, 5)
+
+val sum = numbers.reduce(0, \+)
+val sum = numbers.reduce(0) {$1 + $2}
+val sum = numbers.reduce(0, fun(prev, curr) {prev + curr})
+
+print(sum) // 15
+```
+
+
+```thp
+val numbers = Array(1, 2, 3, 4, 5)
+
+val sum = numbers.reduce("", fun(prev, curr) {prev + curr})
+
+val sum = numbers.reduce("") {prev, curr -> prev + curr}
+
+print(sum) // "12345"
+```
+
+
+```thp
+// Functor
+
+fun fmap(
+ (A) -> B,
+ f[A],
+) -> f[B]
+
+fun (<$)(
+ A,
+ f[B],
+) -> f[A]
+
+
+// Applicative
+
+fun pure(A) -> f[A]
+
+fun (<*>)(
+ f[A -> B],
+ f[A],
+) -> f[B]
+
+fun (*>)(
+ f[_],
+ f[B],
+) -> f[B]
+
+fun (<*)(
+ f[A],
+ f[_],
+) -> f[A]
+
+
+// Monad
+
+fun (>>=)[m, A, B](
+ m[A],
+ (A) -> m[B],
+) -> m[B]
+
+
+(Array[Int], Int -> Array[String]) -> Array[String]
+
+val result = Array(1, 2, 3, 4, 5) >>= {Array($.into[String]())}
+
+print(result) // Array("1", "2", "3", "4", "5")
+```
+
+
+```thp
+Option[Int] result = "322".try_into()
+Option[Int] result_halved = result >>= {Some($ / 2)}
+
+print(result_halved) // Some(161)
+
+
+Option[Int] result = "abc".try_into()
+Option[Int] result_halved = result >>= {Some($ / 2)}
+
+print(result_halved) // None
+```
+
+```thp
+fun (<$>)[m, A, B](
+ (A) -> B,
+ m[A],
+) -> m[B]
+
+
+fun half(Int x) -> Int {
+ x / 2
+}
+
+
+Option[Int] result = "322".try_into()
+Option[Int] result_halved = result <$> half
+
+print(result_halved) // Some(161)
+
+
+Option[Int] result = "abc".try_into()
+Option[Int] result_halved = result <$> half
+
+print(result_halved) // None
+```
+
+```thp
+fun (>>)[A, B, C](
+ (A) -> B,
+ (B) -> C,
+) -> (A) -> C
+
+val f1 = add1 >> times2
+
+f1(5) // 12
+```
+
diff --git a/md/learn/index.md b/md/learn/index.md
index 6d8f90a..88c5f7c 100644
--- a/md/learn/index.md
+++ b/md/learn/index.md
@@ -4,6 +4,13 @@ Welcome to the documentation of the THP programming languague.
THP is a new programming language that compiles to PHP.
+
+
+This page discusses some of the design decitions of the language,
+if you want to install THP go to the installation guide](/installation-guide)
+
+If you want to learn the language, go to the learn section.
+
## Goals
- Bring static typing to PHP: Not just type hints, not use `mixed` for everything
diff --git a/md/learn/index.yaml b/md/learn/index.yaml
index 5efc31f..b4aab1d 100644
--- a/md/learn/index.yaml
+++ b/md/learn/index.yaml
@@ -4,3 +4,25 @@ has_index: true
children:
- path: index
name: Index
+- path: install
+ name: Install
+- path: basics
+ name: Basics
+ children:
+ - path: hello-world
+ name: Hello, world!
+ - path: datatypes
+ name: Datatypes
+ - path: the-compiler
+ name: The compiler
+ - name: Variables
+ path: variables
+ - path: io
+ name: Input & Output
+ - path: comments
+ name: Comments
+- name: Flow control
+ path: flow-control
+ children:
+ - name: Conditionals
+ path: conditionals
diff --git a/md/learn/install.md b/md/learn/install.md
new file mode 100644
index 0000000..444187a
--- /dev/null
+++ b/md/learn/install.md
@@ -0,0 +1,10 @@
+# Install
+
+## From scratch
+
+Also install php (through XAMPP in windows/mac, php in linux) and Composer.
+
+## With composer
+
+TBD, the user should be able to just run `composer require thp` and
+the proper binary should be intalled.
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d8f5282..63b4e3a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,30 +1,35 @@
-lockfileVersion: 5.4
+lockfileVersion: '6.0'
-specifiers:
- concurrently: ^8.2.0
- serve: ^14.2.0
- tailwindcss: ^3.2.7
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
devDependencies:
- concurrently: 8.2.0
- serve: 14.2.0
- tailwindcss: 3.3.2
+ concurrently:
+ specifier: ^8.2.0
+ version: 8.2.0
+ serve:
+ specifier: ^14.2.0
+ version: 14.2.0
+ tailwindcss:
+ specifier: ^3.2.7
+ version: 3.3.2
packages:
- /@alloc/quick-lru/5.2.0:
+ /@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
dev: true
- /@babel/runtime/7.22.5:
+ /@babel/runtime@7.22.5:
resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
dev: true
- /@jridgewell/gen-mapping/0.3.3:
+ /@jridgewell/gen-mapping@0.3.3:
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'}
dependencies:
@@ -33,32 +38,32 @@ packages:
'@jridgewell/trace-mapping': 0.3.18
dev: true
- /@jridgewell/resolve-uri/3.1.0:
+ /@jridgewell/resolve-uri@3.1.0:
resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
engines: {node: '>=6.0.0'}
dev: true
- /@jridgewell/set-array/1.1.2:
+ /@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
dev: true
- /@jridgewell/sourcemap-codec/1.4.14:
+ /@jridgewell/sourcemap-codec@1.4.14:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
dev: true
- /@jridgewell/sourcemap-codec/1.4.15:
+ /@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
dev: true
- /@jridgewell/trace-mapping/0.3.18:
+ /@jridgewell/trace-mapping@0.3.18:
resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
dependencies:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
- /@nodelib/fs.scandir/2.1.5:
+ /@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
dependencies:
@@ -66,12 +71,12 @@ packages:
run-parallel: 1.2.0
dev: true
- /@nodelib/fs.stat/2.0.5:
+ /@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
dev: true
- /@nodelib/fs.walk/1.2.8:
+ /@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
dependencies:
@@ -79,11 +84,11 @@ packages:
fastq: 1.15.0
dev: true
- /@zeit/schemas/2.29.0:
+ /@zeit/schemas@2.29.0:
resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==}
dev: true
- /accepts/1.3.8:
+ /accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
dependencies:
@@ -91,7 +96,7 @@ packages:
negotiator: 0.6.3
dev: true
- /ajv/8.11.0:
+ /ajv@8.11.0:
resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==}
dependencies:
fast-deep-equal: 3.1.3
@@ -100,39 +105,39 @@ packages:
uri-js: 4.4.1
dev: true
- /ansi-align/3.0.1:
+ /ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
dependencies:
string-width: 4.2.3
dev: true
- /ansi-regex/5.0.1:
+ /ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
dev: true
- /ansi-regex/6.0.1:
+ /ansi-regex@6.0.1:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
dev: true
- /ansi-styles/4.3.0:
+ /ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
dependencies:
color-convert: 2.0.1
dev: true
- /ansi-styles/6.2.1:
+ /ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
dev: true
- /any-promise/1.3.0:
+ /any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: true
- /anymatch/3.1.3:
+ /anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
@@ -140,24 +145,24 @@ packages:
picomatch: 2.3.1
dev: true
- /arch/2.2.0:
+ /arch@2.2.0:
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
dev: true
- /arg/5.0.2:
+ /arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true
- /balanced-match/1.0.2:
+ /balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
- /binary-extensions/2.2.0:
+ /binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: true
- /boxen/7.0.0:
+ /boxen@7.0.0:
resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==}
engines: {node: '>=14.16'}
dependencies:
@@ -171,43 +176,43 @@ packages:
wrap-ansi: 8.1.0
dev: true
- /brace-expansion/1.1.11:
+ /brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
dev: true
- /braces/3.0.2:
+ /braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: true
- /bytes/3.0.0:
+ /bytes@3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
dev: true
- /camelcase-css/2.0.1:
+ /camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
dev: true
- /camelcase/7.0.1:
+ /camelcase@7.0.1:
resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
engines: {node: '>=14.16'}
dev: true
- /chalk-template/0.4.0:
+ /chalk-template@0.4.0:
resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==}
engines: {node: '>=12'}
dependencies:
chalk: 4.1.2
dev: true
- /chalk/4.1.2:
+ /chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
dependencies:
@@ -215,12 +220,12 @@ packages:
supports-color: 7.2.0
dev: true
- /chalk/5.0.1:
+ /chalk@5.0.1:
resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
- /chokidar/3.5.3:
+ /chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
@@ -235,12 +240,12 @@ packages:
fsevents: 2.3.2
dev: true
- /cli-boxes/3.0.0:
+ /cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
dev: true
- /clipboardy/3.0.0:
+ /clipboardy@3.0.0:
resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
@@ -249,7 +254,7 @@ packages:
is-wsl: 2.2.0
dev: true
- /cliui/8.0.1:
+ /cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
dependencies:
@@ -258,30 +263,30 @@ packages:
wrap-ansi: 7.0.0
dev: true
- /color-convert/2.0.1:
+ /color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
dev: true
- /color-name/1.1.4:
+ /color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
- /commander/4.1.1:
+ /commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
dev: true
- /compressible/2.0.18:
+ /compressible@2.0.18:
resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
dev: true
- /compression/1.7.4:
+ /compression@1.7.4:
resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
engines: {node: '>= 0.8.0'}
dependencies:
@@ -296,11 +301,11 @@ packages:
- supports-color
dev: true
- /concat-map/0.0.1:
+ /concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
- /concurrently/8.2.0:
+ /concurrently@8.2.0:
resolution: {integrity: sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==}
engines: {node: ^14.13.0 || >=16.0.0}
hasBin: true
@@ -316,12 +321,12 @@ packages:
yargs: 17.7.2
dev: true
- /content-disposition/0.5.2:
+ /content-disposition@0.5.2:
resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==}
engines: {node: '>= 0.6'}
dev: true
- /cross-spawn/7.0.3:
+ /cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
dependencies:
@@ -330,20 +335,20 @@ packages:
which: 2.0.2
dev: true
- /cssesc/3.0.0:
+ /cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
dev: true
- /date-fns/2.30.0:
+ /date-fns@2.30.0:
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
engines: {node: '>=0.11'}
dependencies:
'@babel/runtime': 7.22.5
dev: true
- /debug/2.6.9:
+ /debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
supports-color: '*'
@@ -354,37 +359,37 @@ packages:
ms: 2.0.0
dev: true
- /deep-extend/0.6.0:
+ /deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
dev: true
- /didyoumean/1.2.2:
+ /didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: true
- /dlv/1.1.3:
+ /dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: true
- /eastasianwidth/0.2.0:
+ /eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
- /emoji-regex/8.0.0:
+ /emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
dev: true
- /emoji-regex/9.2.2:
+ /emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
dev: true
- /escalade/3.1.1:
+ /escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
dev: true
- /execa/5.1.1:
+ /execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
dependencies:
@@ -399,11 +404,11 @@ packages:
strip-final-newline: 2.0.0
dev: true
- /fast-deep-equal/3.1.3:
+ /fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
- /fast-glob/3.2.12:
+ /fast-glob@3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'}
dependencies:
@@ -414,30 +419,30 @@ packages:
micromatch: 4.0.5
dev: true
- /fast-url-parser/1.1.3:
+ /fast-url-parser@1.1.3:
resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==}
dependencies:
punycode: 1.4.1
dev: true
- /fastq/1.15.0:
+ /fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
reusify: 1.0.4
dev: true
- /fill-range/7.0.1:
+ /fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: true
- /fs.realpath/1.0.0:
+ /fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
- /fsevents/2.3.2:
+ /fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
@@ -445,35 +450,35 @@ packages:
dev: true
optional: true
- /function-bind/1.1.1:
+ /function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
- /get-caller-file/2.0.5:
+ /get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
dev: true
- /get-stream/6.0.1:
+ /get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
dev: true
- /glob-parent/5.1.2:
+ /glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
dev: true
- /glob-parent/6.0.2:
+ /glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
dev: true
- /glob/7.1.6:
+ /glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
dependencies:
fs.realpath: 1.0.0
@@ -484,132 +489,132 @@ packages:
path-is-absolute: 1.0.1
dev: true
- /has-flag/4.0.0:
+ /has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
- /has/1.0.3:
+ /has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.1
dev: true
- /human-signals/2.1.0:
+ /human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
dev: true
- /inflight/1.0.6:
+ /inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
once: 1.4.0
wrappy: 1.0.2
dev: true
- /inherits/2.0.4:
+ /inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
- /ini/1.3.8:
+ /ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: true
- /is-binary-path/2.1.0:
+ /is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
dev: true
- /is-core-module/2.12.1:
+ /is-core-module@2.12.1:
resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
dependencies:
has: 1.0.3
dev: true
- /is-docker/2.2.1:
+ /is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
dev: true
- /is-extglob/2.1.1:
+ /is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
- /is-fullwidth-code-point/3.0.0:
+ /is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
dev: true
- /is-glob/4.0.3:
+ /is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: true
- /is-number/7.0.0:
+ /is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
- /is-port-reachable/4.0.0:
+ /is-port-reachable@4.0.0:
resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
- /is-stream/2.0.1:
+ /is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
dev: true
- /is-wsl/2.2.0:
+ /is-wsl@2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
dependencies:
is-docker: 2.2.1
dev: true
- /isexe/2.0.0:
+ /isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
- /jiti/1.18.2:
+ /jiti@1.18.2:
resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
hasBin: true
dev: true
- /json-schema-traverse/1.0.0:
+ /json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
dev: true
- /lilconfig/2.1.0:
+ /lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
dev: true
- /lines-and-columns/1.2.4:
+ /lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
- /lodash/4.17.21:
+ /lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: true
- /merge-stream/2.0.0:
+ /merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true
- /merge2/1.4.1:
+ /merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
dev: true
- /micromatch/4.0.5:
+ /micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
dependencies:
@@ -617,50 +622,50 @@ packages:
picomatch: 2.3.1
dev: true
- /mime-db/1.33.0:
+ /mime-db@1.33.0:
resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==}
engines: {node: '>= 0.6'}
dev: true
- /mime-db/1.52.0:
+ /mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
dev: true
- /mime-types/2.1.18:
+ /mime-types@2.1.18:
resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.33.0
dev: true
- /mime-types/2.1.35:
+ /mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
dev: true
- /mimic-fn/2.1.0:
+ /mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
dev: true
- /minimatch/3.1.2:
+ /minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
brace-expansion: 1.1.11
dev: true
- /minimist/1.2.8:
+ /minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
- /ms/2.0.0:
+ /ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
dev: true
- /mz/2.7.0:
+ /mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
any-promise: 1.3.0
@@ -668,99 +673,99 @@ packages:
thenify-all: 1.6.0
dev: true
- /nanoid/3.3.6:
+ /nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
- /negotiator/0.6.3:
+ /negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
dev: true
- /normalize-path/3.0.0:
+ /normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
dev: true
- /npm-run-path/4.0.1:
+ /npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
dependencies:
path-key: 3.1.1
dev: true
- /object-assign/4.1.1:
+ /object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: true
- /object-hash/3.0.0:
+ /object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
dev: true
- /on-headers/1.0.2:
+ /on-headers@1.0.2:
resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
engines: {node: '>= 0.8'}
dev: true
- /once/1.4.0:
+ /once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
- /onetime/5.1.2:
+ /onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
dependencies:
mimic-fn: 2.1.0
dev: true
- /path-is-absolute/1.0.1:
+ /path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
dev: true
- /path-is-inside/1.0.2:
+ /path-is-inside@1.0.2:
resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
dev: true
- /path-key/3.1.1:
+ /path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
dev: true
- /path-parse/1.0.7:
+ /path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
- /path-to-regexp/2.2.1:
+ /path-to-regexp@2.2.1:
resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==}
dev: true
- /picocolors/1.0.0:
+ /picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true
- /picomatch/2.3.1:
+ /picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: true
- /pify/2.3.0:
+ /pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
dev: true
- /pirates/4.0.6:
+ /pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
dev: true
- /postcss-import/15.1.0_postcss@8.4.24:
+ /postcss-import@15.1.0(postcss@8.4.24):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -772,7 +777,7 @@ packages:
resolve: 1.22.2
dev: true
- /postcss-js/4.0.1_postcss@8.4.24:
+ /postcss-js@4.0.1(postcss@8.4.24):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
@@ -782,7 +787,7 @@ packages:
postcss: 8.4.24
dev: true
- /postcss-load-config/4.0.1_postcss@8.4.24:
+ /postcss-load-config@4.0.1(postcss@8.4.24):
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
engines: {node: '>= 14'}
peerDependencies:
@@ -799,7 +804,7 @@ packages:
yaml: 2.3.1
dev: true
- /postcss-nested/6.0.1_postcss@8.4.24:
+ /postcss-nested@6.0.1(postcss@8.4.24):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
@@ -809,7 +814,7 @@ packages:
postcss-selector-parser: 6.0.13
dev: true
- /postcss-selector-parser/6.0.13:
+ /postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'}
dependencies:
@@ -817,11 +822,11 @@ packages:
util-deprecate: 1.0.2
dev: true
- /postcss-value-parser/4.2.0:
+ /postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
- /postcss/8.4.24:
+ /postcss@8.4.24:
resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
@@ -830,25 +835,25 @@ packages:
source-map-js: 1.0.2
dev: true
- /punycode/1.4.1:
+ /punycode@1.4.1:
resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
dev: true
- /punycode/2.3.0:
+ /punycode@2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
dev: true
- /queue-microtask/1.2.3:
+ /queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
- /range-parser/1.2.0:
+ /range-parser@1.2.0:
resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==}
engines: {node: '>= 0.6'}
dev: true
- /rc/1.2.8:
+ /rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
dependencies:
@@ -858,48 +863,48 @@ packages:
strip-json-comments: 2.0.1
dev: true
- /read-cache/1.0.0:
+ /read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies:
pify: 2.3.0
dev: true
- /readdirp/3.6.0:
+ /readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
dev: true
- /regenerator-runtime/0.13.11:
+ /regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
dev: true
- /registry-auth-token/3.3.2:
+ /registry-auth-token@3.3.2:
resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==}
dependencies:
rc: 1.2.8
safe-buffer: 5.2.1
dev: true
- /registry-url/3.1.0:
+ /registry-url@3.1.0:
resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
engines: {node: '>=0.10.0'}
dependencies:
rc: 1.2.8
dev: true
- /require-directory/2.1.1:
+ /require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
dev: true
- /require-from-string/2.0.2:
+ /require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
dev: true
- /resolve/1.22.2:
+ /resolve@1.22.2:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
dependencies:
@@ -908,32 +913,32 @@ packages:
supports-preserve-symlinks-flag: 1.0.0
dev: true
- /reusify/1.0.4:
+ /reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
- /run-parallel/1.2.0:
+ /run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
dev: true
- /rxjs/7.8.1:
+ /rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
tslib: 2.5.3
dev: true
- /safe-buffer/5.1.2:
+ /safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: true
- /safe-buffer/5.2.1:
+ /safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
- /serve-handler/6.1.5:
+ /serve-handler@6.1.5:
resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==}
dependencies:
bytes: 3.0.0
@@ -946,7 +951,7 @@ packages:
range-parser: 1.2.0
dev: true
- /serve/14.2.0:
+ /serve@14.2.0:
resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==}
engines: {node: '>= 14'}
hasBin: true
@@ -966,36 +971,36 @@ packages:
- supports-color
dev: true
- /shebang-command/2.0.0:
+ /shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
dev: true
- /shebang-regex/3.0.0:
+ /shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
dev: true
- /shell-quote/1.8.1:
+ /shell-quote@1.8.1:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
- /signal-exit/3.0.7:
+ /signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
dev: true
- /source-map-js/1.0.2:
+ /source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: true
- /spawn-command/0.0.2:
+ /spawn-command@0.0.2:
resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
dev: true
- /string-width/4.2.3:
+ /string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
dependencies:
@@ -1004,7 +1009,7 @@ packages:
strip-ansi: 6.0.1
dev: true
- /string-width/5.1.2:
+ /string-width@5.1.2:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
dependencies:
@@ -1013,31 +1018,31 @@ packages:
strip-ansi: 7.1.0
dev: true
- /strip-ansi/6.0.1:
+ /strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
dev: true
- /strip-ansi/7.1.0:
+ /strip-ansi@7.1.0:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
dependencies:
ansi-regex: 6.0.1
dev: true
- /strip-final-newline/2.0.0:
+ /strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
dev: true
- /strip-json-comments/2.0.1:
+ /strip-json-comments@2.0.1:
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
dev: true
- /sucrase/3.32.0:
+ /sucrase@3.32.0:
resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
engines: {node: '>=8'}
hasBin: true
@@ -1051,26 +1056,26 @@ packages:
ts-interface-checker: 0.1.13
dev: true
- /supports-color/7.2.0:
+ /supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
dev: true
- /supports-color/8.1.1:
+ /supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
dev: true
- /supports-preserve-symlinks-flag/1.0.0:
+ /supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: true
- /tailwindcss/3.3.2:
+ /tailwindcss@3.3.2:
resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -1090,10 +1095,10 @@ packages:
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.24
- postcss-import: 15.1.0_postcss@8.4.24
- postcss-js: 4.0.1_postcss@8.4.24
- postcss-load-config: 4.0.1_postcss@8.4.24
- postcss-nested: 6.0.1_postcss@8.4.24
+ postcss-import: 15.1.0(postcss@8.4.24)
+ postcss-js: 4.0.1(postcss@8.4.24)
+ postcss-load-config: 4.0.1(postcss@8.4.24)
+ postcss-nested: 6.0.1(postcss@8.4.24)
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
resolve: 1.22.2
@@ -1102,67 +1107,67 @@ packages:
- ts-node
dev: true
- /thenify-all/1.6.0:
+ /thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
dev: true
- /thenify/3.3.1:
+ /thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
dev: true
- /to-regex-range/5.0.1:
+ /to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: true
- /tree-kill/1.2.2:
+ /tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
hasBin: true
dev: true
- /ts-interface-checker/0.1.13:
+ /ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
- /tslib/2.5.3:
+ /tslib@2.5.3:
resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
dev: true
- /type-fest/2.19.0:
+ /type-fest@2.19.0:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
dev: true
- /update-check/1.5.4:
+ /update-check@1.5.4:
resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==}
dependencies:
registry-auth-token: 3.3.2
registry-url: 3.1.0
dev: true
- /uri-js/4.4.1:
+ /uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.0
dev: true
- /util-deprecate/1.0.2:
+ /util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
- /vary/1.1.2:
+ /vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
dev: true
- /which/2.0.2:
+ /which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
@@ -1170,14 +1175,14 @@ packages:
isexe: 2.0.0
dev: true
- /widest-line/4.0.1:
+ /widest-line@4.0.1:
resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
engines: {node: '>=12'}
dependencies:
string-width: 5.1.2
dev: true
- /wrap-ansi/7.0.0:
+ /wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
dependencies:
@@ -1186,7 +1191,7 @@ packages:
strip-ansi: 6.0.1
dev: true
- /wrap-ansi/8.1.0:
+ /wrap-ansi@8.1.0:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
dependencies:
@@ -1195,26 +1200,26 @@ packages:
strip-ansi: 7.1.0
dev: true
- /wrappy/1.0.2:
+ /wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true
- /y18n/5.0.8:
+ /y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
dev: true
- /yaml/2.3.1:
+ /yaml@2.3.1:
resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
engines: {node: '>= 14'}
dev: true
- /yargs-parser/21.1.1:
+ /yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
dev: true
- /yargs/17.7.2:
+ /yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
dependencies:
diff --git a/static/index.html b/static/index.html
index 63b480a..36ecb46 100644
--- a/static/index.html
+++ b/static/index.html
@@ -12,157 +12,71 @@
+
+
- A modern, consistent typed language for PHP. -
- - - - -+ Syntax, stdlib and types for PHP +
- thp keeps track of the datatype of all variables, and allows - you to have complex types and type inference. -
- + +type Person = { - String name, - String lastName, - Int age, + class="rounded-md bg-c-bg language-misti" + style="padding: 0 !important;" + >use Globals::POST +use JSON + +val person_id = POST::get("person_id") ?: die + +match Person::find_by_id(person_id) { + Ok(person) => { + JSON::encode(person) + } + Err(e) => { + JSON::encode(Obj {"error": e}) + } } - -Option[Array[Person]] persons = PersonManager::getAll() - -print("There are {persons?.length ?? 0} persons registered!")+
- thp groups all global variables and function of PHP into modules,
- to allow easy access and organization.
-
- Function names, parameters and return types are improved, and you
- can treat primitive types as objects.
-
val name = "John Doe" - -val lastNamePos = name.indexOf("Doe") // Instead of `strpos` -val letters = name.split("") // Instead of `str_split` or `explode` - -val notALetters = letters.filter { $ != "a" } // Instead of `array_filter`- -
- All null values must be explicitly marked and handled,
- avoiding many errors, via the Option
ADT.
-
-
- Also, functions that return false
as
- an error state now return an Option
,
- and exceptions return a Result
instead.
-
val allowedColors = Array("red", "blue", "green") - -val response = match colors.search("purple") { - Some(_) -> "purple is allowed!" - None -> "purple is not allowed" -} - -print(response)- -
use PDO -use Globals::Env - -val #(Some(dbUri), Some(dbUser), Some(dbPassword)) = #( - Env::get("DB_URI"), - Env::get("DB_USERNAME"), - Env::get("DB_PASSWORD"), -) -else { - die("All 3 db environment variables must be set.") -} - -match PDO(dbUri, dbUser, dbPassword) { - Ok(connection) -> { /* db operations */ } - Err(pdoException) -> { /* handle exception */ } -}- -