diff --git a/Starter-file/dist/css/fichier.css b/Starter-file/dist/css/fichier.css
new file mode 100644
index 00000000..1b5c49b1
--- /dev/null
+++ b/Starter-file/dist/css/fichier.css
@@ -0,0 +1,7 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
diff --git a/Starter-file/dist/css/fichier1.css b/Starter-file/dist/css/fichier1.css
new file mode 100644
index 00000000..1b5c49b1
--- /dev/null
+++ b/Starter-file/dist/css/fichier1.css
@@ -0,0 +1,7 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
diff --git a/Starter-file/dist/css/fichier2.css b/Starter-file/dist/css/fichier2.css
new file mode 100644
index 00000000..1b5c49b1
--- /dev/null
+++ b/Starter-file/dist/css/fichier2.css
@@ -0,0 +1,7 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
diff --git a/Starter-file/dist/css/fichier3.css b/Starter-file/dist/css/fichier3.css
new file mode 100644
index 00000000..1b5c49b1
--- /dev/null
+++ b/Starter-file/dist/css/fichier3.css
@@ -0,0 +1,7 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
diff --git a/Starter-file/dist/css/style.css b/Starter-file/dist/css/style.css
index e69de29b..32ab19cc 100644
--- a/Starter-file/dist/css/style.css
+++ b/Starter-file/dist/css/style.css
@@ -0,0 +1,31 @@
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
+
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
+
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
+
+* {
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box; }
+
+body {
+ font-family: 'Cairo', sans-serif; }
diff --git a/Starter-file/sass/fichier.scss b/Starter-file/sass/fichier.scss
index e69de29b..5a47a6c9 100644
--- a/Starter-file/sass/fichier.scss
+++ b/Starter-file/sass/fichier.scss
@@ -0,0 +1,8 @@
+*{
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+body{
+ font-family: 'Cairo', sans-serif;
+}
\ No newline at end of file
diff --git a/Starter-file/sass/fichier1.scss b/Starter-file/sass/fichier1.scss
new file mode 100644
index 00000000..5a47a6c9
--- /dev/null
+++ b/Starter-file/sass/fichier1.scss
@@ -0,0 +1,8 @@
+*{
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+body{
+ font-family: 'Cairo', sans-serif;
+}
\ No newline at end of file
diff --git a/Starter-file/sass/fichier2.scss b/Starter-file/sass/fichier2.scss
new file mode 100644
index 00000000..5a47a6c9
--- /dev/null
+++ b/Starter-file/sass/fichier2.scss
@@ -0,0 +1,8 @@
+*{
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+body{
+ font-family: 'Cairo', sans-serif;
+}
\ No newline at end of file
diff --git a/Starter-file/sass/fichier3.scss b/Starter-file/sass/fichier3.scss
new file mode 100644
index 00000000..5a47a6c9
--- /dev/null
+++ b/Starter-file/sass/fichier3.scss
@@ -0,0 +1,8 @@
+*{
+ margin: 0px;
+ padding: 0px;
+ box-sizing: border-box;
+}
+body{
+ font-family: 'Cairo', sans-serif;
+}
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..3ea59d97
--- /dev/null
+++ b/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/.bin/autoprefixer b/node_modules/.bin/autoprefixer
new file mode 100644
index 00000000..42d21a88
--- /dev/null
+++ b/node_modules/.bin/autoprefixer
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+ ret=$?
+else
+ node "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/autoprefixer.cmd b/node_modules/.bin/autoprefixer.cmd
new file mode 100644
index 00000000..0e8c4ed6
--- /dev/null
+++ b/node_modules/.bin/autoprefixer.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\autoprefixer\bin\autoprefixer" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/autoprefixer.ps1 b/node_modules/.bin/autoprefixer.ps1
new file mode 100644
index 00000000..7d171915
--- /dev/null
+++ b/node_modules/.bin/autoprefixer.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../autoprefixer/bin/autoprefixer" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/browserslist b/node_modules/.bin/browserslist
new file mode 100644
index 00000000..5c05ea12
--- /dev/null
+++ b/node_modules/.bin/browserslist
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../browserslist/cli.js" "$@"
+ ret=$?
+else
+ node "$basedir/../browserslist/cli.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/browserslist.cmd b/node_modules/.bin/browserslist.cmd
new file mode 100644
index 00000000..d3f1ca91
--- /dev/null
+++ b/node_modules/.bin/browserslist.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\browserslist\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/browserslist.ps1 b/node_modules/.bin/browserslist.ps1
new file mode 100644
index 00000000..9fb149eb
--- /dev/null
+++ b/node_modules/.bin/browserslist.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../browserslist/cli.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/concat b/node_modules/.bin/concat
new file mode 100644
index 00000000..1fdcd1c3
--- /dev/null
+++ b/node_modules/.bin/concat
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../concat/bin/concat" "$@"
+ ret=$?
+else
+ node "$basedir/../concat/bin/concat" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/concat.cmd b/node_modules/.bin/concat.cmd
new file mode 100644
index 00000000..825848b5
--- /dev/null
+++ b/node_modules/.bin/concat.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\concat\bin\concat" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/concat.ps1 b/node_modules/.bin/concat.ps1
new file mode 100644
index 00000000..9bb4c1c5
--- /dev/null
+++ b/node_modules/.bin/concat.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../concat/bin/concat" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../concat/bin/concat" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse
new file mode 100644
index 00000000..735d8546
--- /dev/null
+++ b/node_modules/.bin/esparse
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@"
+ ret=$?
+else
+ node "$basedir/../esprima/bin/esparse.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/esparse.cmd b/node_modules/.bin/esparse.cmd
new file mode 100644
index 00000000..b8c6a634
--- /dev/null
+++ b/node_modules/.bin/esparse.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\esprima\bin\esparse.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/esparse.ps1 b/node_modules/.bin/esparse.ps1
new file mode 100644
index 00000000..567aea30
--- /dev/null
+++ b/node_modules/.bin/esparse.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../esprima/bin/esparse.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate
new file mode 100644
index 00000000..d278bc70
--- /dev/null
+++ b/node_modules/.bin/esvalidate
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@"
+ ret=$?
+else
+ node "$basedir/../esprima/bin/esvalidate.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/esvalidate.cmd b/node_modules/.bin/esvalidate.cmd
new file mode 100644
index 00000000..74859bdc
--- /dev/null
+++ b/node_modules/.bin/esvalidate.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\esprima\bin\esvalidate.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/esvalidate.ps1 b/node_modules/.bin/esvalidate.ps1
new file mode 100644
index 00000000..b1ed174b
--- /dev/null
+++ b/node_modules/.bin/esvalidate.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
new file mode 100644
index 00000000..45370307
--- /dev/null
+++ b/node_modules/.bin/js-yaml
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+ ret=$?
+else
+ node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/js-yaml.cmd b/node_modules/.bin/js-yaml.cmd
new file mode 100644
index 00000000..9597bdf3
--- /dev/null
+++ b/node_modules/.bin/js-yaml.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/js-yaml.ps1 b/node_modules/.bin/js-yaml.ps1
new file mode 100644
index 00000000..728b322d
--- /dev/null
+++ b/node_modules/.bin/js-yaml.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/npm-run-all b/node_modules/.bin/npm-run-all
new file mode 100644
index 00000000..5437556e
--- /dev/null
+++ b/node_modules/.bin/npm-run-all
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../npm-run-all/bin/npm-run-all/index.js" "$@"
+ ret=$?
+else
+ node "$basedir/../npm-run-all/bin/npm-run-all/index.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/npm-run-all.cmd b/node_modules/.bin/npm-run-all.cmd
new file mode 100644
index 00000000..f17c5a51
--- /dev/null
+++ b/node_modules/.bin/npm-run-all.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\npm-run-all\bin\npm-run-all\index.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/npm-run-all.ps1 b/node_modules/.bin/npm-run-all.ps1
new file mode 100644
index 00000000..098672c3
--- /dev/null
+++ b/node_modules/.bin/npm-run-all.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/pidtree b/node_modules/.bin/pidtree
new file mode 100644
index 00000000..eee1839c
--- /dev/null
+++ b/node_modules/.bin/pidtree
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../pidtree/bin/pidtree.js" "$@"
+ ret=$?
+else
+ node "$basedir/../pidtree/bin/pidtree.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/pidtree.cmd b/node_modules/.bin/pidtree.cmd
new file mode 100644
index 00000000..44827ff0
--- /dev/null
+++ b/node_modules/.bin/pidtree.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\pidtree\bin\pidtree.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/pidtree.ps1 b/node_modules/.bin/pidtree.ps1
new file mode 100644
index 00000000..93672382
--- /dev/null
+++ b/node_modules/.bin/pidtree.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/postcss b/node_modules/.bin/postcss
new file mode 100644
index 00000000..bb6bf994
--- /dev/null
+++ b/node_modules/.bin/postcss
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../postcss-cli/bin/postcss" "$@"
+ ret=$?
+else
+ node "$basedir/../postcss-cli/bin/postcss" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/postcss.cmd b/node_modules/.bin/postcss.cmd
new file mode 100644
index 00000000..e5855d7b
--- /dev/null
+++ b/node_modules/.bin/postcss.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\postcss-cli\bin\postcss" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/postcss.ps1 b/node_modules/.bin/postcss.ps1
new file mode 100644
index 00000000..7eba3383
--- /dev/null
+++ b/node_modules/.bin/postcss.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../postcss-cli/bin/postcss" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../postcss-cli/bin/postcss" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/run-p b/node_modules/.bin/run-p
new file mode 100644
index 00000000..5ec41fef
--- /dev/null
+++ b/node_modules/.bin/run-p
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../npm-run-all/bin/run-p/index.js" "$@"
+ ret=$?
+else
+ node "$basedir/../npm-run-all/bin/run-p/index.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/run-p.cmd b/node_modules/.bin/run-p.cmd
new file mode 100644
index 00000000..829b91c8
--- /dev/null
+++ b/node_modules/.bin/run-p.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\npm-run-all\bin\run-p\index.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/run-p.ps1 b/node_modules/.bin/run-p.ps1
new file mode 100644
index 00000000..78de7076
--- /dev/null
+++ b/node_modules/.bin/run-p.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/run-s b/node_modules/.bin/run-s
new file mode 100644
index 00000000..609b3dce
--- /dev/null
+++ b/node_modules/.bin/run-s
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../npm-run-all/bin/run-s/index.js" "$@"
+ ret=$?
+else
+ node "$basedir/../npm-run-all/bin/run-s/index.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/run-s.cmd b/node_modules/.bin/run-s.cmd
new file mode 100644
index 00000000..1ec5d1f7
--- /dev/null
+++ b/node_modules/.bin/run-s.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\npm-run-all\bin\run-s\index.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/run-s.ps1 b/node_modules/.bin/run-s.ps1
new file mode 100644
index 00000000..185a9070
--- /dev/null
+++ b/node_modules/.bin/run-s.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver
new file mode 100644
index 00000000..10497aa8
--- /dev/null
+++ b/node_modules/.bin/semver
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../semver/bin/semver" "$@"
+ ret=$?
+else
+ node "$basedir/../semver/bin/semver" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/semver.cmd b/node_modules/.bin/semver.cmd
new file mode 100644
index 00000000..eb3aaa1e
--- /dev/null
+++ b/node_modules/.bin/semver.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\semver\bin\semver" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/semver.ps1 b/node_modules/.bin/semver.ps1
new file mode 100644
index 00000000..a3315ffc
--- /dev/null
+++ b/node_modules/.bin/semver.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../semver/bin/semver" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/which b/node_modules/.bin/which
new file mode 100644
index 00000000..12cde792
--- /dev/null
+++ b/node_modules/.bin/which
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../which/bin/which" "$@"
+ ret=$?
+else
+ node "$basedir/../which/bin/which" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/.bin/which.cmd b/node_modules/.bin/which.cmd
new file mode 100644
index 00000000..0664965c
--- /dev/null
+++ b/node_modules/.bin/which.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+"%_prog%" "%dp0%\..\which\bin\which" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
diff --git a/node_modules/.bin/which.ps1 b/node_modules/.bin/which.ps1
new file mode 100644
index 00000000..d0231706
--- /dev/null
+++ b/node_modules/.bin/which.ps1
@@ -0,0 +1,18 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ & "$basedir/node$exe" "$basedir/../which/bin/which" $args
+ $ret=$LASTEXITCODE
+} else {
+ & "node$exe" "$basedir/../which/bin/which" $args
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/@nodelib/fs.scandir/LICENSE b/node_modules/@nodelib/fs.scandir/LICENSE
new file mode 100644
index 00000000..65a99946
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Denis Malinochkin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@nodelib/fs.scandir/README.md b/node_modules/@nodelib/fs.scandir/README.md
new file mode 100644
index 00000000..e0b218b9
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/README.md
@@ -0,0 +1,171 @@
+# @nodelib/fs.scandir
+
+> List files and directories inside the specified directory.
+
+## :bulb: Highlights
+
+The package is aimed at obtaining information about entries in the directory.
+
+* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional).
+* :gear: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type. See [`old` and `modern` mode](#old-and-modern-mode).
+* :link: Can safely work with broken symbolic links.
+
+## Install
+
+```console
+npm install @nodelib/fs.scandir
+```
+
+## Usage
+
+```ts
+import * as fsScandir from '@nodelib/fs.scandir';
+
+fsScandir.scandir('path', (error, stats) => { /* … */ });
+```
+
+## API
+
+### .scandir(path, [optionsOrSettings], callback)
+
+Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path with standard callback-style.
+
+```ts
+fsScandir.scandir('path', (error, entries) => { /* … */ });
+fsScandir.scandir('path', {}, (error, entries) => { /* … */ });
+fsScandir.scandir('path', new fsScandir.Settings(), (error, entries) => { /* … */ });
+```
+
+### .scandirSync(path, [optionsOrSettings])
+
+Returns an array of plain objects ([`Entry`](#entry)) with information about entry for provided path.
+
+```ts
+const entries = fsScandir.scandirSync('path');
+const entries = fsScandir.scandirSync('path', {});
+const entries = fsScandir.scandirSync(('path', new fsScandir.Settings());
+```
+
+#### path
+
+* Required: `true`
+* Type: `string | Buffer | URL`
+
+A path to a file. If a URL is provided, it must use the `file:` protocol.
+
+#### optionsOrSettings
+
+* Required: `false`
+* Type: `Options | Settings`
+* Default: An instance of `Settings` class
+
+An [`Options`](#options) object or an instance of [`Settings`](#settingsoptions) class.
+
+> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
+
+### Settings([options])
+
+A class of full settings of the package.
+
+```ts
+const settings = new fsScandir.Settings({ followSymbolicLinks: false });
+
+const entries = fsScandir.scandirSync('path', settings);
+```
+
+## Entry
+
+* `name` — The name of the entry (`unknown.txt`).
+* `path` — The path of the entry relative to call directory (`root/unknown.txt`).
+* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class. On Node.js below 10.10 will be emulated by [`DirentFromStats`](./src/utils/fs.ts) class.
+* `stats` (optional) — An instance of `fs.Stats` class.
+
+For example, the `scandir` call for `tools` directory with one directory inside:
+
+```ts
+{
+ dirent: Dirent { name: 'typedoc', /* … */ },
+ name: 'typedoc',
+ path: 'tools/typedoc'
+}
+```
+
+## Options
+
+### stats
+
+* Type: `boolean`
+* Default: `false`
+
+Adds an instance of `fs.Stats` class to the [`Entry`](#entry).
+
+> :book: Always use `fs.readdir` without the `withFileTypes` option. ??TODO??
+
+### followSymbolicLinks
+
+* Type: `boolean`
+* Default: `false`
+
+Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`.
+
+### `throwErrorOnBrokenSymbolicLink`
+
+* Type: `boolean`
+* Default: `true`
+
+Throw an error when symbolic link is broken if `true` or safely use `lstat` call if `false`.
+
+### `pathSegmentSeparator`
+
+* Type: `string`
+* Default: `path.sep`
+
+By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead.
+
+### `fs`
+
+* Type: [`FileSystemAdapter`](./src/adapters/fs.ts)
+* Default: A default FS methods
+
+By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
+
+```ts
+interface FileSystemAdapter {
+ lstat?: typeof fs.lstat;
+ stat?: typeof fs.stat;
+ lstatSync?: typeof fs.lstatSync;
+ statSync?: typeof fs.statSync;
+ readdir?: typeof fs.readdir;
+ readdirSync?: typeof fs.readdirSync;
+}
+
+const settings = new fsScandir.Settings({
+ fs: { lstat: fakeLstat }
+});
+```
+
+## `old` and `modern` mode
+
+This package has two modes that are used depending on the environment and parameters of use.
+
+### old
+
+* Node.js below `10.10` or when the `stats` option is enabled
+
+When working in the old mode, the directory is read first (`fs.readdir`), then the type of entries is determined (`fs.lstat` and/or `fs.stat` for symbolic links).
+
+### modern
+
+* Node.js 10.10+ and the `stats` option is disabled
+
+In the modern mode, reading the directory (`fs.readdir` with the `withFileTypes` option) is combined with obtaining information about its entries. An additional call for symbolic links (`fs.stat`) is still present.
+
+This mode makes fewer calls to the file system. It's faster.
+
+## Changelog
+
+See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
+
+## License
+
+This software is released under the terms of the MIT license.
diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts
new file mode 100644
index 00000000..6a0bb76c
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts
@@ -0,0 +1,13 @@
+///
+import * as fs from 'fs';
+export declare type FileSystemAdapter = {
+ lstat: typeof fs.lstat;
+ stat: typeof fs.stat;
+ lstatSync: typeof fs.lstatSync;
+ statSync: typeof fs.statSync;
+ readdir: typeof fs.readdir;
+ readdirSync: typeof fs.readdirSync;
+};
+export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter;
+export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter;
+//# sourceMappingURL=fs.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/adapters/fs.js b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js
new file mode 100644
index 00000000..a4e8d2b8
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/adapters/fs.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("fs");
+exports.FILE_SYSTEM_ADAPTER = {
+ lstat: fs.lstat,
+ stat: fs.stat,
+ lstatSync: fs.lstatSync,
+ statSync: fs.statSync,
+ readdir: fs.readdir,
+ readdirSync: fs.readdirSync
+};
+function createFileSystemAdapter(fsMethods) {
+ if (fsMethods === undefined) {
+ return exports.FILE_SYSTEM_ADAPTER;
+ }
+ return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
+}
+exports.createFileSystemAdapter = createFileSystemAdapter;
diff --git a/node_modules/@nodelib/fs.scandir/out/constants.d.ts b/node_modules/@nodelib/fs.scandir/out/constants.d.ts
new file mode 100644
index 00000000..8cb5129d
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/constants.d.ts
@@ -0,0 +1,5 @@
+/**
+ * IS `true` for Node.js 10.10 and greater.
+ */
+export declare const IS_SUPPORT_READDIR_WITH_FILE_TYPES: boolean;
+//# sourceMappingURL=constants.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/constants.js b/node_modules/@nodelib/fs.scandir/out/constants.js
new file mode 100644
index 00000000..9df78396
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/constants.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');
+const MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);
+const MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);
+const SUPPORTED_MAJOR_VERSION = 10;
+const SUPPORTED_MINOR_VERSION = 10;
+const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;
+const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;
+/**
+ * IS `true` for Node.js 10.10 and greater.
+ */
+exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;
diff --git a/node_modules/@nodelib/fs.scandir/out/index.d.ts b/node_modules/@nodelib/fs.scandir/out/index.d.ts
new file mode 100644
index 00000000..2a5ba216
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/index.d.ts
@@ -0,0 +1,13 @@
+import { FileSystemAdapter } from './adapters/fs';
+import * as async from './providers/async';
+import Settings, { Options } from './settings';
+import { Dirent, Entry } from './types';
+declare type AsyncCallback = async.AsyncCallback;
+declare function scandir(path: string, callback: AsyncCallback): void;
+declare function scandir(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
+declare namespace scandir {
+ function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise;
+}
+declare function scandirSync(path: string, optionsOrSettings?: Options | Settings): Entry[];
+export { scandir, scandirSync, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/index.js b/node_modules/@nodelib/fs.scandir/out/index.js
new file mode 100644
index 00000000..a1e95f95
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/index.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const async = require("./providers/async");
+const sync = require("./providers/sync");
+const settings_1 = require("./settings");
+exports.Settings = settings_1.default;
+function scandir(path, optionsOrSettingsOrCallback, callback) {
+ if (typeof optionsOrSettingsOrCallback === 'function') {
+ return async.read(path, getSettings(), optionsOrSettingsOrCallback);
+ }
+ async.read(path, getSettings(optionsOrSettingsOrCallback), callback);
+}
+exports.scandir = scandir;
+function scandirSync(path, optionsOrSettings) {
+ const settings = getSettings(optionsOrSettings);
+ return sync.read(path, settings);
+}
+exports.scandirSync = scandirSync;
+function getSettings(settingsOrOptions = {}) {
+ if (settingsOrOptions instanceof settings_1.default) {
+ return settingsOrOptions;
+ }
+ return new settings_1.default(settingsOrOptions);
+}
diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts
new file mode 100644
index 00000000..9b1e307d
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts
@@ -0,0 +1,8 @@
+///
+import Settings from '../settings';
+import { Entry } from '../types';
+export declare type AsyncCallback = (err: NodeJS.ErrnoException, entries: Entry[]) => void;
+export declare function read(directory: string, settings: Settings, callback: AsyncCallback): void;
+export declare function readdirWithFileTypes(directory: string, settings: Settings, callback: AsyncCallback): void;
+export declare function readdir(directory: string, settings: Settings, callback: AsyncCallback): void;
+//# sourceMappingURL=async.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/providers/async.js b/node_modules/@nodelib/fs.scandir/out/providers/async.js
new file mode 100644
index 00000000..18a613ee
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/providers/async.js
@@ -0,0 +1,90 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsStat = require("@nodelib/fs.stat");
+const rpl = require("run-parallel");
+const constants_1 = require("../constants");
+const utils = require("../utils");
+function read(directory, settings, callback) {
+ if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
+ return readdirWithFileTypes(directory, settings, callback);
+ }
+ return readdir(directory, settings, callback);
+}
+exports.read = read;
+function readdirWithFileTypes(directory, settings, callback) {
+ settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {
+ if (readdirError !== null) {
+ return callFailureCallback(callback, readdirError);
+ }
+ const entries = dirents.map((dirent) => ({
+ dirent,
+ name: dirent.name,
+ path: `${directory}${settings.pathSegmentSeparator}${dirent.name}`
+ }));
+ if (!settings.followSymbolicLinks) {
+ return callSuccessCallback(callback, entries);
+ }
+ const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));
+ rpl(tasks, (rplError, rplEntries) => {
+ if (rplError !== null) {
+ return callFailureCallback(callback, rplError);
+ }
+ callSuccessCallback(callback, rplEntries);
+ });
+ });
+}
+exports.readdirWithFileTypes = readdirWithFileTypes;
+function makeRplTaskEntry(entry, settings) {
+ return (done) => {
+ if (!entry.dirent.isSymbolicLink()) {
+ return done(null, entry);
+ }
+ settings.fs.stat(entry.path, (statError, stats) => {
+ if (statError !== null) {
+ if (settings.throwErrorOnBrokenSymbolicLink) {
+ return done(statError);
+ }
+ return done(null, entry);
+ }
+ entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
+ return done(null, entry);
+ });
+ };
+}
+function readdir(directory, settings, callback) {
+ settings.fs.readdir(directory, (readdirError, names) => {
+ if (readdirError !== null) {
+ return callFailureCallback(callback, readdirError);
+ }
+ const filepaths = names.map((name) => `${directory}${settings.pathSegmentSeparator}${name}`);
+ const tasks = filepaths.map((filepath) => {
+ return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);
+ });
+ rpl(tasks, (rplError, results) => {
+ if (rplError !== null) {
+ return callFailureCallback(callback, rplError);
+ }
+ const entries = [];
+ names.forEach((name, index) => {
+ const stats = results[index];
+ const entry = {
+ name,
+ path: filepaths[index],
+ dirent: utils.fs.createDirentFromStats(name, stats)
+ };
+ if (settings.stats) {
+ entry.stats = stats;
+ }
+ entries.push(entry);
+ });
+ callSuccessCallback(callback, entries);
+ });
+ });
+}
+exports.readdir = readdir;
+function callFailureCallback(callback, error) {
+ callback(error);
+}
+function callSuccessCallback(callback, result) {
+ callback(null, result);
+}
diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts
new file mode 100644
index 00000000..5c461358
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts
@@ -0,0 +1,6 @@
+import Settings from '../settings';
+import { Entry } from '../types';
+export declare function read(directory: string, settings: Settings): Entry[];
+export declare function readdirWithFileTypes(directory: string, settings: Settings): Entry[];
+export declare function readdir(directory: string, settings: Settings): Entry[];
+//# sourceMappingURL=sync.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/providers/sync.js b/node_modules/@nodelib/fs.scandir/out/providers/sync.js
new file mode 100644
index 00000000..46a00326
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/providers/sync.js
@@ -0,0 +1,52 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsStat = require("@nodelib/fs.stat");
+const constants_1 = require("../constants");
+const utils = require("../utils");
+function read(directory, settings) {
+ if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
+ return readdirWithFileTypes(directory, settings);
+ }
+ return readdir(directory, settings);
+}
+exports.read = read;
+function readdirWithFileTypes(directory, settings) {
+ const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });
+ return dirents.map((dirent) => {
+ const entry = {
+ dirent,
+ name: dirent.name,
+ path: `${directory}${settings.pathSegmentSeparator}${dirent.name}`
+ };
+ if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {
+ try {
+ const stats = settings.fs.statSync(entry.path);
+ entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
+ }
+ catch (error) {
+ if (settings.throwErrorOnBrokenSymbolicLink) {
+ throw error;
+ }
+ }
+ }
+ return entry;
+ });
+}
+exports.readdirWithFileTypes = readdirWithFileTypes;
+function readdir(directory, settings) {
+ const names = settings.fs.readdirSync(directory);
+ return names.map((name) => {
+ const entryPath = `${directory}${settings.pathSegmentSeparator}${name}`;
+ const stats = fsStat.statSync(entryPath, settings.fsStatSettings);
+ const entry = {
+ name,
+ path: entryPath,
+ dirent: utils.fs.createDirentFromStats(name, stats)
+ };
+ if (settings.stats) {
+ entry.stats = stats;
+ }
+ return entry;
+ });
+}
+exports.readdir = readdir;
diff --git a/node_modules/@nodelib/fs.scandir/out/settings.d.ts b/node_modules/@nodelib/fs.scandir/out/settings.d.ts
new file mode 100644
index 00000000..1e4d12cb
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/settings.d.ts
@@ -0,0 +1,21 @@
+import * as fsStat from '@nodelib/fs.stat';
+import * as fs from './adapters/fs';
+export declare type Options = {
+ followSymbolicLinks?: boolean;
+ fs?: Partial;
+ pathSegmentSeparator?: string;
+ stats?: boolean;
+ throwErrorOnBrokenSymbolicLink?: boolean;
+};
+export default class Settings {
+ private readonly _options;
+ readonly followSymbolicLinks: boolean;
+ readonly fs: fs.FileSystemAdapter;
+ readonly pathSegmentSeparator: string;
+ readonly stats: boolean;
+ readonly throwErrorOnBrokenSymbolicLink: boolean;
+ readonly fsStatSettings: fsStat.Settings;
+ constructor(_options?: Options);
+ private _getValue;
+}
+//# sourceMappingURL=settings.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/settings.js b/node_modules/@nodelib/fs.scandir/out/settings.js
new file mode 100644
index 00000000..08764a87
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/settings.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = require("path");
+const fsStat = require("@nodelib/fs.stat");
+const fs = require("./adapters/fs");
+class Settings {
+ constructor(_options = {}) {
+ this._options = _options;
+ this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);
+ this.fs = fs.createFileSystemAdapter(this._options.fs);
+ this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);
+ this.stats = this._getValue(this._options.stats, false);
+ this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);
+ this.fsStatSettings = new fsStat.Settings({
+ followSymbolicLink: this.followSymbolicLinks,
+ fs: this.fs,
+ throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink
+ });
+ }
+ _getValue(option, value) {
+ return option === undefined ? value : option;
+ }
+}
+exports.default = Settings;
diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.d.ts b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts
new file mode 100644
index 00000000..52721c9d
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/types/index.d.ts
@@ -0,0 +1,20 @@
+///
+import * as fs from 'fs';
+export declare type Entry = {
+ dirent: Dirent;
+ name: string;
+ path: string;
+ stats?: Stats;
+};
+export declare type Stats = fs.Stats;
+export declare type Dirent = {
+ isBlockDevice(): boolean;
+ isCharacterDevice(): boolean;
+ isDirectory(): boolean;
+ isFIFO(): boolean;
+ isFile(): boolean;
+ isSocket(): boolean;
+ isSymbolicLink(): boolean;
+ name: string;
+};
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/types/index.js b/node_modules/@nodelib/fs.scandir/out/types/index.js
new file mode 100644
index 00000000..c8ad2e54
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/types/index.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts
new file mode 100644
index 00000000..26af9807
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts
@@ -0,0 +1,3 @@
+import { Dirent, Stats } from '../types';
+export declare function createDirentFromStats(name: string, stats: Stats): Dirent;
+//# sourceMappingURL=fs.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/utils/fs.js b/node_modules/@nodelib/fs.scandir/out/utils/fs.js
new file mode 100644
index 00000000..92d7fbfb
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/utils/fs.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class DirentFromStats {
+ constructor(name, stats) {
+ this.name = name;
+ this.isBlockDevice = stats.isBlockDevice.bind(stats);
+ this.isCharacterDevice = stats.isCharacterDevice.bind(stats);
+ this.isDirectory = stats.isDirectory.bind(stats);
+ this.isFIFO = stats.isFIFO.bind(stats);
+ this.isFile = stats.isFile.bind(stats);
+ this.isSocket = stats.isSocket.bind(stats);
+ this.isSymbolicLink = stats.isSymbolicLink.bind(stats);
+ }
+}
+function createDirentFromStats(name, stats) {
+ return new DirentFromStats(name, stats);
+}
+exports.createDirentFromStats = createDirentFromStats;
diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts
new file mode 100644
index 00000000..f5f39aa1
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts
@@ -0,0 +1,3 @@
+import * as fs from './fs';
+export { fs };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.scandir/out/utils/index.js b/node_modules/@nodelib/fs.scandir/out/utils/index.js
new file mode 100644
index 00000000..53cd02a4
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/out/utils/index.js
@@ -0,0 +1,4 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("./fs");
+exports.fs = fs;
diff --git a/node_modules/@nodelib/fs.scandir/package.json b/node_modules/@nodelib/fs.scandir/package.json
new file mode 100644
index 00000000..8c91f8ad
--- /dev/null
+++ b/node_modules/@nodelib/fs.scandir/package.json
@@ -0,0 +1,64 @@
+{
+ "_from": "@nodelib/fs.scandir@2.1.3",
+ "_id": "@nodelib/fs.scandir@2.1.3",
+ "_inBundle": false,
+ "_integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
+ "_location": "/@nodelib/fs.scandir",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "@nodelib/fs.scandir@2.1.3",
+ "name": "@nodelib/fs.scandir",
+ "escapedName": "@nodelib%2ffs.scandir",
+ "scope": "@nodelib",
+ "rawSpec": "2.1.3",
+ "saveSpec": null,
+ "fetchSpec": "2.1.3"
+ },
+ "_requiredBy": [
+ "/@nodelib/fs.walk"
+ ],
+ "_resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
+ "_shasum": "3a582bdb53804c6ba6d146579c46e52130cf4a3b",
+ "_spec": "@nodelib/fs.scandir@2.1.3",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\@nodelib\\fs.walk",
+ "bundleDependencies": false,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.3",
+ "run-parallel": "^1.1.9"
+ },
+ "deprecated": false,
+ "description": "List files and directories inside the specified directory",
+ "engines": {
+ "node": ">= 8"
+ },
+ "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf",
+ "keywords": [
+ "NodeLib",
+ "fs",
+ "FileSystem",
+ "file system",
+ "scandir",
+ "readdir",
+ "dirent"
+ ],
+ "license": "MIT",
+ "main": "out/index.js",
+ "name": "@nodelib/fs.scandir",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir"
+ },
+ "scripts": {
+ "build": "npm run clean && npm run compile && npm run lint && npm test",
+ "clean": "rimraf {tsconfig.tsbuildinfo,out}",
+ "compile": "tsc -b .",
+ "compile:watch": "tsc -p . --watch --sourceMap",
+ "lint": "eslint \"src/**/*.ts\" --cache",
+ "test": "mocha \"out/**/*.spec.js\" -s 0",
+ "watch": "npm run clean && npm run compile:watch"
+ },
+ "typings": "out/index.d.ts",
+ "version": "2.1.3"
+}
diff --git a/node_modules/@nodelib/fs.stat/LICENSE b/node_modules/@nodelib/fs.stat/LICENSE
new file mode 100644
index 00000000..65a99946
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Denis Malinochkin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@nodelib/fs.stat/README.md b/node_modules/@nodelib/fs.stat/README.md
new file mode 100644
index 00000000..686f0471
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/README.md
@@ -0,0 +1,126 @@
+# @nodelib/fs.stat
+
+> Get the status of a file with some features.
+
+## :bulb: Highlights
+
+Wrapper around standard method `fs.lstat` and `fs.stat` with some features.
+
+* :beginner: Normally follows symbolic link.
+* :gear: Can safely work with broken symbolic link.
+
+## Install
+
+```console
+npm install @nodelib/fs.stat
+```
+
+## Usage
+
+```ts
+import * as fsStat from '@nodelib/fs.stat';
+
+fsStat.stat('path', (error, stats) => { /* … */ });
+```
+
+## API
+
+### .stat(path, [optionsOrSettings], callback)
+
+Returns an instance of `fs.Stats` class for provided path with standard callback-style.
+
+```ts
+fsStat.stat('path', (error, stats) => { /* … */ });
+fsStat.stat('path', {}, (error, stats) => { /* … */ });
+fsStat.stat('path', new fsStat.Settings(), (error, stats) => { /* … */ });
+```
+
+### .statSync(path, [optionsOrSettings])
+
+Returns an instance of `fs.Stats` class for provided path.
+
+```ts
+const stats = fsStat.stat('path');
+const stats = fsStat.stat('path', {});
+const stats = fsStat.stat('path', new fsStat.Settings());
+```
+
+#### path
+
+* Required: `true`
+* Type: `string | Buffer | URL`
+
+A path to a file. If a URL is provided, it must use the `file:` protocol.
+
+#### optionsOrSettings
+
+* Required: `false`
+* Type: `Options | Settings`
+* Default: An instance of `Settings` class
+
+An [`Options`](#options) object or an instance of [`Settings`](#settings) class.
+
+> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
+
+### Settings([options])
+
+A class of full settings of the package.
+
+```ts
+const settings = new fsStat.Settings({ followSymbolicLink: false });
+
+const stats = fsStat.stat('path', settings);
+```
+
+## Options
+
+### `followSymbolicLink`
+
+* Type: `boolean`
+* Default: `true`
+
+Follow symbolic link or not. Call `fs.stat` on symbolic link if `true`.
+
+### `markSymbolicLink`
+
+* Type: `boolean`
+* Default: `false`
+
+Mark symbolic link by setting the return value of `isSymbolicLink` function to always `true` (even after `fs.stat`).
+
+> :book: Can be used if you want to know what is hidden behind a symbolic link, but still continue to know that it is a symbolic link.
+
+### `throwErrorOnBrokenSymbolicLink`
+
+* Type: `boolean`
+* Default: `true`
+
+Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`.
+
+### `fs`
+
+* Type: [`FileSystemAdapter`](./src/adapters/fs.ts)
+* Default: A default FS methods
+
+By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
+
+```ts
+interface FileSystemAdapter {
+ lstat?: typeof fs.lstat;
+ stat?: typeof fs.stat;
+ lstatSync?: typeof fs.lstatSync;
+ statSync?: typeof fs.statSync;
+}
+
+const settings = new fsStat.Settings({
+ fs: { lstat: fakeLstat }
+});
+```
+
+## Changelog
+
+See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
+
+## License
+
+This software is released under the terms of the MIT license.
diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts
new file mode 100644
index 00000000..dbb8986a
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts
@@ -0,0 +1,11 @@
+///
+import * as fs from 'fs';
+export declare type FileSystemAdapter = {
+ lstat: typeof fs.lstat;
+ stat: typeof fs.stat;
+ lstatSync: typeof fs.lstatSync;
+ statSync: typeof fs.statSync;
+};
+export declare const FILE_SYSTEM_ADAPTER: FileSystemAdapter;
+export declare function createFileSystemAdapter(fsMethods?: Partial): FileSystemAdapter;
+//# sourceMappingURL=fs.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/adapters/fs.js b/node_modules/@nodelib/fs.stat/out/adapters/fs.js
new file mode 100644
index 00000000..80e3427d
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/adapters/fs.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("fs");
+exports.FILE_SYSTEM_ADAPTER = {
+ lstat: fs.lstat,
+ stat: fs.stat,
+ lstatSync: fs.lstatSync,
+ statSync: fs.statSync
+};
+function createFileSystemAdapter(fsMethods) {
+ if (fsMethods === undefined) {
+ return exports.FILE_SYSTEM_ADAPTER;
+ }
+ return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
+}
+exports.createFileSystemAdapter = createFileSystemAdapter;
diff --git a/node_modules/@nodelib/fs.stat/out/index.d.ts b/node_modules/@nodelib/fs.stat/out/index.d.ts
new file mode 100644
index 00000000..97d5ed73
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/index.d.ts
@@ -0,0 +1,13 @@
+import { FileSystemAdapter } from './adapters/fs';
+import * as async from './providers/async';
+import Settings, { Options } from './settings';
+import { Stats } from './types';
+declare type AsyncCallback = async.AsyncCallback;
+declare function stat(path: string, callback: AsyncCallback): void;
+declare function stat(path: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
+declare namespace stat {
+ function __promisify__(path: string, optionsOrSettings?: Options | Settings): Promise;
+}
+declare function statSync(path: string, optionsOrSettings?: Options | Settings): Stats;
+export { Settings, stat, statSync, AsyncCallback, FileSystemAdapter, Options, Stats };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/index.js b/node_modules/@nodelib/fs.stat/out/index.js
new file mode 100644
index 00000000..40491a49
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/index.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const async = require("./providers/async");
+const sync = require("./providers/sync");
+const settings_1 = require("./settings");
+exports.Settings = settings_1.default;
+function stat(path, optionsOrSettingsOrCallback, callback) {
+ if (typeof optionsOrSettingsOrCallback === 'function') {
+ return async.read(path, getSettings(), optionsOrSettingsOrCallback);
+ }
+ async.read(path, getSettings(optionsOrSettingsOrCallback), callback);
+}
+exports.stat = stat;
+function statSync(path, optionsOrSettings) {
+ const settings = getSettings(optionsOrSettings);
+ return sync.read(path, settings);
+}
+exports.statSync = statSync;
+function getSettings(settingsOrOptions = {}) {
+ if (settingsOrOptions instanceof settings_1.default) {
+ return settingsOrOptions;
+ }
+ return new settings_1.default(settingsOrOptions);
+}
diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.d.ts b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts
new file mode 100644
index 00000000..9914f7c5
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/providers/async.d.ts
@@ -0,0 +1,5 @@
+import Settings from '../settings';
+import { ErrnoException, Stats } from '../types';
+export declare type AsyncCallback = (err: ErrnoException, stats: Stats) => void;
+export declare function read(path: string, settings: Settings, callback: AsyncCallback): void;
+//# sourceMappingURL=async.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/providers/async.js b/node_modules/@nodelib/fs.stat/out/providers/async.js
new file mode 100644
index 00000000..39a2d787
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/providers/async.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function read(path, settings, callback) {
+ settings.fs.lstat(path, (lstatError, lstat) => {
+ if (lstatError !== null) {
+ return callFailureCallback(callback, lstatError);
+ }
+ if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {
+ return callSuccessCallback(callback, lstat);
+ }
+ settings.fs.stat(path, (statError, stat) => {
+ if (statError !== null) {
+ if (settings.throwErrorOnBrokenSymbolicLink) {
+ return callFailureCallback(callback, statError);
+ }
+ return callSuccessCallback(callback, lstat);
+ }
+ if (settings.markSymbolicLink) {
+ stat.isSymbolicLink = () => true;
+ }
+ callSuccessCallback(callback, stat);
+ });
+ });
+}
+exports.read = read;
+function callFailureCallback(callback, error) {
+ callback(error);
+}
+function callSuccessCallback(callback, result) {
+ callback(null, result);
+}
diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts
new file mode 100644
index 00000000..6dcce9d1
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts
@@ -0,0 +1,4 @@
+import Settings from '../settings';
+import { Stats } from '../types';
+export declare function read(path: string, settings: Settings): Stats;
+//# sourceMappingURL=sync.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/providers/sync.js b/node_modules/@nodelib/fs.stat/out/providers/sync.js
new file mode 100644
index 00000000..6200dcc7
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/providers/sync.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function read(path, settings) {
+ const lstat = settings.fs.lstatSync(path);
+ if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {
+ return lstat;
+ }
+ try {
+ const stat = settings.fs.statSync(path);
+ if (settings.markSymbolicLink) {
+ stat.isSymbolicLink = () => true;
+ }
+ return stat;
+ }
+ catch (error) {
+ if (!settings.throwErrorOnBrokenSymbolicLink) {
+ return lstat;
+ }
+ throw error;
+ }
+}
+exports.read = read;
diff --git a/node_modules/@nodelib/fs.stat/out/settings.d.ts b/node_modules/@nodelib/fs.stat/out/settings.d.ts
new file mode 100644
index 00000000..a7fd1b40
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/settings.d.ts
@@ -0,0 +1,17 @@
+import * as fs from './adapters/fs';
+export declare type Options = {
+ followSymbolicLink?: boolean;
+ fs?: Partial;
+ markSymbolicLink?: boolean;
+ throwErrorOnBrokenSymbolicLink?: boolean;
+};
+export default class Settings {
+ private readonly _options;
+ readonly followSymbolicLink: boolean;
+ readonly fs: fs.FileSystemAdapter;
+ readonly markSymbolicLink: boolean;
+ readonly throwErrorOnBrokenSymbolicLink: boolean;
+ constructor(_options?: Options);
+ private _getValue;
+}
+//# sourceMappingURL=settings.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/settings.js b/node_modules/@nodelib/fs.stat/out/settings.js
new file mode 100644
index 00000000..d3603a3e
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/settings.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("./adapters/fs");
+class Settings {
+ constructor(_options = {}) {
+ this._options = _options;
+ this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);
+ this.fs = fs.createFileSystemAdapter(this._options.fs);
+ this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);
+ this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);
+ }
+ _getValue(option, value) {
+ return option === undefined ? value : option;
+ }
+}
+exports.default = Settings;
diff --git a/node_modules/@nodelib/fs.stat/out/types/index.d.ts b/node_modules/@nodelib/fs.stat/out/types/index.d.ts
new file mode 100644
index 00000000..0f34b093
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/types/index.d.ts
@@ -0,0 +1,5 @@
+///
+import * as fs from 'fs';
+export declare type Stats = fs.Stats;
+export declare type ErrnoException = NodeJS.ErrnoException;
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.stat/out/types/index.js b/node_modules/@nodelib/fs.stat/out/types/index.js
new file mode 100644
index 00000000..c8ad2e54
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/out/types/index.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/@nodelib/fs.stat/package.json b/node_modules/@nodelib/fs.stat/package.json
new file mode 100644
index 00000000..f9ed4f20
--- /dev/null
+++ b/node_modules/@nodelib/fs.stat/package.json
@@ -0,0 +1,59 @@
+{
+ "_from": "@nodelib/fs.stat@^2.0.2",
+ "_id": "@nodelib/fs.stat@2.0.3",
+ "_inBundle": false,
+ "_integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
+ "_location": "/@nodelib/fs.stat",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@nodelib/fs.stat@^2.0.2",
+ "name": "@nodelib/fs.stat",
+ "escapedName": "@nodelib%2ffs.stat",
+ "scope": "@nodelib",
+ "rawSpec": "^2.0.2",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.2"
+ },
+ "_requiredBy": [
+ "/@nodelib/fs.scandir",
+ "/fast-glob"
+ ],
+ "_resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
+ "_shasum": "34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3",
+ "_spec": "@nodelib/fs.stat@^2.0.2",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\fast-glob",
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Get the status of a file with some features",
+ "engines": {
+ "node": ">= 8"
+ },
+ "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf",
+ "keywords": [
+ "NodeLib",
+ "fs",
+ "FileSystem",
+ "file system",
+ "stat"
+ ],
+ "license": "MIT",
+ "main": "out/index.js",
+ "name": "@nodelib/fs.stat",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat"
+ },
+ "scripts": {
+ "build": "npm run clean && npm run compile && npm run lint && npm test",
+ "clean": "rimraf {tsconfig.tsbuildinfo,out}",
+ "compile": "tsc -b .",
+ "compile:watch": "tsc -p . --watch --sourceMap",
+ "lint": "eslint \"src/**/*.ts\" --cache",
+ "test": "mocha \"out/**/*.spec.js\" -s 0",
+ "watch": "npm run clean && npm run compile:watch"
+ },
+ "typings": "out/index.d.ts",
+ "version": "2.0.3"
+}
diff --git a/node_modules/@nodelib/fs.walk/LICENSE b/node_modules/@nodelib/fs.walk/LICENSE
new file mode 100644
index 00000000..65a99946
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Denis Malinochkin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@nodelib/fs.walk/README.md b/node_modules/@nodelib/fs.walk/README.md
new file mode 100644
index 00000000..6ccc08db
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/README.md
@@ -0,0 +1,215 @@
+# @nodelib/fs.walk
+
+> A library for efficiently walking a directory recursively.
+
+## :bulb: Highlights
+
+* :moneybag: Returns useful information: `name`, `path`, `dirent` and `stats` (optional).
+* :rocket: On Node.js 10.10+ uses the mechanism without additional calls to determine the entry type for performance reasons. See [`old` and `modern` mode](https://github.com/nodelib/nodelib/blob/master/packages/fs/fs.scandir/README.md#old-and-modern-mode).
+* :gear: Built-in directories/files and error filtering system.
+* :link: Can safely work with broken symbolic links.
+
+## Install
+
+```console
+npm install @nodelib/fs.walk
+```
+
+## Usage
+
+```ts
+import * as fsWalk from '@nodelib/fs.walk';
+
+fsWalk.walk('path', (error, entries) => { /* … */ });
+```
+
+## API
+
+### .walk(path, [optionsOrSettings], callback)
+
+Reads the directory recursively and asynchronously. Requires a callback function.
+
+> :book: If you want to use the Promise API, use `util.promisify`.
+
+```ts
+fsWalk.walk('path', (error, entries) => { /* … */ });
+fsWalk.walk('path', {}, (error, entries) => { /* … */ });
+fsWalk.walk('path', new fsWalk.Settings(), (error, entries) => { /* … */ });
+```
+
+### .walkStream(path, [optionsOrSettings])
+
+Reads the directory recursively and asynchronously. [Readable Stream](https://nodejs.org/dist/latest-v12.x/docs/api/stream.html#stream_readable_streams) is used as a provider.
+
+```ts
+const stream = fsWalk.walkStream('path');
+const stream = fsWalk.walkStream('path', {});
+const stream = fsWalk.walkStream('path', new fsWalk.Settings());
+```
+
+### .walkSync(path, [optionsOrSettings])
+
+Reads the directory recursively and synchronously. Returns an array of entries.
+
+```ts
+const entries = fsWalk.walkSync('path');
+const entries = fsWalk.walkSync('path', {});
+const entries = fsWalk.walkSync('path', new fsWalk.Settings());
+```
+
+#### path
+
+* Required: `true`
+* Type: `string | Buffer | URL`
+
+A path to a file. If a URL is provided, it must use the `file:` protocol.
+
+#### optionsOrSettings
+
+* Required: `false`
+* Type: `Options | Settings`
+* Default: An instance of `Settings` class
+
+An [`Options`](#options) object or an instance of [`Settings`](#settings) class.
+
+> :book: When you pass a plain object, an instance of the `Settings` class will be created automatically. If you plan to call the method frequently, use a pre-created instance of the `Settings` class.
+
+### Settings([options])
+
+A class of full settings of the package.
+
+```ts
+const settings = new fsWalk.Settings({ followSymbolicLinks: true });
+
+const entries = fsWalk.walkSync('path', settings);
+```
+
+## Entry
+
+* `name` — The name of the entry (`unknown.txt`).
+* `path` — The path of the entry relative to call directory (`root/unknown.txt`).
+* `dirent` — An instance of [`fs.Dirent`](./src/types/index.ts) class.
+* [`stats`] — An instance of `fs.Stats` class.
+
+## Options
+
+### basePath
+
+* Type: `string`
+* Default: `undefined`
+
+By default, all paths are built relative to the root path. You can use this option to set custom root path.
+
+In the example below we read the files from the `root` directory, but in the results the root path will be `custom`.
+
+```ts
+fsWalk.walkSync('root'); // → ['root/file.txt']
+fsWalk.walkSync('root', { basePath: 'custom' }); // → ['custom/file.txt']
+```
+
+### concurrency
+
+* Type: `number`
+* Default: `Infinity`
+
+The maximum number of concurrent calls to `fs.readdir`.
+
+> :book: The higher the number, the higher performance and the load on the File System. If you want to read in quiet mode, set the value to `4 * os.cpus().length` (4 is default size of [thread pool work scheduling](http://docs.libuv.org/en/v1.x/threadpool.html#thread-pool-work-scheduling)).
+
+### deepFilter
+
+* Type: [`DeepFilterFunction`](./src/settings.ts)
+* Default: `undefined`
+
+A function that indicates whether the directory will be read deep or not.
+
+```ts
+// Skip all directories that starts with `node_modules`
+const filter: DeepFilterFunction = (entry) => !entry.path.startsWith('node_modules');
+```
+
+### entryFilter
+
+* Type: [`EntryFilterFunction`](./src/settings.ts)
+* Default: `undefined`
+
+A function that indicates whether the entry will be included to results or not.
+
+```ts
+// Exclude all `.js` files from results
+const filter: EntryFilterFunction = (entry) => !entry.name.endsWith('.js');
+```
+
+### errorFilter
+
+* Type: [`ErrorFilterFunction`](./src/settings.ts)
+* Default: `undefined`
+
+A function that allows you to skip errors that occur when reading directories.
+
+For example, you can skip `ENOENT` errors if required:
+
+```ts
+// Skip all ENOENT errors
+const filter: ErrorFilterFunction = (error) => error.code == 'ENOENT';
+```
+
+### stats
+
+* Type: `boolean`
+* Default: `false`
+
+Adds an instance of `fs.Stats` class to the [`Entry`](#entry).
+
+> :book: Always use `fs.readdir` with additional `fs.lstat/fs.stat` calls to determine the entry type.
+
+### followSymbolicLinks
+
+* Type: `boolean`
+* Default: `false`
+
+Follow symbolic links or not. Call `fs.stat` on symbolic link if `true`.
+
+### `throwErrorOnBrokenSymbolicLink`
+
+* Type: `boolean`
+* Default: `true`
+
+Throw an error when symbolic link is broken if `true` or safely return `lstat` call if `false`.
+
+### `pathSegmentSeparator`
+
+* Type: `string`
+* Default: `path.sep`
+
+By default, this package uses the correct path separator for your OS (`\` on Windows, `/` on Unix-like systems). But you can set this option to any separator character(s) that you want to use instead.
+
+### `fs`
+
+* Type: `FileSystemAdapter`
+* Default: A default FS methods
+
+By default, the built-in Node.js module (`fs`) is used to work with the file system. You can replace any method with your own.
+
+```ts
+interface FileSystemAdapter {
+ lstat: typeof fs.lstat;
+ stat: typeof fs.stat;
+ lstatSync: typeof fs.lstatSync;
+ statSync: typeof fs.statSync;
+ readdir: typeof fs.readdir;
+ readdirSync: typeof fs.readdirSync;
+}
+
+const settings = new fsWalk.Settings({
+ fs: { lstat: fakeLstat }
+});
+```
+
+## Changelog
+
+See the [Releases section of our GitHub project](https://github.com/nodelib/nodelib/releases) for changelog for each release version.
+
+## License
+
+This software is released under the terms of the MIT license.
diff --git a/node_modules/@nodelib/fs.walk/out/index.d.ts b/node_modules/@nodelib/fs.walk/out/index.d.ts
new file mode 100644
index 00000000..7eaca007
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/index.d.ts
@@ -0,0 +1,15 @@
+///
+import { Readable } from 'stream';
+import { Dirent, FileSystemAdapter } from '@nodelib/fs.scandir';
+import { AsyncCallback } from './providers/async';
+import Settings, { DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction, Options } from './settings';
+import { Entry } from './types';
+declare function walk(directory: string, callback: AsyncCallback): void;
+declare function walk(directory: string, optionsOrSettings: Options | Settings, callback: AsyncCallback): void;
+declare namespace walk {
+ function __promisify__(directory: string, optionsOrSettings?: Options | Settings): Promise;
+}
+declare function walkSync(directory: string, optionsOrSettings?: Options | Settings): Entry[];
+declare function walkStream(directory: string, optionsOrSettings?: Options | Settings): Readable;
+export { walk, walkSync, walkStream, Settings, AsyncCallback, Dirent, Entry, FileSystemAdapter, Options, DeepFilterFunction, EntryFilterFunction, ErrorFilterFunction };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/index.js b/node_modules/@nodelib/fs.walk/out/index.js
new file mode 100644
index 00000000..72f1147d
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/index.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const async_1 = require("./providers/async");
+const stream_1 = require("./providers/stream");
+const sync_1 = require("./providers/sync");
+const settings_1 = require("./settings");
+exports.Settings = settings_1.default;
+function walk(directory, optionsOrSettingsOrCallback, callback) {
+ if (typeof optionsOrSettingsOrCallback === 'function') {
+ return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);
+ }
+ new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);
+}
+exports.walk = walk;
+function walkSync(directory, optionsOrSettings) {
+ const settings = getSettings(optionsOrSettings);
+ const provider = new sync_1.default(directory, settings);
+ return provider.read();
+}
+exports.walkSync = walkSync;
+function walkStream(directory, optionsOrSettings) {
+ const settings = getSettings(optionsOrSettings);
+ const provider = new stream_1.default(directory, settings);
+ return provider.read();
+}
+exports.walkStream = walkStream;
+function getSettings(settingsOrOptions = {}) {
+ if (settingsOrOptions instanceof settings_1.default) {
+ return settingsOrOptions;
+ }
+ return new settings_1.default(settingsOrOptions);
+}
diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.d.ts b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts
new file mode 100644
index 00000000..d990f0f4
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/async.d.ts
@@ -0,0 +1,13 @@
+import AsyncReader from '../readers/async';
+import Settings from '../settings';
+import { Entry, Errno } from '../types';
+export declare type AsyncCallback = (err: Errno, entries: Entry[]) => void;
+export default class AsyncProvider {
+ private readonly _root;
+ private readonly _settings;
+ protected readonly _reader: AsyncReader;
+ private readonly _storage;
+ constructor(_root: string, _settings: Settings);
+ read(callback: AsyncCallback): void;
+}
+//# sourceMappingURL=async.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/providers/async.js b/node_modules/@nodelib/fs.walk/out/providers/async.js
new file mode 100644
index 00000000..e09da834
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/async.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const async_1 = require("../readers/async");
+class AsyncProvider {
+ constructor(_root, _settings) {
+ this._root = _root;
+ this._settings = _settings;
+ this._reader = new async_1.default(this._root, this._settings);
+ this._storage = new Set();
+ }
+ read(callback) {
+ this._reader.onError((error) => {
+ callFailureCallback(callback, error);
+ });
+ this._reader.onEntry((entry) => {
+ this._storage.add(entry);
+ });
+ this._reader.onEnd(() => {
+ callSuccessCallback(callback, [...this._storage]);
+ });
+ this._reader.read();
+ }
+}
+exports.default = AsyncProvider;
+function callFailureCallback(callback, error) {
+ callback(error);
+}
+function callSuccessCallback(callback, entries) {
+ callback(null, entries);
+}
diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.d.ts b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts
new file mode 100644
index 00000000..cd77cde2
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/index.d.ts
@@ -0,0 +1,5 @@
+import AsyncProvider from './async';
+import StreamProvider from './stream';
+import SyncProvider from './sync';
+export { AsyncProvider, StreamProvider, SyncProvider };
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/providers/index.js b/node_modules/@nodelib/fs.walk/out/providers/index.js
new file mode 100644
index 00000000..21218043
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/index.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const async_1 = require("./async");
+exports.AsyncProvider = async_1.default;
+const stream_1 = require("./stream");
+exports.StreamProvider = stream_1.default;
+const sync_1 = require("./sync");
+exports.SyncProvider = sync_1.default;
diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts
new file mode 100644
index 00000000..05de732f
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts
@@ -0,0 +1,13 @@
+///
+import { Readable } from 'stream';
+import AsyncReader from '../readers/async';
+import Settings from '../settings';
+export default class StreamProvider {
+ private readonly _root;
+ private readonly _settings;
+ protected readonly _reader: AsyncReader;
+ protected readonly _stream: Readable;
+ constructor(_root: string, _settings: Settings);
+ read(): Readable;
+}
+//# sourceMappingURL=stream.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/providers/stream.js b/node_modules/@nodelib/fs.walk/out/providers/stream.js
new file mode 100644
index 00000000..62780637
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/stream.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const stream_1 = require("stream");
+const async_1 = require("../readers/async");
+class StreamProvider {
+ constructor(_root, _settings) {
+ this._root = _root;
+ this._settings = _settings;
+ this._reader = new async_1.default(this._root, this._settings);
+ this._stream = new stream_1.Readable({
+ objectMode: true,
+ read: () => { },
+ destroy: this._reader.destroy.bind(this._reader)
+ });
+ }
+ read() {
+ this._reader.onError((error) => {
+ this._stream.emit('error', error);
+ });
+ this._reader.onEntry((entry) => {
+ this._stream.push(entry);
+ });
+ this._reader.onEnd(() => {
+ this._stream.push(null);
+ });
+ this._reader.read();
+ return this._stream;
+ }
+}
+exports.default = StreamProvider;
diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts
new file mode 100644
index 00000000..61030456
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts
@@ -0,0 +1,11 @@
+import SyncReader from '../readers/sync';
+import Settings from '../settings';
+import { Entry } from '../types';
+export default class SyncProvider {
+ private readonly _root;
+ private readonly _settings;
+ protected readonly _reader: SyncReader;
+ constructor(_root: string, _settings: Settings);
+ read(): Entry[];
+}
+//# sourceMappingURL=sync.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/providers/sync.js b/node_modules/@nodelib/fs.walk/out/providers/sync.js
new file mode 100644
index 00000000..faab6ca2
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/providers/sync.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const sync_1 = require("../readers/sync");
+class SyncProvider {
+ constructor(_root, _settings) {
+ this._root = _root;
+ this._settings = _settings;
+ this._reader = new sync_1.default(this._root, this._settings);
+ }
+ read() {
+ return this._reader.read();
+ }
+}
+exports.default = SyncProvider;
diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.d.ts b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts
new file mode 100644
index 00000000..b6a47bee
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/async.d.ts
@@ -0,0 +1,30 @@
+///
+import { EventEmitter } from 'events';
+import * as fsScandir from '@nodelib/fs.scandir';
+import Settings from '../settings';
+import { Entry, Errno } from '../types';
+import Reader from './reader';
+declare type EntryEventCallback = (entry: Entry) => void;
+declare type ErrorEventCallback = (error: Errno) => void;
+declare type EndEventCallback = () => void;
+export default class AsyncReader extends Reader {
+ protected readonly _settings: Settings;
+ protected readonly _scandir: typeof fsScandir.scandir;
+ protected readonly _emitter: EventEmitter;
+ private readonly _queue;
+ private _isFatalError;
+ private _isDestroyed;
+ constructor(_root: string, _settings: Settings);
+ read(): EventEmitter;
+ destroy(): void;
+ onEntry(callback: EntryEventCallback): void;
+ onError(callback: ErrorEventCallback): void;
+ onEnd(callback: EndEventCallback): void;
+ private _pushToQueue;
+ private _worker;
+ private _handleError;
+ private _handleEntry;
+ private _emitEntry;
+}
+export {};
+//# sourceMappingURL=async.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/readers/async.js b/node_modules/@nodelib/fs.walk/out/readers/async.js
new file mode 100644
index 00000000..5df82c97
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/async.js
@@ -0,0 +1,93 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const events_1 = require("events");
+const fsScandir = require("@nodelib/fs.scandir");
+const fastq = require("fastq");
+const common = require("./common");
+const reader_1 = require("./reader");
+class AsyncReader extends reader_1.default {
+ constructor(_root, _settings) {
+ super(_root, _settings);
+ this._settings = _settings;
+ this._scandir = fsScandir.scandir;
+ this._emitter = new events_1.EventEmitter();
+ this._queue = fastq(this._worker.bind(this), this._settings.concurrency);
+ this._isFatalError = false;
+ this._isDestroyed = false;
+ this._queue.drain = () => {
+ if (!this._isFatalError) {
+ this._emitter.emit('end');
+ }
+ };
+ }
+ read() {
+ this._isFatalError = false;
+ this._isDestroyed = false;
+ setImmediate(() => {
+ this._pushToQueue(this._root, this._settings.basePath);
+ });
+ return this._emitter;
+ }
+ destroy() {
+ if (this._isDestroyed) {
+ throw new Error('The reader is already destroyed');
+ }
+ this._isDestroyed = true;
+ this._queue.killAndDrain();
+ }
+ onEntry(callback) {
+ this._emitter.on('entry', callback);
+ }
+ onError(callback) {
+ this._emitter.once('error', callback);
+ }
+ onEnd(callback) {
+ this._emitter.once('end', callback);
+ }
+ _pushToQueue(directory, base) {
+ const queueItem = { directory, base };
+ this._queue.push(queueItem, (error) => {
+ if (error !== null) {
+ this._handleError(error);
+ }
+ });
+ }
+ _worker(item, done) {
+ this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {
+ if (error !== null) {
+ return done(error, undefined);
+ }
+ for (const entry of entries) {
+ this._handleEntry(entry, item.base);
+ }
+ done(null, undefined);
+ });
+ }
+ _handleError(error) {
+ if (!common.isFatalError(this._settings, error)) {
+ return;
+ }
+ this._isFatalError = true;
+ this._isDestroyed = true;
+ this._emitter.emit('error', error);
+ }
+ _handleEntry(entry, base) {
+ if (this._isDestroyed || this._isFatalError) {
+ return;
+ }
+ const fullpath = entry.path;
+ if (base !== undefined) {
+ entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);
+ }
+ if (common.isAppliedFilter(this._settings.entryFilter, entry)) {
+ this._emitEntry(entry);
+ }
+ if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {
+ this._pushToQueue(fullpath, entry.path);
+ }
+ }
+ _emitEntry(entry) {
+ this._emitter.emit('entry', entry);
+ }
+}
+exports.default = AsyncReader;
diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.d.ts b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts
new file mode 100644
index 00000000..3caef857
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/common.d.ts
@@ -0,0 +1,7 @@
+import Settings, { FilterFunction } from '../settings';
+import { Errno } from '../types';
+export declare function isFatalError(settings: Settings, error: Errno): boolean;
+export declare function isAppliedFilter(filter: FilterFunction | null, value: T): boolean;
+export declare function replacePathSegmentSeparator(filepath: string, separator: string): string;
+export declare function joinPathSegments(a: string, b: string, separator: string): string;
+//# sourceMappingURL=common.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/readers/common.js b/node_modules/@nodelib/fs.walk/out/readers/common.js
new file mode 100644
index 00000000..1a005774
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/common.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function isFatalError(settings, error) {
+ if (settings.errorFilter === null) {
+ return true;
+ }
+ return !settings.errorFilter(error);
+}
+exports.isFatalError = isFatalError;
+function isAppliedFilter(filter, value) {
+ return filter === null || filter(value);
+}
+exports.isAppliedFilter = isAppliedFilter;
+function replacePathSegmentSeparator(filepath, separator) {
+ return filepath.split(/[\\/]/).join(separator);
+}
+exports.replacePathSegmentSeparator = replacePathSegmentSeparator;
+function joinPathSegments(a, b, separator) {
+ if (a === '') {
+ return b;
+ }
+ return a + separator + b;
+}
+exports.joinPathSegments = joinPathSegments;
diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts
new file mode 100644
index 00000000..8b726d15
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts
@@ -0,0 +1,7 @@
+import Settings from '../settings';
+export default class Reader {
+ protected readonly _root: string;
+ protected readonly _settings: Settings;
+ constructor(_root: string, _settings: Settings);
+}
+//# sourceMappingURL=reader.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/readers/reader.js b/node_modules/@nodelib/fs.walk/out/readers/reader.js
new file mode 100644
index 00000000..782f07cb
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/reader.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const common = require("./common");
+class Reader {
+ constructor(_root, _settings) {
+ this._root = _root;
+ this._settings = _settings;
+ this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);
+ }
+}
+exports.default = Reader;
diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts
new file mode 100644
index 00000000..19b71cde
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts
@@ -0,0 +1,16 @@
+import * as fsScandir from '@nodelib/fs.scandir';
+import { Entry } from '../types';
+import Reader from './reader';
+export default class SyncReader extends Reader {
+ protected readonly _scandir: typeof fsScandir.scandirSync;
+ private readonly _storage;
+ private readonly _queue;
+ read(): Entry[];
+ private _pushToQueue;
+ private _handleQueue;
+ private _handleDirectory;
+ private _handleError;
+ private _handleEntry;
+ private _pushToStorage;
+}
+//# sourceMappingURL=sync.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/readers/sync.js b/node_modules/@nodelib/fs.walk/out/readers/sync.js
new file mode 100644
index 00000000..e99df328
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/readers/sync.js
@@ -0,0 +1,59 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fsScandir = require("@nodelib/fs.scandir");
+const common = require("./common");
+const reader_1 = require("./reader");
+class SyncReader extends reader_1.default {
+ constructor() {
+ super(...arguments);
+ this._scandir = fsScandir.scandirSync;
+ this._storage = new Set();
+ this._queue = new Set();
+ }
+ read() {
+ this._pushToQueue(this._root, this._settings.basePath);
+ this._handleQueue();
+ return [...this._storage];
+ }
+ _pushToQueue(directory, base) {
+ this._queue.add({ directory, base });
+ }
+ _handleQueue() {
+ for (const item of this._queue.values()) {
+ this._handleDirectory(item.directory, item.base);
+ }
+ }
+ _handleDirectory(directory, base) {
+ try {
+ const entries = this._scandir(directory, this._settings.fsScandirSettings);
+ for (const entry of entries) {
+ this._handleEntry(entry, base);
+ }
+ }
+ catch (error) {
+ this._handleError(error);
+ }
+ }
+ _handleError(error) {
+ if (!common.isFatalError(this._settings, error)) {
+ return;
+ }
+ throw error;
+ }
+ _handleEntry(entry, base) {
+ const fullpath = entry.path;
+ if (base !== undefined) {
+ entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);
+ }
+ if (common.isAppliedFilter(this._settings.entryFilter, entry)) {
+ this._pushToStorage(entry);
+ }
+ if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {
+ this._pushToQueue(fullpath, entry.path);
+ }
+ }
+ _pushToStorage(entry) {
+ this._storage.add(entry);
+ }
+}
+exports.default = SyncReader;
diff --git a/node_modules/@nodelib/fs.walk/out/settings.d.ts b/node_modules/@nodelib/fs.walk/out/settings.d.ts
new file mode 100644
index 00000000..5c4fd1c6
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/settings.d.ts
@@ -0,0 +1,31 @@
+import * as fsScandir from '@nodelib/fs.scandir';
+import { Entry, Errno } from './types';
+export declare type FilterFunction = (value: T) => boolean;
+export declare type DeepFilterFunction = FilterFunction;
+export declare type EntryFilterFunction = FilterFunction;
+export declare type ErrorFilterFunction = FilterFunction;
+export declare type Options = {
+ basePath?: string;
+ concurrency?: number;
+ deepFilter?: DeepFilterFunction;
+ entryFilter?: EntryFilterFunction;
+ errorFilter?: ErrorFilterFunction;
+ followSymbolicLinks?: boolean;
+ fs?: Partial;
+ pathSegmentSeparator?: string;
+ stats?: boolean;
+ throwErrorOnBrokenSymbolicLink?: boolean;
+};
+export default class Settings {
+ private readonly _options;
+ readonly basePath?: string;
+ readonly concurrency: number;
+ readonly deepFilter: DeepFilterFunction | null;
+ readonly entryFilter: EntryFilterFunction | null;
+ readonly errorFilter: ErrorFilterFunction | null;
+ readonly pathSegmentSeparator: string;
+ readonly fsScandirSettings: fsScandir.Settings;
+ constructor(_options?: Options);
+ private _getValue;
+}
+//# sourceMappingURL=settings.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/settings.js b/node_modules/@nodelib/fs.walk/out/settings.js
new file mode 100644
index 00000000..8abddf87
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/settings.js
@@ -0,0 +1,26 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = require("path");
+const fsScandir = require("@nodelib/fs.scandir");
+class Settings {
+ constructor(_options = {}) {
+ this._options = _options;
+ this.basePath = this._getValue(this._options.basePath, undefined);
+ this.concurrency = this._getValue(this._options.concurrency, Infinity);
+ this.deepFilter = this._getValue(this._options.deepFilter, null);
+ this.entryFilter = this._getValue(this._options.entryFilter, null);
+ this.errorFilter = this._getValue(this._options.errorFilter, null);
+ this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);
+ this.fsScandirSettings = new fsScandir.Settings({
+ followSymbolicLinks: this._options.followSymbolicLinks,
+ fs: this._options.fs,
+ pathSegmentSeparator: this._options.pathSegmentSeparator,
+ stats: this._options.stats,
+ throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink
+ });
+ }
+ _getValue(option, value) {
+ return option === undefined ? value : option;
+ }
+}
+exports.default = Settings;
diff --git a/node_modules/@nodelib/fs.walk/out/types/index.d.ts b/node_modules/@nodelib/fs.walk/out/types/index.d.ts
new file mode 100644
index 00000000..5dc1f239
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/types/index.d.ts
@@ -0,0 +1,9 @@
+///
+import * as scandir from '@nodelib/fs.scandir';
+export declare type Entry = scandir.Entry;
+export declare type Errno = NodeJS.ErrnoException;
+export declare type QueueItem = {
+ directory: string;
+ base?: string;
+};
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/node_modules/@nodelib/fs.walk/out/types/index.js b/node_modules/@nodelib/fs.walk/out/types/index.js
new file mode 100644
index 00000000..c8ad2e54
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/out/types/index.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/@nodelib/fs.walk/package.json b/node_modules/@nodelib/fs.walk/package.json
new file mode 100644
index 00000000..b47cc96f
--- /dev/null
+++ b/node_modules/@nodelib/fs.walk/package.json
@@ -0,0 +1,64 @@
+{
+ "_from": "@nodelib/fs.walk@^1.2.3",
+ "_id": "@nodelib/fs.walk@1.2.4",
+ "_inBundle": false,
+ "_integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
+ "_location": "/@nodelib/fs.walk",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@nodelib/fs.walk@^1.2.3",
+ "name": "@nodelib/fs.walk",
+ "escapedName": "@nodelib%2ffs.walk",
+ "scope": "@nodelib",
+ "rawSpec": "^1.2.3",
+ "saveSpec": null,
+ "fetchSpec": "^1.2.3"
+ },
+ "_requiredBy": [
+ "/fast-glob"
+ ],
+ "_resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
+ "_shasum": "011b9202a70a6366e436ca5c065844528ab04976",
+ "_spec": "@nodelib/fs.walk@^1.2.3",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\fast-glob",
+ "bundleDependencies": false,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.3",
+ "fastq": "^1.6.0"
+ },
+ "deprecated": false,
+ "description": "A library for efficiently walking a directory recursively",
+ "engines": {
+ "node": ">= 8"
+ },
+ "gitHead": "3b1ef7554ad7c061b3580858101d483fba847abf",
+ "keywords": [
+ "NodeLib",
+ "fs",
+ "FileSystem",
+ "file system",
+ "walk",
+ "scanner",
+ "crawler"
+ ],
+ "license": "MIT",
+ "main": "out/index.js",
+ "name": "@nodelib/fs.walk",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk"
+ },
+ "scripts": {
+ "build": "npm run clean && npm run compile && npm run lint && npm test",
+ "clean": "rimraf {tsconfig.tsbuildinfo,out}",
+ "compile": "tsc -b .",
+ "compile:watch": "tsc -p . --watch --sourceMap",
+ "lint": "eslint \"src/**/*.ts\" --cache",
+ "test": "mocha \"out/**/*.spec.js\" -s 0",
+ "watch": "npm run clean && npm run compile:watch"
+ },
+ "typings": "out/index.d.ts",
+ "version": "1.2.4"
+}
diff --git a/node_modules/@types/color-name/LICENSE b/node_modules/@types/color-name/LICENSE
new file mode 100644
index 00000000..21071075
--- /dev/null
+++ b/node_modules/@types/color-name/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/color-name/README.md b/node_modules/@types/color-name/README.md
new file mode 100644
index 00000000..d08d108b
--- /dev/null
+++ b/node_modules/@types/color-name/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/color-name`
+
+# Summary
+This package contains type definitions for color-name ( https://github.com/colorjs/color-name ).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/color-name
+
+Additional Details
+ * Last updated: Wed, 13 Feb 2019 16:16:48 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by Junyoung Clare Jang .
diff --git a/node_modules/@types/color-name/index.d.ts b/node_modules/@types/color-name/index.d.ts
new file mode 100644
index 00000000..b5bff471
--- /dev/null
+++ b/node_modules/@types/color-name/index.d.ts
@@ -0,0 +1,161 @@
+// Type definitions for color-name 1.1
+// Project: https://github.com/colorjs/color-name
+// Definitions by: Junyoung Clare Jang
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+/**
+ * Tuple of Red, Green, and Blue
+ * @example
+ * // Red = 55, Green = 70, Blue = 0
+ * const rgb: RGB = [55, 70, 0];
+ */
+export type RGB = [number, number, number];
+
+export const aliceblue: RGB;
+export const antiquewhite: RGB;
+export const aqua: RGB;
+export const aquamarine: RGB;
+export const azure: RGB;
+export const beige: RGB;
+export const bisque: RGB;
+export const black: RGB;
+export const blanchedalmond: RGB;
+export const blue: RGB;
+export const blueviolet: RGB;
+export const brown: RGB;
+export const burlywood: RGB;
+export const cadetblue: RGB;
+export const chartreuse: RGB;
+export const chocolate: RGB;
+export const coral: RGB;
+export const cornflowerblue: RGB;
+export const cornsilk: RGB;
+export const crimson: RGB;
+export const cyan: RGB;
+export const darkblue: RGB;
+export const darkcyan: RGB;
+export const darkgoldenrod: RGB;
+export const darkgray: RGB;
+export const darkgreen: RGB;
+export const darkgrey: RGB;
+export const darkkhaki: RGB;
+export const darkmagenta: RGB;
+export const darkolivegreen: RGB;
+export const darkorange: RGB;
+export const darkorchid: RGB;
+export const darkred: RGB;
+export const darksalmon: RGB;
+export const darkseagreen: RGB;
+export const darkslateblue: RGB;
+export const darkslategray: RGB;
+export const darkslategrey: RGB;
+export const darkturquoise: RGB;
+export const darkviolet: RGB;
+export const deeppink: RGB;
+export const deepskyblue: RGB;
+export const dimgray: RGB;
+export const dimgrey: RGB;
+export const dodgerblue: RGB;
+export const firebrick: RGB;
+export const floralwhite: RGB;
+export const forestgreen: RGB;
+export const fuchsia: RGB;
+export const gainsboro: RGB;
+export const ghostwhite: RGB;
+export const gold: RGB;
+export const goldenrod: RGB;
+export const gray: RGB;
+export const green: RGB;
+export const greenyellow: RGB;
+export const grey: RGB;
+export const honeydew: RGB;
+export const hotpink: RGB;
+export const indianred: RGB;
+export const indigo: RGB;
+export const ivory: RGB;
+export const khaki: RGB;
+export const lavender: RGB;
+export const lavenderblush: RGB;
+export const lawngreen: RGB;
+export const lemonchiffon: RGB;
+export const lightblue: RGB;
+export const lightcoral: RGB;
+export const lightcyan: RGB;
+export const lightgoldenrodyellow: RGB;
+export const lightgray: RGB;
+export const lightgreen: RGB;
+export const lightgrey: RGB;
+export const lightpink: RGB;
+export const lightsalmon: RGB;
+export const lightseagreen: RGB;
+export const lightskyblue: RGB;
+export const lightslategray: RGB;
+export const lightslategrey: RGB;
+export const lightsteelblue: RGB;
+export const lightyellow: RGB;
+export const lime: RGB;
+export const limegreen: RGB;
+export const linen: RGB;
+export const magenta: RGB;
+export const maroon: RGB;
+export const mediumaquamarine: RGB;
+export const mediumblue: RGB;
+export const mediumorchid: RGB;
+export const mediumpurple: RGB;
+export const mediumseagreen: RGB;
+export const mediumslateblue: RGB;
+export const mediumspringgreen: RGB;
+export const mediumturquoise: RGB;
+export const mediumvioletred: RGB;
+export const midnightblue: RGB;
+export const mintcream: RGB;
+export const mistyrose: RGB;
+export const moccasin: RGB;
+export const navajowhite: RGB;
+export const navy: RGB;
+export const oldlace: RGB;
+export const olive: RGB;
+export const olivedrab: RGB;
+export const orange: RGB;
+export const orangered: RGB;
+export const orchid: RGB;
+export const palegoldenrod: RGB;
+export const palegreen: RGB;
+export const paleturquoise: RGB;
+export const palevioletred: RGB;
+export const papayawhip: RGB;
+export const peachpuff: RGB;
+export const peru: RGB;
+export const pink: RGB;
+export const plum: RGB;
+export const powderblue: RGB;
+export const purple: RGB;
+export const rebeccapurple: RGB;
+export const red: RGB;
+export const rosybrown: RGB;
+export const royalblue: RGB;
+export const saddlebrown: RGB;
+export const salmon: RGB;
+export const sandybrown: RGB;
+export const seagreen: RGB;
+export const seashell: RGB;
+export const sienna: RGB;
+export const silver: RGB;
+export const skyblue: RGB;
+export const slateblue: RGB;
+export const slategray: RGB;
+export const slategrey: RGB;
+export const snow: RGB;
+export const springgreen: RGB;
+export const steelblue: RGB;
+export const tan: RGB;
+export const teal: RGB;
+export const thistle: RGB;
+export const tomato: RGB;
+export const turquoise: RGB;
+export const violet: RGB;
+export const wheat: RGB;
+export const white: RGB;
+export const whitesmoke: RGB;
+export const yellow: RGB;
+export const yellowgreen: RGB;
diff --git a/node_modules/@types/color-name/package.json b/node_modules/@types/color-name/package.json
new file mode 100644
index 00000000..2f396ef5
--- /dev/null
+++ b/node_modules/@types/color-name/package.json
@@ -0,0 +1,53 @@
+{
+ "_from": "@types/color-name@^1.1.1",
+ "_id": "@types/color-name@1.1.1",
+ "_inBundle": false,
+ "_integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "_location": "/@types/color-name",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@types/color-name@^1.1.1",
+ "name": "@types/color-name",
+ "escapedName": "@types%2fcolor-name",
+ "scope": "@types",
+ "rawSpec": "^1.1.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.1.1"
+ },
+ "_requiredBy": [
+ "/postcss-cli/ansi-styles",
+ "/wrap-ansi/ansi-styles"
+ ],
+ "_resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "_shasum": "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0",
+ "_spec": "@types/color-name@^1.1.1",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\postcss-cli\\node_modules\\ansi-styles",
+ "bugs": {
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Junyoung Clare Jang",
+ "url": "https://github.com/Ailrun"
+ }
+ ],
+ "dependencies": {},
+ "deprecated": false,
+ "description": "TypeScript definitions for color-name",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+ "license": "MIT",
+ "main": "",
+ "name": "@types/color-name",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+ },
+ "scripts": {},
+ "typeScriptVersion": "2.0",
+ "types": "index",
+ "typesPublisherContentHash": "e22c6881e2dcf766e32142cbb82d9acf9c08258bdf0da8e76c8a448d1be44ac7",
+ "version": "1.1.1"
+}
diff --git a/node_modules/@types/events/LICENSE b/node_modules/@types/events/LICENSE
new file mode 100644
index 00000000..21071075
--- /dev/null
+++ b/node_modules/@types/events/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/events/README.md b/node_modules/@types/events/README.md
new file mode 100644
index 00000000..e459064c
--- /dev/null
+++ b/node_modules/@types/events/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/events`
+
+# Summary
+This package contains type definitions for events (https://github.com/Gozala/events).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/events
+
+Additional Details
+ * Last updated: Thu, 24 Jan 2019 03:19:08 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by Yasunori Ohoka , Shenwei Wang .
diff --git a/node_modules/@types/events/index.d.ts b/node_modules/@types/events/index.d.ts
new file mode 100644
index 00000000..a6cf8342
--- /dev/null
+++ b/node_modules/@types/events/index.d.ts
@@ -0,0 +1,28 @@
+// Type definitions for events 3.0
+// Project: https://github.com/Gozala/events
+// Definitions by: Yasunori Ohoka
+// Shenwei Wang
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+export type Listener = (...args: any[]) => void;
+
+export class EventEmitter {
+ static listenerCount(emitter: EventEmitter, type: string | number): number;
+ static defaultMaxListeners: number;
+
+ eventNames(): Array;
+ setMaxListeners(n: number): this;
+ getMaxListeners(): number;
+ emit(type: string | number, ...args: any[]): boolean;
+ addListener(type: string | number, listener: Listener): this;
+ on(type: string | number, listener: Listener): this;
+ once(type: string | number, listener: Listener): this;
+ prependListener(type: string | number, listener: Listener): this;
+ prependOnceListener(type: string | number, listener: Listener): this;
+ removeListener(type: string | number, listener: Listener): this;
+ off(type: string | number, listener: Listener): this;
+ removeAllListeners(type?: string | number): this;
+ listeners(type: string | number): Listener[];
+ listenerCount(type: string | number): number;
+ rawListeners(type: string | number): Listener[];
+}
diff --git a/node_modules/@types/events/package.json b/node_modules/@types/events/package.json
new file mode 100644
index 00000000..124ea635
--- /dev/null
+++ b/node_modules/@types/events/package.json
@@ -0,0 +1,56 @@
+{
+ "_from": "@types/events@*",
+ "_id": "@types/events@3.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+ "_location": "/@types/events",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@types/events@*",
+ "name": "@types/events",
+ "escapedName": "@types%2fevents",
+ "scope": "@types",
+ "rawSpec": "*",
+ "saveSpec": null,
+ "fetchSpec": "*"
+ },
+ "_requiredBy": [
+ "/@types/glob"
+ ],
+ "_resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+ "_shasum": "2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7",
+ "_spec": "@types/events@*",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\@types\\glob",
+ "bugs": {
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Yasunori Ohoka",
+ "url": "https://github.com/yasupeke"
+ },
+ {
+ "name": "Shenwei Wang",
+ "url": "https://github.com/weareoutman"
+ }
+ ],
+ "dependencies": {},
+ "deprecated": false,
+ "description": "TypeScript definitions for events",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+ "license": "MIT",
+ "main": "",
+ "name": "@types/events",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+ },
+ "scripts": {},
+ "typeScriptVersion": "2.0",
+ "types": "index",
+ "typesPublisherContentHash": "ae078136220837864b64cc7c1c5267ca1ceb809166fb74569e637bc7de9f2e12",
+ "version": "3.0.0"
+}
diff --git a/node_modules/@types/glob/LICENSE b/node_modules/@types/glob/LICENSE
new file mode 100644
index 00000000..21071075
--- /dev/null
+++ b/node_modules/@types/glob/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/glob/README.md b/node_modules/@types/glob/README.md
new file mode 100644
index 00000000..155da08c
--- /dev/null
+++ b/node_modules/@types/glob/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/glob`
+
+# Summary
+This package contains type definitions for Glob (https://github.com/isaacs/node-glob).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/glob
+
+Additional Details
+ * Last updated: Thu, 27 Sep 2018 12:34:19 GMT
+ * Dependencies: events, minimatch, node
+ * Global values: none
+
+# Credits
+These definitions were written by vvakame , voy , Klaus Meinhardt .
diff --git a/node_modules/@types/glob/index.d.ts b/node_modules/@types/glob/index.d.ts
new file mode 100644
index 00000000..fc8c9885
--- /dev/null
+++ b/node_modules/@types/glob/index.d.ts
@@ -0,0 +1,87 @@
+// Type definitions for Glob 7.1
+// Project: https://github.com/isaacs/node-glob
+// Definitions by: vvakame
+// voy
+// Klaus Meinhardt
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+import events = require("events");
+import minimatch = require("minimatch");
+
+declare function G(pattern: string, cb: (err: Error | null, matches: string[]) => void): void;
+declare function G(pattern: string, options: G.IOptions, cb: (err: Error | null, matches: string[]) => void): void;
+
+declare namespace G {
+ function __promisify__(pattern: string, options?: IOptions): Promise;
+
+ function sync(pattern: string, options?: IOptions): string[];
+
+ function hasMagic(pattern: string, options?: IOptions): boolean;
+
+ let Glob: IGlobStatic;
+ let GlobSync: IGlobSyncStatic;
+
+ interface IOptions extends minimatch.IOptions {
+ cwd?: string;
+ root?: string;
+ dot?: boolean;
+ nomount?: boolean;
+ mark?: boolean;
+ nosort?: boolean;
+ stat?: boolean;
+ silent?: boolean;
+ strict?: boolean;
+ cache?: { [path: string]: boolean | 'DIR' | 'FILE' | ReadonlyArray };
+ statCache?: { [path: string]: false | { isDirectory(): boolean} | undefined };
+ symlinks?: { [path: string]: boolean | undefined };
+ realpathCache?: { [path: string]: string };
+ sync?: boolean;
+ nounique?: boolean;
+ nonull?: boolean;
+ debug?: boolean;
+ nobrace?: boolean;
+ noglobstar?: boolean;
+ noext?: boolean;
+ nocase?: boolean;
+ matchBase?: any;
+ nodir?: boolean;
+ ignore?: string | ReadonlyArray;
+ follow?: boolean;
+ realpath?: boolean;
+ nonegate?: boolean;
+ nocomment?: boolean;
+ absolute?: boolean;
+ }
+
+ interface IGlobStatic extends events.EventEmitter {
+ new (pattern: string, cb?: (err: Error | null, matches: string[]) => void): IGlob;
+ new (pattern: string, options: IOptions, cb?: (err: Error | null, matches: string[]) => void): IGlob;
+ prototype: IGlob;
+ }
+
+ interface IGlobSyncStatic {
+ new (pattern: string, options?: IOptions): IGlobBase;
+ prototype: IGlobBase;
+ }
+
+ interface IGlobBase {
+ minimatch: minimatch.IMinimatch;
+ options: IOptions;
+ aborted: boolean;
+ cache: { [path: string]: boolean | 'DIR' | 'FILE' | ReadonlyArray };
+ statCache: { [path: string]: false | { isDirectory(): boolean; } | undefined };
+ symlinks: { [path: string]: boolean | undefined };
+ realpathCache: { [path: string]: string };
+ found: string[];
+ }
+
+ interface IGlob extends IGlobBase, events.EventEmitter {
+ pause(): void;
+ resume(): void;
+ abort(): void;
+ }
+}
+
+export = G;
diff --git a/node_modules/@types/glob/package.json b/node_modules/@types/glob/package.json
new file mode 100644
index 00000000..d5899d12
--- /dev/null
+++ b/node_modules/@types/glob/package.json
@@ -0,0 +1,63 @@
+{
+ "_from": "@types/glob@^7.1.1",
+ "_id": "@types/glob@7.1.1",
+ "_inBundle": false,
+ "_integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "_location": "/@types/glob",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@types/glob@^7.1.1",
+ "name": "@types/glob",
+ "escapedName": "@types%2fglob",
+ "scope": "@types",
+ "rawSpec": "^7.1.1",
+ "saveSpec": null,
+ "fetchSpec": "^7.1.1"
+ },
+ "_requiredBy": [
+ "/globby"
+ ],
+ "_resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "_shasum": "aa59a1c6e3fbc421e07ccd31a944c30eba521575",
+ "_spec": "@types/glob@^7.1.1",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\globby",
+ "bugs": {
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "vvakame",
+ "url": "https://github.com/vvakame"
+ },
+ {
+ "name": "voy",
+ "url": "https://github.com/voy"
+ },
+ {
+ "name": "Klaus Meinhardt",
+ "url": "https://github.com/ajafff"
+ }
+ ],
+ "dependencies": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ },
+ "deprecated": false,
+ "description": "TypeScript definitions for Glob",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+ "license": "MIT",
+ "main": "",
+ "name": "@types/glob",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+ },
+ "scripts": {},
+ "typeScriptVersion": "2.0",
+ "typesPublisherContentHash": "43019f2af91c7a4ca3453c4b806a01c521ca3008ffe1bfefd37c5f9d6135660e",
+ "version": "7.1.1"
+}
diff --git a/node_modules/@types/minimatch/LICENSE b/node_modules/@types/minimatch/LICENSE
new file mode 100644
index 00000000..21071075
--- /dev/null
+++ b/node_modules/@types/minimatch/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/minimatch/README.md b/node_modules/@types/minimatch/README.md
new file mode 100644
index 00000000..00dc2306
--- /dev/null
+++ b/node_modules/@types/minimatch/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/minimatch`
+
+# Summary
+This package contains type definitions for Minimatch (https://github.com/isaacs/minimatch).
+
+# Details
+Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/minimatch
+
+Additional Details
+ * Last updated: Thu, 04 Jan 2018 23:26:01 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by vvakame , Shant Marouti .
diff --git a/node_modules/@types/minimatch/index.d.ts b/node_modules/@types/minimatch/index.d.ts
new file mode 100644
index 00000000..d6982de9
--- /dev/null
+++ b/node_modules/@types/minimatch/index.d.ts
@@ -0,0 +1,214 @@
+// Type definitions for Minimatch 3.0
+// Project: https://github.com/isaacs/minimatch
+// Definitions by: vvakame
+// Shant Marouti
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+/**
+ * Tests a path against the pattern using the options.
+ */
+declare function M(target: string, pattern: string, options?: M.IOptions): boolean;
+
+declare namespace M {
+ /**
+ * Match against the list of files, in the style of fnmatch or glob.
+ * If nothing is matched, and options.nonull is set,
+ * then return a list containing the pattern itself.
+ */
+ function match(list: ReadonlyArray, pattern: string, options?: IOptions): string[];
+
+ /**
+ * Returns a function that tests its supplied argument, suitable for use with Array.filter
+ */
+ function filter(pattern: string, options?: IOptions): (element: string, indexed: number, array: ReadonlyArray) => boolean;
+
+ /**
+ * Make a regular expression object from the pattern.
+ */
+ function makeRe(pattern: string, options?: IOptions): RegExp;
+
+ let Minimatch: IMinimatchStatic;
+
+ interface IOptions {
+ /**
+ * Dump a ton of stuff to stderr.
+ *
+ * @default false
+ */
+ debug?: boolean;
+
+ /**
+ * Do not expand {a,b} and {1..3} brace sets.
+ *
+ * @default false
+ */
+ nobrace?: boolean;
+
+ /**
+ * Disable ** matching against multiple folder names.
+ *
+ * @default false
+ */
+ noglobstar?: boolean;
+
+ /**
+ * Allow patterns to match filenames starting with a period,
+ * even if the pattern does not explicitly have a period in that spot.
+ *
+ * @default false
+ */
+ dot?: boolean;
+
+ /**
+ * Disable "extglob" style patterns like +(a|b).
+ *
+ * @default false
+ */
+ noext?: boolean;
+
+ /**
+ * Perform a case-insensitive match.
+ *
+ * @default false
+ */
+ nocase?: boolean;
+
+ /**
+ * When a match is not found by minimatch.match,
+ * return a list containing the pattern itself if this option is set.
+ * Otherwise, an empty list is returned if there are no matches.
+ *
+ * @default false
+ */
+ nonull?: boolean;
+
+ /**
+ * If set, then patterns without slashes will be matched against
+ * the basename of the path if it contains slashes.
+ *
+ * @default false
+ */
+ matchBase?: boolean;
+
+ /**
+ * Suppress the behavior of treating #
+ * at the start of a pattern as a comment.
+ *
+ * @default false
+ */
+ nocomment?: boolean;
+
+ /**
+ * Suppress the behavior of treating a leading ! character as negation.
+ *
+ * @default false
+ */
+ nonegate?: boolean;
+
+ /**
+ * Returns from negate expressions the same as if they were not negated.
+ * (Ie, true on a hit, false on a miss.)
+ *
+ * @default false
+ */
+ flipNegate?: boolean;
+ }
+
+ interface IMinimatchStatic {
+ new(pattern: string, options?: IOptions): IMinimatch;
+ prototype: IMinimatch;
+ }
+
+ interface IMinimatch {
+ /**
+ * The original pattern the minimatch object represents.
+ */
+ pattern: string;
+
+ /**
+ * The options supplied to the constructor.
+ */
+ options: IOptions;
+
+ /**
+ * A 2-dimensional array of regexp or string expressions.
+ */
+ set: any[][]; // (RegExp | string)[][]
+
+ /**
+ * A single regular expression expressing the entire pattern.
+ * Created by the makeRe method.
+ */
+ regexp: RegExp;
+
+ /**
+ * True if the pattern is negated.
+ */
+ negate: boolean;
+
+ /**
+ * True if the pattern is a comment.
+ */
+ comment: boolean;
+
+ /**
+ * True if the pattern is ""
+ */
+ empty: boolean;
+
+ /**
+ * Generate the regexp member if necessary, and return it.
+ * Will return false if the pattern is invalid.
+ */
+ makeRe(): RegExp; // regexp or boolean
+
+ /**
+ * Return true if the filename matches the pattern, or false otherwise.
+ */
+ match(fname: string): boolean;
+
+ /**
+ * Take a /-split filename, and match it against a single row in the regExpSet.
+ * This method is mainly for internal use, but is exposed so that it can be used
+ * by a glob-walker that needs to avoid excessive filesystem calls.
+ */
+ matchOne(files: string[], pattern: string[], partial: boolean): boolean;
+
+ /**
+ * Deprecated. For internal use.
+ *
+ * @private
+ */
+ debug(): void;
+
+ /**
+ * Deprecated. For internal use.
+ *
+ * @private
+ */
+ make(): void;
+
+ /**
+ * Deprecated. For internal use.
+ *
+ * @private
+ */
+ parseNegate(): void;
+
+ /**
+ * Deprecated. For internal use.
+ *
+ * @private
+ */
+ braceExpand(pattern: string, options: IOptions): void;
+
+ /**
+ * Deprecated. For internal use.
+ *
+ * @private
+ */
+ parse(pattern: string, isSub?: boolean): void;
+ }
+}
+
+export = M;
diff --git a/node_modules/@types/minimatch/package.json b/node_modules/@types/minimatch/package.json
new file mode 100644
index 00000000..c21aaf8a
--- /dev/null
+++ b/node_modules/@types/minimatch/package.json
@@ -0,0 +1,55 @@
+{
+ "_from": "@types/minimatch@*",
+ "_id": "@types/minimatch@3.0.3",
+ "_inBundle": false,
+ "_integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "_location": "/@types/minimatch",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@types/minimatch@*",
+ "name": "@types/minimatch",
+ "escapedName": "@types%2fminimatch",
+ "scope": "@types",
+ "rawSpec": "*",
+ "saveSpec": null,
+ "fetchSpec": "*"
+ },
+ "_requiredBy": [
+ "/@types/glob"
+ ],
+ "_resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "_shasum": "3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d",
+ "_spec": "@types/minimatch@*",
+ "_where": "C:\\Users\\youcode\\Desktop\\javascript-algo\\C2N3_C3N3\\node_modules\\@types\\glob",
+ "bugs": {
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "vvakame",
+ "url": "https://github.com/vvakame"
+ },
+ {
+ "name": "Shant Marouti",
+ "url": "https://github.com/shantmarouti"
+ }
+ ],
+ "dependencies": {},
+ "deprecated": false,
+ "description": "TypeScript definitions for Minimatch",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+ "license": "MIT",
+ "main": "",
+ "name": "@types/minimatch",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+ },
+ "scripts": {},
+ "typeScriptVersion": "2.0",
+ "typesPublisherContentHash": "e768e36348874adcc93ac67e9c3c7b5fcbd39079c0610ec16e410b8f851308d1",
+ "version": "3.0.3"
+}
diff --git a/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE
new file mode 100644
index 00000000..21071075
--- /dev/null
+++ b/node_modules/@types/node/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md
new file mode 100644
index 00000000..a37cc229
--- /dev/null
+++ b/node_modules/@types/node/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/node`
+
+# Summary
+This package contains type definitions for Node.js (http://nodejs.org/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
+
+### Additional Details
+ * Last updated: Fri, 27 Mar 2020 16:47:31 GMT
+ * Dependencies: none
+ * Global values: `Buffer`, `Symbol`, `__dirname`, `__filename`, `clearImmediate`, `clearInterval`, `clearTimeout`, `console`, `exports`, `global`, `module`, `process`, `queueMicrotask`, `require`, `setImmediate`, `setInterval`, `setTimeout`
+
+# Credits
+These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alexander T.](https://github.com/a-tarasyuk), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Bruno Scheufler](https://github.com/brunoscheufler), [Chigozirim C.](https://github.com/smac89), [Christian Vaagland Tellnes](https://github.com/tellnes), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Flarna](https://github.com/Flarna), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Hoàng Văn Khải](https://github.com/KSXGitHub), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nicolas Voigt](https://github.com/octo-sniffle), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Jordi Oliveras Rovira](https://github.com/j-oliveras), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Minh Son Nguyen](https://github.com/nguymin4), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Surasak Chaisurin](https://github.com/Ryan-Willpower), and [Piotr Błażejewicz](https://github.com/peterblazejewicz).
diff --git a/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts
new file mode 100644
index 00000000..df6df63f
--- /dev/null
+++ b/node_modules/@types/node/assert.d.ts
@@ -0,0 +1,53 @@
+declare module "assert" {
+ function internal(value: any, message?: string | Error): void;
+ namespace internal {
+ class AssertionError implements Error {
+ name: string;
+ message: string;
+ actual: any;
+ expected: any;
+ operator: string;
+ generatedMessage: boolean;
+ code: 'ERR_ASSERTION';
+
+ constructor(options?: {
+ message?: string; actual?: any; expected?: any;
+ operator?: string; stackStartFn?: Function
+ });
+ }
+
+ type AssertPredicate = RegExp | (new() => object) | ((thrown: any) => boolean) | object | Error;
+
+ function fail(message?: string | Error): never;
+ /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */
+ function fail(actual: any, expected: any, message?: string | Error, operator?: string, stackStartFn?: Function): never;
+ function ok(value: any, message?: string | Error): void;
+ function equal(actual: any, expected: any, message?: string | Error): void;
+ function notEqual(actual: any, expected: any, message?: string | Error): void;
+ function deepEqual(actual: any, expected: any, message?: string | Error): void;
+ function notDeepEqual(actual: any, expected: any, message?: string | Error): void;
+ function strictEqual(actual: any, expected: any, message?: string | Error): void;
+ function notStrictEqual(actual: any, expected: any, message?: string | Error): void;
+ function deepStrictEqual(actual: any, expected: any, message?: string | Error): void;
+ function notDeepStrictEqual(actual: any, expected: any, message?: string | Error): void;
+
+ function throws(block: () => any, message?: string | Error): void;
+ function throws(block: () => any, error: AssertPredicate, message?: string | Error): void;
+ function doesNotThrow(block: () => any, message?: string | Error): void;
+ function doesNotThrow(block: () => any, error: RegExp | Function, message?: string | Error): void;
+
+ function ifError(value: any): void;
+
+ function rejects(block: (() => Promise) | Promise, message?: string | Error): Promise;
+ function rejects(block: (() => Promise) | Promise, error: AssertPredicate, message?: string | Error): Promise;
+ function doesNotReject(block: (() => Promise) | Promise, message?: string | Error): Promise;
+ function doesNotReject(block: (() => Promise) | Promise, error: RegExp | Function, message?: string | Error): Promise;
+
+ function match(value: string, regExp: RegExp, message?: string | Error): void;
+ function doesNotMatch(value: string, regExp: RegExp, message?: string | Error): void;
+
+ const strict: typeof internal;
+ }
+
+ export = internal;
+}
diff --git a/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts
new file mode 100644
index 00000000..fdfb4119
--- /dev/null
+++ b/node_modules/@types/node/async_hooks.d.ts
@@ -0,0 +1,146 @@
+/**
+ * Async Hooks module: https://nodejs.org/api/async_hooks.html
+ */
+declare module "async_hooks" {
+ /**
+ * Returns the asyncId of the current execution context.
+ */
+ function executionAsyncId(): number;
+
+ /**
+ * The resource representing the current execution.
+ * Useful to store data within the resource.
+ *
+ * Resource objects returned by `executionAsyncResource()` are most often internal
+ * Node.js handle objects with undocumented APIs. Using any functions or properties
+ * on the object is likely to crash your application and should be avoided.
+ *
+ * Using `executionAsyncResource()` in the top-level execution context will
+ * return an empty object as there is no handle or request object to use,
+ * but having an object representing the top-level can be helpful.
+ */
+ function executionAsyncResource(): object;
+
+ /**
+ * Returns the ID of the resource responsible for calling the callback that is currently being executed.
+ */
+ function triggerAsyncId(): number;
+
+ interface HookCallbacks {
+ /**
+ * Called when a class is constructed that has the possibility to emit an asynchronous event.
+ * @param asyncId a unique ID for the async resource
+ * @param type the type of the async resource
+ * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created
+ * @param resource reference to the resource representing the async operation, needs to be released during destroy
+ */
+ init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void;
+
+ /**
+ * When an asynchronous operation is initiated or completes a callback is called to notify the user.
+ * The before callback is called just before said callback is executed.
+ * @param asyncId the unique identifier assigned to the resource about to execute the callback.
+ */
+ before?(asyncId: number): void;
+
+ /**
+ * Called immediately after the callback specified in before is completed.
+ * @param asyncId the unique identifier assigned to the resource which has executed the callback.
+ */
+ after?(asyncId: number): void;
+
+ /**
+ * Called when a promise has resolve() called. This may not be in the same execution id
+ * as the promise itself.
+ * @param asyncId the unique id for the promise that was resolve()d.
+ */
+ promiseResolve?(asyncId: number): void;
+
+ /**
+ * Called after the resource corresponding to asyncId is destroyed
+ * @param asyncId a unique ID for the async resource
+ */
+ destroy?(asyncId: number): void;
+ }
+
+ interface AsyncHook {
+ /**
+ * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
+ */
+ enable(): this;
+
+ /**
+ * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
+ */
+ disable(): this;
+ }
+
+ /**
+ * Registers functions to be called for different lifetime events of each async operation.
+ * @param options the callbacks to register
+ * @return an AsyncHooks instance used for disabling and enabling hooks
+ */
+ function createHook(options: HookCallbacks): AsyncHook;
+
+ interface AsyncResourceOptions {
+ /**
+ * The ID of the execution context that created this async event.
+ * Default: `executionAsyncId()`
+ */
+ triggerAsyncId?: number;
+
+ /**
+ * Disables automatic `emitDestroy` when the object is garbage collected.
+ * This usually does not need to be set (even if `emitDestroy` is called
+ * manually), unless the resource's `asyncId` is retrieved and the
+ * sensitive API's `emitDestroy` is called with it.
+ * Default: `false`
+ */
+ requireManualDestroy?: boolean;
+ }
+
+ /**
+ * The class AsyncResource was designed to be extended by the embedder's async resources.
+ * Using this users can easily trigger the lifetime events of their own resources.
+ */
+ class AsyncResource {
+ /**
+ * AsyncResource() is meant to be extended. Instantiating a
+ * new AsyncResource() also triggers init. If triggerAsyncId is omitted then
+ * async_hook.executionAsyncId() is used.
+ * @param type The type of async event.
+ * @param triggerAsyncId The ID of the execution context that created
+ * this async event (default: `executionAsyncId()`), or an
+ * AsyncResourceOptions object (since 9.3)
+ */
+ constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions);
+
+ /**
+ * Call the provided function with the provided arguments in the
+ * execution context of the async resource. This will establish the
+ * context, trigger the AsyncHooks before callbacks, call the function,
+ * trigger the AsyncHooks after callbacks, and then restore the original
+ * execution context.
+ * @param fn The function to call in the execution context of this
+ * async resource.
+ * @param thisArg The receiver to be used for the function call.
+ * @param args Optional arguments to pass to the function.
+ */
+ runInAsyncScope(fn: (this: This, ...args: any[]) => Result, thisArg?: This, ...args: any[]): Result;
+
+ /**
+ * Call AsyncHooks destroy callbacks.
+ */
+ emitDestroy(): void;
+
+ /**
+ * @return the unique ID assigned to this AsyncResource instance.
+ */
+ asyncId(): number;
+
+ /**
+ * @return the trigger ID for this AsyncResource instance.
+ */
+ triggerAsyncId(): number;
+ }
+}
diff --git a/node_modules/@types/node/base.d.ts b/node_modules/@types/node/base.d.ts
new file mode 100644
index 00000000..70983d95
--- /dev/null
+++ b/node_modules/@types/node/base.d.ts
@@ -0,0 +1,41 @@
+// base definnitions for all NodeJS modules that are not specific to any version of TypeScript
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
diff --git a/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts
new file mode 100644
index 00000000..7eb1061b
--- /dev/null
+++ b/node_modules/@types/node/buffer.d.ts
@@ -0,0 +1,22 @@
+declare module "buffer" {
+ export const INSPECT_MAX_BYTES: number;
+ export const kMaxLength: number;
+ export const kStringMaxLength: number;
+ export const constants: {
+ MAX_LENGTH: number;
+ MAX_STRING_LENGTH: number;
+ };
+ const BuffType: typeof Buffer;
+
+ export type TranscodeEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "latin1" | "binary";
+
+ export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer;
+
+ export const SlowBuffer: {
+ /** @deprecated since v6.0.0, use Buffer.allocUnsafeSlow() */
+ new(size: number): Buffer;
+ prototype: Buffer;
+ };
+
+ export { BuffType as Buffer };
+}
diff --git a/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts
new file mode 100644
index 00000000..1cb3f873
--- /dev/null
+++ b/node_modules/@types/node/child_process.d.ts
@@ -0,0 +1,495 @@
+declare module "child_process" {
+ import * as events from "events";
+ import * as net from "net";
+ import { Writable, Readable, Stream, Pipe } from "stream";
+
+ type Serializable = string | object | number | boolean;
+ type SendHandle = net.Socket | net.Server;
+
+ interface ChildProcess extends events.EventEmitter {
+ stdin: Writable | null;
+ stdout: Readable | null;
+ stderr: Readable | null;
+ readonly channel?: Pipe | null;
+ readonly stdio: [
+ Writable | null, // stdin
+ Readable | null, // stdout
+ Readable | null, // stderr
+ Readable | Writable | null | undefined, // extra
+ Readable | Writable | null | undefined // extra
+ ];
+ readonly killed: boolean;
+ readonly pid: number;
+ readonly connected: boolean;
+ kill(signal?: NodeJS.Signals | number): boolean;
+ send(message: Serializable, callback?: (error: Error | null) => void): boolean;
+ send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
+ send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
+ disconnect(): void;
+ unref(): void;
+ ref(): void;
+
+ /**
+ * events.EventEmitter
+ * 1. close
+ * 2. disconnect
+ * 3. error
+ * 4. exit
+ * 5. message
+ */
+
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+ addListener(event: "disconnect", listener: () => void): this;
+ addListener(event: "error", listener: (err: Error) => void): this;
+ addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: "close", code: number, signal: NodeJS.Signals): boolean;
+ emit(event: "disconnect"): boolean;
+ emit(event: "error", err: Error): boolean;
+ emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean;
+ emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+ on(event: "disconnect", listener: () => void): this;
+ on(event: "error", listener: (err: Error) => void): this;
+ on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+ once(event: "disconnect", listener: () => void): this;
+ once(event: "error", listener: (err: Error) => void): this;
+ once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+ prependListener(event: "disconnect", listener: () => void): this;
+ prependListener(event: "error", listener: (err: Error) => void): this;
+ prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+ prependOnceListener(event: "disconnect", listener: () => void): this;
+ prependOnceListener(event: "error", listener: (err: Error) => void): this;
+ prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+ prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
+ }
+
+ // return this object when stdio option is undefined or not specified
+ interface ChildProcessWithoutNullStreams extends ChildProcess {
+ stdin: Writable;
+ stdout: Readable;
+ stderr: Readable;
+ readonly stdio: [
+ Writable, // stdin
+ Readable, // stdout
+ Readable, // stderr
+ Readable | Writable | null | undefined, // extra, no modification
+ Readable | Writable | null | undefined // extra, no modification
+ ];
+ }
+
+ // return this object when stdio option is a tuple of 3
+ interface ChildProcessByStdio<
+ I extends null | Writable,
+ O extends null | Readable,
+ E extends null | Readable,
+ > extends ChildProcess {
+ stdin: I;
+ stdout: O;
+ stderr: E;
+ readonly stdio: [
+ I,
+ O,
+ E,
+ Readable | Writable | null | undefined, // extra, no modification
+ Readable | Writable | null | undefined // extra, no modification
+ ];
+ }
+
+ interface MessageOptions {
+ keepOpen?: boolean;
+ }
+
+ type StdioOptions = "pipe" | "ignore" | "inherit" | Array<("pipe" | "ipc" | "ignore" | "inherit" | Stream | number | null | undefined)>;
+
+ type SerializationType = 'json' | 'advanced';
+
+ interface MessagingOptions {
+ /**
+ * Specify the kind of serialization used for sending messages between processes.
+ * @default 'json'
+ */
+ serialization?: SerializationType;
+ }
+
+ interface ProcessEnvOptions {
+ uid?: number;
+ gid?: number;
+ cwd?: string;
+ env?: NodeJS.ProcessEnv;
+ }
+
+ interface CommonOptions extends ProcessEnvOptions {
+ /**
+ * @default true
+ */
+ windowsHide?: boolean;
+ /**
+ * @default 0
+ */
+ timeout?: number;
+ }
+
+ interface CommonSpawnOptions extends CommonOptions, MessagingOptions {
+ argv0?: string;
+ stdio?: StdioOptions;
+ shell?: boolean | string;
+ windowsVerbatimArguments?: boolean;
+ }
+
+ interface SpawnOptions extends CommonSpawnOptions {
+ detached?: boolean;
+ }
+
+ interface SpawnOptionsWithoutStdio extends SpawnOptions {
+ stdio?: 'pipe' | Array;
+ }
+
+ type StdioNull = 'inherit' | 'ignore' | Stream;
+ type StdioPipe = undefined | null | 'pipe';
+
+ interface SpawnOptionsWithStdioTuple<
+ Stdin extends StdioNull | StdioPipe,
+ Stdout extends StdioNull | StdioPipe,
+ Stderr extends StdioNull | StdioPipe,
+ > extends SpawnOptions {
+ stdio: [Stdin, Stdout, Stderr];
+ }
+
+ // overloads of spawn without 'args'
+ function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+
+ function spawn(command: string, options: SpawnOptions): ChildProcess;
+
+ // overloads of spawn with 'args'
+ function spawn(command: string, args?: ReadonlyArray, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+ function spawn(
+ command: string,
+ args: ReadonlyArray,
+ options: SpawnOptionsWithStdioTuple,
+ ): ChildProcessByStdio;
+
+ function spawn(command: string, args: ReadonlyArray, options: SpawnOptions): ChildProcess;
+
+ interface ExecOptions extends CommonOptions {
+ shell?: string;
+ maxBuffer?: number;
+ killSignal?: NodeJS.Signals | number;
+ }
+
+ interface ExecOptionsWithStringEncoding extends ExecOptions {
+ encoding: BufferEncoding;
+ }
+
+ interface ExecOptionsWithBufferEncoding extends ExecOptions {
+ encoding: string | null; // specify `null`.
+ }
+
+ interface ExecException extends Error {
+ cmd?: string;
+ killed?: boolean;
+ code?: number;
+ signal?: NodeJS.Signals;
+ }
+
+ // no `options` definitely means stdout/stderr are `string`.
+ function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+ function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
+
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+ function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+ function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
+
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
+ function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
+ function exec(
+ command: string,
+ options: ({ encoding?: string | null } & ExecOptions) | undefined | null,
+ callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+ ): ChildProcess;
+
+ interface PromiseWithChild extends Promise {
+ child: ChildProcess;
+ }
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace exec {
+ function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+ function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+ }
+
+ interface ExecFileOptions extends CommonOptions {
+ maxBuffer?: number;
+ killSignal?: NodeJS.Signals | number;
+ windowsVerbatimArguments?: boolean;
+ shell?: boolean | string;
+ }
+ interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
+ encoding: 'buffer' | null;
+ }
+ interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
+ encoding: string;
+ }
+
+ function execFile(file: string): ChildProcess;
+ function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
+ function execFile(file: string, args?: ReadonlyArray | null): ChildProcess;
+ function execFile(file: string, args: ReadonlyArray | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
+
+ // no `options` definitely means stdout/stderr are `string`.
+ function execFile(file: string, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(file: string, args: ReadonlyArray | undefined | null, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+ function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithBufferEncoding,
+ callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void,
+ ): ChildProcess;
+
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+ function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithStringEncoding,
+ callback: (error: ExecException | null, stdout: string, stderr: string) => void,
+ ): ChildProcess;
+
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+ function execFile(
+ file: string,
+ options: ExecFileOptionsWithOtherEncoding,
+ callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+ ): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptionsWithOtherEncoding,
+ callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+ ): ChildProcess;
+
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
+ function execFile(file: string, options: ExecFileOptions, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ExecFileOptions,
+ callback: (error: ExecException | null, stdout: string, stderr: string) => void
+ ): ChildProcess;
+
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
+ function execFile(
+ file: string,
+ options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+ callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
+ ): ChildProcess;
+ function execFile(
+ file: string,
+ args: ReadonlyArray | undefined | null,
+ options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+ callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
+ ): ChildProcess;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace execFile {
+ function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, args: string[] | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+ function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+ function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+ function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+ function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+ function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+ function __promisify__(
+ file: string,
+ args: string[] | undefined | null,
+ options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+ ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+ }
+
+ interface ForkOptions extends ProcessEnvOptions, MessagingOptions {
+ execPath?: string;
+ execArgv?: string[];
+ silent?: boolean;
+ stdio?: StdioOptions;
+ detached?: boolean;
+ windowsVerbatimArguments?: boolean;
+ }
+ function fork(modulePath: string, args?: ReadonlyArray, options?: ForkOptions): ChildProcess;
+
+ interface SpawnSyncOptions extends CommonSpawnOptions {
+ input?: string | NodeJS.ArrayBufferView;
+ killSignal?: NodeJS.Signals | number;
+ maxBuffer?: number;
+ encoding?: string;
+ }
+ interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
+ encoding: string; // specify `null`.
+ }
+ interface SpawnSyncReturns {
+ pid: number;
+ output: string[];
+ stdout: T;
+ stderr: T;
+ status: number | null;
+ signal: NodeJS.Signals | null;
+ error?: Error;
+ }
+ function spawnSync(command: string): SpawnSyncReturns;
+ function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns;
+ function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns;
+ function spawnSync(command: string, args?: ReadonlyArray, options?: SpawnSyncOptions): SpawnSyncReturns;
+
+ interface ExecSyncOptions extends CommonOptions {
+ input?: string | Uint8Array;
+ stdio?: StdioOptions;
+ shell?: string;
+ killSignal?: NodeJS.Signals | number;
+ maxBuffer?: number;
+ encoding?: string;
+ }
+ interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
+ encoding: string; // specify `null`.
+ }
+ function execSync(command: string): Buffer;
+ function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
+ function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
+ function execSync(command: string, options?: ExecSyncOptions): Buffer;
+
+ interface ExecFileSyncOptions extends CommonOptions {
+ input?: string | NodeJS.ArrayBufferView;
+ stdio?: StdioOptions;
+ killSignal?: NodeJS.Signals | number;
+ maxBuffer?: number;
+ encoding?: string;
+ shell?: boolean | string;
+ }
+ interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
+ encoding: BufferEncoding;
+ }
+ interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
+ encoding: string; // specify `null`.
+ }
+ function execFileSync(command: string): Buffer;
+ function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
+ function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+ function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;
+ function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptionsWithStringEncoding): string;
+ function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+ function execFileSync(command: string, args?: ReadonlyArray, options?: ExecFileSyncOptions): Buffer;
+}
diff --git a/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts
new file mode 100644
index 00000000..2992af8c
--- /dev/null
+++ b/node_modules/@types/node/cluster.d.ts
@@ -0,0 +1,266 @@
+declare module "cluster" {
+ import * as child from "child_process";
+ import * as events from "events";
+ import * as net from "net";
+
+ // interfaces
+ interface ClusterSettings {
+ execArgv?: string[]; // default: process.execArgv
+ exec?: string;
+ args?: string[];
+ silent?: boolean;
+ stdio?: any[];
+ uid?: number;
+ gid?: number;
+ inspectPort?: number | (() => number);
+ }
+
+ interface Address {
+ address: string;
+ port: number;
+ addressType: number | "udp4" | "udp6"; // 4, 6, -1, "udp4", "udp6"
+ }
+
+ class Worker extends events.EventEmitter {
+ id: number;
+ process: child.ChildProcess;
+ send(message: child.Serializable, sendHandle?: child.SendHandle, callback?: (error: Error | null) => void): boolean;
+ kill(signal?: string): void;
+ destroy(signal?: string): void;
+ disconnect(): void;
+ isConnected(): boolean;
+ isDead(): boolean;
+ exitedAfterDisconnect: boolean;
+
+ /**
+ * events.EventEmitter
+ * 1. disconnect
+ * 2. error
+ * 3. exit
+ * 4. listening
+ * 5. message
+ * 6. online
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "disconnect", listener: () => void): this;
+ addListener(event: "error", listener: (error: Error) => void): this;
+ addListener(event: "exit", listener: (code: number, signal: string) => void): this;
+ addListener(event: "listening", listener: (address: Address) => void): this;
+ addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ addListener(event: "online", listener: () => void): this;
+
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: "disconnect"): boolean;
+ emit(event: "error", error: Error): boolean;
+ emit(event: "exit", code: number, signal: string): boolean;
+ emit(event: "listening", address: Address): boolean;
+ emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
+ emit(event: "online"): boolean;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "disconnect", listener: () => void): this;
+ on(event: "error", listener: (error: Error) => void): this;
+ on(event: "exit", listener: (code: number, signal: string) => void): this;
+ on(event: "listening", listener: (address: Address) => void): this;
+ on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ on(event: "online", listener: () => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "disconnect", listener: () => void): this;
+ once(event: "error", listener: (error: Error) => void): this;
+ once(event: "exit", listener: (code: number, signal: string) => void): this;
+ once(event: "listening", listener: (address: Address) => void): this;
+ once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ once(event: "online", listener: () => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "disconnect", listener: () => void): this;
+ prependListener(event: "error", listener: (error: Error) => void): this;
+ prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
+ prependListener(event: "listening", listener: (address: Address) => void): this;
+ prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ prependListener(event: "online", listener: () => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "disconnect", listener: () => void): this;
+ prependOnceListener(event: "error", listener: (error: Error) => void): this;
+ prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
+ prependOnceListener(event: "listening", listener: (address: Address) => void): this;
+ prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ prependOnceListener(event: "online", listener: () => void): this;
+ }
+
+ interface Cluster extends events.EventEmitter {
+ Worker: Worker;
+ disconnect(callback?: () => void): void;
+ fork(env?: any): Worker;
+ isMaster: boolean;
+ isWorker: boolean;
+ schedulingPolicy: number;
+ settings: ClusterSettings;
+ setupMaster(settings?: ClusterSettings): void;
+ worker?: Worker;
+ workers?: {
+ [index: string]: Worker | undefined
+ };
+
+ readonly SCHED_NONE: number;
+ readonly SCHED_RR: number;
+
+ /**
+ * events.EventEmitter
+ * 1. disconnect
+ * 2. exit
+ * 3. fork
+ * 4. listening
+ * 5. message
+ * 6. online
+ * 7. setup
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "disconnect", listener: (worker: Worker) => void): this;
+ addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+ addListener(event: "fork", listener: (worker: Worker) => void): this;
+ addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+ addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ addListener(event: "online", listener: (worker: Worker) => void): this;
+ addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: "disconnect", worker: Worker): boolean;
+ emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
+ emit(event: "fork", worker: Worker): boolean;
+ emit(event: "listening", worker: Worker, address: Address): boolean;
+ emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
+ emit(event: "online", worker: Worker): boolean;
+ emit(event: "setup", settings: ClusterSettings): boolean;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "disconnect", listener: (worker: Worker) => void): this;
+ on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+ on(event: "fork", listener: (worker: Worker) => void): this;
+ on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+ on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ on(event: "online", listener: (worker: Worker) => void): this;
+ on(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "disconnect", listener: (worker: Worker) => void): this;
+ once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+ once(event: "fork", listener: (worker: Worker) => void): this;
+ once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+ once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ once(event: "online", listener: (worker: Worker) => void): this;
+ once(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
+ prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+ prependListener(event: "fork", listener: (worker: Worker) => void): this;
+ prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+ prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
+ prependListener(event: "online", listener: (worker: Worker) => void): this;
+ prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
+ prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+ prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
+ prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
+ prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
+ prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+ }
+
+ const SCHED_NONE: number;
+ const SCHED_RR: number;
+
+ function disconnect(callback?: () => void): void;
+ function fork(env?: any): Worker;
+ const isMaster: boolean;
+ const isWorker: boolean;
+ let schedulingPolicy: number;
+ const settings: ClusterSettings;
+ function setupMaster(settings?: ClusterSettings): void;
+ const worker: Worker;
+ const workers: {
+ [index: string]: Worker | undefined
+ };
+
+ /**
+ * events.EventEmitter
+ * 1. disconnect
+ * 2. exit
+ * 3. fork
+ * 4. listening
+ * 5. message
+ * 6. online
+ * 7. setup
+ */
+ function addListener(event: string, listener: (...args: any[]) => void): Cluster;
+ function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+ function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+ function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+ function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+ function addListener(event: "online", listener: (worker: Worker) => void): Cluster;
+ function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+ function emit(event: string | symbol, ...args: any[]): boolean;
+ function emit(event: "disconnect", worker: Worker): boolean;
+ function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
+ function emit(event: "fork", worker: Worker): boolean;
+ function emit(event: "listening", worker: Worker, address: Address): boolean;
+ function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
+ function emit(event: "online", worker: Worker): boolean;
+ function emit(event: "setup", settings: ClusterSettings): boolean;
+
+ function on(event: string, listener: (...args: any[]) => void): Cluster;
+ function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+ function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+ function on(event: "fork", listener: (worker: Worker) => void): Cluster;
+ function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+ function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
+ function on(event: "online", listener: (worker: Worker) => void): Cluster;
+ function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+ function once(event: string, listener: (...args: any[]) => void): Cluster;
+ function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+ function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+ function once(event: "fork", listener: (worker: Worker) => void): Cluster;
+ function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+ function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster; // the handle is a net.Socket or net.Server object, or undefined.
+ function once(event: "online", listener: (worker: Worker) => void): Cluster;
+ function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+ function removeListener(event: string, listener: (...args: any[]) => void): Cluster;
+ function removeAllListeners(event?: string): Cluster;
+ function setMaxListeners(n: number): Cluster;
+ function getMaxListeners(): number;
+ function listeners(event: string): Function[];
+ function listenerCount(type: string): number;
+
+ function prependListener(event: string, listener: (...args: any[]) => void): Cluster;
+ function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+ function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+ function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+ function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+ function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;
+ function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+ function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;
+ function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+ function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+ function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+ function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+ // the handle is a net.Socket or net.Server object, or undefined.
+ function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+ function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;
+ function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+ function eventNames(): string[];
+}
diff --git a/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts
new file mode 100644
index 00000000..d30d13f8
--- /dev/null
+++ b/node_modules/@types/node/console.d.ts
@@ -0,0 +1,3 @@
+declare module "console" {
+ export = console;
+}
diff --git a/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts
new file mode 100644
index 00000000..d124ae66
--- /dev/null
+++ b/node_modules/@types/node/constants.d.ts
@@ -0,0 +1,8 @@
+/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */
+declare module "constants" {
+ import { constants as osConstants, SignalConstants } from 'os';
+ import { constants as cryptoConstants } from 'crypto';
+ import { constants as fsConstants } from 'fs';
+ const exp: typeof osConstants.errno & typeof osConstants.priority & SignalConstants & typeof cryptoConstants & typeof fsConstants;
+ export = exp;
+}
diff --git a/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts
new file mode 100644
index 00000000..ca7b0065
--- /dev/null
+++ b/node_modules/@types/node/crypto.d.ts
@@ -0,0 +1,615 @@
+declare module "crypto" {
+ import * as stream from "stream";
+
+ interface Certificate {
+ exportChallenge(spkac: BinaryLike): Buffer;
+ exportPublicKey(spkac: BinaryLike): Buffer;
+ verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
+ }
+ const Certificate: {
+ new(): Certificate;
+ (): Certificate;
+ };
+
+ namespace constants { // https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_crypto_constants
+ const OPENSSL_VERSION_NUMBER: number;
+
+ /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */
+ const SSL_OP_ALL: number;
+ /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+ const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
+ /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+ const SSL_OP_CIPHER_SERVER_PREFERENCE: number;
+ /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */
+ const SSL_OP_CISCO_ANYCONNECT: number;
+ /** Instructs OpenSSL to turn on cookie exchange. */
+ const SSL_OP_COOKIE_EXCHANGE: number;
+ /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */
+ const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
+ /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */
+ const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
+ /** Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. */
+ const SSL_OP_EPHEMERAL_RSA: number;
+ /** Allows initial connection to servers that do not support RI. */
+ const SSL_OP_LEGACY_SERVER_CONNECT: number;
+ const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
+ const SSL_OP_MICROSOFT_SESS_ID_BUG: number;
+ /** Instructs OpenSSL to disable the workaround for a man-in-the-middle protocol-version vulnerability in the SSL 2.0 server implementation. */
+ const SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
+ const SSL_OP_NETSCAPE_CA_DN_BUG: number;
+ const SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
+ const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
+ const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
+ /** Instructs OpenSSL to disable support for SSL/TLS compression. */
+ const SSL_OP_NO_COMPRESSION: number;
+ const SSL_OP_NO_QUERY_MTU: number;
+ /** Instructs OpenSSL to always start a new session when performing renegotiation. */
+ const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
+ const SSL_OP_NO_SSLv2: number;
+ const SSL_OP_NO_SSLv3: number;
+ const SSL_OP_NO_TICKET: number;
+ const SSL_OP_NO_TLSv1: number;
+ const SSL_OP_NO_TLSv1_1: number;
+ const SSL_OP_NO_TLSv1_2: number;
+ const SSL_OP_PKCS1_CHECK_1: number;
+ const SSL_OP_PKCS1_CHECK_2: number;
+ /** Instructs OpenSSL to always create a new key when using temporary/ephemeral DH parameters. */
+ const SSL_OP_SINGLE_DH_USE: number;
+ /** Instructs OpenSSL to always create a new key when using temporary/ephemeral ECDH parameters. */
+ const SSL_OP_SINGLE_ECDH_USE: number;
+ const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
+ const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
+ const SSL_OP_TLS_BLOCK_PADDING_BUG: number;
+ const SSL_OP_TLS_D5_BUG: number;
+ /** Instructs OpenSSL to disable version rollback attack detection. */
+ const SSL_OP_TLS_ROLLBACK_BUG: number;
+
+ const ENGINE_METHOD_RSA: number;
+ const ENGINE_METHOD_DSA: number;
+ const ENGINE_METHOD_DH: number;
+ const ENGINE_METHOD_RAND: number;
+ const ENGINE_METHOD_EC: number;
+ const ENGINE_METHOD_CIPHERS: number;
+ const ENGINE_METHOD_DIGESTS: number;
+ const ENGINE_METHOD_PKEY_METHS: number;
+ const ENGINE_METHOD_PKEY_ASN1_METHS: number;
+ const ENGINE_METHOD_ALL: number;
+ const ENGINE_METHOD_NONE: number;
+
+ const DH_CHECK_P_NOT_SAFE_PRIME: number;
+ const DH_CHECK_P_NOT_PRIME: number;
+ const DH_UNABLE_TO_CHECK_GENERATOR: number;
+ const DH_NOT_SUITABLE_GENERATOR: number;
+
+ const ALPN_ENABLED: number;
+
+ const RSA_PKCS1_PADDING: number;
+ const RSA_SSLV23_PADDING: number;
+ const RSA_NO_PADDING: number;
+ const RSA_PKCS1_OAEP_PADDING: number;
+ const RSA_X931_PADDING: number;
+ const RSA_PKCS1_PSS_PADDING: number;
+ /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */
+ const RSA_PSS_SALTLEN_DIGEST: number;
+ /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */
+ const RSA_PSS_SALTLEN_MAX_SIGN: number;
+ /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */
+ const RSA_PSS_SALTLEN_AUTO: number;
+
+ const POINT_CONVERSION_COMPRESSED: number;
+ const POINT_CONVERSION_UNCOMPRESSED: number;
+ const POINT_CONVERSION_HYBRID: number;
+
+ /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */
+ const defaultCoreCipherList: string;
+ /** Specifies the active default cipher list used by the current Node.js process (colon-separated values). */
+ const defaultCipherList: string;
+ }
+
+ interface HashOptions extends stream.TransformOptions {
+ /**
+ * For XOF hash functions such as `shake256`, the
+ * outputLength option can be used to specify the desired output length in bytes.
+ */
+ outputLength?: number;
+ }
+
+ /** @deprecated since v10.0.0 */
+ const fips: boolean;
+
+ function createHash(algorithm: string, options?: HashOptions): Hash;
+ function createHmac(algorithm: string, key: BinaryLike | KeyObject, options?: stream.TransformOptions): Hmac;
+
+ type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1";
+ type HexBase64Latin1Encoding = "latin1" | "hex" | "base64";
+ type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary";
+ type HexBase64BinaryEncoding = "binary" | "base64" | "hex";
+ type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";
+
+ class Hash extends stream.Transform {
+ private constructor();
+ copy(): Hash;
+ update(data: BinaryLike): Hash;
+ update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hash;
+ digest(): Buffer;
+ digest(encoding: HexBase64Latin1Encoding): string;
+ }
+ class Hmac extends stream.Transform {
+ private constructor();
+ update(data: BinaryLike): Hmac;
+ update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hmac;
+ digest(): Buffer;
+ digest(encoding: HexBase64Latin1Encoding): string;
+ }
+
+ type KeyObjectType = 'secret' | 'public' | 'private';
+
+ interface KeyExportOptions {
+ type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1';
+ format: T;
+ cipher?: string;
+ passphrase?: string | Buffer;
+ }
+
+ class KeyObject {
+ private constructor();
+ asymmetricKeyType?: KeyType;
+ /**
+ * For asymmetric keys, this property represents the size of the embedded key in
+ * bytes. This property is `undefined` for symmetric keys.
+ */
+ asymmetricKeySize?: number;
+ export(options: KeyExportOptions<'pem'>): string | Buffer;
+ export(options?: KeyExportOptions<'der'>): Buffer;
+ symmetricKeySize?: number;
+ type: KeyObjectType;
+ }
+
+ type CipherCCMTypes = 'aes-128-ccm' | 'aes-192-ccm' | 'aes-256-ccm' | 'chacha20-poly1305';
+ type CipherGCMTypes = 'aes-128-gcm' | 'aes-192-gcm' | 'aes-256-gcm';
+
+ type BinaryLike = string | NodeJS.ArrayBufferView;
+
+ type CipherKey = BinaryLike | KeyObject;
+
+ interface CipherCCMOptions extends stream.TransformOptions {
+ authTagLength: number;
+ }
+ interface CipherGCMOptions extends stream.TransformOptions {
+ authTagLength?: number;
+ }
+ /** @deprecated since v10.0.0 use createCipheriv() */
+ function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM;
+ /** @deprecated since v10.0.0 use createCipheriv() */
+ function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM;
+ /** @deprecated since v10.0.0 use createCipheriv() */
+ function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher;
+
+ function createCipheriv(
+ algorithm: CipherCCMTypes,
+ key: CipherKey,
+ iv: BinaryLike | null,
+ options: CipherCCMOptions
+ ): CipherCCM;
+ function createCipheriv(
+ algorithm: CipherGCMTypes,
+ key: CipherKey,
+ iv: BinaryLike | null,
+ options?: CipherGCMOptions
+ ): CipherGCM;
+ function createCipheriv(
+ algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions
+ ): Cipher;
+
+ class Cipher extends stream.Transform {
+ private constructor();
+ update(data: BinaryLike): Buffer;
+ update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer;
+ update(data: NodeJS.ArrayBufferView, input_encoding: undefined, output_encoding: HexBase64BinaryEncoding): string;
+ update(data: string, input_encoding: Utf8AsciiBinaryEncoding | undefined, output_encoding: HexBase64BinaryEncoding): string;
+ final(): Buffer;
+ final(output_encoding: string): string;
+ setAutoPadding(auto_padding?: boolean): this;
+ // getAuthTag(): Buffer;
+ // setAAD(buffer: Buffer): this; // docs only say buffer
+ }
+ interface CipherCCM extends Cipher {
+ setAAD(buffer: Buffer, options: { plaintextLength: number }): this;
+ getAuthTag(): Buffer;
+ }
+ interface CipherGCM extends Cipher {
+ setAAD(buffer: Buffer, options?: { plaintextLength: number }): this;
+ getAuthTag(): Buffer;
+ }
+ /** @deprecated since v10.0.0 use createDecipheriv() */
+ function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM;
+ /** @deprecated since v10.0.0 use createDecipheriv() */
+ function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
+ /** @deprecated since v10.0.0 use createDecipheriv() */
+ function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher;
+
+ function createDecipheriv(
+ algorithm: CipherCCMTypes,
+ key: CipherKey,
+ iv: BinaryLike | null,
+ options: CipherCCMOptions,
+ ): DecipherCCM;
+ function createDecipheriv(
+ algorithm: CipherGCMTypes,
+ key: CipherKey,
+ iv: BinaryLike | null,
+ options?: CipherGCMOptions,
+ ): DecipherGCM;
+ function createDecipheriv(algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions): Decipher;
+
+ class Decipher extends stream.Transform {
+ private constructor();
+ update(data: NodeJS.ArrayBufferView): Buffer;
+ update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer;
+ update(data: NodeJS.ArrayBufferView, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
+ update(data: string, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
+ final(): Buffer;
+ final(output_encoding: string): string;
+ setAutoPadding(auto_padding?: boolean): this;
+ // setAuthTag(tag: NodeJS.ArrayBufferView): this;
+ // setAAD(buffer: NodeJS.ArrayBufferView): this;
+ }
+ interface DecipherCCM extends Decipher {
+ setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+ setAAD(buffer: NodeJS.ArrayBufferView, options: { plaintextLength: number }): this;
+ }
+ interface DecipherGCM extends Decipher {
+ setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+ setAAD(buffer: NodeJS.ArrayBufferView, options?: { plaintextLength: number }): this;
+ }
+
+ interface PrivateKeyInput {
+ key: string | Buffer;
+ format?: KeyFormat;
+ type?: 'pkcs1' | 'pkcs8' | 'sec1';
+ passphrase?: string | Buffer;
+ }
+
+ interface PublicKeyInput {
+ key: string | Buffer;
+ format?: KeyFormat;
+ type?: 'pkcs1' | 'spki';
+ }
+
+ function createPrivateKey(key: PrivateKeyInput | string | Buffer): KeyObject;
+ function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject): KeyObject;
+ function createSecretKey(key: Buffer): KeyObject;
+
+ function createSign(algorithm: string, options?: stream.WritableOptions): Signer;
+
+ interface SigningOptions {
+ /**
+ * @See crypto.constants.RSA_PKCS1_PADDING
+ */
+ padding?: number;
+ saltLength?: number;
+ }
+
+ interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {
+ }
+
+ type KeyLike = string | Buffer | KeyObject;
+
+ class Signer extends stream.Writable {
+ private constructor();
+
+ update(data: BinaryLike): Signer;
+ update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Signer;
+ sign(private_key: SignPrivateKeyInput | KeyLike): Buffer;
+ sign(private_key: SignPrivateKeyInput | KeyLike, output_format: HexBase64Latin1Encoding): string;
+ }
+
+ function createVerify(algorithm: string, options?: stream.WritableOptions): Verify;
+ class Verify extends stream.Writable {
+ private constructor();
+
+ update(data: BinaryLike): Verify;
+ update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Verify;
+ verify(object: object | KeyLike, signature: NodeJS.ArrayBufferView): boolean;
+ verify(object: object | KeyLike, signature: string, signature_format?: HexBase64Latin1Encoding): boolean;
+ // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format
+ // The signature field accepts a TypedArray type, but it is only available starting ES2017
+ }
+ function createDiffieHellman(prime_length: number, generator?: number | NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman;
+ function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | NodeJS.ArrayBufferView): DiffieHellman;
+ function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman;
+ class DiffieHellman {
+ private constructor();
+ generateKeys(): Buffer;
+ generateKeys(encoding: HexBase64Latin1Encoding): string;
+ computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
+ computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
+ computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
+ computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
+ getPrime(): Buffer;
+ getPrime(encoding: HexBase64Latin1Encoding): string;
+ getGenerator(): Buffer;
+ getGenerator(encoding: HexBase64Latin1Encoding): string;
+ getPublicKey(): Buffer;
+ getPublicKey(encoding: HexBase64Latin1Encoding): string;
+ getPrivateKey(): Buffer;
+ getPrivateKey(encoding: HexBase64Latin1Encoding): string;
+ setPublicKey(public_key: NodeJS.ArrayBufferView): void;
+ setPublicKey(public_key: string, encoding: string): void;
+ setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
+ setPrivateKey(private_key: string, encoding: string): void;
+ verifyError: number;
+ }
+ function getDiffieHellman(group_name: string): DiffieHellman;
+ function pbkdf2(
+ password: BinaryLike,
+ salt: BinaryLike,
+ iterations: number,
+ keylen: number,
+ digest: string,
+ callback: (err: Error | null, derivedKey: Buffer) => any,
+ ): void;
+ function pbkdf2Sync(password: BinaryLike, salt: BinaryLike, iterations: number, keylen: number, digest: string): Buffer;
+
+ function randomBytes(size: number): Buffer;
+ function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+ function pseudoRandomBytes(size: number): Buffer;
+ function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+
+ function randomFillSync(buffer: T, offset?: number, size?: number): T;
+ function randomFill(buffer: T, callback: (err: Error | null, buf: T) => void): void;
+ function randomFill(buffer: T, offset: number, callback: (err: Error | null, buf: T) => void): void;
+ function randomFill(buffer: T, offset: number, size: number, callback: (err: Error | null, buf: T) => void): void;
+
+ interface ScryptOptions {
+ N?: number;
+ r?: number;
+ p?: number;
+ maxmem?: number;
+ }
+ function scrypt(
+ password: BinaryLike,
+ salt: BinaryLike,
+ keylen: number, callback: (err: Error | null, derivedKey: Buffer) => void,
+ ): void;
+ function scrypt(
+ password: BinaryLike,
+ salt: BinaryLike,
+ keylen: number,
+ options: ScryptOptions,
+ callback: (err: Error | null, derivedKey: Buffer) => void,
+ ): void;
+ function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
+
+ interface RsaPublicKey {
+ key: KeyLike;
+ padding?: number;
+ }
+ interface RsaPrivateKey {
+ key: KeyLike;
+ passphrase?: string;
+ /**
+ * @default 'sha1'
+ */
+ oaepHash?: string;
+ oaepLabel?: NodeJS.TypedArray;
+ padding?: number;
+ }
+ function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ function privateDecrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ function privateEncrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+ function getCiphers(): string[];
+ function getCurves(): string[];
+ function getHashes(): string[];
+ class ECDH {
+ private constructor();
+ static convertKey(
+ key: BinaryLike,
+ curve: string,
+ inputEncoding?: HexBase64Latin1Encoding,
+ outputEncoding?: "latin1" | "hex" | "base64",
+ format?: "uncompressed" | "compressed" | "hybrid",
+ ): Buffer | string;
+ generateKeys(): Buffer;
+ generateKeys(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
+ computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
+ computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
+ computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
+ computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
+ getPrivateKey(): Buffer;
+ getPrivateKey(encoding: HexBase64Latin1Encoding): string;
+ getPublicKey(): Buffer;
+ getPublicKey(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
+ setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
+ setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void;
+ }
+ function createECDH(curve_name: string): ECDH;
+ function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean;
+ /** @deprecated since v10.0.0 */
+ const DEFAULT_ENCODING: string;
+
+ type KeyType = 'rsa' | 'dsa' | 'ec';
+ type KeyFormat = 'pem' | 'der';
+
+ interface BasePrivateKeyEncodingOptions {
+ format: T;
+ cipher?: string;
+ passphrase?: string;
+ }
+
+ interface KeyPairKeyObjectResult {
+ publicKey: KeyObject;
+ privateKey: KeyObject;
+ }
+
+ interface ECKeyPairKeyObjectOptions {
+ /**
+ * Name of the curve to use.
+ */
+ namedCurve: string;
+ }
+
+ interface RSAKeyPairKeyObjectOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+
+ /**
+ * @default 0x10001
+ */
+ publicExponent?: number;
+ }
+
+ interface DSAKeyPairKeyObjectOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+
+ /**
+ * Size of q in bits
+ */
+ divisorLength: number;
+ }
+
+ interface RSAKeyPairOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * @default 0x10001
+ */
+ publicExponent?: number;
+
+ publicKeyEncoding: {
+ type: 'pkcs1' | 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs1' | 'pkcs8';
+ };
+ }
+
+ interface DSAKeyPairOptions {
+ /**
+ * Key size in bits
+ */
+ modulusLength: number;
+ /**
+ * Size of q in bits
+ */
+ divisorLength: number;
+
+ publicKeyEncoding: {
+ type: 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'pkcs8';
+ };
+ }
+
+ interface ECKeyPairOptions {
+ /**
+ * Name of the curve to use.
+ */
+ namedCurve: string;
+
+ publicKeyEncoding: {
+ type: 'pkcs1' | 'spki';
+ format: PubF;
+ };
+ privateKeyEncoding: BasePrivateKeyEncodingOptions & {
+ type: 'sec1' | 'pkcs8';
+ };
+ }
+
+ interface KeyPairSyncResult {
+ publicKey: T1;
+ privateKey: T2;
+ }
+
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'rsa', options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'dsa', options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'der'>): KeyPairSyncResult;
+ function generateKeyPairSync(type: 'ec', options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'rsa', options: RSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'dsa', options: DSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+ function generateKeyPair(type: 'ec', options: ECKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+ namespace generateKeyPair {
+ function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+ function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+ function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+ function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+ function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise;
+
+ function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+ function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+ function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+ function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+ function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise;
+
+ function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+ function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+ function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+ function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+ function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise;
+ }
+
+ /**
+ * Calculates and returns the signature for `data` using the given private key and
+ * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
+ * dependent upon the key type (especially Ed25519 and Ed448).
+ *
+ * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
+ * passed to [`crypto.createPrivateKey()`][].
+ */
+ function sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | SignPrivateKeyInput): Buffer;
+
+ interface VerifyKeyWithOptions extends KeyObject, SigningOptions {
+ }
+
+ /**
+ * Calculates and returns the signature for `data` using the given private key and
+ * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
+ * dependent upon the key type (especially Ed25519 and Ed448).
+ *
+ * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
+ * passed to [`crypto.createPublicKey()`][].
+ */
+ function verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | VerifyKeyWithOptions, signature: NodeJS.ArrayBufferView): boolean;
+}
diff --git a/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts
new file mode 100644
index 00000000..91fb0cbc
--- /dev/null
+++ b/node_modules/@types/node/dgram.d.ts
@@ -0,0 +1,141 @@
+declare module "dgram" {
+ import { AddressInfo } from "net";
+ import * as dns from "dns";
+ import * as events from "events";
+
+ interface RemoteInfo {
+ address: string;
+ family: 'IPv4' | 'IPv6';
+ port: number;
+ size: number;
+ }
+
+ interface BindOptions {
+ port?: number;
+ address?: string;
+ exclusive?: boolean;
+ fd?: number;
+ }
+
+ type SocketType = "udp4" | "udp6";
+
+ interface SocketOptions {
+ type: SocketType;
+ reuseAddr?: boolean;
+ /**
+ * @default false
+ */
+ ipv6Only?: boolean;
+ recvBufferSize?: number;
+ sendBufferSize?: number;
+ lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
+ }
+
+ function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+ function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+
+ class Socket extends events.EventEmitter {
+ addMembership(multicastAddress: string, multicastInterface?: string): void;
+ address(): AddressInfo;
+ bind(port?: number, address?: string, callback?: () => void): void;
+ bind(port?: number, callback?: () => void): void;
+ bind(callback?: () => void): void;
+ bind(options: BindOptions, callback?: () => void): void;
+ close(callback?: () => void): void;
+ connect(port: number, address?: string, callback?: () => void): void;
+ connect(port: number, callback: () => void): void;
+ disconnect(): void;
+ dropMembership(multicastAddress: string, multicastInterface?: string): void;
+ getRecvBufferSize(): number;
+ getSendBufferSize(): number;
+ ref(): this;
+ remoteAddress(): AddressInfo;
+ send(msg: string | Uint8Array | any[], port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array | any[], port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array | any[], callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+ send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void;
+ setBroadcast(flag: boolean): void;
+ setMulticastInterface(multicastInterface: string): void;
+ setMulticastLoopback(flag: boolean): void;
+ setMulticastTTL(ttl: number): void;
+ setRecvBufferSize(size: number): void;
+ setSendBufferSize(size: number): void;
+ setTTL(ttl: number): void;
+ unref(): this;
+ /**
+ * Tells the kernel to join a source-specific multicast channel at the given
+ * `sourceAddress` and `groupAddress`, using the `multicastInterface` with the
+ * `IP_ADD_SOURCE_MEMBERSHIP` socket option.
+ * If the `multicastInterface` argument
+ * is not specified, the operating system will choose one interface and will add
+ * membership to it.
+ * To add membership to every available interface, call
+ * `socket.addSourceSpecificMembership()` multiple times, once per interface.
+ */
+ addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
+
+ /**
+ * Instructs the kernel to leave a source-specific multicast channel at the given
+ * `sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`
+ * socket option. This method is automatically called by the kernel when the
+ * socket is closed or the process terminates, so most apps will never have
+ * reason to call this.
+ *
+ * If `multicastInterface` is not specified, the operating system will attempt to
+ * drop membership on all valid interfaces.
+ */
+ dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
+
+ /**
+ * events.EventEmitter
+ * 1. close
+ * 2. connect
+ * 3. error
+ * 4. listening
+ * 5. message
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "close", listener: () => void): this;
+ addListener(event: "connect", listener: () => void): this;
+ addListener(event: "error", listener: (err: Error) => void): this;
+ addListener(event: "listening", listener: () => void): this;
+ addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+ emit(event: string | symbol, ...args: any[]): boolean;
+ emit(event: "close"): boolean;
+ emit(event: "connect"): boolean;
+ emit(event: "error", err: Error): boolean;
+ emit(event: "listening"): boolean;
+ emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "close", listener: () => void): this;
+ on(event: "connect", listener: () => void): this;
+ on(event: "error", listener: (err: Error) => void): this;
+ on(event: "listening", listener: () => void): this;
+ on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "close", listener: () => void): this;
+ once(event: "connect", listener: () => void): this;
+ once(event: "error", listener: (err: Error) => void): this;
+ once(event: "listening", listener: () => void): this;
+ once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "close", listener: () => void): this;
+ prependListener(event: "connect", listener: () => void): this;
+ prependListener(event: "error", listener: (err: Error) => void): this;
+ prependListener(event: "listening", listener: () => void): this;
+ prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "close", listener: () => void): this;
+ prependOnceListener(event: "connect", listener: () => void): this;
+ prependOnceListener(event: "error", listener: (err: Error) => void): this;
+ prependOnceListener(event: "listening", listener: () => void): this;
+ prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+ }
+}
diff --git a/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts
new file mode 100644
index 00000000..d2b05056
--- /dev/null
+++ b/node_modules/@types/node/dns.d.ts
@@ -0,0 +1,366 @@
+declare module "dns" {
+ // Supported getaddrinfo flags.
+ const ADDRCONFIG: number;
+ const V4MAPPED: number;
+
+ interface LookupOptions {
+ family?: number;
+ hints?: number;
+ all?: boolean;
+ verbatim?: boolean;
+ }
+
+ interface LookupOneOptions extends LookupOptions {
+ all?: false;
+ }
+
+ interface LookupAllOptions extends LookupOptions {
+ all: true;
+ }
+
+ interface LookupAddress {
+ address: string;
+ family: number;
+ }
+
+ function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+ function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+ function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void;
+ function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void;
+ function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace lookup {
+ function __promisify__(hostname: string, options: LookupAllOptions): Promise;
+ function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise;
+ function __promisify__(hostname: string, options: LookupOptions): Promise;
+ }
+
+ function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void): void;
+
+ namespace lookupService {
+ function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;
+ }
+
+ interface ResolveOptions {
+ ttl: boolean;
+ }
+
+ interface ResolveWithTtlOptions extends ResolveOptions {
+ ttl: true;
+ }
+
+ interface RecordWithTtl {
+ address: string;
+ ttl: number;
+ }
+
+ /** @deprecated Use AnyARecord or AnyAaaaRecord instead. */
+ type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord;
+
+ interface AnyARecord extends RecordWithTtl {
+ type: "A";
+ }
+
+ interface AnyAaaaRecord extends RecordWithTtl {
+ type: "AAAA";
+ }
+
+ interface MxRecord {
+ priority: number;
+ exchange: string;
+ }
+
+ interface AnyMxRecord extends MxRecord {
+ type: "MX";
+ }
+
+ interface NaptrRecord {
+ flags: string;
+ service: string;
+ regexp: string;
+ replacement: string;
+ order: number;
+ preference: number;
+ }
+
+ interface AnyNaptrRecord extends NaptrRecord {
+ type: "NAPTR";
+ }
+
+ interface SoaRecord {
+ nsname: string;
+ hostmaster: string;
+ serial: number;
+ refresh: number;
+ retry: number;
+ expire: number;
+ minttl: number;
+ }
+
+ interface AnySoaRecord extends SoaRecord {
+ type: "SOA";
+ }
+
+ interface SrvRecord {
+ priority: number;
+ weight: number;
+ port: number;
+ name: string;
+ }
+
+ interface AnySrvRecord extends SrvRecord {
+ type: "SRV";
+ }
+
+ interface AnyTxtRecord {
+ type: "TXT";
+ entries: string[];
+ }
+
+ interface AnyNsRecord {
+ type: "NS";
+ value: string;
+ }
+
+ interface AnyPtrRecord {
+ type: "PTR";
+ value: string;
+ }
+
+ interface AnyCnameRecord {
+ type: "CNAME";
+ value: string;
+ }
+
+ type AnyRecord = AnyARecord |
+ AnyAaaaRecord |
+ AnyCnameRecord |
+ AnyMxRecord |
+ AnyNaptrRecord |
+ AnyNsRecord |
+ AnyPtrRecord |
+ AnySoaRecord |
+ AnySrvRecord |
+ AnyTxtRecord;
+
+ function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "ANY", callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
+ function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
+ function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
+ function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void): void;
+ function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
+ function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
+ function resolve(
+ hostname: string,
+ rrtype: string,
+ callback: (err: NodeJS.ErrnoException | null, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]) => void,
+ ): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace resolve {
+ function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise;
+ function __promisify__(hostname: string, rrtype: "ANY"): Promise;
+ function __promisify__(hostname: string, rrtype: "MX"): Promise;
+ function __promisify__(hostname: string, rrtype: "NAPTR"): Promise;
+ function __promisify__(hostname: string, rrtype: "SOA"): Promise;
+ function __promisify__(hostname: string, rrtype: "SRV"): Promise;
+ function __promisify__(hostname: string, rrtype: "TXT"): Promise;
+ function __promisify__(hostname: string, rrtype: string): Promise;
+ }
+
+ function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
+ function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace resolve4 {
+ function __promisify__(hostname: string): Promise;
+ function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;
+ function __promisify__(hostname: string, options?: ResolveOptions): Promise;
+ }
+
+ function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
+ function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace resolve6 {
+ function __promisify__(hostname: string): Promise;
+ function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise;
+ function __promisify__(hostname: string, options?: ResolveOptions): Promise;
+ }
+
+ function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ namespace resolveCname {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
+ namespace resolveMx {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
+ namespace resolveNaptr {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ namespace resolveNs {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+ namespace resolvePtr {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void): void;
+ namespace resolveSoa {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
+ namespace resolveSrv {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
+ namespace resolveTxt {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function resolveAny(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
+ namespace resolveAny {
+ function __promisify__(hostname: string): Promise;
+ }
+
+ function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void;
+ function setServers(servers: ReadonlyArray): void;
+ function getServers(): string[];
+
+ // Error codes
+ const NODATA: string;
+ const FORMERR: string;
+ const SERVFAIL: string;
+ const NOTFOUND: string;
+ const NOTIMP: string;
+ const REFUSED: string;
+ const BADQUERY: string;
+ const BADNAME: string;
+ const BADFAMILY: string;
+ const BADRESP: string;
+ const CONNREFUSED: string;
+ const TIMEOUT: string;
+ const EOF: string;
+ const FILE: string;
+ const NOMEM: string;
+ const DESTRUCTION: string;
+ const BADSTR: string;
+ const BADFLAGS: string;
+ const NONAME: string;
+ const BADHINTS: string;
+ const NOTINITIALIZED: string;
+ const LOADIPHLPAPI: string;
+ const ADDRGETNETWORKPARAMS: string;
+ const CANCELLED: string;
+
+ class Resolver {
+ getServers: typeof getServers;
+ setServers: typeof setServers;
+ resolve: typeof resolve;
+ resolve4: typeof resolve4;
+ resolve6: typeof resolve6;
+ resolveAny: typeof resolveAny;
+ resolveCname: typeof resolveCname;
+ resolveMx: typeof resolveMx;
+ resolveNaptr: typeof resolveNaptr;
+ resolveNs: typeof resolveNs;
+ resolvePtr: typeof resolvePtr;
+ resolveSoa: typeof resolveSoa;
+ resolveSrv: typeof resolveSrv;
+ resolveTxt: typeof resolveTxt;
+ reverse: typeof reverse;
+ cancel(): void;
+ }
+
+ namespace promises {
+ function getServers(): string[];
+
+ function lookup(hostname: string, family: number): Promise;
+ function lookup(hostname: string, options: LookupOneOptions): Promise;
+ function lookup(hostname: string, options: LookupAllOptions): Promise;
+ function lookup(hostname: string, options: LookupOptions): Promise;
+ function lookup(hostname: string): Promise;
+
+ function lookupService(address: string, port: number): Promise<{ hostname: string, service: string }>;
+
+ function resolve(hostname: string): Promise;
+ function resolve(hostname: string, rrtype: "A"): Promise;
+ function resolve(hostname: string, rrtype: "AAAA"): Promise;
+ function resolve(hostname: string, rrtype: "ANY"): Promise;
+ function resolve(hostname: string, rrtype: "CNAME"): Promise;
+ function resolve(hostname: string, rrtype: "MX"): Promise;
+ function resolve(hostname: string, rrtype: "NAPTR"): Promise;
+ function resolve(hostname: string, rrtype: "NS"): Promise;
+ function resolve(hostname: string, rrtype: "PTR"): Promise;
+ function resolve(hostname: string, rrtype: "SOA"): Promise;
+ function resolve(hostname: string, rrtype: "SRV"): Promise;
+ function resolve(hostname: string, rrtype: "TXT"): Promise;
+ function resolve(hostname: string, rrtype: string): Promise;
+
+ function resolve4(hostname: string): Promise;
+ function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise;
+ function resolve4(hostname: string, options: ResolveOptions): Promise;
+
+ function resolve6(hostname: string): Promise;
+ function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise;
+ function resolve6(hostname: string, options: ResolveOptions): Promise;
+
+ function resolveAny(hostname: string): Promise;
+
+ function resolveCname(hostname: string): Promise;
+
+ function resolveMx(hostname: string): Promise;
+
+ function resolveNaptr(hostname: string): Promise;
+
+ function resolveNs(hostname: string): Promise;
+
+ function resolvePtr(hostname: string): Promise;
+
+ function resolveSoa(hostname: string): Promise;
+
+ function resolveSrv(hostname: string): Promise;
+
+ function resolveTxt(hostname: string): Promise;
+
+ function reverse(ip: string): Promise;
+
+ function setServers(servers: ReadonlyArray): void;
+
+ class Resolver {
+ getServers: typeof getServers;
+ resolve: typeof resolve;
+ resolve4: typeof resolve4;
+ resolve6: typeof resolve6;
+ resolveAny: typeof resolveAny;
+ resolveCname: typeof resolveCname;
+ resolveMx: typeof resolveMx;
+ resolveNaptr: typeof resolveNaptr;
+ resolveNs: typeof resolveNs;
+ resolvePtr: typeof resolvePtr;
+ resolveSoa: typeof resolveSoa;
+ resolveSrv: typeof resolveSrv;
+ resolveTxt: typeof resolveTxt;
+ reverse: typeof reverse;
+ setServers: typeof setServers;
+ }
+ }
+}
diff --git a/node_modules/@types/node/domain.d.ts b/node_modules/@types/node/domain.d.ts
new file mode 100644
index 00000000..c7fa9b85
--- /dev/null
+++ b/node_modules/@types/node/domain.d.ts
@@ -0,0 +1,16 @@
+declare module "domain" {
+ import { EventEmitter } from "events";
+
+ class Domain extends EventEmitter implements NodeJS.Domain {
+ run(fn: (...args: any[]) => T, ...args: any[]): T;
+ add(emitter: EventEmitter | NodeJS.Timer): void;
+ remove(emitter: EventEmitter | NodeJS.Timer): void;
+ bind(cb: T): T;
+ intercept(cb: T): T;
+ members: Array;
+ enter(): void;
+ exit(): void;
+ }
+
+ function create(): Domain;
+}
diff --git a/node_modules/@types/node/events.d.ts b/node_modules/@types/node/events.d.ts
new file mode 100644
index 00000000..b07defc0
--- /dev/null
+++ b/node_modules/@types/node/events.d.ts
@@ -0,0 +1,50 @@
+declare module "events" {
+ interface EventEmitterOptions {
+ /**
+ * Enables automatic capturing of promise rejection.
+ */
+ captureRejections?: boolean;
+ }
+
+ interface NodeEventTarget {
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
+ }
+
+ interface DOMEventTarget {
+ addEventListener(event: string, listener: (...args: any[]) => void, opts?: { once: boolean }): any;
+ }
+
+ namespace EventEmitter {
+ function once(emitter: NodeEventTarget, event: string | symbol): Promise;
+ function once(emitter: DOMEventTarget, event: string): Promise;
+ function on(emitter: EventEmitter, event: string): AsyncIterableIterator;
+ const captureRejectionSymbol: unique symbol;
+
+ /**
+ * This symbol shall be used to install a listener for only monitoring `'error'`
+ * events. Listeners installed using this symbol are called before the regular
+ * `'error'` listeners are called.
+ *
+ * Installing a listener using this symbol does not change the behavior once an
+ * `'error'` event is emitted, therefore the process will still crash if no
+ * regular `'error'` listener is installed.
+ */
+ const errorMonitor: unique symbol;
+ /**
+ * Sets or gets the default captureRejection value for all emitters.
+ */
+ let captureRejections: boolean;
+
+ interface EventEmitter extends NodeJS.EventEmitter {
+ }
+
+ class EventEmitter {
+ constructor(options?: EventEmitterOptions);
+ /** @deprecated since v4.0.0 */
+ static listenerCount(emitter: EventEmitter, event: string | symbol): number;
+ static defaultMaxListeners: number;
+ }
+ }
+
+ export = EventEmitter;
+}
diff --git a/node_modules/@types/node/fs.d.ts b/node_modules/@types/node/fs.d.ts
new file mode 100644
index 00000000..c66c28de
--- /dev/null
+++ b/node_modules/@types/node/fs.d.ts
@@ -0,0 +1,2458 @@
+declare module "fs" {
+ import * as stream from "stream";
+ import * as events from "events";
+ import { URL } from "url";
+
+ /**
+ * Valid types for path values in "fs".
+ */
+ type PathLike = string | Buffer | URL;
+
+ type NoParamCallback = (err: NodeJS.ErrnoException | null) => void;
+
+ interface StatsBase {
+ isFile(): boolean;
+ isDirectory(): boolean;
+ isBlockDevice(): boolean;
+ isCharacterDevice(): boolean;
+ isSymbolicLink(): boolean;
+ isFIFO(): boolean;
+ isSocket(): boolean;
+
+ dev: T;
+ ino: T;
+ mode: T;
+ nlink: T;
+ uid: T;
+ gid: T;
+ rdev: T;
+ size: T;
+ blksize: T;
+ blocks: T;
+ atimeMs: T;
+ mtimeMs: T;
+ ctimeMs: T;
+ birthtimeMs: T;
+ atime: Date;
+ mtime: Date;
+ ctime: Date;
+ birthtime: Date;
+ }
+
+ interface Stats extends StatsBase {
+ }
+
+ class Stats {
+ }
+
+ class Dirent {
+ isFile(): boolean;
+ isDirectory(): boolean;
+ isBlockDevice(): boolean;
+ isCharacterDevice(): boolean;
+ isSymbolicLink(): boolean;
+ isFIFO(): boolean;
+ isSocket(): boolean;
+ name: string;
+ }
+
+ /**
+ * A class representing a directory stream.
+ */
+ class Dir {
+ readonly path: string;
+
+ /**
+ * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read.
+ */
+ [Symbol.asyncIterator](): AsyncIterableIterator;
+
+ /**
+ * Asynchronously close the directory's underlying resource handle.
+ * Subsequent reads will result in errors.
+ */
+ close(): Promise;
+ close(cb: NoParamCallback): void;
+
+ /**
+ * Synchronously close the directory's underlying resource handle.
+ * Subsequent reads will result in errors.
+ */
+ closeSync(): void;
+
+ /**
+ * Asynchronously read the next directory entry via `readdir(3)` as an `Dirent`.
+ * After the read is completed, a value is returned that will be resolved with an `Dirent`, or `null` if there are no more directory entries to read.
+ * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
+ */
+ read(): Promise;
+ read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void;
+
+ /**
+ * Synchronously read the next directory entry via `readdir(3)` as a `Dirent`.
+ * If there are no more directory entries to read, null will be returned.
+ * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
+ */
+ readSync(): Dirent;
+ }
+
+ interface FSWatcher extends events.EventEmitter {
+ close(): void;
+
+ /**
+ * events.EventEmitter
+ * 1. change
+ * 2. error
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+ addListener(event: "error", listener: (error: Error) => void): this;
+ addListener(event: "close", listener: () => void): this;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+ on(event: "error", listener: (error: Error) => void): this;
+ on(event: "close", listener: () => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+ once(event: "error", listener: (error: Error) => void): this;
+ once(event: "close", listener: () => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+ prependListener(event: "error", listener: (error: Error) => void): this;
+ prependListener(event: "close", listener: () => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+ prependOnceListener(event: "error", listener: (error: Error) => void): this;
+ prependOnceListener(event: "close", listener: () => void): this;
+ }
+
+ class ReadStream extends stream.Readable {
+ close(): void;
+ bytesRead: number;
+ path: string | Buffer;
+
+ /**
+ * events.EventEmitter
+ * 1. open
+ * 2. close
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "open", listener: (fd: number) => void): this;
+ addListener(event: "close", listener: () => void): this;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "open", listener: (fd: number) => void): this;
+ on(event: "close", listener: () => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "open", listener: (fd: number) => void): this;
+ once(event: "close", listener: () => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "open", listener: (fd: number) => void): this;
+ prependListener(event: "close", listener: () => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "open", listener: (fd: number) => void): this;
+ prependOnceListener(event: "close", listener: () => void): this;
+ }
+
+ class WriteStream extends stream.Writable {
+ close(): void;
+ bytesWritten: number;
+ path: string | Buffer;
+
+ /**
+ * events.EventEmitter
+ * 1. open
+ * 2. close
+ */
+ addListener(event: string, listener: (...args: any[]) => void): this;
+ addListener(event: "open", listener: (fd: number) => void): this;
+ addListener(event: "close", listener: () => void): this;
+
+ on(event: string, listener: (...args: any[]) => void): this;
+ on(event: "open", listener: (fd: number) => void): this;
+ on(event: "close", listener: () => void): this;
+
+ once(event: string, listener: (...args: any[]) => void): this;
+ once(event: "open", listener: (fd: number) => void): this;
+ once(event: "close", listener: () => void): this;
+
+ prependListener(event: string, listener: (...args: any[]) => void): this;
+ prependListener(event: "open", listener: (fd: number) => void): this;
+ prependListener(event: "close", listener: () => void): this;
+
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+ prependOnceListener(event: "open", listener: (fd: number) => void): this;
+ prependOnceListener(event: "close", listener: () => void): this;
+ }
+
+ /**
+ * Asynchronous rename(2) - Change the name or location of a file or directory.
+ * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ */
+ function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace rename {
+ /**
+ * Asynchronous rename(2) - Change the name or location of a file or directory.
+ * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ */
+ function __promisify__(oldPath: PathLike, newPath: PathLike): Promise;
+ }
+
+ /**
+ * Synchronous rename(2) - Change the name or location of a file or directory.
+ * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ */
+ function renameSync(oldPath: PathLike, newPath: PathLike): void;
+
+ /**
+ * Asynchronous truncate(2) - Truncate a file to a specified length.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param len If not specified, defaults to `0`.
+ */
+ function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void;
+
+ /**
+ * Asynchronous truncate(2) - Truncate a file to a specified length.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * URL support is _experimental_.
+ */
+ function truncate(path: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace truncate {
+ /**
+ * Asynchronous truncate(2) - Truncate a file to a specified length.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param len If not specified, defaults to `0`.
+ */
+ function __promisify__(path: PathLike, len?: number | null): Promise;
+ }
+
+ /**
+ * Synchronous truncate(2) - Truncate a file to a specified length.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param len If not specified, defaults to `0`.
+ */
+ function truncateSync(path: PathLike, len?: number | null): void;
+
+ /**
+ * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+ * @param fd A file descriptor.
+ * @param len If not specified, defaults to `0`.
+ */
+ function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void;
+
+ /**
+ * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+ * @param fd A file descriptor.
+ */
+ function ftruncate(fd: number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace ftruncate {
+ /**
+ * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+ * @param fd A file descriptor.
+ * @param len If not specified, defaults to `0`.
+ */
+ function __promisify__(fd: number, len?: number | null): Promise;
+ }
+
+ /**
+ * Synchronous ftruncate(2) - Truncate a file to a specified length.
+ * @param fd A file descriptor.
+ * @param len If not specified, defaults to `0`.
+ */
+ function ftruncateSync(fd: number, len?: number | null): void;
+
+ /**
+ * Asynchronous chown(2) - Change ownership of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace chown {
+ /**
+ * Asynchronous chown(2) - Change ownership of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike, uid: number, gid: number): Promise;
+ }
+
+ /**
+ * Synchronous chown(2) - Change ownership of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function chownSync(path: PathLike, uid: number, gid: number): void;
+
+ /**
+ * Asynchronous fchown(2) - Change ownership of a file.
+ * @param fd A file descriptor.
+ */
+ function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace fchown {
+ /**
+ * Asynchronous fchown(2) - Change ownership of a file.
+ * @param fd A file descriptor.
+ */
+ function __promisify__(fd: number, uid: number, gid: number): Promise;
+ }
+
+ /**
+ * Synchronous fchown(2) - Change ownership of a file.
+ * @param fd A file descriptor.
+ */
+ function fchownSync(fd: number, uid: number, gid: number): void;
+
+ /**
+ * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace lchown {
+ /**
+ * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike, uid: number, gid: number): Promise;
+ }
+
+ /**
+ * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function lchownSync(path: PathLike, uid: number, gid: number): void;
+
+ /**
+ * Asynchronous chmod(2) - Change permissions of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function chmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace chmod {
+ /**
+ * Asynchronous chmod(2) - Change permissions of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function __promisify__(path: PathLike, mode: string | number): Promise;
+ }
+
+ /**
+ * Synchronous chmod(2) - Change permissions of a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function chmodSync(path: PathLike, mode: string | number): void;
+
+ /**
+ * Asynchronous fchmod(2) - Change permissions of a file.
+ * @param fd A file descriptor.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function fchmod(fd: number, mode: string | number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace fchmod {
+ /**
+ * Asynchronous fchmod(2) - Change permissions of a file.
+ * @param fd A file descriptor.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function __promisify__(fd: number, mode: string | number): Promise;
+ }
+
+ /**
+ * Synchronous fchmod(2) - Change permissions of a file.
+ * @param fd A file descriptor.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function fchmodSync(fd: number, mode: string | number): void;
+
+ /**
+ * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function lchmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace lchmod {
+ /**
+ * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function __promisify__(path: PathLike, mode: string | number): Promise;
+ }
+
+ /**
+ * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+ */
+ function lchmodSync(path: PathLike, mode: string | number): void;
+
+ /**
+ * Asynchronous stat(2) - Get file status.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace stat {
+ /**
+ * Asynchronous stat(2) - Get file status.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike): Promise;
+ }
+
+ /**
+ * Synchronous stat(2) - Get file status.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function statSync(path: PathLike): Stats;
+
+ /**
+ * Asynchronous fstat(2) - Get file status.
+ * @param fd A file descriptor.
+ */
+ function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace fstat {
+ /**
+ * Asynchronous fstat(2) - Get file status.
+ * @param fd A file descriptor.
+ */
+ function __promisify__(fd: number): Promise;
+ }
+
+ /**
+ * Synchronous fstat(2) - Get file status.
+ * @param fd A file descriptor.
+ */
+ function fstatSync(fd: number): Stats;
+
+ /**
+ * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace lstat {
+ /**
+ * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike): Promise;
+ }
+
+ /**
+ * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function lstatSync(path: PathLike): Stats;
+
+ /**
+ * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+ * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace link {
+ /**
+ * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+ * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(existingPath: PathLike, newPath: PathLike): Promise;
+ }
+
+ /**
+ * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+ * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function linkSync(existingPath: PathLike, newPath: PathLike): void;
+
+ /**
+ * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+ * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+ * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+ * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+ * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+ */
+ function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: NoParamCallback): void;
+
+ /**
+ * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+ * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+ * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+ */
+ function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace symlink {
+ /**
+ * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+ * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+ * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+ * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+ * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+ */
+ function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise;
+
+ type Type = "dir" | "file" | "junction";
+ }
+
+ /**
+ * Synchronous symlink(2) - Create a new symbolic link to an existing file.
+ * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+ * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+ * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+ * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+ */
+ function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlink(
+ path: PathLike,
+ options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+ callback: (err: NodeJS.ErrnoException | null, linkString: string) => void
+ ): void;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void): void;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void): void;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException | null, linkString: string) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace readlink {
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;
+
+ /**
+ * Asynchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;
+ }
+
+ /**
+ * Synchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+ /**
+ * Synchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+ /**
+ * Synchronous readlink(2) - read value of a symbolic link.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpath(
+ path: PathLike,
+ options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+ callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
+ ): void;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace realpath {
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise;
+
+ /**
+ * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise;
+
+ function native(
+ path: PathLike,
+ options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+ callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
+ ): void;
+ function native(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
+ function native(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
+ function native(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
+ }
+
+ /**
+ * Synchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+ /**
+ * Synchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+ /**
+ * Synchronous realpath(3) - return the canonicalized absolute pathname.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+ namespace realpathSync {
+ function native(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+ function native(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+ function native(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+ }
+
+ /**
+ * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function unlink(path: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace unlink {
+ /**
+ * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike): Promise;
+ }
+
+ /**
+ * Synchronous unlink(2) - delete a name and possibly the file it refers to.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function unlinkSync(path: PathLike): void;
+
+ interface RmDirOptions {
+ /**
+ * If `true`, perform a recursive directory removal. In
+ * recursive mode, errors are not reported if `path` does not exist, and
+ * operations are retried on failure.
+ * @experimental
+ * @default false
+ */
+ recursive?: boolean;
+ }
+
+ interface RmDirAsyncOptions extends RmDirOptions {
+ /**
+ * The amount of time in milliseconds to wait between retries.
+ * This option is ignored if the `recursive` option is not `true`.
+ * @default 100
+ */
+ retryDelay?: number;
+ /**
+ * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or
+ * `EPERM` error is encountered, Node.js will retry the operation with a linear
+ * backoff wait of `retryDelay` ms longer on each try. This option represents the
+ * number of retries. This option is ignored if the `recursive` option is not
+ * `true`.
+ * @default 0
+ */
+ maxRetries?: number;
+ }
+
+ /**
+ * Asynchronous rmdir(2) - delete a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function rmdir(path: PathLike, callback: NoParamCallback): void;
+ function rmdir(path: PathLike, options: RmDirAsyncOptions, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace rmdir {
+ /**
+ * Asynchronous rmdir(2) - delete a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function __promisify__(path: PathLike, options?: RmDirAsyncOptions): Promise;
+ }
+
+ /**
+ * Synchronous rmdir(2) - delete a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function rmdirSync(path: PathLike, options?: RmDirOptions): void;
+
+ interface MakeDirectoryOptions {
+ /**
+ * Indicates whether parent folders should be created.
+ * @default false
+ */
+ recursive?: boolean;
+ /**
+ * A file mode. If a string is passed, it is parsed as an octal integer. If not specified
+ * @default 0o777.
+ */
+ mode?: number;
+ }
+
+ /**
+ * Asynchronous mkdir(2) - create a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+ * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+ */
+ function mkdir(path: PathLike, options: number | string | MakeDirectoryOptions | undefined | null, callback: NoParamCallback): void;
+
+ /**
+ * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function mkdir(path: PathLike, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace mkdir {
+ /**
+ * Asynchronous mkdir(2) - create a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+ * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+ */
+ function __promisify__(path: PathLike, options?: number | string | MakeDirectoryOptions | null): Promise;
+ }
+
+ /**
+ * Synchronous mkdir(2) - create a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+ * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+ */
+ function mkdirSync(path: PathLike, options?: number | string | MakeDirectoryOptions | null): void;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void): void;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void): void;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ */
+ function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace mkdtemp {
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise;
+
+ /**
+ * Asynchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise;
+ }
+
+ /**
+ * Synchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+ /**
+ * Synchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+ /**
+ * Synchronously creates a unique temporary directory.
+ * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdir(
+ path: PathLike,
+ options: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | undefined | null,
+ callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
+ ): void;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer", callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void): void;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdir(
+ path: PathLike,
+ options: { encoding?: string | null; withFileTypes?: false } | string | undefined | null,
+ callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void,
+ ): void;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException | null, files: string[]) => void): void;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
+ */
+ function readdir(path: PathLike, options: { encoding?: string | null; withFileTypes: true }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace readdir {
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer"; withFileTypes?: false }): Promise;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function __promisify__(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): Promise;
+
+ /**
+ * Asynchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options If called with `withFileTypes: true` the result data will be an array of Dirent
+ */
+ function __promisify__(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Promise;
+ }
+
+ /**
+ * Synchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): string[];
+
+ /**
+ * Synchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdirSync(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Buffer[];
+
+ /**
+ * Synchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+ */
+ function readdirSync(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): string[] | Buffer[];
+
+ /**
+ * Synchronous readdir(3) - read a directory.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
+ */
+ function readdirSync(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Dirent[];
+
+ /**
+ * Asynchronous close(2) - close a file descriptor.
+ * @param fd A file descriptor.
+ */
+ function close(fd: number, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace close {
+ /**
+ * Asynchronous close(2) - close a file descriptor.
+ * @param fd A file descriptor.
+ */
+ function __promisify__(fd: number): Promise;
+ }
+
+ /**
+ * Synchronous close(2) - close a file descriptor.
+ * @param fd A file descriptor.
+ */
+ function closeSync(fd: number): void;
+
+ /**
+ * Asynchronous open(2) - open and possibly create a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+ */
+ function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
+
+ /**
+ * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ */
+ function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace open {
+ /**
+ * Asynchronous open(2) - open and possibly create a file.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+ */
+ function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise;
+ }
+
+ /**
+ * Synchronous open(2) - open and possibly create a file, returning a file descriptor..
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+ */
+ function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number;
+
+ /**
+ * Asynchronously change file timestamps of the file referenced by the supplied path.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param atime The last access time. If a string is provided, it will be coerced to number.
+ * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+ */
+ function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace utimes {
+ /**
+ * Asynchronously change file timestamps of the file referenced by the supplied path.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param atime The last access time. If a string is provided, it will be coerced to number.
+ * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+ */
+ function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise;
+ }
+
+ /**
+ * Synchronously change file timestamps of the file referenced by the supplied path.
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+ * @param atime The last access time. If a string is provided, it will be coerced to number.
+ * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+ */
+ function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;
+
+ /**
+ * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
+ * @param fd A file descriptor.
+ * @param atime The last access time. If a string is provided, it will be coerced to number.
+ * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+ */
+ function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
+
+ // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+ namespace futimes {
+ /**
+ * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
+ * @param fd A file descriptor.
+ * @param atime The last access time. If a string is provided, it will be coerced to number.
+ * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+ */
+ function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise